162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * dm9000 Ethernet 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef _DM9000X_H_ 762306a36Sopenharmony_ci#define _DM9000X_H_ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#define DM9000_ID 0x90000A46 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/* although the registers are 16 bit, they are 32-bit aligned. 1262306a36Sopenharmony_ci */ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#define DM9000_NCR 0x00 1562306a36Sopenharmony_ci#define DM9000_NSR 0x01 1662306a36Sopenharmony_ci#define DM9000_TCR 0x02 1762306a36Sopenharmony_ci#define DM9000_TSR1 0x03 1862306a36Sopenharmony_ci#define DM9000_TSR2 0x04 1962306a36Sopenharmony_ci#define DM9000_RCR 0x05 2062306a36Sopenharmony_ci#define DM9000_RSR 0x06 2162306a36Sopenharmony_ci#define DM9000_ROCR 0x07 2262306a36Sopenharmony_ci#define DM9000_BPTR 0x08 2362306a36Sopenharmony_ci#define DM9000_FCTR 0x09 2462306a36Sopenharmony_ci#define DM9000_FCR 0x0A 2562306a36Sopenharmony_ci#define DM9000_EPCR 0x0B 2662306a36Sopenharmony_ci#define DM9000_EPAR 0x0C 2762306a36Sopenharmony_ci#define DM9000_EPDRL 0x0D 2862306a36Sopenharmony_ci#define DM9000_EPDRH 0x0E 2962306a36Sopenharmony_ci#define DM9000_WCR 0x0F 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#define DM9000_PAR 0x10 3262306a36Sopenharmony_ci#define DM9000_MAR 0x16 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#define DM9000_GPCR 0x1e 3562306a36Sopenharmony_ci#define DM9000_GPR 0x1f 3662306a36Sopenharmony_ci#define DM9000_TRPAL 0x22 3762306a36Sopenharmony_ci#define DM9000_TRPAH 0x23 3862306a36Sopenharmony_ci#define DM9000_RWPAL 0x24 3962306a36Sopenharmony_ci#define DM9000_RWPAH 0x25 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#define DM9000_VIDL 0x28 4262306a36Sopenharmony_ci#define DM9000_VIDH 0x29 4362306a36Sopenharmony_ci#define DM9000_PIDL 0x2A 4462306a36Sopenharmony_ci#define DM9000_PIDH 0x2B 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci#define DM9000_CHIPR 0x2C 4762306a36Sopenharmony_ci#define DM9000_SMCR 0x2F 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci#define DM9000_ETXCSR 0x30 5062306a36Sopenharmony_ci#define DM9000_TCCR 0x31 5162306a36Sopenharmony_ci#define DM9000_RCSR 0x32 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#define CHIPR_DM9000A 0x19 5462306a36Sopenharmony_ci#define CHIPR_DM9000B 0x1A 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci#define DM9000_MRCMDX 0xF0 5762306a36Sopenharmony_ci#define DM9000_MRCMD 0xF2 5862306a36Sopenharmony_ci#define DM9000_MRRL 0xF4 5962306a36Sopenharmony_ci#define DM9000_MRRH 0xF5 6062306a36Sopenharmony_ci#define DM9000_MWCMDX 0xF6 6162306a36Sopenharmony_ci#define DM9000_MWCMD 0xF8 6262306a36Sopenharmony_ci#define DM9000_MWRL 0xFA 6362306a36Sopenharmony_ci#define DM9000_MWRH 0xFB 6462306a36Sopenharmony_ci#define DM9000_TXPLL 0xFC 6562306a36Sopenharmony_ci#define DM9000_TXPLH 0xFD 6662306a36Sopenharmony_ci#define DM9000_ISR 0xFE 6762306a36Sopenharmony_ci#define DM9000_IMR 0xFF 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci#define NCR_EXT_PHY (1<<7) 7062306a36Sopenharmony_ci#define NCR_WAKEEN (1<<6) 7162306a36Sopenharmony_ci#define NCR_FCOL (1<<4) 7262306a36Sopenharmony_ci#define NCR_FDX (1<<3) 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci#define NCR_RESERVED (3<<1) 7562306a36Sopenharmony_ci#define NCR_MAC_LBK (1<<1) 7662306a36Sopenharmony_ci#define NCR_RST (1<<0) 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci#define NSR_SPEED (1<<7) 7962306a36Sopenharmony_ci#define NSR_LINKST (1<<6) 8062306a36Sopenharmony_ci#define NSR_WAKEST (1<<5) 8162306a36Sopenharmony_ci#define NSR_TX2END (1<<3) 8262306a36Sopenharmony_ci#define NSR_TX1END (1<<2) 8362306a36Sopenharmony_ci#define NSR_RXOV (1<<1) 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci#define TCR_TJDIS (1<<6) 8662306a36Sopenharmony_ci#define TCR_EXCECM (1<<5) 8762306a36Sopenharmony_ci#define TCR_PAD_DIS2 (1<<4) 8862306a36Sopenharmony_ci#define TCR_CRC_DIS2 (1<<3) 8962306a36Sopenharmony_ci#define TCR_PAD_DIS1 (1<<2) 9062306a36Sopenharmony_ci#define TCR_CRC_DIS1 (1<<1) 9162306a36Sopenharmony_ci#define TCR_TXREQ (1<<0) 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci#define TSR_TJTO (1<<7) 9462306a36Sopenharmony_ci#define TSR_LC (1<<6) 9562306a36Sopenharmony_ci#define TSR_NC (1<<5) 9662306a36Sopenharmony_ci#define TSR_LCOL (1<<4) 9762306a36Sopenharmony_ci#define TSR_COL (1<<3) 9862306a36Sopenharmony_ci#define TSR_EC (1<<2) 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci#define RCR_WTDIS (1<<6) 10162306a36Sopenharmony_ci#define RCR_DIS_LONG (1<<5) 10262306a36Sopenharmony_ci#define RCR_DIS_CRC (1<<4) 10362306a36Sopenharmony_ci#define RCR_ALL (1<<3) 10462306a36Sopenharmony_ci#define RCR_RUNT (1<<2) 10562306a36Sopenharmony_ci#define RCR_PRMSC (1<<1) 10662306a36Sopenharmony_ci#define RCR_RXEN (1<<0) 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci#define RSR_RF (1<<7) 10962306a36Sopenharmony_ci#define RSR_MF (1<<6) 11062306a36Sopenharmony_ci#define RSR_LCS (1<<5) 11162306a36Sopenharmony_ci#define RSR_RWTO (1<<4) 11262306a36Sopenharmony_ci#define RSR_PLE (1<<3) 11362306a36Sopenharmony_ci#define RSR_AE (1<<2) 11462306a36Sopenharmony_ci#define RSR_CE (1<<1) 11562306a36Sopenharmony_ci#define RSR_FOE (1<<0) 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci#define WCR_LINKEN (1 << 5) 11862306a36Sopenharmony_ci#define WCR_SAMPLEEN (1 << 4) 11962306a36Sopenharmony_ci#define WCR_MAGICEN (1 << 3) 12062306a36Sopenharmony_ci#define WCR_LINKST (1 << 2) 12162306a36Sopenharmony_ci#define WCR_SAMPLEST (1 << 1) 12262306a36Sopenharmony_ci#define WCR_MAGICST (1 << 0) 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci#define FCTR_HWOT(ot) (( ot & 0xf ) << 4 ) 12562306a36Sopenharmony_ci#define FCTR_LWOT(ot) ( ot & 0xf ) 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci#define IMR_PAR (1<<7) 12862306a36Sopenharmony_ci#define IMR_ROOM (1<<3) 12962306a36Sopenharmony_ci#define IMR_ROM (1<<2) 13062306a36Sopenharmony_ci#define IMR_PTM (1<<1) 13162306a36Sopenharmony_ci#define IMR_PRM (1<<0) 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci#define ISR_ROOS (1<<3) 13462306a36Sopenharmony_ci#define ISR_ROS (1<<2) 13562306a36Sopenharmony_ci#define ISR_PTS (1<<1) 13662306a36Sopenharmony_ci#define ISR_PRS (1<<0) 13762306a36Sopenharmony_ci#define ISR_CLR_STATUS (ISR_ROOS | ISR_ROS | ISR_PTS | ISR_PRS) 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci#define EPCR_REEP (1<<5) 14062306a36Sopenharmony_ci#define EPCR_WEP (1<<4) 14162306a36Sopenharmony_ci#define EPCR_EPOS (1<<3) 14262306a36Sopenharmony_ci#define EPCR_ERPRR (1<<2) 14362306a36Sopenharmony_ci#define EPCR_ERPRW (1<<1) 14462306a36Sopenharmony_ci#define EPCR_ERRE (1<<0) 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci#define GPCR_GEP_CNTL (1<<0) 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci#define TCCR_IP (1<<0) 14962306a36Sopenharmony_ci#define TCCR_TCP (1<<1) 15062306a36Sopenharmony_ci#define TCCR_UDP (1<<2) 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci#define RCSR_UDP_BAD (1<<7) 15362306a36Sopenharmony_ci#define RCSR_TCP_BAD (1<<6) 15462306a36Sopenharmony_ci#define RCSR_IP_BAD (1<<5) 15562306a36Sopenharmony_ci#define RCSR_UDP (1<<4) 15662306a36Sopenharmony_ci#define RCSR_TCP (1<<3) 15762306a36Sopenharmony_ci#define RCSR_IP (1<<2) 15862306a36Sopenharmony_ci#define RCSR_CSUM (1<<1) 15962306a36Sopenharmony_ci#define RCSR_DISCARD (1<<0) 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_ci#define DM9000_PKT_RDY 0x01 /* Packet ready to receive */ 16262306a36Sopenharmony_ci#define DM9000_PKT_ERR 0x02 16362306a36Sopenharmony_ci#define DM9000_PKT_MAX 1536 /* Received packet max size */ 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci/* DM9000A / DM9000B definitions */ 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci#define IMR_LNKCHNG (1<<5) 16862306a36Sopenharmony_ci#define IMR_UNDERRUN (1<<4) 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci#define ISR_LNKCHNG (1<<5) 17162306a36Sopenharmony_ci#define ISR_UNDERRUN (1<<4) 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci/* Davicom MII registers. 17462306a36Sopenharmony_ci */ 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci#define MII_DM_DSPCR 0x1b /* DSP Control Register */ 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ci#define DSPCR_INIT_PARAM 0xE100 /* DSP init parameter */ 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci#endif /* _DM9000X_H_ */ 18162306a36Sopenharmony_ci 182