File Index
Files and directories
Sign in
FILE

txgbe_type.h

File preview with syntax highlighting.

linux-6.19.14/drivers/net/ethernet/wangxun/txgbe/txgbe_type.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/* Copyright (c) 2015 - 2022 Beijing WangXun Technology Co., Ltd. */
  3
  4#ifndef _TXGBE_TYPE_H_
  5#define _TXGBE_TYPE_H_
  6
  7#include <linux/property.h>
  8#include <linux/irq.h>
  9#include <linux/phy.h>
 10#include "../libwx/wx_type.h"
 11
 12/* Device IDs */
 13#define TXGBE_DEV_ID_SP1000                     0x1001
 14#define TXGBE_DEV_ID_WX1820                     0x2001
 15#define TXGBE_DEV_ID_AML5010                    0x5010
 16#define TXGBE_DEV_ID_AML5110                    0x5110
 17#define TXGBE_DEV_ID_AML5025                    0x5025
 18#define TXGBE_DEV_ID_AML5125                    0x5125
 19#define TXGBE_DEV_ID_AML5040                    0x5040
 20#define TXGBE_DEV_ID_AML5140                    0x5140
 21
 22/* Subsystem IDs */
 23/* SFP */
 24#define TXGBE_ID_SP1000_SFP                     0x0000
 25#define TXGBE_ID_WX1820_SFP                     0x2000
 26#define TXGBE_ID_SFP                            0x00
 27
 28/* copper */
 29#define TXGBE_ID_SP1000_XAUI                    0x1010
 30#define TXGBE_ID_WX1820_XAUI                    0x2010
 31#define TXGBE_ID_XAUI                           0x10
 32#define TXGBE_ID_SP1000_SGMII                   0x1020
 33#define TXGBE_ID_WX1820_SGMII                   0x2020
 34#define TXGBE_ID_SGMII                          0x20
 35/* backplane */
 36#define TXGBE_ID_SP1000_KR_KX_KX4               0x1030
 37#define TXGBE_ID_WX1820_KR_KX_KX4               0x2030
 38#define TXGBE_ID_KR_KX_KX4                      0x30
 39/* MAC Interface */
 40#define TXGBE_ID_SP1000_MAC_XAUI                0x1040
 41#define TXGBE_ID_WX1820_MAC_XAUI                0x2040
 42#define TXGBE_ID_MAC_XAUI                       0x40
 43#define TXGBE_ID_SP1000_MAC_SGMII               0x1060
 44#define TXGBE_ID_WX1820_MAC_SGMII               0x2060
 45#define TXGBE_ID_MAC_SGMII                      0x60
 46
 47/* Combined interface*/
 48#define TXGBE_ID_SFI_XAUI			0x50
 49
 50/* Revision ID */
 51#define TXGBE_SP_MPW  1
 52
 53/**************** SP Registers ****************************/
 54/* chip control Registers */
 55#define TXGBE_MIS_RST                           0x1000C
 56#define TXGBE_MIS_RST_MAC_RST(_i)               BIT(20 - (_i) * 3)
 57#define TXGBE_MIS_PRB_CTL                       0x10010
 58#define TXGBE_MIS_PRB_CTL_LAN_UP(_i)            BIT(1 - (_i))
 59/* FMGR Registers */
 60#define TXGBE_SPI_ILDR_STATUS                   0x10120
 61#define TXGBE_SPI_ILDR_STATUS_PERST             BIT(0) /* PCIE_PERST is done */
 62#define TXGBE_SPI_ILDR_STATUS_PWRRST            BIT(1) /* Power on reset is done */
 63#define TXGBE_SPI_ILDR_STATUS_LAN_SW_RST(_i)    BIT((_i) + 9) /* lan soft reset done */
 64
 65/* Sensors for PVT(Process Voltage Temperature) */
 66#define TXGBE_TS_CTL                            0x10300
 67#define TXGBE_TS_CTL_EVAL_MD                    BIT(31)
 68
 69/* MAC Misc Registers */
 70#define TXGBE_MAC_MISC_CTL                      0x11F00
 71#define TXGBE_MAC_MISC_CTL_LINK_STS_MOD         BIT(0)
 72#define TXGBE_MAC_MISC_CTL_LINK_PCS             FIELD_PREP(BIT(0), 0)
 73#define TXGBE_MAC_MISC_CTL_LINK_BOTH            FIELD_PREP(BIT(0), 1)
 74/* GPIO register bit */
 75#define TXGBE_GPIOBIT_0                         BIT(0) /* I:tx fault */
 76#define TXGBE_GPIOBIT_1                         BIT(1) /* O:tx disabled */
 77#define TXGBE_GPIOBIT_2                         BIT(2) /* I:sfp module absent */
 78#define TXGBE_GPIOBIT_3                         BIT(3) /* I:rx signal lost */
 79#define TXGBE_GPIOBIT_4                         BIT(4) /* O:rate select, 1G(0) 10G(1) */
 80#define TXGBE_GPIOBIT_5                         BIT(5) /* O:rate select, 1G(0) 10G(1) */
 81
 82/* Extended Interrupt Enable Set */
 83#define TXGBE_PX_MISC_ETH_LKDN                  BIT(8)
 84#define TXGBE_PX_MISC_DEV_RST                   BIT(10)
 85#define TXGBE_PX_MISC_IC_TIMESYNC               BIT(11)
 86#define TXGBE_PX_MISC_ETH_EVENT                 BIT(17)
 87#define TXGBE_PX_MISC_ETH_LK                    BIT(18)
 88#define TXGBE_PX_MISC_ETH_AN                    BIT(19)
 89#define TXGBE_PX_MISC_INT_ERR                   BIT(20)
 90#define TXGBE_PX_MISC_IC_VF_MBOX                BIT(23)
 91#define TXGBE_PX_MISC_GPIO                      BIT(26)
 92#define TXGBE_PX_MISC_IEN_MASK                            \
 93	(TXGBE_PX_MISC_ETH_LKDN | TXGBE_PX_MISC_DEV_RST | \
 94	 TXGBE_PX_MISC_ETH_EVENT | TXGBE_PX_MISC_ETH_LK | \
 95	 TXGBE_PX_MISC_ETH_AN | TXGBE_PX_MISC_INT_ERR | \
 96	 TXGBE_PX_MISC_IC_VF_MBOX | TXGBE_PX_MISC_IC_TIMESYNC)
 97
 98/* Port cfg registers */
 99#define TXGBE_CFG_PORT_ST                       0x14404
