Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * Copyright (C) 2004-2008 SMSC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * Copyright (C) 2005-2008 ARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #ifndef __SMSC911X_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #define __SMSC911X_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) /*Chip ID*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #define LAN9115	0x01150000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #define LAN9116	0x01160000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #define LAN9117	0x01170000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #define LAN9118	0x01180000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #define LAN9215	0x115A0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #define LAN9216	0x116A0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #define LAN9217	0x117A0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #define LAN9218	0x118A0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #define LAN9210	0x92100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #define LAN9211	0x92110000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define LAN9220	0x92200000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define LAN9221	0x92210000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #define LAN9250	0x92500000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define LAN89218	0x218A0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #define TX_FIFO_LOW_THRESHOLD	((u32)1600)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define SMSC911X_EEPROM_SIZE	((u32)128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #define USE_DEBUG		0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) /* This is the maximum number of packets to be received every
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)  * NAPI poll */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define SMSC_NAPI_WEIGHT	16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) /* implements a PHY loopback test at initialisation time, to ensure a packet
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)  * can be successfully looped back */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) #define USE_PHY_WORK_AROUND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #if USE_DEBUG >= 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) #define SMSC_WARN(pdata, nlevel, fmt, args...)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	netif_warn(pdata, nlevel, (pdata)->dev,			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 		   "%s: " fmt "\n", __func__, ##args)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) #define SMSC_WARN(pdata, nlevel, fmt, args...)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	no_printk(fmt "\n", ##args)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) #if USE_DEBUG >= 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define SMSC_TRACE(pdata, nlevel, fmt, args...)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	netif_info(pdata, nlevel, pdata->dev, fmt "\n", ##args)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define SMSC_TRACE(pdata, nlevel, fmt, args...)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	no_printk(fmt "\n", ##args)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #ifdef CONFIG_DEBUG_SPINLOCK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #define SMSC_ASSERT_MAC_LOCK(pdata) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 		lockdep_assert_held(&pdata->mac_lock)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define SMSC_ASSERT_MAC_LOCK(pdata) do {} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #endif				/* CONFIG_DEBUG_SPINLOCK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) /* SMSC911x registers and bitfields */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #define RX_DATA_FIFO			0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) #define TX_DATA_FIFO			0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) #define TX_CMD_A_ON_COMP_		0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) #define TX_CMD_A_BUF_END_ALGN_		0x03000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) #define TX_CMD_A_4_BYTE_ALGN_		0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) #define TX_CMD_A_16_BYTE_ALGN_		0x01000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) #define TX_CMD_A_32_BYTE_ALGN_		0x02000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) #define TX_CMD_A_DATA_OFFSET_		0x001F0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define TX_CMD_A_FIRST_SEG_		0x00002000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) #define TX_CMD_A_LAST_SEG_		0x00001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) #define TX_CMD_A_BUF_SIZE_		0x000007FF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) #define TX_CMD_B_PKT_TAG_		0xFFFF0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) #define TX_CMD_B_ADD_CRC_DISABLE_	0x00002000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #define TX_CMD_B_DISABLE_PADDING_	0x00001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #define TX_CMD_B_PKT_BYTE_LENGTH_	0x000007FF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) #define RX_STATUS_FIFO			0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) #define RX_STS_ES_			0x00008000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define RX_STS_LENGTH_ERR_		0x00001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) #define RX_STS_MCAST_			0x00000400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) #define RX_STS_FRAME_TYPE_		0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) #define RX_STS_CRC_ERR_			0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define RX_STATUS_FIFO_PEEK		0x44
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) #define TX_STATUS_FIFO			0x48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) #define TX_STS_ES_			0x00008000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define TX_STS_LOST_CARRIER_		0x00000800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #define TX_STS_NO_CARRIER_		0x00000400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define TX_STS_LATE_COL_		0x00000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define TX_STS_EXCESS_COL_		0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define TX_STATUS_FIFO_PEEK		0x4C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) #define ID_REV				0x50
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define ID_REV_CHIP_ID_			0xFFFF0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define ID_REV_REV_ID_			0x0000FFFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define INT_CFG				0x54
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define INT_CFG_INT_DEAS_		0xFF000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define INT_CFG_INT_DEAS_CLR_		0x00004000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define INT_CFG_INT_DEAS_STS_		0x00002000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define INT_CFG_IRQ_INT_		0x00001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #define INT_CFG_IRQ_EN_			0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define INT_CFG_IRQ_POL_		0x00000010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define INT_CFG_IRQ_TYPE_		0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define INT_STS				0x58
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define INT_STS_SW_INT_			0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define INT_STS_TXSTOP_INT_		0x02000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define INT_STS_RXSTOP_INT_		0x01000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define INT_STS_RXDFH_INT_		0x00800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define INT_STS_RXDF_INT_		0x00400000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define INT_STS_TX_IOC_			0x00200000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define INT_STS_RXD_INT_		0x00100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define INT_STS_GPT_INT_		0x00080000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #define INT_STS_PHY_INT_		0x00040000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define INT_STS_PME_INT_		0x00020000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define INT_STS_TXSO_			0x00010000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define INT_STS_RWT_			0x00008000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define INT_STS_RXE_			0x00004000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #define INT_STS_TXE_			0x00002000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define INT_STS_TDFU_			0x00000800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define INT_STS_TDFO_			0x00000400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define INT_STS_TDFA_			0x00000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define INT_STS_TSFF_			0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define INT_STS_TSFL_			0x00000080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define INT_STS_RXDF_			0x00000040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define INT_STS_RDFL_			0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define INT_STS_RSFF_			0x00000010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define INT_STS_RSFL_			0x00000008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define INT_STS_GPIO2_INT_		0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define INT_STS_GPIO1_INT_		0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define INT_STS_GPIO0_INT_		0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define INT_EN				0x5C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define INT_EN_SW_INT_EN_		0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define INT_EN_TXSTOP_INT_EN_		0x02000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define INT_EN_RXSTOP_INT_EN_		0x01000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define INT_EN_RXDFH_INT_EN_		0x00800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #define INT_EN_TIOC_INT_EN_		0x00200000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define INT_EN_RXD_INT_EN_		0x00100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define INT_EN_GPT_INT_EN_		0x00080000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define INT_EN_PHY_INT_EN_		0x00040000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define INT_EN_PME_INT_EN_		0x00020000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) #define INT_EN_TXSO_EN_			0x00010000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define INT_EN_RWT_EN_			0x00008000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define INT_EN_RXE_EN_			0x00004000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define INT_EN_TXE_EN_			0x00002000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define INT_EN_TDFU_EN_			0x00000800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define INT_EN_TDFO_EN_			0x00000400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define INT_EN_TDFA_EN_			0x00000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define INT_EN_TSFF_EN_			0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define INT_EN_TSFL_EN_			0x00000080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) #define INT_EN_RXDF_EN_			0x00000040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define INT_EN_RDFL_EN_			0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define INT_EN_RSFF_EN_			0x00000010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) #define INT_EN_RSFL_EN_			0x00000008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #define INT_EN_GPIO2_INT_		0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) #define INT_EN_GPIO1_INT_		0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) #define INT_EN_GPIO0_INT_		0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #define BYTE_TEST			0x64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) #define FIFO_INT			0x68
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #define FIFO_INT_TX_AVAIL_LEVEL_	0xFF000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) #define FIFO_INT_TX_STS_LEVEL_		0x00FF0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) #define FIFO_INT_RX_AVAIL_LEVEL_	0x0000FF00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) #define FIFO_INT_RX_STS_LEVEL_		0x000000FF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) #define RX_CFG				0x6C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) #define RX_CFG_RX_END_ALGN_		0xC0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #define RX_CFG_RX_END_ALGN4_		0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) #define RX_CFG_RX_END_ALGN16_		0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) #define RX_CFG_RX_END_ALGN32_		0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) #define RX_CFG_RX_DMA_CNT_		0x0FFF0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) #define RX_CFG_RX_DUMP_			0x00008000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) #define RX_CFG_RXDOFF_			0x00001F00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) #define TX_CFG				0x70
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) #define TX_CFG_TXS_DUMP_		0x00008000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) #define TX_CFG_TXD_DUMP_		0x00004000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) #define TX_CFG_TXSAO_			0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) #define TX_CFG_TX_ON_			0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) #define TX_CFG_STOP_TX_			0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) #define HW_CFG				0x74
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) #define HW_CFG_TTM_			0x00200000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) #define HW_CFG_SF_			0x00100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) #define HW_CFG_TX_FIF_SZ_		0x000F0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) #define HW_CFG_TR_			0x00003000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) #define HW_CFG_SRST_			0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) /* only available on 115/117 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) #define HW_CFG_PHY_CLK_SEL_		0x00000060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #define HW_CFG_PHY_CLK_SEL_INT_PHY_	0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) #define HW_CFG_PHY_CLK_SEL_EXT_PHY_	0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #define HW_CFG_PHY_CLK_SEL_CLK_DIS_	0x00000040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #define HW_CFG_SMI_SEL_		 	0x00000010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #define HW_CFG_EXT_PHY_DET_		0x00000008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) #define HW_CFG_EXT_PHY_EN_		0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) #define HW_CFG_SRST_TO_			0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) /* only available  on 116/118 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) #define HW_CFG_32_16_BIT_MODE_		0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) #define RX_DP_CTRL			0x78
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) #define RX_DP_CTRL_RX_FFWD_		0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) #define RX_FIFO_INF			0x7C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) #define RX_FIFO_INF_RXSUSED_		0x00FF0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) #define RX_FIFO_INF_RXDUSED_		0x0000FFFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) #define TX_FIFO_INF			0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) #define TX_FIFO_INF_TSUSED_		0x00FF0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) #define TX_FIFO_INF_TDFREE_		0x0000FFFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #define PMT_CTRL			0x84
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #define PMT_CTRL_PM_MODE_		0x00003000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) #define PMT_CTRL_PM_MODE_D0_		0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) #define PMT_CTRL_PM_MODE_D1_		0x00001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) #define PMT_CTRL_PM_MODE_D2_		0x00002000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) #define PMT_CTRL_PM_MODE_D3_		0x00003000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) #define PMT_CTRL_PHY_RST_		0x00000400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) #define PMT_CTRL_WOL_EN_		0x00000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #define PMT_CTRL_ED_EN_			0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) #define PMT_CTRL_PME_TYPE_		0x00000040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) #define PMT_CTRL_WUPS_			0x00000030
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #define PMT_CTRL_WUPS_NOWAKE_		0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) #define PMT_CTRL_WUPS_ED_		0x00000010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) #define PMT_CTRL_WUPS_WOL_		0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) #define PMT_CTRL_WUPS_MULTI_		0x00000030
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) #define PMT_CTRL_PME_IND_		0x00000008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) #define PMT_CTRL_PME_POL_		0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) #define PMT_CTRL_PME_EN_		0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) #define PMT_CTRL_READY_			0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) #define GPIO_CFG			0x88
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) #define GPIO_CFG_LED3_EN_		0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) #define GPIO_CFG_LED2_EN_		0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) #define GPIO_CFG_LED1_EN_		0x10000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) #define GPIO_CFG_GPIO2_INT_POL_		0x04000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) #define GPIO_CFG_GPIO1_INT_POL_		0x02000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) #define GPIO_CFG_GPIO0_INT_POL_		0x01000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) #define GPIO_CFG_EEPR_EN_		0x00700000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define GPIO_CFG_GPIOBUF2_		0x00040000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) #define GPIO_CFG_GPIOBUF1_		0x00020000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) #define GPIO_CFG_GPIOBUF0_		0x00010000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) #define GPIO_CFG_GPIODIR2_		0x00000400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) #define GPIO_CFG_GPIODIR1_		0x00000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #define GPIO_CFG_GPIODIR0_		0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #define GPIO_CFG_GPIOD4_		0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) #define GPIO_CFG_GPIOD3_		0x00000010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) #define GPIO_CFG_GPIOD2_		0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) #define GPIO_CFG_GPIOD1_		0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) #define GPIO_CFG_GPIOD0_		0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) #define GPT_CFG				0x8C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) #define GPT_CFG_TIMER_EN_		0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) #define GPT_CFG_GPT_LOAD_		0x0000FFFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) #define GPT_CNT				0x90
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) #define GPT_CNT_GPT_CNT_		0x0000FFFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) #define WORD_SWAP			0x98
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) #define FREE_RUN			0x9C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) #define RX_DROP				0xA0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) #define MAC_CSR_CMD			0xA4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) #define MAC_CSR_CMD_CSR_BUSY_		0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) #define MAC_CSR_CMD_R_NOT_W_		0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) #define MAC_CSR_CMD_CSR_ADDR_		0x000000FF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) #define MAC_CSR_DATA			0xA8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) #define AFC_CFG				0xAC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) #define AFC_CFG_AFC_HI_			0x00FF0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) #define AFC_CFG_AFC_LO_			0x0000FF00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) #define AFC_CFG_BACK_DUR_		0x000000F0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) #define AFC_CFG_FCMULT_			0x00000008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) #define AFC_CFG_FCBRD_			0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) #define AFC_CFG_FCADD_			0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) #define AFC_CFG_FCANY_			0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) #define E2P_CMD				0xB0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) #define E2P_CMD_EPC_BUSY_		0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) #define E2P_CMD_EPC_CMD_		0x70000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) #define E2P_CMD_EPC_CMD_READ_		0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) #define E2P_CMD_EPC_CMD_EWDS_		0x10000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) #define E2P_CMD_EPC_CMD_EWEN_		0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) #define E2P_CMD_EPC_CMD_WRITE_		0x30000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) #define E2P_CMD_EPC_CMD_WRAL_		0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) #define E2P_CMD_EPC_CMD_ERASE_		0x50000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) #define E2P_CMD_EPC_CMD_ERAL_		0x60000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) #define E2P_CMD_EPC_CMD_RELOAD_		0x70000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) #define E2P_CMD_EPC_TIMEOUT_		0x00000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) #define E2P_CMD_MAC_ADDR_LOADED_	0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) #define E2P_CMD_EPC_ADDR_		0x000000FF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) #define E2P_DATA			0xB4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) #define E2P_DATA_EEPROM_DATA_		0x000000FF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) #define LAN_REGISTER_EXTENT		0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) #define RESET_CTL			0x1F8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) #define RESET_CTL_DIGITAL_RST_		0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314)  * MAC Control and Status Register (Indirect Address)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)  * Offset (through the MAC_CSR CMD and DATA port)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) #define MAC_CR				0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) #define MAC_CR_RXALL_			0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) #define MAC_CR_HBDIS_			0x10000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) #define MAC_CR_RCVOWN_			0x00800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #define MAC_CR_LOOPBK_			0x00200000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #define MAC_CR_FDPX_			0x00100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) #define MAC_CR_MCPAS_			0x00080000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) #define MAC_CR_PRMS_			0x00040000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) #define MAC_CR_INVFILT_			0x00020000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) #define MAC_CR_PASSBAD_			0x00010000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) #define MAC_CR_HFILT_			0x00008000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) #define MAC_CR_HPFILT_			0x00002000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) #define MAC_CR_LCOLL_			0x00001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) #define MAC_CR_BCAST_			0x00000800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) #define MAC_CR_DISRTY_			0x00000400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) #define MAC_CR_PADSTR_			0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) #define MAC_CR_BOLMT_MASK_		0x000000C0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) #define MAC_CR_DFCHK_			0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) #define MAC_CR_TXEN_			0x00000008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) #define MAC_CR_RXEN_			0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) #define ADDRH				0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) #define ADDRL				0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) #define HASHH				0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) #define HASHL				0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) #define MII_ACC				0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) #define MII_ACC_PHY_ADDR_		0x0000F800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) #define MII_ACC_MIIRINDA_		0x000007C0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) #define MII_ACC_MII_WRITE_		0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) #define MII_ACC_MII_BUSY_		0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) #define MII_DATA			0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) #define FLOW				0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) #define FLOW_FCPT_			0xFFFF0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) #define FLOW_FCPASS_			0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) #define FLOW_FCEN_			0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) #define FLOW_FCBSY_			0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) #define VLAN1				0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) #define VLAN2				0x0A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) #define WUFF				0x0B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) #define WUCSR				0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) #define WUCSR_GUE_			0x00000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) #define WUCSR_WUFR_			0x00000040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) #define WUCSR_MPR_			0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) #define WUCSR_WAKE_EN_			0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) #define WUCSR_MPEN_			0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374)  * Phy definitions (vendor-specific)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) #define LAN9118_PHY_ID			0x00C0001C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) #define MII_INTSTS			0x1D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) #define MII_INTMSK			0x1E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) #define PHY_INTMSK_AN_RCV_		(1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) #define PHY_INTMSK_PDFAULT_		(1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) #define PHY_INTMSK_AN_ACK_		(1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) #define PHY_INTMSK_LNKDOWN_		(1 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) #define PHY_INTMSK_RFAULT_		(1 << 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) #define PHY_INTMSK_AN_COMP_		(1 << 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) #define PHY_INTMSK_ENERGYON_		(1 << 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) #define PHY_INTMSK_DEFAULT_		(PHY_INTMSK_ENERGYON_ | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) 					 PHY_INTMSK_AN_COMP_ | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) 					 PHY_INTMSK_RFAULT_ | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) 					 PHY_INTMSK_LNKDOWN_)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) #define ADVERTISE_PAUSE_ALL		(ADVERTISE_PAUSE_CAP | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) 					 ADVERTISE_PAUSE_ASYM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) #define LPA_PAUSE_ALL			(LPA_PAUSE_CAP | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) 					 LPA_PAUSE_ASYM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400)  * Provide hooks to let the arch add to the initialisation procedure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401)  * and to override the source of the MAC address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) #define SMSC_INITIALIZE()		do {} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) #define smsc_get_mac(dev)		smsc911x_read_mac_address((dev))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) #ifdef CONFIG_SMSC911X_ARCH_HOOKS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) #include <asm/smsc911x.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) #include <linux/smscphy.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) #endif				/* __SMSC911X_H__ */