[BACK]Return to i82365reg.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/i82365reg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: i82365reg.h,v 1.7 1999/05/02 22:35:40 fgsch Exp $     */
                      2: /*     $NetBSD: i82365reg.h,v 1.2 1997/10/16 23:18:18 thorpej Exp $    */
                      3:
                      4: /*
                      5:  * Copyright (c) 1997 Marc Horowitz.  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 Marc Horowitz.
                     18:  * 4. The name of the author may not be used to endorse or promote products
                     19:  *    derived from this software without specific prior written permission.
                     20:  *
                     21:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     22:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     23:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     24:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     25:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     26:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     27:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     28:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     29:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     30:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     31:  */
                     32:
                     33: /*
                     34:  * All information is from the intel 82365sl PC Card Interface Controller
                     35:  * (PCIC) data sheet, marked "preliminary".  Order number 290423-002, January
                     36:  * 1993.
                     37:  */
                     38:
                     39: #define        PCIC_IOSIZE             2
                     40:
                     41: #define        PCIC_REG_INDEX          0
                     42: #define        PCIC_REG_DATA           1
                     43:
                     44: /*
                     45:  * The PCIC allows two chips to share the same address.  In order not to run
                     46:  * afoul of the netbsd device model, this driver will treat those chips as
                     47:  * the same device.
                     48:  */
                     49:
                     50: #define        PCIC_CHIP0_BASE         0x00
                     51: #define        PCIC_CHIP1_BASE         0x80
                     52:
                     53: /* Each PCIC chip can drive two sockets */
                     54:
                     55: #define        PCIC_SOCKETA_INDEX      0x00
                     56: #define        PCIC_SOCKETB_INDEX      0x40
                     57:
                     58: /* general setup registers */
                     59:
                     60: #define        PCIC_IDENT                              0x00    /* RO */
                     61: #define        PCIC_IDENT_IFTYPE_MASK                  0xC0
                     62: #define        PCIC_IDENT_IFTYPE_IO_ONLY               0x00
                     63: #define        PCIC_IDENT_IFTYPE_MEM_ONLY              0x40
                     64: #define        PCIC_IDENT_IFTYPE_MEM_AND_IO            0x80
                     65: #define        PCIC_IDENT_IFTYPE_RESERVED              0xC0
                     66: #define        PCIC_IDENT_ZERO                         0x30
                     67: #define        PCIC_IDENT_REV_MASK                     0x0F
                     68: #define        PCIC_IDENT_REV_I82365SLR0               0x82
                     69: #define        PCIC_IDENT_REV_I82365SLR1               0x83
                     70: #define        PCIC_IDENT_REV_I82365SLR2               0x84
                     71:
                     72: #define        PCIC_IF_STATUS                          0x01    /* RO */
                     73: #define        PCIC_IF_STATUS_GPI                      0x80 /* General Purpose Input */
                     74: #define        PCIC_IF_STATUS_POWERACTIVE              0x40
                     75: #define        PCIC_IF_STATUS_READY                    0x20 /* really READY/!BUSY */
                     76: #define        PCIC_IF_STATUS_MEM_WP                   0x10
                     77: #define        PCIC_IF_STATUS_CARDDETECT_MASK          0x0C
                     78: #define        PCIC_IF_STATUS_CARDDETECT_PRESENT       0x0C
                     79: #define        PCIC_IF_STATUS_BATTERY_MASK             0x03
                     80: #define        PCIC_IF_STATUS_BATTERY_DEAD1            0x00
                     81: #define        PCIC_IF_STATUS_BATTERY_DEAD2            0x01
                     82: #define        PCIC_IF_STATUS_BATTERY_WARNING          0x02
                     83: #define        PCIC_IF_STATUS_BATTERY_GOOD             0x03
                     84:
                     85: #define        PCIC_PWRCTL                             0x02    /* RW */
                     86: #define        PCIC_PWRCTL_OE                          0x80    /* output enable */
                     87: #define        PCIC_PWRCTL_DISABLE_RESETDRV            0x40
                     88: #define        PCIC_PWRCTL_AUTOSWITCH_ENABLE           0x20
                     89: #define        PCIC_PWRCTL_PWR_ENABLE                  0x10
                     90: #define        PCIC_PWRCTL_VPP2_MASK                   0x0C
                     91: /* XXX these are a little unclear from the data sheet */
                     92: #define        PCIC_PWRCTL_VPP2_RESERVED               0x0C
                     93: #define        PCIC_PWRCTL_VPP2_EN1                    0x08
                     94: #define        PCIC_PWRCTL_VPP2_EN0                    0x04
                     95: #define        PCIC_PWRCTL_VPP2_ENX                    0x00
                     96: #define        PCIC_PWRCTL_VPP1_MASK                   0x03
                     97: /* XXX these are a little unclear from the data sheet */
                     98: #define        PCIC_PWRCTL_VPP1_RESERVED               0x03
                     99: #define        PCIC_PWRCTL_VPP1_EN1                    0x02
                    100: #define        PCIC_PWRCTL_VPP1_EN0                    0x01
                    101: #define        PCIC_PWRCTL_VPP1_ENX                    0x00
                    102:
                    103: #define        PCIC_CSC                                0x04    /* RW */
                    104: #define        PCIC_CSC_ZERO                           0xE0
                    105: #define        PCIC_CSC_GPI                            0x10
                    106: #define        PCIC_CSC_CD                             0x08 /* Card Detect Change */
                    107: #define        PCIC_CSC_READY                          0x04
                    108: #define        PCIC_CSC_BATTWARN                       0x02
                    109: #define        PCIC_CSC_BATTDEAD                       0x01    /* for memory cards */
                    110: #define        PCIC_CSC_RI                             0x01    /* for i/o cards */
                    111:
                    112: #define        PCIC_ADDRWIN_ENABLE                     0x06    /* RW */
                    113: #define        PCIC_ADDRWIN_ENABLE_IO1                 0x80
                    114: #define        PCIC_ADDRWIN_ENABLE_IO0                 0x40
                    115: #define        PCIC_ADDRWIN_ENABLE_MEMCS16             0x20    /* rtfds if you care */
                    116: #define        PCIC_ADDRWIN_ENABLE_MEM4                0x10
                    117: #define        PCIC_ADDRWIN_ENABLE_MEM3                0x08
                    118: #define        PCIC_ADDRWIN_ENABLE_MEM2                0x04
                    119: #define        PCIC_ADDRWIN_ENABLE_MEM1                0x02
                    120: #define        PCIC_ADDRWIN_ENABLE_MEM0                0x01
                    121:
                    122: #define        PCIC_CARD_DETECT                        0x16    /* RW */
                    123: #define        PCIC_CARD_DETECT_RESERVED               0xC0
                    124: #define        PCIC_CARD_DETECT_SW_INTR                0x20
                    125: #define        PCIC_CARD_DETECT_RESUME_ENABLE          0x10
                    126: #define        PCIC_CARD_DETECT_GPI_TRANSCTL           0x08
                    127: #define        PCIC_CARD_DETECT_GPI_ENABLE             0x04
                    128: #define        PCIC_CARD_DETECT_CFGRST_ENABLE          0x02
                    129: #define        PCIC_CARD_DETECT_MEMDLY_INHIBIT         0x01
                    130:
                    131: /* interrupt registers */
                    132:
                    133: #define        PCIC_INTR                               0x03    /* RW */
                    134: #define        PCIC_INTR_RI_ENABLE                     0x80
                    135: #define        PCIC_INTR_RESET                         0x40    /* active low (zero) */
                    136: #define        PCIC_INTR_CARDTYPE_MASK                 0x20
                    137: #define        PCIC_INTR_CARDTYPE_IO                   0x20
                    138: #define        PCIC_INTR_CARDTYPE_MEM                  0x00
                    139: #define        PCIC_INTR_ENABLE                        0x10
                    140: #define        PCIC_INTR_IRQ_MASK                      0x0F
                    141: #define        PCIC_INTR_IRQ_SHIFT                     0
                    142: #define        PCIC_INTR_IRQ_NONE                      0x00
                    143: #define        PCIC_INTR_IRQ_RESERVED1                 0x01
                    144: #define        PCIC_INTR_IRQ_RESERVED2                 0x02
                    145: #define        PCIC_INTR_IRQ3                          0x03
                    146: #define        PCIC_INTR_IRQ4                          0x04
                    147: #define        PCIC_INTR_IRQ5                          0x05
                    148: #define        PCIC_INTR_IRQ_RESERVED6                 0x06
                    149: #define        PCIC_INTR_IRQ7                          0x07
                    150: #define        PCIC_INTR_IRQ_RESERVED8                 0x08
                    151: #define        PCIC_INTR_IRQ9                          0x09
                    152: #define        PCIC_INTR_IRQ10                         0x0A
                    153: #define        PCIC_INTR_IRQ11                         0x0B
                    154: #define        PCIC_INTR_IRQ12                         0x0C
                    155: #define        PCIC_INTR_IRQ_RESERVED13                0x0D
                    156: #define        PCIC_INTR_IRQ14                         0x0E
                    157: #define        PCIC_INTR_IRQ15                         0x0F
                    158:
                    159: #define        PCIC_INTR_IRQ_VALIDMASK                 0xDEB8 /* 1101 1110 1011 1000 */
                    160:
                    161: #define        PCIC_CSC_INTR                           0x05    /* RW */
                    162: #define        PCIC_CSC_INTR_IRQ_MASK                  0xF0
                    163: #define        PCIC_CSC_INTR_IRQ_SHIFT                 4
                    164: #define        PCIC_CSC_INTR_IRQ_NONE                  0x00
                    165: #define        PCIC_CSC_INTR_IRQ_RESERVED1             0x10
                    166: #define        PCIC_CSC_INTR_IRQ_RESERVED2             0x20
                    167: #define        PCIC_CSC_INTR_IRQ3                      0x30
                    168: #define        PCIC_CSC_INTR_IRQ4                      0x40
                    169: #define        PCIC_CSC_INTR_IRQ5                      0x50
                    170: #define        PCIC_CSC_INTR_IRQ_RESERVED6             0x60
                    171: #define        PCIC_CSC_INTR_IRQ7                      0x70
                    172: #define        PCIC_CSC_INTR_IRQ_RESERVED8             0x80
                    173: #define        PCIC_CSC_INTR_IRQ9                      0x90
                    174: #define        PCIC_CSC_INTR_IRQ10                     0xA0
                    175: #define        PCIC_CSC_INTR_IRQ11                     0xB0
                    176: #define        PCIC_CSC_INTR_IRQ12                     0xC0
                    177: #define        PCIC_CSC_INTR_IRQ_RESERVED13            0xD0
                    178: #define        PCIC_CSC_INTR_IRQ14                     0xE0
                    179: #define        PCIC_CSC_INTR_IRQ15                     0xF0
                    180: #define        PCIC_CSC_INTR_CD_ENABLE                 0x08
                    181: #define        PCIC_CSC_INTR_READY_ENABLE              0x04
                    182: #define        PCIC_CSC_INTR_BATTWARN_ENABLE           0x02
                    183: #define        PCIC_CSC_INTR_BATTDEAD_ENABLE           0x01    /* for memory cards */
                    184: #define        PCIC_CSC_INTR_RI_ENABLE                 0x01    /* for I/O cards */
                    185:
                    186: #define        PCIC_CSC_INTR_IRQ_VALIDMASK             0xDEB8 /* 1101 1110 1011 1000 */
                    187:
                    188: /* I/O registers */
                    189:
                    190: #define        PCIC_IO_WINS                            2
                    191:
                    192: #define        PCIC_IOCTL                              0x07    /* RW */
                    193: #define        PCIC_IOCTL_IO1_WAITSTATE                0x80
                    194: #define        PCIC_IOCTL_IO1_ZEROWAIT                 0x40
                    195: #define        PCIC_IOCTL_IO1_IOCS16SRC_MASK           0x20
                    196: #define        PCIC_IOCTL_IO1_IOCS16SRC_CARD           0x20
                    197: #define        PCIC_IOCTL_IO1_IOCS16SRC_DATASIZE       0x00
                    198: #define        PCIC_IOCTL_IO1_DATASIZE_MASK            0x10
                    199: #define        PCIC_IOCTL_IO1_DATASIZE_16BIT           0x10
                    200: #define        PCIC_IOCTL_IO1_DATASIZE_8BIT            0x00
                    201: #define        PCIC_IOCTL_IO0_WAITSTATE                0x08
                    202: #define        PCIC_IOCTL_IO0_ZEROWAIT                 0x04
                    203: #define        PCIC_IOCTL_IO0_IOCS16SRC_MASK           0x02
                    204: #define        PCIC_IOCTL_IO0_IOCS16SRC_CARD           0x02
                    205: #define        PCIC_IOCTL_IO0_IOCS16SRC_DATASIZE       0x00
                    206: #define        PCIC_IOCTL_IO0_DATASIZE_MASK            0x01
                    207: #define        PCIC_IOCTL_IO0_DATASIZE_16BIT           0x01
                    208: #define        PCIC_IOCTL_IO0_DATASIZE_8BIT            0x00
                    209:
                    210: #define        PCIC_IOADDR0_START_LSB                  0x08
                    211: #define        PCIC_IOADDR0_START_MSB                  0x09
                    212: #define        PCIC_IOADDR0_STOP_LSB                   0x0A
                    213: #define        PCIC_IOADDR0_STOP_MSB                   0x0B
                    214: #define        PCIC_IOADDR1_START_LSB                  0x0C
                    215: #define        PCIC_IOADDR1_START_MSB                  0x0D
                    216: #define        PCIC_IOADDR1_STOP_LSB                   0x0E
                    217: #define        PCIC_IOADDR1_STOP_MSB                   0x0F
                    218:
                    219: /* memory registers */
                    220:
                    221: /*
                    222:  * memory window addresses refer to bits A23-A12 of the ISA system memory
                    223:  * address.  This is a shift of 12 bits.  The LSB contains A19-A12, and the
                    224:  * MSB contains A23-A20, plus some other bits.
                    225:  */
                    226:
                    227: #define        PCIC_MEM_WINS                           5
                    228:
                    229: #define        PCIC_MEM_SHIFT                          12
                    230: #define        PCIC_MEM_PAGESIZE                       (1<<PCIC_MEM_SHIFT)
                    231:
                    232: #define        PCIC_SYSMEM_ADDRX_SHIFT                         PCIC_MEM_SHIFT
                    233: #define        PCIC_SYSMEM_ADDRX_START_MSB_DATASIZE_MASK       0x80
                    234: #define        PCIC_SYSMEM_ADDRX_START_MSB_DATASIZE_16BIT      0x80
                    235: #define        PCIC_SYSMEM_ADDRX_START_MSB_DATASIZE_8BIT       0x00
                    236: #define        PCIC_SYSMEM_ADDRX_START_MSB_ZEROWAIT            0x40
                    237: #define        PCIC_SYSMEM_ADDRX_START_MSB_SCRATCH_MASK        0x30
                    238: #define        PCIC_SYSMEM_ADDRX_START_MSB_ADDR_MASK           0x0F
                    239:
                    240: #define        PCIC_SYSMEM_ADDRX_STOP_MSB_WAIT_MASK            0xC0
                    241: #define        PCIC_SYSMEM_ADDRX_STOP_MSB_WAIT0                0x00
                    242: #define        PCIC_SYSMEM_ADDRX_STOP_MSB_WAIT1                0x40
                    243: #define        PCIC_SYSMEM_ADDRX_STOP_MSB_WAIT2                0x80
                    244: #define        PCIC_SYSMEM_ADDRX_STOP_MSB_WAIT3                0xC0
                    245: #define        PCIC_SYSMEM_ADDRX_STOP_MSB_ADDR_MASK            0x0F
                    246:
                    247: /*
                    248:  * The card side of a memory mapping consists of bits A19-A12 of the card
                    249:  * memory address in the LSB, and A25-A20 plus some other bits in the MSB.
                    250:  * Again, the shift is 12 bits.
                    251:  */
                    252:
                    253: #define        PCIC_CARDMEM_ADDRX_SHIFT                PCIC_MEM_SHIFT
                    254: #define        PCIC_CARDMEM_ADDRX_MSB_WP               0x80
                    255: #define        PCIC_CARDMEM_ADDRX_MSB_REGACTIVE_MASK   0x40
                    256: #define        PCIC_CARDMEM_ADDRX_MSB_REGACTIVE_ATTR   0x40
                    257: #define        PCIC_CARDMEM_ADDRX_MSB_REGACTIVE_COMMON 0x00
                    258: #define        PCIC_CARDMEM_ADDRX_MSB_ADDR_MASK        0x3F
                    259:
                    260: #define        PCIC_SYSMEM_ADDR0_START_LSB             0x10
                    261: #define        PCIC_SYSMEM_ADDR0_START_MSB             0x11
                    262: #define        PCIC_SYSMEM_ADDR0_STOP_LSB              0x12
                    263: #define        PCIC_SYSMEM_ADDR0_STOP_MSB              0x13
                    264:
                    265: #define        PCIC_CARDMEM_ADDR0_LSB                  0x14
                    266: #define        PCIC_CARDMEM_ADDR0_MSB                  0x15
                    267:
                    268: /* #define     PCIC_RESERVED                   0x17 */
                    269:
                    270: #define        PCIC_SYSMEM_ADDR1_START_LSB             0x18
                    271: #define        PCIC_SYSMEM_ADDR1_START_MSB             0x19
                    272: #define        PCIC_SYSMEM_ADDR1_STOP_LSB              0x1A
                    273: #define        PCIC_SYSMEM_ADDR1_STOP_MSB              0x1B
                    274:
                    275: #define        PCIC_CARDMEM_ADDR1_LSB                  0x1C
                    276: #define        PCIC_CARDMEM_ADDR1_MSB                  0x1D
                    277:
                    278: #define        PCIC_SYSMEM_ADDR2_START_LSB             0x20
                    279: #define        PCIC_SYSMEM_ADDR2_START_MSB             0x21
                    280: #define        PCIC_SYSMEM_ADDR2_STOP_LSB              0x22
                    281: #define        PCIC_SYSMEM_ADDR2_STOP_MSB              0x23
                    282:
                    283: #define        PCIC_CARDMEM_ADDR2_LSB                  0x24
                    284: #define        PCIC_CARDMEM_ADDR2_MSB                  0x25
                    285:
                    286: /* #define     PCIC_RESERVED                   0x26 */
                    287: /* #define     PCIC_RESERVED                   0x27 */
                    288:
                    289: #define        PCIC_SYSMEM_ADDR3_START_LSB             0x28
                    290: #define        PCIC_SYSMEM_ADDR3_START_MSB             0x29
                    291: #define        PCIC_SYSMEM_ADDR3_STOP_LSB              0x2A
                    292: #define        PCIC_SYSMEM_ADDR3_STOP_MSB              0x2B
                    293:
                    294: #define        PCIC_CARDMEM_ADDR3_LSB                  0x2C
                    295: #define        PCIC_CARDMEM_ADDR3_MSB                  0x2D
                    296:
                    297: /* #define     PCIC_RESERVED                   0x2E */
                    298: /* #define     PCIC_RESERVED                   0x2F */
                    299:
                    300: #define        PCIC_SYSMEM_ADDR4_START_LSB             0x30
                    301: #define        PCIC_SYSMEM_ADDR4_START_MSB             0x31
                    302: #define        PCIC_SYSMEM_ADDR4_STOP_LSB              0x32
                    303: #define        PCIC_SYSMEM_ADDR4_STOP_MSB              0x33
                    304:
                    305: #define        PCIC_CARDMEM_ADDR4_LSB                  0x34
                    306: #define        PCIC_CARDMEM_ADDR4_MSB                  0x35
                    307:
                    308: /* #define     PCIC_RESERVED                   0x36 */
                    309: /* #define     PCIC_RESERVED                   0x37 */
                    310: /* #define     PCIC_RESERVED                   0x38 */
                    311: /* #define     PCIC_RESERVED                   0x39 */
                    312: /* #define     PCIC_RESERVED                   0x3A */
                    313: /* #define     PCIC_RESERVED                   0x3B */
                    314: /* #define     PCIC_RESERVED                   0x3C */
                    315: /* #define     PCIC_RESERVED                   0x3D */
                    316: /* #define     PCIC_RESERVED                   0x3E */
                    317: /* #define     PCIC_RESERVED                   0x3F */
                    318:
                    319: /* vendor-specific registers */
                    320:
                    321: #define        PCIC_INTEL_GLOBAL_CTL                   0x1E    /* RW */
                    322: #define        PCIC_INTEL_GLOBAL_CTL_RESERVED          0xF0
                    323: #define        PCIC_INTEL_GLOBAL_CTL_IRQ14PULSE_ENABLE 0x08
                    324: #define        PCIC_INTEL_GLOBAL_CTL_EXPLICIT_CSC_ACK  0x04
                    325: #define        PCIC_INTEL_GLOBAL_CTL_IRQLEVEL_ENABLE   0x02
                    326: #define        PCIC_INTEL_GLOBAL_CTL_POWERDOWN         0x01
                    327:
                    328: #define        PCIC_CIRRUS_MISC_CTL_2                  0x1E
                    329: #define        PCIC_CIRRUS_MISC_CTL_2_SUSPEND          0x04
                    330:
                    331: #define        PCIC_CIRRUS_CHIP_INFO                   0x1F
                    332: #define        PCIC_CIRRUS_CHIP_INFO_CHIP_ID           0xC0
                    333: #define        PCIC_CIRRUS_CHIP_INFO_SLOTS             0x20
                    334: #define        PCIC_CIRRUS_CHIP_INFO_REV               0x1F
                    335:
                    336: #define        PCIC_CIRRUS_EXTENDED_INDEX              0x2E
                    337: #define        PCIC_CIRRUS_EXTENDED_DATA               0x2F
                    338: #define        PCIC_CIRRUS_EXT_CONTROL_1               0x03
                    339: #define        PCIC_CIRRUS_EXT_CONTROL_1_PCI_INTR_MASK 0x18
                    340:
                    341: #define        PCIC_IDENT_VADEM_MASK                   0x08
                    342:
                    343: #define        PCIC_VG468_MISC                         0x3A
                    344: #define        PCIC_VG468_MISC_VADEMREV                0x40
                    345:
                    346: #define        PCIC_VG469_VSELECT                      0x2f
                    347: #define        PCIC_VG469_VSELECT_VCC                  0x03

CVSweb