root/dev/pcmcia/if_xereg.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    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

/* [<][>][^][v][top][bottom][index][help] */