100#define TXGBE_CFG_PORT_ST_LINK_UP               BIT(0)
101#define TXGBE_CFG_PORT_ST_LINK_AML_40G          BIT(2)
102#define TXGBE_CFG_PORT_ST_LINK_AML_25G          BIT(3)
103#define TXGBE_CFG_PORT_ST_LINK_AML_10G          BIT(4)
104#define TXGBE_CFG_VXLAN                         0x14410
105#define TXGBE_CFG_VXLAN_GPE                     0x14414
106#define TXGBE_CFG_GENEVE                        0x14418
107
108/* I2C registers */
109#define TXGBE_I2C_BASE                          0x14900
110
111/************************************** ETH PHY ******************************/
112#define TXGBE_XPCS_IDA_ADDR                     0x13000
113#define TXGBE_XPCS_IDA_DATA                     0x13004
114
115/********************************* Flow Director *****************************/
116#define TXGBE_RDB_FDIR_DROP_QUEUE               127
117#define TXGBE_RDB_FDIR_CTL                      0x19500
118#define TXGBE_RDB_FDIR_CTL_INIT_DONE            BIT(3)
119#define TXGBE_RDB_FDIR_CTL_PERFECT_MATCH        BIT(4)
120#define TXGBE_RDB_FDIR_CTL_DROP_Q(v)            FIELD_PREP(GENMASK(14, 8), v)
121#define TXGBE_RDB_FDIR_CTL_HASH_BITS(v)         FIELD_PREP(GENMASK(23, 20), v)
122#define TXGBE_RDB_FDIR_CTL_MAX_LENGTH(v)        FIELD_PREP(GENMASK(27, 24), v)
123#define TXGBE_RDB_FDIR_CTL_FULL_THRESH(v)       FIELD_PREP(GENMASK(31, 28), v)
124#define TXGBE_RDB_FDIR_IP6(_i)                  (0x1950C + ((_i) * 4)) /* 0-2 */
125#define TXGBE_RDB_FDIR_SA                       0x19518
126#define TXGBE_RDB_FDIR_DA                       0x1951C
127#define TXGBE_RDB_FDIR_PORT                     0x19520
128#define TXGBE_RDB_FDIR_PORT_DESTINATION_SHIFT   16
129#define TXGBE_RDB_FDIR_FLEX                     0x19524
130#define TXGBE_RDB_FDIR_FLEX_FLEX_SHIFT          16
131#define TXGBE_RDB_FDIR_HASH                     0x19528
132#define TXGBE_RDB_FDIR_HASH_SIG_SW_INDEX(v)     FIELD_PREP(GENMASK(31, 16), v)
133#define TXGBE_RDB_FDIR_HASH_BUCKET_VALID        BIT(15)
134#define TXGBE_RDB_FDIR_CMD                      0x1952C
135#define TXGBE_RDB_FDIR_CMD_CMD_MASK             GENMASK(1, 0)
136#define TXGBE_RDB_FDIR_CMD_CMD(v)               FIELD_PREP(GENMASK(1, 0), v)
137#define TXGBE_RDB_FDIR_CMD_CMD_ADD_FLOW         TXGBE_RDB_FDIR_CMD_CMD(1)
138#define TXGBE_RDB_FDIR_CMD_CMD_REMOVE_FLOW      TXGBE_RDB_FDIR_CMD_CMD(2)
139#define TXGBE_RDB_FDIR_CMD_CMD_QUERY_REM_FILT   TXGBE_RDB_FDIR_CMD_CMD(3)
140#define TXGBE_RDB_FDIR_CMD_FILTER_VALID         BIT(2)
141#define TXGBE_RDB_FDIR_CMD_FILTER_UPDATE        BIT(3)
142#define TXGBE_RDB_FDIR_CMD_FLOW_TYPE(v)         FIELD_PREP(GENMASK(6, 5), v)
143#define TXGBE_RDB_FDIR_CMD_DROP                 BIT(9)
144#define TXGBE_RDB_FDIR_CMD_LAST                 BIT(11)
145#define TXGBE_RDB_FDIR_CMD_QUEUE_EN             BIT(15)
146#define TXGBE_RDB_FDIR_CMD_RX_QUEUE(v)          FIELD_PREP(GENMASK(22, 16), v)
147#define TXGBE_RDB_FDIR_CMD_VT_POOL(v)           FIELD_PREP(GENMASK(29, 24), v)
148#define TXGBE_RDB_FDIR_DA4_MSK                  0x1953C
149#define TXGBE_RDB_FDIR_SA4_MSK                  0x19540
150#define TXGBE_RDB_FDIR_TCP_MSK                  0x19544
151#define TXGBE_RDB_FDIR_UDP_MSK                  0x19548
152#define TXGBE_RDB_FDIR_SCTP_MSK                 0x19560
153#define TXGBE_RDB_FDIR_HKEY                     0x19568
154#define TXGBE_RDB_FDIR_SKEY                     0x1956C
155#define TXGBE_RDB_FDIR_OTHER_MSK                0x19570
156#define TXGBE_RDB_FDIR_OTHER_MSK_POOL           BIT(2)
157#define TXGBE_RDB_FDIR_OTHER_MSK_L4P            BIT(3)
158#define TXGBE_RDB_FDIR_FLEX_CFG(_i)             (0x19580 + ((_i) * 4))
159#define TXGBE_RDB_FDIR_FLEX_CFG_FIELD0          GENMASK(7, 0)
160#define TXGBE_RDB_FDIR_FLEX_CFG_BASE_MAC        FIELD_PREP(GENMASK(1, 0), 0)
161#define TXGBE_RDB_FDIR_FLEX_CFG_MSK             BIT(2)
162#define TXGBE_RDB_FDIR_FLEX_CFG_OFST(v)         FIELD_PREP(GENMASK(7, 3), v)
163
164/*************************** Amber Lite Registers ****************************/
165#define TXGBE_PX_PF_BME                         0x4B8
166#define TXGBE_AML_MAC_TX_CFG                    0x11000
167#define TXGBE_AML_MAC_TX_CFG_TE                 BIT(0)
168#define TXGBE_AML_MAC_TX_CFG_SPEED_MASK         GENMASK(30, 27)
169#define TXGBE_AML_MAC_TX_CFG_SPEED_40G          FIELD_PREP(GENMASK(30, 27), 0)
170#define TXGBE_AML_MAC_TX_CFG_SPEED_25G          FIELD_PREP(GENMASK(30, 27), 2)
171#define TXGBE_AML_MAC_TX_CFG_SPEED_10G          FIELD_PREP(GENMASK(30, 27), 8)
172#define TXGBE_RDM_RSC_CTL                       0x1200C
173#define TXGBE_RDM_RSC_CTL_FREE_CTL              BIT(7)
174
175/* Checksum and EEPROM pointers */
176#define TXGBE_EEPROM_LAST_WORD                  0x800
177#define TXGBE_EEPROM_CHECKSUM                   0x2F
178#define TXGBE_EEPROM_SUM                        0xBABA
179#define TXGBE_EEPROM_VERSION_L                  0x1D
180#define TXGBE_EEPROM_VERSION_H                  0x1E
181#define TXGBE_ISCSI_BOOT_CONFIG                 0x07
182#define TXGBE_EEPROM_I2C_SRART_PTR              0x580
183#define TXGBE_EEPROM_I2C_END_PTR                0x800
184
185#define TXGBE_MAX_MSIX_VECTORS          64
186#define TXGBE_MAX_FDIR_INDICES          63
187#define TXGBE_MAX_RSS_INDICES           63
188
189#define TXGBE_MAX_RX_QUEUES   (TXGBE_MAX_FDIR_INDICES + 1)
190#define TXGBE_MAX_TX_QUEUES   (TXGBE_MAX_FDIR_INDICES + 1)
191
192#define TXGBE_MAX_TXQ        128
193#define TXGBE_MAX_RXQ        128
194#define TXGBE_RAR_ENTRIES    128
195#define TXGBE_MC_TBL_SIZE    128
196#define TXGBE_VFT_TBL_SIZE   128
197#define TXGBE_RX_PB_SIZE     512
198#define TXGBE_TDB_PB_SZ      (160 * 1024) /* 160KB Packet Buffer */
199
200#define TXGBE_MAX_VFS_DRV_LIMIT                 63
201
202#define TXGBE_DEFAULT_ATR_SAMPLE_RATE           20
203
204/* Software ATR hash keys */
205#define TXGBE_ATR_BUCKET_HASH_KEY               0x3DAD14E2
206#define TXGBE_ATR_SIGNATURE_HASH_KEY            0x174D3614
207
208/* Software ATR input stream values and masks */
209#define TXGBE_ATR_HASH_MASK                     0x7fff
210#define TXGBE_ATR_L4TYPE_MASK                   0x3
211#define TXGBE_ATR_L4TYPE_UDP                    0x1
212#define TXGBE_ATR_L4TYPE_TCP                    0x2
213#define TXGBE_ATR_L4TYPE_SCTP                   0x3
214#define TXGBE_ATR_L4TYPE_IPV6_MASK              0x4
215#define TXGBE_ATR_L4TYPE_TUNNEL_MASK            0x10
216
217enum txgbe_atr_flow_type {
218	TXGBE_ATR_FLOW_TYPE_IPV4                = 0x0,
219	TXGBE_ATR_FLOW_TYPE_UDPV4               = 0x1,
220	TXGBE_ATR_FLOW_TYPE_TCPV4               = 0x2,
221	TXGBE_ATR_FLOW_TYPE_SCTPV4              = 0x3,
222	TXGBE_ATR_FLOW_TYPE_IPV6                = 0x4,
223	TXGBE_ATR_FLOW_TYPE_UDPV6               = 0x5,
224	TXGBE_ATR_FLOW_TYPE_TCPV6               = 0x6,
225	TXGBE_ATR_FLOW_TYPE_SCTPV6              = 0x7,
226	TXGBE_ATR_FLOW_TYPE_TUNNELED_IPV4       = 0x10,
227	TXGBE_ATR_FLOW_TYPE_TUNNELED_UDPV4      = 0x11,
228	TXGBE_ATR_FLOW_TYPE_TUNNELED_TCPV4      = 0x12,
229	TXGBE_ATR_FLOW_TYPE_TUNNELED_SCTPV4     = 0x13,
230	TXGBE_ATR_FLOW_TYPE_TUNNELED_IPV6       = 0x14,
231	TXGBE_ATR_FLOW_TYPE_TUNNELED_UDPV6      = 0x15,
232	TXGBE_ATR_FLOW_TYPE_TUNNELED_TCPV6      = 0x16,
233	TXGBE_ATR_FLOW_TYPE_TUNNELED_SCTPV6     = 0x17,
234};
235
236/* Flow Director ATR input struct. */
237union txgbe_atr_input {
238	/* Byte layout in order, all values with MSB first:
239	 *
240	 * vm_pool    - 1 byte
241	 * flow_type  - 1 byte
242	 * vlan_id    - 2 bytes
243	 * dst_ip     - 16 bytes
244	 * src_ip     - 16 bytes
245	 * src_port   - 2 bytes
246	 * dst_port   - 2 bytes
247	 * flex_bytes - 2 bytes
248	 * bkt_hash   - 2 bytes
249	 */
250	struct {
251		u8 vm_pool;
252		u8 flow_type;
253		__be16 vlan_id;
254		__be32 dst_ip[4];
255		__be32 src_ip[4];
256		__be16 src_port;
257		__be16 dst_port;
258		__be16 flex_bytes;
259		__be16 bkt_hash;
260	} formatted;
261	__be32 dword_stream[11];
262};
263
264/* Flow Director compressed ATR hash input struct */
265union txgbe_atr_hash_dword {
266	struct {
267		u8 vm_pool;
268		u8 flow_type;
269		__be16 vlan_id;
270	} formatted;
271	__be32 ip;
272	struct {
273		__be16 src;
274		__be16 dst;
275	} port;
276	__be16 flex_bytes;
277	__be32 dword;
278};
279
280enum txgbe_fdir_pballoc_type {
281	TXGBE_FDIR_PBALLOC_NONE = 0,
282	TXGBE_FDIR_PBALLOC_64K  = 1,
283	TXGBE_FDIR_PBALLOC_128K = 2,
284	TXGBE_FDIR_PBALLOC_256K = 3,
285};
286
287struct txgbe_fdir_filter {
288	struct hlist_node fdir_node;
289	union txgbe_atr_input filter;
290	u16 sw_idx;
291	u64 action;
292};
293
294/* TX/RX descriptor defines */
295#define TXGBE_DEFAULT_TXD               512
296#define TXGBE_DEFAULT_TX_WORK           256
297
298#if (PAGE_SIZE < 8192)
299#define TXGBE_DEFAULT_RXD               512
300#define TXGBE_DEFAULT_RX_WORK           256
301#else
302#define TXGBE_DEFAULT_RXD               256
303#define TXGBE_DEFAULT_RX_WORK           128
304#endif
305
306#define TXGBE_INTR_MISC(A)    BIT((A)->num_q_vectors)
307#define TXGBE_INTR_QALL(A)    (TXGBE_INTR_MISC(A) - 1)
308
309#define TXGBE_MAX_EITR        GENMASK(11, 3)
310
311extern char txgbe_driver_name[];
312
313void txgbe_down(struct wx *wx);
314void txgbe_up(struct wx *wx);
315int txgbe_setup_tc(struct net_device *dev, u8 tc);
316void txgbe_do_reset(struct net_device *netdev);
317
318#define TXGBE_LINK_SPEED_UNKNOWN        0
319#define TXGBE_LINK_SPEED_10GB_FULL      4
320#define TXGBE_LINK_SPEED_25GB_FULL      0x10
321#define TXGBE_LINK_SPEED_40GB_FULL      0x20
322
323#define TXGBE_SFF_IDENTIFIER_SFP        0x3
324#define TXGBE_SFF_IDENTIFIER_QSFP       0xC
325#define TXGBE_SFF_IDENTIFIER_QSFP_PLUS  0xD
326#define TXGBE_SFF_IDENTIFIER_QSFP28     0x11
327#define TXGBE_SFF_DA_PASSIVE_CABLE      0x4
328#define TXGBE_SFF_DA_ACTIVE_CABLE       0x8
329#define TXGBE_SFF_DA_SPEC_ACTIVE_LIMIT  0x4
330#define TXGBE_SFF_FCPI4_LIMITING        0x3
331#define TXGBE_SFF_10GBASESR_CAPABLE     0x10
332#define TXGBE_SFF_10GBASELR_CAPABLE     0x20
333#define TXGBE_SFF_25GBASESR_CAPABLE     0x2
334#define TXGBE_SFF_25GBASELR_CAPABLE     0x3
335#define TXGBE_SFF_25GBASEER_CAPABLE     0x4
336#define TXGBE_SFF_25GBASECR_91FEC       0xB
337#define TXGBE_SFF_25GBASECR_74FEC       0xC
338#define TXGBE_SFF_25GBASECR_NOFEC       0xD
339#define TXGBE_SFF_ETHERNET_RSRVD        BIT(7)
340#define TXGBE_SFF_ETHERNET_40G_CR4      BIT(3)
341#define TXGBE_SFF_ETHERNET_40G_SR4      BIT(2)
342#define TXGBE_SFF_ETHERNET_40G_LR4      BIT(1)
343#define TXGBE_SFF_ETHERNET_40G_ACTIVE   BIT(0)
344#define TXGBE_SFF_ETHERNET_100G_CR4     0xB
345
346#define TXGBE_PHY_FEC_RS                BIT(0)
347#define TXGBE_PHY_FEC_BASER             BIT(1)
348#define TXGBE_PHY_FEC_OFF               BIT(2)
349#define TXGBE_PHY_FEC_AUTO              (TXGBE_PHY_FEC_OFF | \
350					 TXGBE_PHY_FEC_BASER |\
351					 TXGBE_PHY_FEC_RS)
352
353#define FW_PHY_GET_LINK_CMD             0xC0
354#define FW_PHY_SET_LINK_CMD             0xC1
355#define FW_GET_MODULE_INFO_CMD          0xC5
356#define FW_READ_EEPROM_CMD              0xC6
357
358struct txgbe_sff_id {
359	u8 identifier;		/* A0H 0x00 */
360	u8 com_1g_code;		/* A0H 0x06 */
361	u8 com_10g_code;	/* A0H 0x03 */
362	u8 com_25g_code;	/* A0H 0x24 */
363	u8 cable_spec;		/* A0H 0x3C */
364	u8 cable_tech;		/* A0H 0x08 */
365	u8 vendor_oui0;		/* A0H 0x25 */
366	u8 vendor_oui1;		/* A0H 0x26 */
367	u8 vendor_oui2;		/* A0H 0x27 */
368	u8 transceiver_type;	/* A0H 0x83 */
369	u8 sff_opt1;		/* A0H 0xC0 */
370	u8 reserved[5];
371};
372
373struct txgbe_hic_get_module_info {
374	struct wx_hic_hdr hdr;
375	struct txgbe_sff_id id;
376};
377
378struct txgbe_hic_ephy_setlink {
379	struct wx_hic_hdr hdr;
380	u8 speed;
381	u8 duplex;
382	u8 autoneg;
383	u8 fec_mode;
384	u8 resv[4];
385};
386
387struct txgbe_hic_ephy_getlink {
388	struct wx_hic_hdr hdr;
389	u8 speed;
390	u8 duplex;
391	u8 autoneg;
392	u8 flow_ctl;
393	u8 power;
394	u8 fec_mode;
395	u8 resv[6];
396};
397
398struct txgbe_hic_i2c_read {
399	struct wx_hic_hdr hdr;
400	__be32 offset;
401	__be32 length;
402	u8 page;
403	u8 bank;
404	u8 i2c_address;
405	u8 resv;
406};
407
408#define NODE_PROP(_NAME, _PROP)			\
409	(const struct software_node) {		\
410		.name = _NAME,			\
411		.properties = _PROP,		\
412	}
413
414enum txgbe_swnodes {
415	SWNODE_GPIO = 0,
416	SWNODE_I2C,
417	SWNODE_SFP,
418	SWNODE_PHYLINK,
419	SWNODE_MAX
420};
421
422struct txgbe_nodes {
423	char gpio_name[32];
424	char i2c_name[32];
425	char sfp_name[32];
426	char phylink_name[32];
427	struct property_entry gpio_props[2];
428	struct property_entry i2c_props[4];
429	struct property_entry sfp_props[9];
430	struct property_entry phylink_props[3];
431	struct software_node_ref_args i2c_ref[1];
432	struct software_node_ref_args gpio0_ref[1];
433	struct software_node_ref_args gpio1_ref[1];
434	struct software_node_ref_args gpio2_ref[1];
435	struct software_node_ref_args gpio3_ref[1];
436	struct software_node_ref_args gpio4_ref[1];
437	struct software_node_ref_args gpio5_ref[1];
438	struct software_node_ref_args sfp_ref[1];
439	struct software_node swnodes[SWNODE_MAX];
440	const struct software_node *group[SWNODE_MAX + 1];
441};
442
443enum txgbe_misc_irqs {
444	TXGBE_IRQ_LINK = 0,
445	TXGBE_IRQ_GPIO,
446	TXGBE_IRQ_MAX
447};
448
449struct txgbe_irq {
450	struct irq_chip chip;
451	struct irq_domain *domain;
452	int nirqs;
453	int irq;
454};
455
456struct txgbe {
457	struct wx *wx;
458	struct txgbe_nodes nodes;
459	struct txgbe_irq misc;
460	struct phylink_pcs *pcs;
461	struct platform_device *sfp_dev;
462	struct platform_device *i2c_dev;
463	struct clk_lookup *clock;
464	struct clk *clk;
465	struct gpio_chip *gpio;
466	unsigned int link_irq;
467	unsigned int gpio_irq;
468	u32 eicr;
469
470	/* flow director */
471	struct hlist_head fdir_filter_list;
472	union txgbe_atr_input fdir_mask;
473	int fdir_filter_count;
474	spinlock_t fdir_perfect_lock; /* spinlock for FDIR */
475
476	DECLARE_PHY_INTERFACE_MASK(link_interfaces);
477	__ETHTOOL_DECLARE_LINK_MODE_MASK(link_support);
478	__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising);
479	u8 link_port;
480};
481
482#endif /* _TXGBE_TYPE_H_ */
~/ Read-only file preview.