⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smc911x.h

📁 linux 内核源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
#define PHY_MODE_CTRL_STS	((u32)17)	/* Mode Control/Status Register *///#define MODE_CTRL_STS_FASTRIP_	  ((u16)0x4000)#define MODE_CTRL_STS_EDPWRDOWN_	 ((u16)0x2000)//#define MODE_CTRL_STS_LOWSQEN_	   ((u16)0x0800)//#define MODE_CTRL_STS_MDPREBP_	   ((u16)0x0400)//#define MODE_CTRL_STS_FARLOOPBACK_  ((u16)0x0200)//#define MODE_CTRL_STS_FASTEST_	   ((u16)0x0100)//#define MODE_CTRL_STS_REFCLKEN_	   ((u16)0x0010)//#define MODE_CTRL_STS_PHYADBP_	   ((u16)0x0008)//#define MODE_CTRL_STS_FORCE_G_LINK_ ((u16)0x0004)#define MODE_CTRL_STS_ENERGYON_	 	((u16)0x0002)#define PHY_INT_SRC			((u32)29)#define PHY_INT_SRC_ENERGY_ON_			((u16)0x0080)#define PHY_INT_SRC_ANEG_COMP_			((u16)0x0040)#define PHY_INT_SRC_REMOTE_FAULT_		((u16)0x0020)#define PHY_INT_SRC_LINK_DOWN_			((u16)0x0010)#define PHY_INT_SRC_ANEG_LP_ACK_		((u16)0x0008)#define PHY_INT_SRC_PAR_DET_FAULT_		((u16)0x0004)#define PHY_INT_SRC_ANEG_PGRX_			((u16)0x0002)#define PHY_INT_MASK			((u32)30)#define PHY_INT_MASK_ENERGY_ON_			((u16)0x0080)#define PHY_INT_MASK_ANEG_COMP_			((u16)0x0040)#define PHY_INT_MASK_REMOTE_FAULT_		((u16)0x0020)#define PHY_INT_MASK_LINK_DOWN_			((u16)0x0010)#define PHY_INT_MASK_ANEG_LP_ACK_		((u16)0x0008)#define PHY_INT_MASK_PAR_DET_FAULT_		((u16)0x0004)#define PHY_INT_MASK_ANEG_PGRX_			((u16)0x0002)#define PHY_SPECIAL			((u32)31)#define PHY_SPECIAL_ANEG_DONE_			((u16)0x1000)#define PHY_SPECIAL_RES_			((u16)0x0040)#define PHY_SPECIAL_RES_MASK_			((u16)0x0FE1)#define PHY_SPECIAL_SPD_			((u16)0x001C)#define PHY_SPECIAL_SPD_10HALF_			((u16)0x0004)#define PHY_SPECIAL_SPD_10FULL_			((u16)0x0014)#define PHY_SPECIAL_SPD_100HALF_		((u16)0x0008)#define PHY_SPECIAL_SPD_100FULL_		((u16)0x0018)#define LAN911X_INTERNAL_PHY_ID		(0x0007C000)/* Chip ID values */#define CHIP_9115	0x115#define CHIP_9116	0x116#define CHIP_9117	0x117#define CHIP_9118	0x118struct chip_id {	u16 id;	char *name;};static const struct chip_id chip_ids[] =  {	{ CHIP_9115, "LAN9115" },	{ CHIP_9116, "LAN9116" },	{ CHIP_9117, "LAN9117" },	{ CHIP_9118, "LAN9118" },	{ 0, NULL },};#define IS_REV_A(x)	((x & 0xFFFF)==0)/* * Macros to abstract register access according to the data bus * capabilities.  Please use those and not the in/out primitives. *//* FIFO read/write macros */#define SMC_PUSH_DATA(p, l)	SMC_outsl( ioaddr, TX_DATA_FIFO, p, (l) >> 2 )#define SMC_PULL_DATA(p, l)	SMC_insl ( ioaddr, RX_DATA_FIFO, p, (l) >> 2 )#define SMC_SET_TX_FIFO(x) 	SMC_outl( x, ioaddr, TX_DATA_FIFO )#define SMC_GET_RX_FIFO()	SMC_inl( ioaddr, RX_DATA_FIFO )/* I/O mapped register read/write macros */#define SMC_GET_TX_STS_FIFO()		SMC_inl( ioaddr, TX_STATUS_FIFO )#define SMC_GET_RX_STS_FIFO()		SMC_inl( ioaddr, RX_STATUS_FIFO )#define SMC_GET_RX_STS_FIFO_PEEK()	SMC_inl( ioaddr, RX_STATUS_FIFO_PEEK )#define SMC_GET_PN()			(SMC_inl( ioaddr, ID_REV ) >> 16)#define SMC_GET_REV()			(SMC_inl( ioaddr, ID_REV ) & 0xFFFF)#define SMC_GET_IRQ_CFG()		SMC_inl( ioaddr, INT_CFG )#define SMC_SET_IRQ_CFG(x)		SMC_outl( x, ioaddr, INT_CFG )#define SMC_GET_INT()			SMC_inl( ioaddr, INT_STS )#define SMC_ACK_INT(x)			SMC_outl( x, ioaddr, INT_STS )#define SMC_GET_INT_EN()		SMC_inl( ioaddr, INT_EN )#define SMC_SET_INT_EN(x)		SMC_outl( x, ioaddr, INT_EN )#define SMC_GET_BYTE_TEST()		SMC_inl( ioaddr, BYTE_TEST )#define SMC_SET_BYTE_TEST(x)		SMC_outl( x, ioaddr, BYTE_TEST )#define SMC_GET_FIFO_INT()		SMC_inl( ioaddr, FIFO_INT )#define SMC_SET_FIFO_INT(x)		SMC_outl( x, ioaddr, FIFO_INT )#define SMC_SET_FIFO_TDA(x)					\	do {							\		unsigned long __flags;				\		int __mask;					\		local_irq_save(__flags);			\		__mask = SMC_GET_FIFO_INT() & ~(0xFF<<24);	\		SMC_SET_FIFO_INT( __mask | (x)<<24 );		\		local_irq_restore(__flags);			\	} while (0)#define SMC_SET_FIFO_TSL(x)					\	do {							\		unsigned long __flags;				\		int __mask;					\		local_irq_save(__flags);			\		__mask = SMC_GET_FIFO_INT() & ~(0xFF<<16);	\		SMC_SET_FIFO_INT( __mask | (((x) & 0xFF)<<16));	\		local_irq_restore(__flags);			\	} while (0)#define SMC_SET_FIFO_RSA(x)					\	do {							\		unsigned long __flags;				\		int __mask;					\		local_irq_save(__flags);			\		__mask = SMC_GET_FIFO_INT() & ~(0xFF<<8);	\		SMC_SET_FIFO_INT( __mask | (((x) & 0xFF)<<8));	\		local_irq_restore(__flags);			\	} while (0)#define SMC_SET_FIFO_RSL(x)					\	do {							\		unsigned long __flags;				\		int __mask;					\		local_irq_save(__flags);			\		__mask = SMC_GET_FIFO_INT() & ~0xFF;		\		SMC_SET_FIFO_INT( __mask | ((x) & 0xFF));	\		local_irq_restore(__flags);			\	} while (0)#define SMC_GET_RX_CFG()		SMC_inl( ioaddr, RX_CFG )#define SMC_SET_RX_CFG(x)		SMC_outl( x, ioaddr, RX_CFG )#define SMC_GET_TX_CFG()		SMC_inl( ioaddr, TX_CFG )#define SMC_SET_TX_CFG(x)		SMC_outl( x, ioaddr, TX_CFG )#define SMC_GET_HW_CFG()		SMC_inl( ioaddr, HW_CFG )#define SMC_SET_HW_CFG(x)		SMC_outl( x, ioaddr, HW_CFG )#define SMC_GET_RX_DP_CTRL()		SMC_inl( ioaddr, RX_DP_CTRL )#define SMC_SET_RX_DP_CTRL(x)		SMC_outl( x, ioaddr, RX_DP_CTRL )#define SMC_GET_PMT_CTRL()		SMC_inl( ioaddr, PMT_CTRL )#define SMC_SET_PMT_CTRL(x)		SMC_outl( x, ioaddr, PMT_CTRL )#define SMC_GET_GPIO_CFG()		SMC_inl( ioaddr, GPIO_CFG )#define SMC_SET_GPIO_CFG(x)		SMC_outl( x, ioaddr, GPIO_CFG )#define SMC_GET_RX_FIFO_INF()		SMC_inl( ioaddr, RX_FIFO_INF )#define SMC_SET_RX_FIFO_INF(x)		SMC_outl( x, ioaddr, RX_FIFO_INF )#define SMC_GET_TX_FIFO_INF()		SMC_inl( ioaddr, TX_FIFO_INF )#define SMC_SET_TX_FIFO_INF(x)		SMC_outl( x, ioaddr, TX_FIFO_INF )#define SMC_GET_GPT_CFG()		SMC_inl( ioaddr, GPT_CFG )#define SMC_SET_GPT_CFG(x)		SMC_outl( x, ioaddr, GPT_CFG )#define SMC_GET_RX_DROP()		SMC_inl( ioaddr, RX_DROP )#define SMC_SET_RX_DROP(x)		SMC_outl( x, ioaddr, RX_DROP )#define SMC_GET_MAC_CMD()		SMC_inl( ioaddr, MAC_CSR_CMD )#define SMC_SET_MAC_CMD(x)		SMC_outl( x, ioaddr, MAC_CSR_CMD )#define SMC_GET_MAC_DATA()		SMC_inl( ioaddr, MAC_CSR_DATA )#define SMC_SET_MAC_DATA(x)		SMC_outl( x, ioaddr, MAC_CSR_DATA )#define SMC_GET_AFC_CFG()		SMC_inl( ioaddr, AFC_CFG )#define SMC_SET_AFC_CFG(x)		SMC_outl( x, ioaddr, AFC_CFG )#define SMC_GET_E2P_CMD()		SMC_inl( ioaddr, E2P_CMD )#define SMC_SET_E2P_CMD(x)		SMC_outl( x, ioaddr, E2P_CMD )#define SMC_GET_E2P_DATA()		SMC_inl( ioaddr, E2P_DATA )#define SMC_SET_E2P_DATA(x)		SMC_outl( x, ioaddr, E2P_DATA )/* MAC register read/write macros */#define SMC_GET_MAC_CSR(a,v)						\	do {								\		while (SMC_GET_MAC_CMD() & MAC_CSR_CMD_CSR_BUSY_);	\		SMC_SET_MAC_CMD(MAC_CSR_CMD_CSR_BUSY_ |			\			MAC_CSR_CMD_R_NOT_W_ | (a) );			\		while (SMC_GET_MAC_CMD() & MAC_CSR_CMD_CSR_BUSY_);	\		v = SMC_GET_MAC_DATA();					\	} while (0)#define SMC_SET_MAC_CSR(a,v)						\	do {								\		while (SMC_GET_MAC_CMD() & MAC_CSR_CMD_CSR_BUSY_);	\		SMC_SET_MAC_DATA(v);					\		SMC_SET_MAC_CMD(MAC_CSR_CMD_CSR_BUSY_ | (a) );		\		while (SMC_GET_MAC_CMD() & MAC_CSR_CMD_CSR_BUSY_);	\	} while (0)#define SMC_GET_MAC_CR(x)	SMC_GET_MAC_CSR( MAC_CR, x )#define SMC_SET_MAC_CR(x)	SMC_SET_MAC_CSR( MAC_CR, x )#define SMC_GET_ADDRH(x)	SMC_GET_MAC_CSR( ADDRH, x )#define SMC_SET_ADDRH(x)	SMC_SET_MAC_CSR( ADDRH, x )#define SMC_GET_ADDRL(x)	SMC_GET_MAC_CSR( ADDRL, x )#define SMC_SET_ADDRL(x)	SMC_SET_MAC_CSR( ADDRL, x )#define SMC_GET_HASHH(x)	SMC_GET_MAC_CSR( HASHH, x )#define SMC_SET_HASHH(x)	SMC_SET_MAC_CSR( HASHH, x )#define SMC_GET_HASHL(x)	SMC_GET_MAC_CSR( HASHL, x )#define SMC_SET_HASHL(x)	SMC_SET_MAC_CSR( HASHL, x )#define SMC_GET_MII_ACC(x)	SMC_GET_MAC_CSR( MII_ACC, x )#define SMC_SET_MII_ACC(x)	SMC_SET_MAC_CSR( MII_ACC, x )#define SMC_GET_MII_DATA(x)	SMC_GET_MAC_CSR( MII_DATA, x )#define SMC_SET_MII_DATA(x)	SMC_SET_MAC_CSR( MII_DATA, x )#define SMC_GET_FLOW(x)		SMC_GET_MAC_CSR( FLOW, x )#define SMC_SET_FLOW(x)		SMC_SET_MAC_CSR( FLOW, x )#define SMC_GET_VLAN1(x)	SMC_GET_MAC_CSR( VLAN1, x )#define SMC_SET_VLAN1(x)	SMC_SET_MAC_CSR( VLAN1, x )#define SMC_GET_VLAN2(x)	SMC_GET_MAC_CSR( VLAN2, x )#define SMC_SET_VLAN2(x)	SMC_SET_MAC_CSR( VLAN2, x )#define SMC_SET_WUFF(x)		SMC_SET_MAC_CSR( WUFF, x )#define SMC_GET_WUCSR(x)	SMC_GET_MAC_CSR( WUCSR, x )#define SMC_SET_WUCSR(x)	SMC_SET_MAC_CSR( WUCSR, x )/* PHY register read/write macros */#define SMC_GET_MII(a,phy,v)					\	do {							\		u32 __v;					\		do {						\			SMC_GET_MII_ACC(__v);			\		} while ( __v & MII_ACC_MII_BUSY_ );		\		SMC_SET_MII_ACC( ((phy)<<11) | ((a)<<6) |	\			MII_ACC_MII_BUSY_);			\		do {						\			SMC_GET_MII_ACC(__v);			\		} while ( __v & MII_ACC_MII_BUSY_ );		\		SMC_GET_MII_DATA(v);				\	} while (0)#define SMC_SET_MII(a,phy,v)					\	do {							\		u32 __v;					\		do {						\			SMC_GET_MII_ACC(__v);			\		} while ( __v & MII_ACC_MII_BUSY_ );		\		SMC_SET_MII_DATA(v);				\		SMC_SET_MII_ACC( ((phy)<<11) | ((a)<<6) |	\			MII_ACC_MII_BUSY_	 |		\			MII_ACC_MII_WRITE_  );			\		do {						\			SMC_GET_MII_ACC(__v);			\		} while ( __v & MII_ACC_MII_BUSY_ );		\	} while (0)#define SMC_GET_PHY_BMCR(phy,x)		SMC_GET_MII( MII_BMCR, phy, x )#define SMC_SET_PHY_BMCR(phy,x)		SMC_SET_MII( MII_BMCR, phy, x )#define SMC_GET_PHY_BMSR(phy,x)		SMC_GET_MII( MII_BMSR, phy, x )#define SMC_GET_PHY_ID1(phy,x)		SMC_GET_MII( MII_PHYSID1, phy, x )#define SMC_GET_PHY_ID2(phy,x)		SMC_GET_MII( MII_PHYSID2, phy, x )#define SMC_GET_PHY_MII_ADV(phy,x)	SMC_GET_MII( MII_ADVERTISE, phy, x )#define SMC_SET_PHY_MII_ADV(phy,x)	SMC_SET_MII( MII_ADVERTISE, phy, x )#define SMC_GET_PHY_MII_LPA(phy,x)	SMC_GET_MII( MII_LPA, phy, x )#define SMC_SET_PHY_MII_LPA(phy,x)	SMC_SET_MII( MII_LPA, phy, x )#define SMC_GET_PHY_CTRL_STS(phy,x)	SMC_GET_MII( PHY_MODE_CTRL_STS, phy, x )#define SMC_SET_PHY_CTRL_STS(phy,x)	SMC_SET_MII( PHY_MODE_CTRL_STS, phy, x )#define SMC_GET_PHY_INT_SRC(phy,x)	SMC_GET_MII( PHY_INT_SRC, phy, x )#define SMC_SET_PHY_INT_SRC(phy,x)	SMC_SET_MII( PHY_INT_SRC, phy, x )#define SMC_GET_PHY_INT_MASK(phy,x)	SMC_GET_MII( PHY_INT_MASK, phy, x )#define SMC_SET_PHY_INT_MASK(phy,x)	SMC_SET_MII( PHY_INT_MASK, phy, x )#define SMC_GET_PHY_SPECIAL(phy,x)	SMC_GET_MII( PHY_SPECIAL, phy, x )/* Misc read/write macros */#ifndef SMC_GET_MAC_ADDR#define SMC_GET_MAC_ADDR(addr)					\	do {							\		unsigned int __v;				\								\		SMC_GET_MAC_CSR(ADDRL, __v);			\		addr[0] = __v; addr[1] = __v >> 8;		\		addr[2] = __v >> 16; addr[3] = __v >> 24;	\		SMC_GET_MAC_CSR(ADDRH, __v);			\		addr[4] = __v; addr[5] = __v >> 8;		\	} while (0)#endif#define SMC_SET_MAC_ADDR(addr)					\	do {							\		 SMC_SET_MAC_CSR(ADDRL,				\				 addr[0] |			\				(addr[1] << 8) |		\				(addr[2] << 16) |		\				(addr[3] << 24));		\		 SMC_SET_MAC_CSR(ADDRH, addr[4]|(addr[5] << 8));\	} while (0)#define SMC_WRITE_EEPROM_CMD(cmd, addr)					\	do {								\		while (SMC_GET_E2P_CMD() & MAC_CSR_CMD_CSR_BUSY_);	\		SMC_SET_MAC_CMD(MAC_CSR_CMD_R_NOT_W_ | a );		\		while (SMC_GET_MAC_CMD() & MAC_CSR_CMD_CSR_BUSY_);	\	} while (0)#endif	 /* _SMC911X_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -