156b2bdd1SGireesh Nagabhushana /* 256b2bdd1SGireesh Nagabhushana * This file and its contents are supplied under the terms of the 356b2bdd1SGireesh Nagabhushana * Common Development and Distribution License ("CDDL"), version 1.0. 456b2bdd1SGireesh Nagabhushana * You may only use this file in accordance with the terms of version 556b2bdd1SGireesh Nagabhushana * 1.0 of the CDDL. 656b2bdd1SGireesh Nagabhushana * 756b2bdd1SGireesh Nagabhushana * A full copy of the text of the CDDL should have accompanied this 856b2bdd1SGireesh Nagabhushana * source. A copy of the CDDL is also available via the Internet at 956b2bdd1SGireesh Nagabhushana * http://www.illumos.org/license/CDDL. 1056b2bdd1SGireesh Nagabhushana */ 1156b2bdd1SGireesh Nagabhushana 1256b2bdd1SGireesh Nagabhushana /* 1356b2bdd1SGireesh Nagabhushana * This file is part of the Chelsio T4 support code. 1456b2bdd1SGireesh Nagabhushana * 1556b2bdd1SGireesh Nagabhushana * Copyright (C) 2011-2013 Chelsio Communications. All rights reserved. 1656b2bdd1SGireesh Nagabhushana * 1756b2bdd1SGireesh Nagabhushana * This program is distributed in the hope that it will be useful, but WITHOUT 1856b2bdd1SGireesh Nagabhushana * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1956b2bdd1SGireesh Nagabhushana * FITNESS FOR A PARTICULAR PURPOSE. See the LICENSE file included in this 2056b2bdd1SGireesh Nagabhushana * release for licensing terms and conditions. 2156b2bdd1SGireesh Nagabhushana */ 2256b2bdd1SGireesh Nagabhushana 2356b2bdd1SGireesh Nagabhushana #ifndef __T4NEX_H 2456b2bdd1SGireesh Nagabhushana #define __T4NEX_H 2556b2bdd1SGireesh Nagabhushana 2656b2bdd1SGireesh Nagabhushana #ifdef __cplusplus 2756b2bdd1SGireesh Nagabhushana extern "C" { 2856b2bdd1SGireesh Nagabhushana #endif 2956b2bdd1SGireesh Nagabhushana 3056b2bdd1SGireesh Nagabhushana #define T4_IOCTL ((('t' << 16) | '4') << 8) 3156b2bdd1SGireesh Nagabhushana #define T4_IOCTL_PCIGET32 (T4_IOCTL + 1) 3256b2bdd1SGireesh Nagabhushana #define T4_IOCTL_PCIPUT32 (T4_IOCTL + 2) 3356b2bdd1SGireesh Nagabhushana #define T4_IOCTL_GET32 (T4_IOCTL + 3) 3456b2bdd1SGireesh Nagabhushana #define T4_IOCTL_PUT32 (T4_IOCTL + 4) 3556b2bdd1SGireesh Nagabhushana #define T4_IOCTL_REGDUMP (T4_IOCTL + 5) 3656b2bdd1SGireesh Nagabhushana #define T4_IOCTL_SGE_CONTEXT (T4_IOCTL + 6) 3756b2bdd1SGireesh Nagabhushana #define T4_IOCTL_DEVLOG (T4_IOCTL + 7) 3856b2bdd1SGireesh Nagabhushana #define T4_IOCTL_GET_MEM (T4_IOCTL + 8) 3956b2bdd1SGireesh Nagabhushana #define T4_IOCTL_GET_TID_TAB (T4_IOCTL + 9) 4056b2bdd1SGireesh Nagabhushana #define T4_IOCTL_GET_MBOX (T4_IOCTL + 10) 4156b2bdd1SGireesh Nagabhushana #define T4_IOCTL_GET_CIM_LA (T4_IOCTL + 11) 4256b2bdd1SGireesh Nagabhushana #define T4_IOCTL_GET_CIM_QCFG (T4_IOCTL + 12) 4356b2bdd1SGireesh Nagabhushana #define T4_IOCTL_GET_CIM_IBQ (T4_IOCTL + 13) 4456b2bdd1SGireesh Nagabhushana #define T4_IOCTL_GET_EDC (T4_IOCTL + 14) 455a9113e7SVishal Kulkarni #define T4_IOCTL_LOAD_FW (T4_IOCTL + 15) 467e6ad469SVishal Kulkarni #define T4_IOCTL_GET_CUDBG (T4_IOCTL + 16) 4756b2bdd1SGireesh Nagabhushana 4856b2bdd1SGireesh Nagabhushana enum { 4956b2bdd1SGireesh Nagabhushana T4_CTXT_EGRESS, 5056b2bdd1SGireesh Nagabhushana T4_CTXT_INGRESS, 5156b2bdd1SGireesh Nagabhushana T4_CTXT_FLM 5256b2bdd1SGireesh Nagabhushana }; 5356b2bdd1SGireesh Nagabhushana 5456b2bdd1SGireesh Nagabhushana struct t4_reg32_cmd { 5556b2bdd1SGireesh Nagabhushana uint32_t reg; 5656b2bdd1SGireesh Nagabhushana uint32_t value; 5756b2bdd1SGireesh Nagabhushana }; 5856b2bdd1SGireesh Nagabhushana 5956b2bdd1SGireesh Nagabhushana #define T4_REGDUMP_SIZE (160 * 1024) 60*fcabbd87SPotnuri Bharat Teja #define T6_REGDUMP_SIZE (332 * 1024) 61de483253SVishal Kulkarni #define T5_REGDUMP_SIZE (332 * 1024) 62*fcabbd87SPotnuri Bharat Teja 6356b2bdd1SGireesh Nagabhushana struct t4_regdump { 6456b2bdd1SGireesh Nagabhushana uint32_t version; 6556b2bdd1SGireesh Nagabhushana uint32_t len; 66*fcabbd87SPotnuri Bharat Teja uint32_t *data; 6756b2bdd1SGireesh Nagabhushana }; 6856b2bdd1SGireesh Nagabhushana 6956b2bdd1SGireesh Nagabhushana struct t4_sge_context { 7056b2bdd1SGireesh Nagabhushana uint32_t version; 7156b2bdd1SGireesh Nagabhushana uint32_t mem_id; 7256b2bdd1SGireesh Nagabhushana uint32_t addr; 7356b2bdd1SGireesh Nagabhushana uint32_t len; 7456b2bdd1SGireesh Nagabhushana uint8_t *data; 7556b2bdd1SGireesh Nagabhushana }; 7656b2bdd1SGireesh Nagabhushana 7756b2bdd1SGireesh Nagabhushana struct t4_mem_range { 7856b2bdd1SGireesh Nagabhushana uint32_t addr; 7956b2bdd1SGireesh Nagabhushana uint32_t len; 8056b2bdd1SGireesh Nagabhushana uint32_t *data; 8156b2bdd1SGireesh Nagabhushana }; 8256b2bdd1SGireesh Nagabhushana 8356b2bdd1SGireesh Nagabhushana struct t4_tid_info { 8456b2bdd1SGireesh Nagabhushana uint32_t len; 8556b2bdd1SGireesh Nagabhushana uint32_t *data; 8656b2bdd1SGireesh Nagabhushana }; 8756b2bdd1SGireesh Nagabhushana 8856b2bdd1SGireesh Nagabhushana struct t4_mbox { 8956b2bdd1SGireesh Nagabhushana uint32_t len; 9056b2bdd1SGireesh Nagabhushana uint32_t *data; 9156b2bdd1SGireesh Nagabhushana }; 9256b2bdd1SGireesh Nagabhushana 9356b2bdd1SGireesh Nagabhushana struct t4_cim_la { 9456b2bdd1SGireesh Nagabhushana uint32_t len; 9556b2bdd1SGireesh Nagabhushana uint32_t *data; 9656b2bdd1SGireesh Nagabhushana }; 9756b2bdd1SGireesh Nagabhushana 9856b2bdd1SGireesh Nagabhushana struct t4_ibq { 9956b2bdd1SGireesh Nagabhushana uint32_t len; 10056b2bdd1SGireesh Nagabhushana uint32_t *data; 10156b2bdd1SGireesh Nagabhushana }; 10256b2bdd1SGireesh Nagabhushana 10356b2bdd1SGireesh Nagabhushana struct t4_edc { 10456b2bdd1SGireesh Nagabhushana uint32_t len; 10556b2bdd1SGireesh Nagabhushana uint32_t mem; 10656b2bdd1SGireesh Nagabhushana uint32_t pos; 10756b2bdd1SGireesh Nagabhushana char *data; 10856b2bdd1SGireesh Nagabhushana }; 10956b2bdd1SGireesh Nagabhushana 11056b2bdd1SGireesh Nagabhushana struct t4_cim_qcfg { 111de483253SVishal Kulkarni uint16_t base[14]; 112de483253SVishal Kulkarni uint16_t size[14]; 11356b2bdd1SGireesh Nagabhushana uint16_t thres[6]; 114de483253SVishal Kulkarni uint32_t stat[4 * (6 + 8)]; 115de483253SVishal Kulkarni uint32_t obq_wr[2 * (8)]; 116de483253SVishal Kulkarni uint32_t num_obq; 11756b2bdd1SGireesh Nagabhushana }; 11856b2bdd1SGireesh Nagabhushana 11956b2bdd1SGireesh Nagabhushana #define T4_DEVLOG_SIZE 32768 12056b2bdd1SGireesh Nagabhushana struct t4_devlog { 12156b2bdd1SGireesh Nagabhushana uint32_t len; 1225a9113e7SVishal Kulkarni uint32_t data[0]; 1235a9113e7SVishal Kulkarni }; 1245a9113e7SVishal Kulkarni 1255a9113e7SVishal Kulkarni struct t4_ldfw { 1265a9113e7SVishal Kulkarni uint32_t len; 1275a9113e7SVishal Kulkarni uint32_t data[0]; 12856b2bdd1SGireesh Nagabhushana }; 12956b2bdd1SGireesh Nagabhushana 1307e6ad469SVishal Kulkarni struct t4_cudbg_dump { 1317e6ad469SVishal Kulkarni uint8_t wr_flash; 1327e6ad469SVishal Kulkarni uint8_t bitmap[16]; 1337e6ad469SVishal Kulkarni uint32_t len; 1347e6ad469SVishal Kulkarni uint32_t data[0]; 1357e6ad469SVishal Kulkarni }; 1367e6ad469SVishal Kulkarni 13756b2bdd1SGireesh Nagabhushana #ifdef __cplusplus 13856b2bdd1SGireesh Nagabhushana } 13956b2bdd1SGireesh Nagabhushana #endif 14056b2bdd1SGireesh Nagabhushana 14156b2bdd1SGireesh Nagabhushana #endif /* __T4NEX_H */ 142