1a61a8196SReinhard Meyer /* 2a61a8196SReinhard Meyer * (X) extracted from enc28j60.c 3a61a8196SReinhard Meyer * Reinhard Meyer, EMK Elektronik, reinhard.meyer@emk-elektronik.de 4a61a8196SReinhard Meyer * 5*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6a61a8196SReinhard Meyer */ 7a61a8196SReinhard Meyer 8a61a8196SReinhard Meyer #ifndef _enc28j60_h 9a61a8196SReinhard Meyer #define _enc28j60_h 10a61a8196SReinhard Meyer 11a61a8196SReinhard Meyer /* 12a61a8196SReinhard Meyer * SPI Commands 13a61a8196SReinhard Meyer * 14a61a8196SReinhard Meyer * Bits 7-5: Command 15a61a8196SReinhard Meyer * Bits 4-0: Register 16a61a8196SReinhard Meyer */ 17a61a8196SReinhard Meyer #define CMD_RCR(x) (0x00+((x)&0x1f)) /* Read Control Register */ 18a61a8196SReinhard Meyer #define CMD_RBM 0x3a /* Read Buffer Memory */ 19a61a8196SReinhard Meyer #define CMD_WCR(x) (0x40+((x)&0x1f)) /* Write Control Register */ 20a61a8196SReinhard Meyer #define CMD_WBM 0x7a /* Write Buffer Memory */ 21a61a8196SReinhard Meyer #define CMD_BFS(x) (0x80+((x)&0x1f)) /* Bit Field Set */ 22a61a8196SReinhard Meyer #define CMD_BFC(x) (0xa0+((x)&0x1f)) /* Bit Field Clear */ 23a61a8196SReinhard Meyer #define CMD_SRC 0xff /* System Reset Command */ 24a61a8196SReinhard Meyer 25a61a8196SReinhard Meyer /* NEW: encode (bank number+1) in upper byte */ 26a61a8196SReinhard Meyer 27a61a8196SReinhard Meyer /* Common Control Registers accessible in all Banks */ 28a61a8196SReinhard Meyer #define CTL_REG_EIE 0x01B 29a61a8196SReinhard Meyer #define CTL_REG_EIR 0x01C 30a61a8196SReinhard Meyer #define CTL_REG_ESTAT 0x01D 31a61a8196SReinhard Meyer #define CTL_REG_ECON2 0x01E 32a61a8196SReinhard Meyer #define CTL_REG_ECON1 0x01F 33a61a8196SReinhard Meyer 34a61a8196SReinhard Meyer /* Control Registers accessible in Bank 0 */ 35a61a8196SReinhard Meyer #define CTL_REG_ERDPTL 0x100 36a61a8196SReinhard Meyer #define CTL_REG_ERDPTH 0x101 37a61a8196SReinhard Meyer #define CTL_REG_EWRPTL 0x102 38a61a8196SReinhard Meyer #define CTL_REG_EWRPTH 0x103 39a61a8196SReinhard Meyer #define CTL_REG_ETXSTL 0x104 40a61a8196SReinhard Meyer #define CTL_REG_ETXSTH 0x105 41a61a8196SReinhard Meyer #define CTL_REG_ETXNDL 0x106 42a61a8196SReinhard Meyer #define CTL_REG_ETXNDH 0x107 43a61a8196SReinhard Meyer #define CTL_REG_ERXSTL 0x108 44a61a8196SReinhard Meyer #define CTL_REG_ERXSTH 0x109 45a61a8196SReinhard Meyer #define CTL_REG_ERXNDL 0x10A 46a61a8196SReinhard Meyer #define CTL_REG_ERXNDH 0x10B 47a61a8196SReinhard Meyer #define CTL_REG_ERXRDPTL 0x10C 48a61a8196SReinhard Meyer #define CTL_REG_ERXRDPTH 0x10D 49a61a8196SReinhard Meyer #define CTL_REG_ERXWRPTL 0x10E 50a61a8196SReinhard Meyer #define CTL_REG_ERXWRPTH 0x10F 51a61a8196SReinhard Meyer #define CTL_REG_EDMASTL 0x110 52a61a8196SReinhard Meyer #define CTL_REG_EDMASTH 0x111 53a61a8196SReinhard Meyer #define CTL_REG_EDMANDL 0x112 54a61a8196SReinhard Meyer #define CTL_REG_EDMANDH 0x113 55a61a8196SReinhard Meyer #define CTL_REG_EDMADSTL 0x114 56a61a8196SReinhard Meyer #define CTL_REG_EDMADSTH 0x115 57a61a8196SReinhard Meyer #define CTL_REG_EDMACSL 0x116 58a61a8196SReinhard Meyer #define CTL_REG_EDMACSH 0x117 59a61a8196SReinhard Meyer 60a61a8196SReinhard Meyer /* Control Registers accessible in Bank 1 */ 61a61a8196SReinhard Meyer #define CTL_REG_EHT0 0x200 62a61a8196SReinhard Meyer #define CTL_REG_EHT1 0x201 63a61a8196SReinhard Meyer #define CTL_REG_EHT2 0x202 64a61a8196SReinhard Meyer #define CTL_REG_EHT3 0x203 65a61a8196SReinhard Meyer #define CTL_REG_EHT4 0x204 66a61a8196SReinhard Meyer #define CTL_REG_EHT5 0x205 67a61a8196SReinhard Meyer #define CTL_REG_EHT6 0x206 68a61a8196SReinhard Meyer #define CTL_REG_EHT7 0x207 69a61a8196SReinhard Meyer #define CTL_REG_EPMM0 0x208 70a61a8196SReinhard Meyer #define CTL_REG_EPMM1 0x209 71a61a8196SReinhard Meyer #define CTL_REG_EPMM2 0x20A 72a61a8196SReinhard Meyer #define CTL_REG_EPMM3 0x20B 73a61a8196SReinhard Meyer #define CTL_REG_EPMM4 0x20C 74a61a8196SReinhard Meyer #define CTL_REG_EPMM5 0x20D 75a61a8196SReinhard Meyer #define CTL_REG_EPMM6 0x20E 76a61a8196SReinhard Meyer #define CTL_REG_EPMM7 0x20F 77a61a8196SReinhard Meyer #define CTL_REG_EPMCSL 0x210 78a61a8196SReinhard Meyer #define CTL_REG_EPMCSH 0x211 79a61a8196SReinhard Meyer #define CTL_REG_EPMOL 0x214 80a61a8196SReinhard Meyer #define CTL_REG_EPMOH 0x215 81a61a8196SReinhard Meyer #define CTL_REG_EWOLIE 0x216 82a61a8196SReinhard Meyer #define CTL_REG_EWOLIR 0x217 83a61a8196SReinhard Meyer #define CTL_REG_ERXFCON 0x218 84a61a8196SReinhard Meyer #define CTL_REG_EPKTCNT 0x219 85a61a8196SReinhard Meyer 86a61a8196SReinhard Meyer /* Control Registers accessible in Bank 2 */ 87a61a8196SReinhard Meyer #define CTL_REG_MACON1 0x300 88a61a8196SReinhard Meyer #define CTL_REG_MACON2 0x301 89a61a8196SReinhard Meyer #define CTL_REG_MACON3 0x302 90a61a8196SReinhard Meyer #define CTL_REG_MACON4 0x303 91a61a8196SReinhard Meyer #define CTL_REG_MABBIPG 0x304 92a61a8196SReinhard Meyer #define CTL_REG_MAIPGL 0x306 93a61a8196SReinhard Meyer #define CTL_REG_MAIPGH 0x307 94a61a8196SReinhard Meyer #define CTL_REG_MACLCON1 0x308 95a61a8196SReinhard Meyer #define CTL_REG_MACLCON2 0x309 96a61a8196SReinhard Meyer #define CTL_REG_MAMXFLL 0x30A 97a61a8196SReinhard Meyer #define CTL_REG_MAMXFLH 0x30B 98a61a8196SReinhard Meyer #define CTL_REG_MAPHSUP 0x30D 99a61a8196SReinhard Meyer #define CTL_REG_MICON 0x311 100a61a8196SReinhard Meyer #define CTL_REG_MICMD 0x312 101a61a8196SReinhard Meyer #define CTL_REG_MIREGADR 0x314 102a61a8196SReinhard Meyer #define CTL_REG_MIWRL 0x316 103a61a8196SReinhard Meyer #define CTL_REG_MIWRH 0x317 104a61a8196SReinhard Meyer #define CTL_REG_MIRDL 0x318 105a61a8196SReinhard Meyer #define CTL_REG_MIRDH 0x319 106a61a8196SReinhard Meyer 107a61a8196SReinhard Meyer /* Control Registers accessible in Bank 3 */ 108a61a8196SReinhard Meyer #define CTL_REG_MAADR1 0x400 109a61a8196SReinhard Meyer #define CTL_REG_MAADR0 0x401 110a61a8196SReinhard Meyer #define CTL_REG_MAADR3 0x402 111a61a8196SReinhard Meyer #define CTL_REG_MAADR2 0x403 112a61a8196SReinhard Meyer #define CTL_REG_MAADR5 0x404 113a61a8196SReinhard Meyer #define CTL_REG_MAADR4 0x405 114a61a8196SReinhard Meyer #define CTL_REG_EBSTSD 0x406 115a61a8196SReinhard Meyer #define CTL_REG_EBSTCON 0x407 116a61a8196SReinhard Meyer #define CTL_REG_EBSTCSL 0x408 117a61a8196SReinhard Meyer #define CTL_REG_EBSTCSH 0x409 118a61a8196SReinhard Meyer #define CTL_REG_MISTAT 0x40A 119a61a8196SReinhard Meyer #define CTL_REG_EREVID 0x412 120a61a8196SReinhard Meyer #define CTL_REG_ECOCON 0x415 121a61a8196SReinhard Meyer #define CTL_REG_EFLOCON 0x417 122a61a8196SReinhard Meyer #define CTL_REG_EPAUSL 0x418 123a61a8196SReinhard Meyer #define CTL_REG_EPAUSH 0x419 124a61a8196SReinhard Meyer 125a61a8196SReinhard Meyer /* PHY Register */ 126a61a8196SReinhard Meyer #define PHY_REG_PHCON1 0x00 127a61a8196SReinhard Meyer #define PHY_REG_PHSTAT1 0x01 128a61a8196SReinhard Meyer #define PHY_REG_PHID1 0x02 129a61a8196SReinhard Meyer #define PHY_REG_PHID2 0x03 130a61a8196SReinhard Meyer #define PHY_REG_PHCON2 0x10 131a61a8196SReinhard Meyer #define PHY_REG_PHSTAT2 0x11 132a61a8196SReinhard Meyer #define PHY_REG_PHLCON 0x14 133a61a8196SReinhard Meyer 134a61a8196SReinhard Meyer /* Receive Filter Register (ERXFCON) bits */ 135a61a8196SReinhard Meyer #define ENC_RFR_UCEN 0x80 136a61a8196SReinhard Meyer #define ENC_RFR_ANDOR 0x40 137a61a8196SReinhard Meyer #define ENC_RFR_CRCEN 0x20 138a61a8196SReinhard Meyer #define ENC_RFR_PMEN 0x10 139a61a8196SReinhard Meyer #define ENC_RFR_MPEN 0x08 140a61a8196SReinhard Meyer #define ENC_RFR_HTEN 0x04 141a61a8196SReinhard Meyer #define ENC_RFR_MCEN 0x02 142a61a8196SReinhard Meyer #define ENC_RFR_BCEN 0x01 143a61a8196SReinhard Meyer 144a61a8196SReinhard Meyer /* ECON1 Register Bits */ 145a61a8196SReinhard Meyer #define ENC_ECON1_TXRST 0x80 146a61a8196SReinhard Meyer #define ENC_ECON1_RXRST 0x40 147a61a8196SReinhard Meyer #define ENC_ECON1_DMAST 0x20 148a61a8196SReinhard Meyer #define ENC_ECON1_CSUMEN 0x10 149a61a8196SReinhard Meyer #define ENC_ECON1_TXRTS 0x08 150a61a8196SReinhard Meyer #define ENC_ECON1_RXEN 0x04 151a61a8196SReinhard Meyer #define ENC_ECON1_BSEL1 0x02 152a61a8196SReinhard Meyer #define ENC_ECON1_BSEL0 0x01 153a61a8196SReinhard Meyer 154a61a8196SReinhard Meyer /* ECON2 Register Bits */ 155a61a8196SReinhard Meyer #define ENC_ECON2_AUTOINC 0x80 156a61a8196SReinhard Meyer #define ENC_ECON2_PKTDEC 0x40 157a61a8196SReinhard Meyer #define ENC_ECON2_PWRSV 0x20 158a61a8196SReinhard Meyer #define ENC_ECON2_VRPS 0x08 159a61a8196SReinhard Meyer 160a61a8196SReinhard Meyer /* EIR Register Bits */ 161a61a8196SReinhard Meyer #define ENC_EIR_PKTIF 0x40 162a61a8196SReinhard Meyer #define ENC_EIR_DMAIF 0x20 163a61a8196SReinhard Meyer #define ENC_EIR_LINKIF 0x10 164a61a8196SReinhard Meyer #define ENC_EIR_TXIF 0x08 165a61a8196SReinhard Meyer #define ENC_EIR_WOLIF 0x04 166a61a8196SReinhard Meyer #define ENC_EIR_TXERIF 0x02 167a61a8196SReinhard Meyer #define ENC_EIR_RXERIF 0x01 168a61a8196SReinhard Meyer 169a61a8196SReinhard Meyer /* ESTAT Register Bits */ 170a61a8196SReinhard Meyer #define ENC_ESTAT_INT 0x80 171a61a8196SReinhard Meyer #define ENC_ESTAT_LATECOL 0x10 172a61a8196SReinhard Meyer #define ENC_ESTAT_RXBUSY 0x04 173a61a8196SReinhard Meyer #define ENC_ESTAT_TXABRT 0x02 174a61a8196SReinhard Meyer #define ENC_ESTAT_CLKRDY 0x01 175a61a8196SReinhard Meyer 176a61a8196SReinhard Meyer /* EIE Register Bits */ 177a61a8196SReinhard Meyer #define ENC_EIE_INTIE 0x80 178a61a8196SReinhard Meyer #define ENC_EIE_PKTIE 0x40 179a61a8196SReinhard Meyer #define ENC_EIE_DMAIE 0x20 180a61a8196SReinhard Meyer #define ENC_EIE_LINKIE 0x10 181a61a8196SReinhard Meyer #define ENC_EIE_TXIE 0x08 182a61a8196SReinhard Meyer #define ENC_EIE_WOLIE 0x04 183a61a8196SReinhard Meyer #define ENC_EIE_TXERIE 0x02 184a61a8196SReinhard Meyer #define ENC_EIE_RXERIE 0x01 185a61a8196SReinhard Meyer 186a61a8196SReinhard Meyer /* MACON1 Register Bits */ 187a61a8196SReinhard Meyer #define ENC_MACON1_LOOPBK 0x10 188a61a8196SReinhard Meyer #define ENC_MACON1_TXPAUS 0x08 189a61a8196SReinhard Meyer #define ENC_MACON1_RXPAUS 0x04 190a61a8196SReinhard Meyer #define ENC_MACON1_PASSALL 0x02 191a61a8196SReinhard Meyer #define ENC_MACON1_MARXEN 0x01 192a61a8196SReinhard Meyer 193a61a8196SReinhard Meyer /* MACON2 Register Bits */ 194a61a8196SReinhard Meyer #define ENC_MACON2_MARST 0x80 195a61a8196SReinhard Meyer #define ENC_MACON2_RNDRST 0x40 196a61a8196SReinhard Meyer #define ENC_MACON2_MARXRST 0x08 197a61a8196SReinhard Meyer #define ENC_MACON2_RFUNRST 0x04 198a61a8196SReinhard Meyer #define ENC_MACON2_MATXRST 0x02 199a61a8196SReinhard Meyer #define ENC_MACON2_TFUNRST 0x01 200a61a8196SReinhard Meyer 201a61a8196SReinhard Meyer /* MACON3 Register Bits */ 202a61a8196SReinhard Meyer #define ENC_MACON3_PADCFG2 0x80 203a61a8196SReinhard Meyer #define ENC_MACON3_PADCFG1 0x40 204a61a8196SReinhard Meyer #define ENC_MACON3_PADCFG0 0x20 205a61a8196SReinhard Meyer #define ENC_MACON3_TXCRCEN 0x10 206a61a8196SReinhard Meyer #define ENC_MACON3_PHDRLEN 0x08 207a61a8196SReinhard Meyer #define ENC_MACON3_HFRMEN 0x04 208a61a8196SReinhard Meyer #define ENC_MACON3_FRMLNEN 0x02 209a61a8196SReinhard Meyer #define ENC_MACON3_FULDPX 0x01 210a61a8196SReinhard Meyer 211a61a8196SReinhard Meyer /* MACON4 Register Bits */ 212a61a8196SReinhard Meyer #define ENC_MACON4_DEFER 0x40 213a61a8196SReinhard Meyer 214a61a8196SReinhard Meyer /* MICMD Register Bits */ 215a61a8196SReinhard Meyer #define ENC_MICMD_MIISCAN 0x02 216a61a8196SReinhard Meyer #define ENC_MICMD_MIIRD 0x01 217a61a8196SReinhard Meyer 218a61a8196SReinhard Meyer /* MISTAT Register Bits */ 219a61a8196SReinhard Meyer #define ENC_MISTAT_NVALID 0x04 220a61a8196SReinhard Meyer #define ENC_MISTAT_SCAN 0x02 221a61a8196SReinhard Meyer #define ENC_MISTAT_BUSY 0x01 222a61a8196SReinhard Meyer 223a61a8196SReinhard Meyer /* PHID1 and PHID2 values */ 224a61a8196SReinhard Meyer #define ENC_PHID1_VALUE 0x0083 225a61a8196SReinhard Meyer #define ENC_PHID2_VALUE 0x1400 226a61a8196SReinhard Meyer #define ENC_PHID2_MASK 0xFC00 227a61a8196SReinhard Meyer 228a61a8196SReinhard Meyer /* PHCON1 values */ 229a61a8196SReinhard Meyer #define ENC_PHCON1_PDPXMD 0x0100 230a61a8196SReinhard Meyer 231a61a8196SReinhard Meyer /* PHSTAT1 values */ 232a61a8196SReinhard Meyer #define ENC_PHSTAT1_LLSTAT 0x0004 233a61a8196SReinhard Meyer 234a61a8196SReinhard Meyer /* PHSTAT2 values */ 235a61a8196SReinhard Meyer #define ENC_PHSTAT2_LSTAT 0x0400 236a61a8196SReinhard Meyer #define ENC_PHSTAT2_DPXSTAT 0x0200 237a61a8196SReinhard Meyer 238a61a8196SReinhard Meyer #endif 239