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)
46*7e6ad469SVishal 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)
60de483253SVishal Kulkarni #define	T5_REGDUMP_SIZE (332 * 1024)
6156b2bdd1SGireesh Nagabhushana struct t4_regdump {
6256b2bdd1SGireesh Nagabhushana 	uint32_t  version;
6356b2bdd1SGireesh Nagabhushana 	uint32_t  len;
6456b2bdd1SGireesh Nagabhushana 	uint8_t   *data;
6556b2bdd1SGireesh Nagabhushana };
6656b2bdd1SGireesh Nagabhushana 
6756b2bdd1SGireesh Nagabhushana struct t4_sge_context {
6856b2bdd1SGireesh Nagabhushana 	uint32_t version;
6956b2bdd1SGireesh Nagabhushana 	uint32_t mem_id;
7056b2bdd1SGireesh Nagabhushana 	uint32_t addr;
7156b2bdd1SGireesh Nagabhushana 	uint32_t len;
7256b2bdd1SGireesh Nagabhushana 	uint8_t  *data;
7356b2bdd1SGireesh Nagabhushana };
7456b2bdd1SGireesh Nagabhushana 
7556b2bdd1SGireesh Nagabhushana struct t4_mem_range {
7656b2bdd1SGireesh Nagabhushana 	uint32_t addr;
7756b2bdd1SGireesh Nagabhushana 	uint32_t len;
7856b2bdd1SGireesh Nagabhushana 	uint32_t *data;
7956b2bdd1SGireesh Nagabhushana };
8056b2bdd1SGireesh Nagabhushana 
8156b2bdd1SGireesh Nagabhushana struct t4_tid_info {
8256b2bdd1SGireesh Nagabhushana 	uint32_t len;
8356b2bdd1SGireesh Nagabhushana 	uint32_t *data;
8456b2bdd1SGireesh Nagabhushana };
8556b2bdd1SGireesh Nagabhushana 
8656b2bdd1SGireesh Nagabhushana struct t4_mbox {
8756b2bdd1SGireesh Nagabhushana 	uint32_t len;
8856b2bdd1SGireesh Nagabhushana 	uint32_t *data;
8956b2bdd1SGireesh Nagabhushana };
9056b2bdd1SGireesh Nagabhushana 
9156b2bdd1SGireesh Nagabhushana struct t4_cim_la {
9256b2bdd1SGireesh Nagabhushana 	uint32_t len;
9356b2bdd1SGireesh Nagabhushana 	uint32_t *data;
9456b2bdd1SGireesh Nagabhushana };
9556b2bdd1SGireesh Nagabhushana 
9656b2bdd1SGireesh Nagabhushana struct t4_ibq {
9756b2bdd1SGireesh Nagabhushana 	uint32_t len;
9856b2bdd1SGireesh Nagabhushana 	uint32_t *data;
9956b2bdd1SGireesh Nagabhushana };
10056b2bdd1SGireesh Nagabhushana 
10156b2bdd1SGireesh Nagabhushana struct t4_edc {
10256b2bdd1SGireesh Nagabhushana 	uint32_t len;
10356b2bdd1SGireesh Nagabhushana 	uint32_t mem;
10456b2bdd1SGireesh Nagabhushana 	uint32_t pos;
10556b2bdd1SGireesh Nagabhushana 	char *data;
10656b2bdd1SGireesh Nagabhushana };
10756b2bdd1SGireesh Nagabhushana 
10856b2bdd1SGireesh Nagabhushana struct t4_cim_qcfg {
109de483253SVishal Kulkarni 	uint16_t base[14];
110de483253SVishal Kulkarni 	uint16_t size[14];
11156b2bdd1SGireesh Nagabhushana 	uint16_t thres[6];
112de483253SVishal Kulkarni 	uint32_t stat[4 * (6 + 8)];
113de483253SVishal Kulkarni 	uint32_t obq_wr[2 * (8)];
114de483253SVishal Kulkarni 	uint32_t num_obq;
11556b2bdd1SGireesh Nagabhushana };
11656b2bdd1SGireesh Nagabhushana 
11756b2bdd1SGireesh Nagabhushana #define	T4_DEVLOG_SIZE	32768
11856b2bdd1SGireesh Nagabhushana struct t4_devlog {
11956b2bdd1SGireesh Nagabhushana 	uint32_t len;
1205a9113e7SVishal Kulkarni 	uint32_t data[0];
1215a9113e7SVishal Kulkarni };
1225a9113e7SVishal Kulkarni 
1235a9113e7SVishal Kulkarni struct t4_ldfw {
1245a9113e7SVishal Kulkarni 	uint32_t len;
1255a9113e7SVishal Kulkarni 	uint32_t data[0];
12656b2bdd1SGireesh Nagabhushana };
12756b2bdd1SGireesh Nagabhushana 
128*7e6ad469SVishal Kulkarni struct t4_cudbg_dump {
129*7e6ad469SVishal Kulkarni 	uint8_t wr_flash;
130*7e6ad469SVishal Kulkarni 	uint8_t bitmap[16];
131*7e6ad469SVishal Kulkarni 	uint32_t len;
132*7e6ad469SVishal Kulkarni 	uint32_t data[0];
133*7e6ad469SVishal Kulkarni };
134*7e6ad469SVishal Kulkarni 
13556b2bdd1SGireesh Nagabhushana #ifdef __cplusplus
13656b2bdd1SGireesh Nagabhushana }
13756b2bdd1SGireesh Nagabhushana #endif
13856b2bdd1SGireesh Nagabhushana 
13956b2bdd1SGireesh Nagabhushana #endif /* __T4NEX_H */
140