Annotation of sys/dev/pcmcia/if_xereg.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: if_xereg.h,v 1.4 2003/10/22 09:58:46 jmc Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 1999 Niklas Hallqvist, C Stone, Job de Haas
! 5: * All rights reserved.
! 6: *
! 7: * Redistribution and use in source and binary forms, with or without
! 8: * modification, are permitted provided that the following conditions
! 9: * are met:
! 10: * 1. Redistributions of source code must retain the above copyright
! 11: * notice, this list of conditions and the following disclaimer.
! 12: * 2. Redistributions in binary form must reproduce the above copyright
! 13: * notice, this list of conditions and the following disclaimer in the
! 14: * documentation and/or other materials provided with the distribution.
! 15: * 3. All advertising materials mentioning features or use of this software
! 16: * must display the following acknowledgement:
! 17: * This product includes software developed by Niklas Hallqvist,
! 18: * C Stone and Job de Haas.
! 19: * 4. The name of the author may not be used to endorse or promote products
! 20: * derived from this software without specific prior written permission
! 21: *
! 22: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
! 23: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
! 24: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
! 25: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
! 26: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
! 27: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
! 28: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
! 29: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
! 30: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
! 31: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
! 32: */
! 33:
! 34: /* Additional Card Configuration Registers on Dingo */
! 35:
! 36: #define PCMCIA_CCR_DCOR0 0x20
! 37: #define PCMCIA_CCR_DCOR0_MRST_SFRST 0x80
! 38: #define PCMCIA_CCR_DCOR0_MRST_SFPWDN 0x40
! 39: #define PCMCIA_CCR_DCOR0_LED3_SFRST 0x20
! 40: #define PCMCIA_CCR_DCOR0_LED3_SFPWDN 0x10
! 41: #define PCMCIA_CCR_DCOR0_BUS 0x08
! 42: #define PCMCIA_CCR_DCOR0_DECODE 0x04
! 43: #define PCMCIA_CCR_DCOR0_SFINT 0x01
! 44: #define PCMCIA_CCR_DCOR1 0x22
! 45: #define PCMCIA_CCR_DCOR1_SFCSR_WAIT 0xC0
! 46: #define PCMCIA_CCR_DCOR1_SHADOW_SFIOB 0x20
! 47: #define PCMCIA_CCR_DCOR1_SHADOW_SFCSR 0x10
! 48: #define PCMCIA_CCR_DCOR1_FORCE_LEVIREQ 0x08
! 49: #define PCMCIA_CCR_DCOR1_D6 0x04
! 50: #define PCMCIA_CCR_DCOR1_SF_STSCHG 0x02
! 51: #define PCMCIA_CCR_DCOR1_SF_IREQ 0x01
! 52: #define PCMCIA_CCR_DCOR2 0x24
! 53: #define PCMCIA_CCR_DCOR2_SHADOW_SFCOR 0x10
! 54: #define PCMCIA_CCR_DCOR2_SMEM_BASE 0x0F
! 55: #define PCMCIA_CCR_DCOR3 0x26
! 56: #define PCMCIA_CCR_DCOR4 0x28
! 57: #define PCMCIA_CCR_SFCOR 0x40
! 58: #define PCMCIA_CCR_SFCOR_SRESET 0x80
! 59: #define PCMCIA_CCR_SFCOR_LEVIREQ 0x40
! 60: #define PCMCIA_CCR_SFCOR_IRQ_STSCHG 0x20
! 61: #define PCMCIA_CCR_SFCOR_CFINDEX 0x18
! 62: #define PCMCIA_CCR_SFCOR_IREQ_ENABLE 0x04
! 63: #define PCMCIA_CCR_SFCOR_ADDR_DECODE 0x02
! 64: #define PCMCIA_CCR_SFCOR_FUNC_ENABLE 0x01
! 65: #define PCMCIA_CCR_SFCSR 0x42
! 66: #define PCMCIA_CCR_SFCSR_IOIS8 0x20
! 67: #define PCMCIA_CCR_SFCSR_AUDIO 0x08
! 68: #define PCMCIA_CCR_SFCSR_PWRDWN 0x04
! 69: #define PCMCIA_CCR_SFCSR_INTR 0x02
! 70: #define PCMCIA_CCR_SFCSR_INTRACK 0x01
! 71: #define PCMCIA_CCR_SFIOBASE0 0x4A
! 72: #define PCMCIA_CCR_SFIOBASE1 0x4C
! 73: #define PCMCIA_CCR_SFILR 0x52
! 74:
! 75: #define PCMCIA_CCR_SIZE_DINGO 0x54
! 76:
! 77: /* All pages */
! 78: #define CR 0x0 /* W - Command register */
! 79: #define ESR 0x0 /* R - Ethernet status register */
! 80: #define PR 0x1 /* RW - Page register select */
! 81: #define EDP 0x4 /* RW - Ethernet data port, 4 registers */
! 82: #define ISR0 0x6 /* R - Ethernet interrupt status register */
! 83: #define GIR 0x7 /* RW - Global interrupt register */
! 84: #define PTR 0xd /* R - Packets Transmitted register */
! 85:
! 86: /* Page 0 */
! 87: #define TSO0 0x8 /* R - Transmit space open, 3 registers */
! 88: #define TSO1 0x9
! 89: #define TSO2 0xa
! 90: #define DO0 0xc /* W - Data offset, 2 registers */
! 91: #define DO1 0xd
! 92: #define RSR 0xc /* R - Rx status register */
! 93: #define TPR 0xd /* R - Tx packets register */
! 94: #define RBC0 0xe /* R - Rx byte count, 2 registers */
! 95: #define RBC1 0xf
! 96:
! 97: /* Page 1 */
! 98: #define IMR0 0xc /* RW - Interrupt mask, 2 registers */
! 99: #define IMR1 0xd
! 100: #define ECR 0xe /* RW - Ethernet config register */
! 101:
! 102: /* Page 2 */
! 103: #define RBS0 0x8 /* RW - Receive buffer start, 2 registers */
! 104: #define RBS1 0x9
! 105: #define LED 0xa /* RW - LED control register */
! 106: #define LED3 0xb /* RW - LED3 control register */
! 107: #define MSR 0xc /* RW - Misc. setup register */
! 108: #define GP2 0xd /* RW - General purpose register 2 */
! 109:
! 110: /* Page 3 */
! 111: #define TPT0 0xa /* RW - Tx packet threshold, 2 registers */
! 112: #define TPT1 0xb
! 113:
! 114: /* Page 4 */
! 115: #define GP0 0x8 /* RW - General purpose register 0 */
! 116: #define GP1 0x9 /* RW - General purpose register 1 */
! 117: #define BV 0xa /* R - Bonding version register */
! 118: #define EES 0xb /* RW - EEPROM control register */
! 119:
! 120: /* Page 5 */
! 121: #define RHSA0 0xa /* RX host start address */
! 122:
! 123: /* Page 6 */
! 124:
! 125: /* Page 7 */
! 126:
! 127: /* Page 8 */
! 128:
! 129: /* Page 16 */
! 130:
! 131: /* Page 0x40 */
! 132: #define CMD0 0x8 /* W - Receive status register */
! 133: #define RXST0 0x9 /* RW - Receive status register */
! 134: #define TXST0 0xb /* RW - Transmit status, 2 registers */
! 135: #define TXST1 0xc
! 136: #define RX0MSK 0xd /* RW - Receive status mask register */
! 137: #define TX0MSK 0xe /* RW - Transmit status mask, 2 registers */
! 138: #define TX1MSK 0xf /* RW - Dingo does not define this register */
! 139:
! 140: /* Page 0x42 */
! 141: #define SWC0 0x8 /* RW - Software configuration, 2 registers */
! 142: #define SWC1 0x9
! 143:
! 144: /* Page 0x50-0x57 */
! 145: #define IA 0x8 /* RW - Individual address */
! 146:
! 147: /* CR register bits */
! 148: #define TX_PKT 0x01 /* Transmit packet. */
! 149: #define SOFT_RESET 0x02 /* Software reset. */
! 150: #define ENABLE_INT 0x04 /* Enable interrupt. */
! 151: #define FORCE_INT 0x08 /* Force interrupt. */
! 152: #define CLR_TX_FIFO 0x10 /* Clear transmit FIFO. */
! 153: #define CLR_RX_OVERRUN 0x20 /* Clear receive overrun. */
! 154: #define RESTART_TX 0x40 /* Restart transmit process. */
! 155:
! 156: /* ESR register bits */
! 157: #define FULL_PKT_RCV 0x01 /* Full packet received. */
! 158: #define PKT_REJECTED 0x04 /* A packet was rejected. */
! 159: #define TX_PKT_PEND 0x08 /* TX Packet Pending. */
! 160: #define INCOR_POLARITY 0x10 /* XXX from linux driver, but not used there */
! 161: #define MEDIA_SELECT 0x20 /* set if TP, clear if AUI */
! 162:
! 163: /* DO register bits */
! 164: #define DO_OFF_MASK 0x1fff /* Mask for offset value. */
! 165: #define DO_CHG_OFFSET 0x2000 /* Change offset command. */
! 166: #define DO_SHM_MODE 0x4000 /* Shared memory mode. */
! 167: #define DO_SKIP_RX_PKT 0x8000 /* Skip Rx packet. */
! 168:
! 169: /* RBC register bits */
! 170: #define RBC_COUNT_MASK 0x1fff /* Mask for byte count. */
! 171: #define RBC_RX_FULL 0x2000 /* Receive full packet. */
! 172: #define RBC_RX_PARTIAL 0x4000 /* Receive partial packet. */
! 173: #define RBC_RX_PKT_REJ 0x8000 /* Receive packet rejected. */
! 174:
! 175: /* ISR0(/IMR0) register bits */
! 176: #define ISR_TX_OFLOW 0x01 /* Transmit buffer overflow. */
! 177: #define ISR_PKT_TX 0x02 /* Packet transmitted. */
! 178: #define ISR_MAC_INT 0x04 /* MAC interrupt. */
! 179: #define ISR_RX_EARLY 0x10 /* Receive early packet. */
! 180: #define ISR_RX_FULL 0x20 /* Receive full packet. */
! 181: #define ISR_RX_PKT_REJ 0x40 /* Receive packet rejected. */
! 182: #define ISR_FORCED_INT 0x80 /* Forced interrupt. */
! 183:
! 184: /* ECR register bits */
! 185: #define ECR_EARLY_TX 0x01 /* Early transmit mode. */
! 186: #define ECR_EARLY_RX 0x02 /* Early receive mode. */
! 187: #define ECR_FULL_DUPLEX 0x04 /* Full duplex select. */
! 188: #define ECR_LNK_PLS_DIS 0x20 /* Link pulse disable. */
! 189: #define ECR_SW_COMPAT 0x80 /* Software compatibility switch. */
! 190:
! 191: /* GP0 register bits */
! 192: #define GP1_WR 0x01 /* GP1 pin output value. */
! 193: #define GP2_WR 0x02 /* GP2 pin output value. */
! 194: #define GP1_OUT 0x04 /* GP1 pin output select. */
! 195: #define GP2_OUT 0x08 /* GP2 pin output select. */
! 196: #define GP1_RD 0x10 /* GP1 pin input value. */
! 197: #define GP2_RD 0x20 /* GP2 pin input value. */
! 198:
! 199: /* GP1 register bits */
! 200: #define POWER_UP 0x01 /* When 0, power down analogue part of chip. */
! 201:
! 202: /* LED register bits */
! 203: #define LED0_SHIFT 0 /* LED0 Output shift & mask */
! 204: #define LED0_MASK 0x7
! 205: #define LED1_SHIFT 3 /* LED1 Output shift & mask */
! 206: #define LED1_MASK 0x38
! 207: #define LED0_RX_ENA 0x40 /* LED0 - receive enable */
! 208: #define LED1_RX_ENA 0x80 /* LED1 - receive enable */
! 209:
! 210: /* LED3 register bits */
! 211: #define LED3_SHIFT 0 /* LED0 output shift & mask */
! 212: #define LED3_MASK 0x7
! 213: #define LED3_RX_ENA 0x40 /* LED0 - receive enable */
! 214:
! 215: /* LED output values */
! 216: #define LED_DISABLE 0 /* LED disabled */
! 217: #define LED_COLL_ACT 1 /* Collision activity */
! 218: #define LED_COLL_INACT 2 /* (NOT) Collision activity */
! 219: #define LED_10MB_LINK 3 /* 10 Mb link detected */
! 220: #define LED_100MB_LINK 4 /* 100 Mb link detected */
! 221: #define LED_LINK 5 /* 10 Mb or 100 Mb link detected */
! 222: #define LED_AUTO 6 /* Automatic assertion */
! 223: #define LED_TX_ACT 7 /* Transmit activity */
! 224:
! 225: /* MSR register bits */
! 226: #define SRAM_128K_EXT 0x01 /* 128K SRAM extension */
! 227: #define RBS_BIT16 0x02 /* RBS bit 16 */
! 228: #define SELECT_MII 0x08 /* Select MII */
! 229: #define HASH_TBL_ENA 0x20 /* Hash table enable */
! 230:
! 231: /* GP2 register bits */
! 232: #define GP3_WR 0x01 /* GP3 pin output value. */
! 233: #define GP4_WR 0x02 /* GP4 pin output value. */
! 234: #define GP3_OUT 0x04 /* GP3 pin output select. */
! 235: #define GP4_OUT 0x08 /* GP4 pin output select. */
! 236: #define GP3_RD 0x10 /* GP3 pin input value. */
! 237: #define GP4_RD 0x20 /* GP4 pin input value. */
! 238:
! 239: /* RSR register bits */
! 240: #define RSR_NOTMCAST 0x01 /* clear when multicast packet */
! 241: #define RSR_BCAST 0x02 /* set when broadcast packet */
! 242: #define RSR_TOO_LONG 0x04 /* set if packet is longer than 1518 octets */
! 243: #define RSR_ALIGNERR 0x10 /* incorrect CRC and last octet not complete */
! 244: #define RSR_CRCERR 0x20 /* incorrect CRC and last octet complete */
! 245: #define RSR_RX_OK 0x80 /* packet received okay */
! 246:
! 247: /* CMD0 register bits */
! 248: #define ONLINE 0x04 /* Online */
! 249: #define OFFLINE 0x08 /* Online */
! 250: #define ENABLE_RX 0x20 /* Enable receiver */
! 251: #define DISABLE_RX 0x80 /* Disable receiver */
! 252:
! 253: /* RX0Msk register bits */
! 254: #define PKT_TOO_LONG 0x02 /* Packet too long mask. */
! 255: #define CRC_ERR 0x08 /* CRC error mask. */
! 256: #define RX_OVERRUN 0x10 /* Receive overrun mask. */
! 257: #define RX_ABORT 0x40 /* Receive abort mask. */
! 258: #define RX_OK 0x80 /* Receive OK mask. */
! 259:
! 260: /* TX0Msk register bits */
! 261: #define CARRIER_LOST 0x01 /* Carrier sense lost. */
! 262: #define EXCESSIVE_COLL 0x02 /* Excessive collisions mask. */
! 263: #define TX_UNDERRUN 0x08 /* Transmit underrun mask. */
! 264: #define LATE_COLLISION 0x10 /* Late collision mask. */
! 265: #define SQE 0x20 /* Signal quality error mask.. */
! 266: #define TX_ABORT 0x40 /* Transmit abort mask. */
! 267: #define TX_OK 0x80 /* Transmit OK mask. */
! 268:
! 269: /* SWC1 register bits */
! 270: #define SWC1_IND_ADDR 0x01 /* Individual address enable. */
! 271: #define SWC1_MCAST_PROM 0x02 /* Multicast promiscuous enable. */
! 272: #define SWC1_PROMISC 0x04 /* Promiscuous mode enable. */
! 273: #define SWC1_BCAST_DIS 0x08 /* Broadcast disable. */
! 274: #define SWC1_MEDIA_SEL 0x40 /* Media select (Mohawk). */
! 275: #define SWC1_AUTO_MEDIA 0x80 /* Automatic media select (Mohawk). */
! 276:
! 277: /* Misc. defines. */
! 278:
! 279: #define PAGE(sc, page) \
! 280: bus_space_write_1((sc->sc_bst), (sc->sc_bsh), (sc->sc_offset) + PR, (page))
! 281:
! 282: /*
! 283: * GP3 is connected to the MDC pin of the NS DP83840A PHY, GP4 is
! 284: * connected to the MDIO pin. These are utility macros to enhance
! 285: * readability of the code.
! 286: */
! 287: #define MDC_LOW GP3_OUT
! 288: #define MDC_HIGH (GP3_OUT | GP3_WR)
! 289: #define MDIO_LOW GP4_OUT
! 290: #define MDIO_HIGH (GP4_OUT | GP4_WR)
! 291: #define MDIO GP4_RD
! 292:
! 293: /* Values found in MANFID. */
! 294: #define XEMEDIA_ETHER 0x01
! 295: #define XEMEDIA_TOKEN 0x02
! 296: #define XEMEDIA_ARC 0x04
! 297: #define XEMEDIA_WIRELESS 0x08
! 298: #define XEMEDIA_MODEM 0x10
! 299: #define XEMEDIA_GSM 0x20
! 300:
! 301: #define XEPROD_IDMASK 0x0f
! 302: #define XEPROD_POCKET 0x10
! 303: #define XEPROD_EXTERNAL 0x20
! 304: #define XEPROD_CREDITCARD 0x40
! 305: #define XEPROD_CARDBUS 0x80
CVSweb