The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/pccard/i82365.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  *      i82365.h - Definitions for Intel 82365 PCIC
    3  *      PCMCIA Card Interface Controller
    4  *
    5  * originally by Barry Jaspan; hacked over by Keith Moore
    6  * hacked to unrecognisability by Andrew McRae (andrew@mega.com.au)
    7  *
    8  * Updated 3/3/95 to include Cirrus Logic stuff.
    9  *-------------------------------------------------------------------------
   10  */
   11 /*-
   12  * Copyright (c) 2001 M. Warner Losh.  All rights reserved.
   13  * Copyright (c) 1995 Andrew McRae.  All rights reserved.
   14  *
   15  * Redistribution and use in source and binary forms, with or without
   16  * modification, are permitted provided that the following conditions
   17  * are met:
   18  * 1. Redistributions of source code must retain the above copyright
   19  *    notice, this list of conditions and the following disclaimer.
   20  * 2. Redistributions in binary form must reproduce the above copyright
   21  *    notice, this list of conditions and the following disclaimer in the
   22  *    documentation and/or other materials provided with the distribution.
   23  * 3. The name of the author may not be used to endorse or promote products
   24  *    derived from this software without specific prior written permission.
   25  *
   26  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   27  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   28  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   29  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   30  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   31  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   32  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   33  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   34  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   35  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   36  *
   37  * $FreeBSD: releng/6.1/sys/pccard/i82365.h 139825 2005-01-07 02:29:27Z imp $
   38  */
   39 
   40 #define PCIC_I82365     0               /* Intel i82365SL-A/B or clone */
   41 #define PCIC_IBM        1               /* IBM clone */
   42 #define PCIC_VLSI       2               /* VLSI chip */
   43 #define PCIC_PD6722     3               /* Cirrus logic PD6722 */
   44 #define PCIC_PD6710     4               /* Cirrus logic PD6710 */
   45 #define PCIC_VG365      5               /* Vadem 365 */
   46 #define PCIC_VG465      6               /* Vadem 465 */
   47 #define PCIC_VG468      7               /* Vadem 468 */
   48 #define PCIC_VG469      8               /* Vadem 469 */
   49 #define PCIC_RF5C296    9               /* Ricoh RF5C296 */
   50 #define PCIC_RF5C396    10              /* Ricoh RF5C396 */
   51 #define PCIC_IBM_KING   11              /* IBM KING PCMCIA Controller */
   52 #define PCIC_I82365SL_DF 12             /* Intel i82365sl-DF step */
   53 #define PCIC_PD6729     13              /* Cirrus Logic PD6729 */
   54 #define PCIC_PD673X     14              /* Cirrus Logic PD673x */
   55 
   56 /*
   57  *      Address of the controllers. Each controller can manage
   58  *      two PCMCIA slots. Up to 8 slots are supported in total.
   59  *      The PCIC controller is accessed via an index port and a
   60  *      data port. The index port has the 8 bit address of the
   61  *      register accessed via the data port. How I long for
   62  *      real memory mapped I/O!
   63  *      The top two bits of the index address are used to
   64  *      identify the port number, and the lower 6 bits
   65  *      select one of the 64 possible data registers.
   66  */
   67 #define PCIC_INDEX      0                       /* Index register */
   68 #define PCIC_DATA       1                       /* Data register */
   69 #define PCIC_NPORT      2                       /* Number of ports */
   70 #define PCIC_PORT_0     0x3e0                   /* index reg, chips 0 and 1 */
   71 
   72 /*
   73  *      Register index addresses.
   74  */
   75 #define PCIC_ID_REV     0x00    /* Identification and Revision */
   76 #define PCIC_STATUS     0x01    /* Interface Status */
   77 #define PCIC_POWER      0x02    /* Power and RESETDRV control */
   78 #define PCIC_INT_GEN    0x03    /* Interrupt and General Control */
   79 #define PCIC_STAT_CHG   0x04    /* Card Status Change */
   80 #define PCIC_STAT_INT   0x05    /* Card Status Change Interrupt Config */
   81 #define PCIC_ADDRWINE   0x06    /* Address Window Enable */
   82 #define PCIC_IOCTL      0x07    /* I/O Control */
   83 #define PCIC_IO0        0x08    /* I/O Address 0 */
   84 #define PCIC_IO1        0x0c    /* I/O Address 1 */
   85 #define PCIC_MEMBASE    0x10    /* Base of memory window registers */
   86 #define PCIC_CDGC       0x16    /* Card Detect and General Control */
   87 #define PCIC_MISC1      0x16    /* PD67xx: Misc control register 1 per slot */
   88 #define PCIC_GLO_CTRL   0x1e    /* Global Control Register */
   89 #define PCIC_MISC2      0x1e    /* PD67xx: Misc control register 2 per chip */
   90 #define PCIC_CLCHIP     0x1f    /* PD67xx: Chip I/D */
   91 #define PCIC_EXT_IND    0x2e    /* PD67xx: Extended Index */
   92 #define PCIC_EXTENDED   0x2f    /* PD67xx: Extended register */
   93 #define PCIC_CVSR       0x2f    /* Vadem: Voltage select register */
   94 #define PCIC_RICOH_MCR2 0x2f    /* Ricoh: Mode Control Register 2 */
   95 
   96 #define PCIC_VMISC      0x3a    /* Vadem: Misc control register */
   97 #define PCIC_RICOH_ID   0x3a    /* Ricoh: ID register */
   98 
   99 #define PCIC_TOPIC_FCR  0x3e    /* Toshiba ToPIC: Function Control Register */
  100 
  101 #define PCIC_TIME_SETUP0        0x3a
  102 #define PCIC_TIME_CMD0          0x3b
  103 #define PCIC_TIME_RECOV0        0x3c
  104 #define PCIC_TIME_SETUP1        0x3d
  105 #define PCIC_TIME_CMD1          0x3e
  106 #define PCIC_TIME_RECOV1        0x3f
  107 
  108 /* Yenta only registers */
  109 #define PCIC_MEMORY_HIGH0       0x40    /* A31..A25 of mapping addres for */
  110 #define PCIC_MEMORY_HIGH1       0x41    /* the memory windows. */
  111 #define PCIC_MEMORY_HIGH2       0x42
  112 #define PCIC_MEMORY_HIGH3       0x43
  113 
  114 
  115 #define PCIC_SLOT_SIZE  0x40    /* Size of register set for one slot */
  116 
  117 /* Now register bits, ordered by reg # */
  118 
  119 /* For Identification and Revision (PCIC_ID_REV) */
  120 #define PCIC_INTEL0     0x82    /* Intel 82365SL Rev. 0; Both Memory and I/O */
  121 #define PCIC_INTEL1     0x83    /* Intel 82365SL Rev. 1; Both Memory and I/O */
  122 #define PCIC_INTEL2     0x84    /* Intel 82365SL step D */
  123 #define PCIC_VLSI82C146 0x84    /* VLSI 82C146 */
  124 #define PCIC_IBM1       0x88    /* IBM PCIC clone; Both Memory and I/O */
  125 #define PCIC_IBM2       0x89    /* IBM PCIC clone; Both Memory and I/O */
  126 #define PCIC_IBM3       0x8a    /* IBM KING PCIC clone; Both Memory and I/O */
  127 
  128 /* For Interface Status register (PCIC_STATUS) */
  129 #define PCIC_VPPV       0x80    /* Vpp_valid or reserved*/
  130 #define PCIC_RICOH_5VCARD 0x80  /* 5V card detected */
  131 #define PCIC_POW        0x40    /* PC Card power active */
  132 #define PCIC_READY      0x20    /* Ready/~Busy */
  133 #define PCIC_MWP        0x10    /* Memory Write Protect */
  134 #define PCIC_CD         0x0C    /* Both card detect bits */
  135 #define PCIC_BVD        0x03    /* Both Battery Voltage Detect bits */
  136 
  137 /* For the Power and RESETDRV register (PCIC_POWER) */
  138 #define PCIC_OUTENA     0x80    /* Output Enable */
  139 #define PCIC_DISRST     0x40    /* Disable RESETDRV */
  140 #define PCIC_APSENA     0x20    /* Auto Pwer Switch Enable */
  141 #define PCIC_PCPWRE     0x10    /* PC Card Power Enable */
  142 #define PCIC_VCC        0x18    /* Vcc control bits */
  143 #define PCIC_VCC_5V     0x10    /* 5 volts */
  144 #define PCIC_VCC_ON     0x10    /* Turn on VCC on some chips. */
  145 #define PCIC_VCC_3V     0x18    /* 3 volts */
  146 #define PCIC_VCC_5V_KING        0x14    /* 5 volts for KING PCIC */
  147 #define PCIC_VPP        0x03    /* Vpp control bits */
  148 #define PCIC_VPP_5V     0x01    /* 5 volts */
  149 #define PCIC_VPP_12V    0x02    /* 12 volts */
  150 
  151 /* For the Interrupt and General Control register (PCIC_INT_GEN) */
  152 #define PCIC_CARDRESET  0x40    /* Card reset 0 = Reset, 1 = Normal */
  153 #define PCIC_CARDTYPE   0x20    /* Card Type 0 = memory, 1 = I/O */
  154 #define         PCIC_IOCARD     0x20
  155 #define         PCIC_MEMCARD    0x00
  156 #define PCIC_INTR_ENA   0x10    /* PCI CSC Interrupt enable */
  157 
  158 /* For the Card Status Change register (PCIC_STAT_CHG) */
  159 #define PCIC_CDTCH      0x08    /* Card Detect Change */
  160 #define PCIC_RDYCH      0x04    /* Ready Change */
  161 #define PCIC_BATWRN     0x02    /* Battery Warning */
  162 #define PCIC_BATDED     0x01    /* Battery Dead */
  163 
  164 /* For the Card status change interrupt PCIC_STAT_INT */
  165 #define PCIC_CSCSELECT          0xf0    /* CSCSELECT */
  166 #define PCIC_SI_IRQ_SHIFT       4
  167 #define PCIC_CDEN               0x8
  168 #define PCIC_READYEN            0x4
  169 #define PCIC_BATWARNEN          0x2
  170 #define PCIC_BATDEADEN          0x1
  171 
  172 /*
  173  * For the Address Window Enable Register (PCIC_ADDRWINE)
  174  * The lower 5 bits contain enable bits for the memory
  175  * windows (LSB = memory window 0).
  176  */
  177 #define PCIC_MEMCS16    0x20    /* ~MEMCS16 Decode A23-A12 */
  178 #define PCIC_IO0_EN     0x40    /* I/O Window 0 Enable */
  179 #define PCIC_IO1_EN     0x80    /* I/O Window 1 Enable */
  180 
  181 /*
  182  * For the I/O Control Register (PCIC_IOCTL)
  183  * The lower nybble is the flags for I/O window 0
  184  * The upper nybble is the flags for I/O window 1
  185  */
  186 #define PCIC_IO_16BIT   0x01    /* I/O to this segment is 16 bit */
  187 #define PCIC_IO_CS16    0x02    /* I/O cs16 source is the card */
  188 #define PCIC_IO_0WS     0x04    /* zero wait states added on 8 bit cycles */
  189 #define PCIC_IO_WS      0x08    /* Wait states added for 16 bit cycles */
  190 
  191 /*
  192  *      The memory window registers contain the start and end
  193  *      physical host address that the PCIC maps to the card,
  194  *      and an offset calculated from the card memory address.
  195  *      All values are shifted down 12 bits, so allocation is
  196  *      done in 4Kb blocks. Only 12 bits of each value is
  197  *      stored, limiting the range to the ISA address size of
  198  *      24 bits. The upper 4 bits of the most significant byte
  199  *      within the values are used for various flags.
  200  *
  201  *      The layout is:
  202  *
  203  *      base+0 : lower 8 bits of system memory start address
  204  *      base+1 : upper 4 bits of system memory start address + flags
  205  *      base+2 : lower 8 bits of system memory end address
  206  *      base+3 : upper 4 bits of system memory end address + flags
  207  *      base+4 : lower 8 bits of offset to card address
  208  *      base+5 : upper 4 bits of offset to card address + flags
  209  *
  210  *      The following two bytes are reserved for other use.
  211  */
  212 #define PCIC_MEMSIZE    8
  213 /*
  214  *      Flags for system memory start address upper byte
  215  */
  216 #define PCIC_ZEROWS     0x40    /* Zero wait states */
  217 #define PCIC_DATA16     0x80    /* Data width is 16 bits */
  218 
  219 /*
  220  *      Flags for system memory end address upper byte
  221  */
  222 #define PCIC_MW0        0x40    /* Wait state bit 0 */
  223 #define PCIC_MW1        0x80    /* Wait state bit 1 */
  224 
  225 /*
  226  *      Flags for card offset upper byte
  227  */
  228 #define PCIC_REG        0x40    /* Attribute/Common select (why called Reg?) */
  229 #define PCIC_WP         0x80    /* Write-protect this window */
  230 
  231 /* For Card Detect and General Control register (PCIC_CDGC) */
  232 #define PCIC_16_DL_INH  0x01    /* 16-bit memory delay inhibit */
  233 #define PCIC_CNFG_RST_EN 0x02   /* configuration reset enable */
  234 #define PCIC_GPI_EN     0x04    /* GPI Enable */
  235 #define PCIC_GPI_TRANS  0x08    /* GPI Transition Control */
  236 #define PCIC_CDRES_EN   0x10    /* card detect resume enable */
  237 #define PCIC_SW_CD_INT  0x20    /* s/w card detect interrupt */
  238 #define PCIC_VS1STAT    0x40    /* 0 VS1# low, 1 VS1# high */
  239 #define PCIC_VS2STAT    0x80    /* 0 VS2# low, 1 VS2# high */
  240 
  241 /* CL-PD67[12]x: For 3.3V cards, etc. (PCIC_MISC1) */
  242 #define PCIC_MISC1_5V_DETECT 0x01       /* PD6710 only */
  243 #define PCIC_MISC1_VCC_33    0x02       /* Set Vcc is 3.3V, else 5.0V */
  244 #define PCIC_MISC1_PMINT     0x04       /* Pulse management intr */
  245 #define PCIC_MISC1_PCINT     0x08       /* Pulse card interrupt */
  246 #define PCIC_MISC1_SPEAKER   0x10       /* Enable speaker */
  247 #define PCIC_MISC1_INPACK    0x80       /* INPACK throttles data */
  248 
  249 /* i82365B and newer (!PD67xx) Global Control register (PCIC_GLO_CTRL) */
  250 #define PCIC_PWR_DOWN   0x01    /* power down */
  251 #define PCIC_LVL_MODE   0x02    /* level mode interrupt enable */
  252 #define PCIC_WB_CSCINT  0x04    /* explicit write-back csc intr */
  253 /* Rev B only */
  254 #define PCIC_IRQ0_LEVEL 0x08    /* irq 14 pulse mode enable */
  255 #define PCIC_IRQ1_LEVEL 0x10
  256 
  257 /* CL-PD67[12]x: For Misc. Control Register 2 (PCIC_MISC2) */
  258 #define PCIC_LPDM_EN    0x02    /* Cirrus PD672x: low power dynamic mode */
  259 
  260 /* CL-PD67[12]x: Chip info (PCIC_CLCHIP) */
  261 #define PCIC_CLC_TOGGLE 0xc0            /* These bits toggle 1 -> 0 */
  262 #define PCIC_CLC_DUAL   0x20            /* Single/dual socket version */
  263 
  264 /* Cirrus Logic: Extended Registers (PCIC_EXT_IND) */
  265 #define PCIC_EXT_DATA   0x0a            /* External Data */
  266 
  267 /* EXT_DATA */
  268 #define PCIC_VS1A       0x01
  269 #define PCIC_VS2A       0x02
  270 #define PCIC_VS1B       0x04
  271 #define PCIC_VS2B       0x08
  272 
  273 /* Cirrus Logic: Extended register Extension Control 1 */
  274 #define PCIC_EXTCTRL1   0x03
  275 #define PCIC_EC1_VCC_LOCK 0x1           /* Vcc Power locked to s/w change */
  276 #define PCIC_EC1_AUTO_POWER_CLEAR 0x2   /* Vcc power cleared on eject? */
  277 #define PCIC_EC1_LED_ENABLE 0x4         /* LED activity enable */
  278 #define PCIC_EC1_CARD_IRQ_INV 0x8       /* Card IRQ level inverted for pci? */
  279 #define PCIC_EC1_CSC_IRQ_INV 0x10       /* CSC IRQ level inverted for pci? */
  280 #define PCIC_EC1_PULLUP 0x20            /* Dis pullup when 1. */
  281 
  282 /* Vadem: Card Voltage Select register (PCIC_CVSR) */
  283 #define PCIC_CVSR_VS    0x03            /* Voltage select */
  284 #define PCIC_CVSR_VS_5  0x00            /* 5.0 V */
  285 #define PCIC_CVSR_VS_33a 0x01           /* alt 3.3V */
  286 #define PCIC_CVSR_VS_XX 0x02            /* X.XV when available */
  287 #define PCIC_CVSR_VS_33 0x03            /* 3.3V */
  288 
  289 /* Ricoh: Misc Control Register 2 (PCIC_RICOH_MCR2) */
  290 #define PCIC_MCR2_VCC_33 0x01           /* 3.3V */
  291 
  292 /* Vadem: misc register (PCIC_VMISC) */
  293 #define PCIC_VADEMREV   0x40
  294 
  295 /* Ricoh: ID register values (PCIC_RICOH_ID) */
  296 #define PCIC_RID_296    0x32
  297 #define PCIC_RID_396    0xb2
  298 
  299 /* Toshiba ToPIC: Function Control Register */
  300 #define PCIC_FCR_3V_EN          0x01    /* Enable 3V cards */
  301 #define PCIC_FCR_VS_EN          0x02    /* Voltage Sense enable */
  302 
  303 /*
  304  *      Mask of allowable interrupts.
  305  *
  306  *      For IBM-AT machines, irqs 3, 4, 5, 7, 9, 10, 11, 12, 14, 15 are
  307  *      allowed.  Nearly all IBM-AT machines with pcic cards or bridges
  308  *      wire these interrupts (or a subset thereof) to the corresponding
  309  *      pins on the ISA bus.  Some older laptops are reported to not route
  310  *      all the interrupt pins to the bus because the designers knew that
  311  *      some would conflict with builtin devices.
  312  *
  313  *      For NEC PC98 machines, irq 3, 5, 6, 9, 10, 11, 12, 13 are allowed.
  314  *      These correspond to the C-BUS signals INT 0, 1, 2, 3, 41, 42, 5, 6
  315  *      respectively.  This is with the desktop C-BUS addin card.
  316  *
  317  *      Hiroshi TSUKADA-san writes in FreeBSD98-testers that cbus IRQ
  318  *      6 is routed to the IRQ 7 pin of the pcic in pc98 cbus based
  319  *      cards.  I do not know how pc98 laptop models are wired.
  320  */
  321 #ifdef PC98
  322 #define PCIC_INT_MASK_ALLOWED   0x3E68          /* PC98 */
  323 #else
  324 #define PCIC_INT_MASK_ALLOWED   0xDEB8          /* AT */
  325 #endif
  326 
  327 #define PCIC_IO_WIN     2
  328 #define PCIC_MEM_WIN    5
  329 
  330 #define PCIC_CARD_SLOTS 4
  331 #define PCIC_MAX_CARDS  2
  332 #define PCIC_MAX_SLOTS (PCIC_MAX_CARDS * PCIC_CARD_SLOTS)
  333 
  334 /* Plug and play */
  335 #define PCIC_PNP_ACTIONTEC      0x1802A904      /* AEI0218 */
  336 #define PCIC_PNP_IBM3765        0x65374d24      /* IBM3765 */
  337 #define PCIC_PNP_82365          0x000ED041      /* PNP0E00 */
  338 #define PCIC_PNP_CL_PD6720      0x010ED041      /* PNP0E01 */
  339 #define PCIC_PNP_VLSI_82C146    0x020ED041      /* PNP0E02 */
  340 #define PCIC_PNP_82365_CARDBUS  0x030ED041      /* PNP0E03 */
  341 #define PCIC_PNP_SCM_SWAPBOX    0x69046d4c      /* SMC0469 */
  342 
  343 /* C-Bus PnP Definitions */
  344 #define PCIC_NEC_PC9801_102     0x9180a3b8      /* NEC8091 PC-9801-102 */
  345 #define PCIC_NEC_PC9821RA_E01   0x2181a3b8      /* NEC8121 PC-9821RA-E01 */

Cache object: 73d9747a6d704193f814b7c222944a3e


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.