130f57471SLouis Su /* ax88180.h: ASIX AX88180 Non-PCI Gigabit Ethernet u-boot driver */ 230f57471SLouis Su /* 330f57471SLouis Su * 430f57471SLouis Su * This program is free software; you can distribute it and/or modify it 530f57471SLouis Su * under the terms of the GNU General Public License (Version 2) as 630f57471SLouis Su * published by the Free Software Foundation. 730f57471SLouis Su * 830f57471SLouis Su * This program is distributed in the hope it will be useful, but WITHOUT 930f57471SLouis Su * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1030f57471SLouis Su * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1130f57471SLouis Su * for more details. 1230f57471SLouis Su * 1330f57471SLouis Su * You should have received a copy of the GNU General Public License along 1430f57471SLouis Su * with this program; if not, write to the Free Software Foundation, Inc., 1530f57471SLouis Su * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 1630f57471SLouis Su * 1730f57471SLouis Su */ 1830f57471SLouis Su 1930f57471SLouis Su #ifndef _AX88180_H_ 2030f57471SLouis Su #define _AX88180_H_ 2130f57471SLouis Su 2230f57471SLouis Su #include <asm/types.h> 2330f57471SLouis Su #include <config.h> 2430f57471SLouis Su 2530f57471SLouis Su typedef enum _ax88180_link_state { 2630f57471SLouis Su INS_LINK_DOWN, 2730f57471SLouis Su INS_LINK_UP, 2830f57471SLouis Su INS_LINK_UNKNOWN 2930f57471SLouis Su } ax88180_link_state; 3030f57471SLouis Su 3130f57471SLouis Su struct ax88180_private { 3230f57471SLouis Su unsigned char BusWidth; 3330f57471SLouis Su unsigned char PadSize; 3430f57471SLouis Su unsigned short PhyAddr; 3530f57471SLouis Su unsigned short PhyID0; 3630f57471SLouis Su unsigned short FirstTxDesc; 3730f57471SLouis Su unsigned short NextTxDesc; 3830f57471SLouis Su ax88180_link_state LinkState; 3930f57471SLouis Su }; 4030f57471SLouis Su 4130f57471SLouis Su #define BUS_WIDTH_16 1 4230f57471SLouis Su #define BUS_WIDTH_32 2 4330f57471SLouis Su 4430f57471SLouis Su #define ENABLE_JUMBO 1 4530f57471SLouis Su #define DISABLE_JUMBO 0 4630f57471SLouis Su 4730f57471SLouis Su #define ENABLE_BURST 1 4830f57471SLouis Su #define DISABLE_BURST 0 4930f57471SLouis Su 5030f57471SLouis Su #define NORMAL_RX_MODE 0 5130f57471SLouis Su #define RX_LOOPBACK_MODE 1 5230f57471SLouis Su #define RX_INIFINIT_LOOP_MODE 2 5330f57471SLouis Su #define TX_INIFINIT_LOOP_MODE 3 5430f57471SLouis Su 5530f57471SLouis Su #define DEFAULT_ETH_MTU 1500 5630f57471SLouis Su 5730f57471SLouis Su /* Jumbo packet size 4086 bytes included 4 bytes CRC*/ 5830f57471SLouis Su #define MAX_JUMBO_MTU 4072 5930f57471SLouis Su 6030f57471SLouis Su /* Max Tx Jumbo size 4086 bytes included 4 bytes CRC */ 6130f57471SLouis Su #define MAX_TX_JUMBO_SIZE 4086 6230f57471SLouis Su 6330f57471SLouis Su /* Max Rx Jumbo size is 15K Bytes */ 6430f57471SLouis Su #define MAX_RX_SIZE 0x3C00 6530f57471SLouis Su 66*f9abdfe0SMike Frysinger #define MARVELL_88E1111_PHYSID0 0x0141 6730f57471SLouis Su 68*f9abdfe0SMike Frysinger #define CICADA_CIS8201_PHYSID0 0x000F 6930f57471SLouis Su 7030f57471SLouis Su #define MEDIA_AUTO 0 7130f57471SLouis Su #define MEDIA_1000FULL 1 7230f57471SLouis Su #define MEDIA_1000HALF 2 7330f57471SLouis Su #define MEDIA_100FULL 3 7430f57471SLouis Su #define MEDIA_100HALF 4 7530f57471SLouis Su #define MEDIA_10FULL 5 7630f57471SLouis Su #define MEDIA_10HALF 6 7730f57471SLouis Su #define MEDIA_UNKNOWN 7 7830f57471SLouis Su 7930f57471SLouis Su #define AUTO_MEDIA 0 8030f57471SLouis Su #define FORCE_MEDIA 1 8130f57471SLouis Su 8230f57471SLouis Su #define TXDP_MASK 3 8330f57471SLouis Su #define TXDP0 0 8430f57471SLouis Su #define TXDP1 1 8530f57471SLouis Su #define TXDP2 2 8630f57471SLouis Su #define TXDP3 3 8730f57471SLouis Su 8830f57471SLouis Su #define CMD_MAP_SIZE 0x100 8930f57471SLouis Su 9030f57471SLouis Su #if defined (CONFIG_DRIVER_AX88180_16BIT) 9130f57471SLouis Su #define AX88180_MEMORY_SIZE 0x00004000 9230f57471SLouis Su #define START_BASE 0x1000 9330f57471SLouis Su 9430f57471SLouis Su #define RX_BUF_SIZE 0x1000 9530f57471SLouis Su #define TX_BUF_SIZE 0x0F00 9630f57471SLouis Su 9730f57471SLouis Su #define TX_BASE START_BASE 9830f57471SLouis Su #define CMD_BASE (TX_BASE + TX_BUF_SIZE) 9930f57471SLouis Su #define RX_BASE (CMD_BASE + CMD_MAP_SIZE) 10030f57471SLouis Su #else 10130f57471SLouis Su #define AX88180_MEMORY_SIZE 0x00010000 10230f57471SLouis Su 10330f57471SLouis Su #define RX_BUF_SIZE 0x8000 10430f57471SLouis Su #define TX_BUF_SIZE 0x7C00 10530f57471SLouis Su 10630f57471SLouis Su #define RX_BASE 0x0000 10730f57471SLouis Su #define TX_BASE (RX_BASE + RX_BUF_SIZE) 10830f57471SLouis Su #define CMD_BASE (TX_BASE + TX_BUF_SIZE) 10930f57471SLouis Su #endif 11030f57471SLouis Su 11130f57471SLouis Su /* AX88180 Memory Mapping Definition */ 11230f57471SLouis Su #define RXBUFFER_START RX_BASE 11330f57471SLouis Su #define RX_PACKET_LEN_OFFSET 0 11430f57471SLouis Su #define RX_PAGE_NUM_MASK 0x7FF /* RX pages 0~7FFh */ 11530f57471SLouis Su #define TXBUFFER_START TX_BASE 11630f57471SLouis Su 11730f57471SLouis Su /* AX88180 MAC Register Definition */ 11830f57471SLouis Su #define DECODE (0) 11930f57471SLouis Su #define DECODE_EN 0x00000001 12030f57471SLouis Su #define BASE (6) 12130f57471SLouis Su #define CMD (CMD_BASE + 0x0000) 12230f57471SLouis Su #define WAKEMOD 0x00000001 12330f57471SLouis Su #define TXEN 0x00000100 12430f57471SLouis Su #define RXEN 0x00000200 12530f57471SLouis Su #define DEFAULT_CMD WAKEMOD 12630f57471SLouis Su #define IMR (CMD_BASE + 0x0004) 12730f57471SLouis Su #define IMR_RXBUFFOVR 0x00000001 12830f57471SLouis Su #define IMR_WATCHDOG 0x00000002 12930f57471SLouis Su #define IMR_TX 0x00000008 13030f57471SLouis Su #define IMR_RX 0x00000010 13130f57471SLouis Su #define IMR_PHY 0x00000020 13230f57471SLouis Su #define CLEAR_IMR 0x00000000 13330f57471SLouis Su #define DEFAULT_IMR (IMR_PHY | IMR_RX | IMR_TX |\ 13430f57471SLouis Su IMR_RXBUFFOVR | IMR_WATCHDOG) 13530f57471SLouis Su #define ISR (CMD_BASE + 0x0008) 13630f57471SLouis Su #define ISR_RXBUFFOVR 0x00000001 13730f57471SLouis Su #define ISR_WATCHDOG 0x00000002 13830f57471SLouis Su #define ISR_TX 0x00000008 13930f57471SLouis Su #define ISR_RX 0x00000010 14030f57471SLouis Su #define ISR_PHY 0x00000020 14130f57471SLouis Su #define TXCFG (CMD_BASE + 0x0010) 14230f57471SLouis Su #define AUTOPAD_CRC 0x00000050 14330f57471SLouis Su #define DEFAULT_TXCFG AUTOPAD_CRC 14430f57471SLouis Su #define TXCMD (CMD_BASE + 0x0014) 14530f57471SLouis Su #define TXCMD_TXDP_MASK 0x00006000 14630f57471SLouis Su #define TXCMD_TXDP0 0x00000000 14730f57471SLouis Su #define TXCMD_TXDP1 0x00002000 14830f57471SLouis Su #define TXCMD_TXDP2 0x00004000 14930f57471SLouis Su #define TXCMD_TXDP3 0x00006000 15030f57471SLouis Su #define TX_START_WRITE 0x00008000 15130f57471SLouis Su #define TX_STOP_WRITE 0x00000000 15230f57471SLouis Su #define DEFAULT_TXCMD 0x00000000 15330f57471SLouis Su #define TXBS (CMD_BASE + 0x0018) 15430f57471SLouis Su #define TXDP0_USED 0x00000001 15530f57471SLouis Su #define TXDP1_USED 0x00000002 15630f57471SLouis Su #define TXDP2_USED 0x00000004 15730f57471SLouis Su #define TXDP3_USED 0x00000008 15830f57471SLouis Su #define DEFAULT_TXBS 0x00000000 15930f57471SLouis Su #define TXDES0 (CMD_BASE + 0x0020) 16030f57471SLouis Su #define TXDPx_ENABLE 0x00008000 16130f57471SLouis Su #define TXDPx_LEN_MASK 0x00001FFF 16230f57471SLouis Su #define DEFAULT_TXDES0 0x00000000 16330f57471SLouis Su #define TXDES1 (CMD_BASE + 0x0024) 16430f57471SLouis Su #define TXDPx_ENABLE 0x00008000 16530f57471SLouis Su #define TXDPx_LEN_MASK 0x00001FFF 16630f57471SLouis Su #define DEFAULT_TXDES1 0x00000000 16730f57471SLouis Su #define TXDES2 (CMD_BASE + 0x0028) 16830f57471SLouis Su #define TXDPx_ENABLE 0x00008000 16930f57471SLouis Su #define TXDPx_LEN_MASK 0x00001FFF 17030f57471SLouis Su #define DEFAULT_TXDES2 0x00000000 17130f57471SLouis Su #define TXDES3 (CMD_BASE + 0x002C) 17230f57471SLouis Su #define TXDPx_ENABLE 0x00008000 17330f57471SLouis Su #define TXDPx_LEN_MASK 0x00001FFF 17430f57471SLouis Su #define DEFAULT_TXDES3 0x00000000 17530f57471SLouis Su #define RXCFG (CMD_BASE + 0x0030) 17630f57471SLouis Su #define RXBUFF_PROTECT 0x00000001 17730f57471SLouis Su #define RXTCPCRC_CHECK 0x00000010 17830f57471SLouis Su #define RXFLOW_ENABLE 0x00000100 17930f57471SLouis Su #define DEFAULT_RXCFG RXBUFF_PROTECT 18030f57471SLouis Su #define RXCURT (CMD_BASE + 0x0034) 18130f57471SLouis Su #define DEFAULT_RXCURT 0x00000000 18230f57471SLouis Su #define RXBOUND (CMD_BASE + 0x0038) 183b4dbacf6SWolfgang Denk #define DEFAULT_RXBOUND 0x7FF /* RX pages 0~7FFh */ 18430f57471SLouis Su #define MACCFG0 (CMD_BASE + 0x0040) 18530f57471SLouis Su #define MACCFG0_BIT3_0 0x00000007 18630f57471SLouis Su #define IPGT_VAL 0x00000150 18730f57471SLouis Su #define TXFLOW_ENABLE 0x00001000 18830f57471SLouis Su #define SPEED100 0x00008000 18930f57471SLouis Su #define DEFAULT_MACCFG0 (IPGT_VAL | MACCFG0_BIT3_0) 19030f57471SLouis Su #define MACCFG1 (CMD_BASE + 0x0044) 19130f57471SLouis Su #define RGMII_EN 0x00000002 19230f57471SLouis Su #define RXFLOW_EN 0x00000020 19330f57471SLouis Su #define FULLDUPLEX 0x00000040 19430f57471SLouis Su #define MAX_JUMBO_LEN 0x00000780 19530f57471SLouis Su #define RXJUMBO_EN 0x00000800 19630f57471SLouis Su #define GIGA_MODE_EN 0x00001000 19730f57471SLouis Su #define RXCRC_CHECK 0x00002000 19830f57471SLouis Su #define RXPAUSE_DA_CHECK 0x00004000 19930f57471SLouis Su 20030f57471SLouis Su #define JUMBO_LEN_4K 0x00000200 20130f57471SLouis Su #define JUMBO_LEN_15K 0x00000780 20230f57471SLouis Su #define DEFAULT_MACCFG1 (RXCRC_CHECK | RXPAUSE_DA_CHECK | \ 20330f57471SLouis Su RGMII_EN) 20430f57471SLouis Su #define CICADA_DEFAULT_MACCFG1 (RXCRC_CHECK | RXPAUSE_DA_CHECK) 20530f57471SLouis Su #define MACCFG2 (CMD_BASE + 0x0048) 20630f57471SLouis Su #define MACCFG2_BIT15_8 0x00000100 20730f57471SLouis Su #define JAM_LIMIT_MASK 0x000000FC 20830f57471SLouis Su #define DEFAULT_JAM_LIMIT 0x00000064 20930f57471SLouis Su #define DEFAULT_MACCFG2 MACCFG2_BIT15_8 21030f57471SLouis Su #define MACCFG3 (CMD_BASE + 0x004C) 21130f57471SLouis Su #define IPGR2_VAL 0x0000000E 21230f57471SLouis Su #define IPGR1_VAL 0x00000600 21330f57471SLouis Su #define NOABORT 0x00008000 21430f57471SLouis Su #define DEFAULT_MACCFG3 (IPGR1_VAL | IPGR2_VAL) 21530f57471SLouis Su #define TXPAUT (CMD_BASE + 0x0054) 21630f57471SLouis Su #define DEFAULT_TXPAUT 0x001FE000 21730f57471SLouis Su #define RXBTHD0 (CMD_BASE + 0x0058) 21830f57471SLouis Su #define DEFAULT_RXBTHD0 0x00000300 21930f57471SLouis Su #define RXBTHD1 (CMD_BASE + 0x005C) 22030f57471SLouis Su #define DEFAULT_RXBTHD1 0x00000600 22130f57471SLouis Su #define RXFULTHD (CMD_BASE + 0x0060) 22230f57471SLouis Su #define DEFAULT_RXFULTHD 0x00000100 22330f57471SLouis Su #define MISC (CMD_BASE + 0x0068) 22430f57471SLouis Su /* Normal operation mode */ 22530f57471SLouis Su #define MISC_NORMAL 0x00000003 22630f57471SLouis Su /* Clear bit 0 to reset MAC */ 22730f57471SLouis Su #define MISC_RESET_MAC 0x00000002 22830f57471SLouis Su /* Clear bit 1 to reset PHY */ 22930f57471SLouis Su #define MISC_RESET_PHY 0x00000001 23030f57471SLouis Su /* Clear bit 0 and 1 to reset MAC and PHY */ 23130f57471SLouis Su #define MISC_RESET_MAC_PHY 0x00000000 23230f57471SLouis Su #define DEFAULT_MISC MISC_NORMAL 23330f57471SLouis Su #define MACID0 (CMD_BASE + 0x0070) 23430f57471SLouis Su #define MACID1 (CMD_BASE + 0x0074) 23530f57471SLouis Su #define MACID2 (CMD_BASE + 0x0078) 23630f57471SLouis Su #define TXLEN (CMD_BASE + 0x007C) 23730f57471SLouis Su #define DEFAULT_TXLEN 0x000005FC 23830f57471SLouis Su #define RXFILTER (CMD_BASE + 0x0080) 23930f57471SLouis Su #define RX_RXANY 0x00000001 24030f57471SLouis Su #define RX_MULTICAST 0x00000002 24130f57471SLouis Su #define RX_UNICAST 0x00000004 24230f57471SLouis Su #define RX_BROADCAST 0x00000008 24330f57471SLouis Su #define RX_MULTI_HASH 0x00000010 24430f57471SLouis Su #define DISABLE_RXFILTER 0x00000000 24530f57471SLouis Su #define DEFAULT_RXFILTER (RX_BROADCAST + RX_UNICAST) 24630f57471SLouis Su #define MDIOCTRL (CMD_BASE + 0x0084) 24730f57471SLouis Su #define PHY_ADDR_MASK 0x0000001F 24830f57471SLouis Su #define REG_ADDR_MASK 0x00001F00 24930f57471SLouis Su #define READ_PHY 0x00004000 25030f57471SLouis Su #define WRITE_PHY 0x00008000 25130f57471SLouis Su #define MDIODP (CMD_BASE + 0x0088) 25230f57471SLouis Su #define GPIOCTRL (CMD_BASE + 0x008C) 25330f57471SLouis Su #define RXINDICATOR (CMD_BASE + 0x0090) 25430f57471SLouis Su #define RX_START_READ 0x00000001 25530f57471SLouis Su #define RX_STOP_READ 0x00000000 25630f57471SLouis Su #define DEFAULT_RXINDICATOR RX_STOP_READ 25730f57471SLouis Su #define TXST (CMD_BASE + 0x0094) 25830f57471SLouis Su #define MDCCLKPAT (CMD_BASE + 0x00A0) 25930f57471SLouis Su #define RXIPCRCCNT (CMD_BASE + 0x00A4) 26030f57471SLouis Su #define RXCRCCNT (CMD_BASE + 0x00A8) 26130f57471SLouis Su #define TXFAILCNT (CMD_BASE + 0x00AC) 26230f57471SLouis Su #define PROMDP (CMD_BASE + 0x00B0) 26330f57471SLouis Su #define PROMCTRL (CMD_BASE + 0x00B4) 26430f57471SLouis Su #define RELOAD_EEPROM 0x00000200 26530f57471SLouis Su #define MAXRXLEN (CMD_BASE + 0x00B8) 26630f57471SLouis Su #define HASHTAB0 (CMD_BASE + 0x00C0) 26730f57471SLouis Su #define HASHTAB1 (CMD_BASE + 0x00C4) 26830f57471SLouis Su #define HASHTAB2 (CMD_BASE + 0x00C8) 26930f57471SLouis Su #define HASHTAB3 (CMD_BASE + 0x00CC) 27030f57471SLouis Su #define DOGTHD0 (CMD_BASE + 0x00E0) 27130f57471SLouis Su #define DEFAULT_DOGTHD0 0x0000FFFF 27230f57471SLouis Su #define DOGTHD1 (CMD_BASE + 0x00E4) 27330f57471SLouis Su #define START_WATCHDOG_TIMER 0x00008000 27430f57471SLouis Su #define DEFAULT_DOGTHD1 0x00000FFF 27530f57471SLouis Su #define SOFTRST (CMD_BASE + 0x00EC) 27630f57471SLouis Su #define SOFTRST_NORMAL 0x00000003 27730f57471SLouis Su #define SOFTRST_RESET_MAC 0x00000002 27830f57471SLouis Su 27930f57471SLouis Su /* Marvell 88E1111 Gigabit PHY Register Definition */ 28030f57471SLouis Su #define M88_SSR 0x0011 28130f57471SLouis Su #define SSR_SPEED_MASK 0xC000 28230f57471SLouis Su #define SSR_SPEED_1000 0x8000 28330f57471SLouis Su #define SSR_SPEED_100 0x4000 28430f57471SLouis Su #define SSR_SPEED_10 0x0000 28530f57471SLouis Su #define SSR_DUPLEX 0x2000 28630f57471SLouis Su #define SSR_MEDIA_RESOLVED_OK 0x0800 28730f57471SLouis Su 28830f57471SLouis Su #define SSR_MEDIA_MASK (SSR_SPEED_MASK | SSR_DUPLEX) 28930f57471SLouis Su #define SSR_1000FULL (SSR_SPEED_1000 | SSR_DUPLEX) 29030f57471SLouis Su #define SSR_1000HALF SSR_SPEED_1000 29130f57471SLouis Su #define SSR_100FULL (SSR_SPEED_100 | SSR_DUPLEX) 29230f57471SLouis Su #define SSR_100HALF SSR_SPEED_100 29330f57471SLouis Su #define SSR_10FULL (SSR_SPEED_10 | SSR_DUPLEX) 29430f57471SLouis Su #define SSR_10HALF SSR_SPEED_10 29530f57471SLouis Su #define M88_IER 0x0012 29630f57471SLouis Su #define LINK_CHANGE_INT 0x0400 29730f57471SLouis Su #define M88_ISR 0x0013 29830f57471SLouis Su #define LINK_CHANGE_STATUS 0x0400 29930f57471SLouis Su #define M88_EXT_SCR 0x0014 30030f57471SLouis Su #define RGMII_RXCLK_DELAY 0x0080 30130f57471SLouis Su #define RGMII_TXCLK_DELAY 0x0002 30230f57471SLouis Su #define DEFAULT_EXT_SCR (RGMII_TXCLK_DELAY | RGMII_RXCLK_DELAY) 30330f57471SLouis Su #define M88_EXT_SSR 0x001B 30430f57471SLouis Su #define HWCFG_MODE_MASK 0x000F 30530f57471SLouis Su #define RGMII_COPPER_MODE 0x000B 30630f57471SLouis Su 30730f57471SLouis Su /* CICADA CIS8201 Gigabit PHY Register Definition */ 30830f57471SLouis Su #define CIS_IMR 0x0019 30930f57471SLouis Su #define CIS_INT_ENABLE 0x8000 31030f57471SLouis Su #define CIS_LINK_CHANGE_INT 0x2000 31130f57471SLouis Su #define CIS_ISR 0x001A 31230f57471SLouis Su #define CIS_INT_PENDING 0x8000 31330f57471SLouis Su #define CIS_LINK_CHANGE_STATUS 0x2000 31430f57471SLouis Su #define CIS_AUX_CTRL_STATUS 0x001C 31530f57471SLouis Su #define CIS_AUTONEG_COMPLETE 0x8000 31630f57471SLouis Su #define CIS_SPEED_MASK 0x0018 31730f57471SLouis Su #define CIS_SPEED_1000 0x0010 31830f57471SLouis Su #define CIS_SPEED_100 0x0008 31930f57471SLouis Su #define CIS_SPEED_10 0x0000 32030f57471SLouis Su #define CIS_DUPLEX 0x0020 32130f57471SLouis Su 32230f57471SLouis Su #define CIS_MEDIA_MASK (CIS_SPEED_MASK | CIS_DUPLEX) 32330f57471SLouis Su #define CIS_1000FULL (CIS_SPEED_1000 | CIS_DUPLEX) 32430f57471SLouis Su #define CIS_1000HALF CIS_SPEED_1000 32530f57471SLouis Su #define CIS_100FULL (CIS_SPEED_100 | CIS_DUPLEX) 32630f57471SLouis Su #define CIS_100HALF CIS_SPEED_100 32730f57471SLouis Su #define CIS_10FULL (CIS_SPEED_10 | CIS_DUPLEX) 32830f57471SLouis Su #define CIS_10HALF CIS_SPEED_10 32930f57471SLouis Su #define CIS_SMI_PRIORITY 0x0004 33030f57471SLouis Su 33130f57471SLouis Su static inline unsigned short INW (struct eth_device *dev, unsigned long addr) 33230f57471SLouis Su { 33330f57471SLouis Su return le16_to_cpu (*(volatile unsigned short *) (addr + dev->iobase)); 33430f57471SLouis Su } 33530f57471SLouis Su 33630f57471SLouis Su static inline void OUTW (struct eth_device *dev, unsigned short command, unsigned long addr) 33730f57471SLouis Su { 33830f57471SLouis Su *(volatile unsigned short *) ((addr + dev->iobase)) = cpu_to_le16 (command); 33930f57471SLouis Su } 34030f57471SLouis Su 34130f57471SLouis Su /* 34230f57471SLouis Su Access RXBUFFER_START/TXBUFFER_START to read RX buffer/write TX buffer 34330f57471SLouis Su */ 34430f57471SLouis Su #if defined (CONFIG_DRIVER_AX88180_16BIT) 34530f57471SLouis Su static inline unsigned short READ_RXBUF (struct eth_device *dev) 34630f57471SLouis Su { 34730f57471SLouis Su return le16_to_cpu (*(volatile unsigned short *) (RXBUFFER_START + dev->iobase)); 34830f57471SLouis Su } 34930f57471SLouis Su 35030f57471SLouis Su static inline void WRITE_TXBUF (struct eth_device *dev, unsigned short data) 35130f57471SLouis Su { 35230f57471SLouis Su *(volatile unsigned short *) ((TXBUFFER_START + dev->iobase)) = cpu_to_le16 (data); 35330f57471SLouis Su } 35430f57471SLouis Su #else 35530f57471SLouis Su static inline unsigned long READ_RXBUF (struct eth_device *dev) 35630f57471SLouis Su { 35730f57471SLouis Su return le32_to_cpu (*(volatile unsigned long *) (RXBUFFER_START + dev->iobase)); 35830f57471SLouis Su } 35930f57471SLouis Su 36030f57471SLouis Su static inline void WRITE_TXBUF (struct eth_device *dev, unsigned long data) 36130f57471SLouis Su { 36230f57471SLouis Su *(volatile unsigned long *) ((TXBUFFER_START + dev->iobase)) = cpu_to_le32 (data); 36330f57471SLouis Su } 36430f57471SLouis Su #endif 36530f57471SLouis Su 36630f57471SLouis Su #endif /* _AX88180_H_ */ 367