root/dev/pci/pccbbreg.h

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

INCLUDED FROM


    1 /*      $OpenBSD: pccbbreg.h,v 1.9 2006/04/26 21:21:53 brad Exp $       */
    2 /*      $NetBSD: pccbbreg.h,v 1.5 2000/06/07 09:02:47 haya Exp $        */
    3 /*
    4  * Copyright (c) 1999 HAYAKAWA Koichi.  All rights reserved.
    5  *
    6  * Redistribution and use in source and binary forms, with or without
    7  * modification, are permitted provided that the following conditions
    8  * are met:
    9  * 1. Redistributions of source code must retain the above copyright
   10  *    notice, this list of conditions and the following disclaimer.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  * 3. All advertising materials mentioning features or use of this software
   15  *    must display the following acknowledgement:
   16  *      This product includes software developed by HAYAKAWA Koichi.
   17  * 4. The name of the author may not be used to endorse or promote products
   18  *    derived from this software without specific prior written permission.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   21  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   22  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   23  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   24  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   25  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   29  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   30  */
   31 
   32 #ifndef _DEV_PCI_PCCBBREG_H_
   33 #define _DEV_PCI_PCCBBREG_H_
   34 
   35 #define PCI_SOCKBASE    0x10    /* Socket Base Address Register */
   36 #define PCI_BUSNUM      0x18    /* Latency timer, Subordinate bus number */
   37 #define PCI_BCR_INTR    0x3C    /* Intr line, intr pin, bridge control regs */
   38 #define PCI_LEGACY      0x44    /* Legacy IO register address (32 bits) */
   39 #define PCI_SYSCTRL     0x80    /* System control */
   40 #define PCI_CBCTRL      0x90    /* Retry status, Card ctrl, Device ctrl */
   41 
   42 #define PCI_CLASS_INTERFACE_MASK        0xFFFFFF00
   43 #define PCI_CLASS_INTERFACE_YENTA       0x06070000
   44 
   45 /* CardBus latency timer, Subordinate bus no, CardBus bus no and PCI bus no */
   46 #define PCI_CB_LSCP_REG         0x18
   47 
   48 /* CardBus memory and io windows */
   49 #define PCI_CB_MEMBASE0         0x1C
   50 #define PCI_CB_MEMLIMIT0        0x20
   51 #define PCI_CB_MEMBASE1         0x24
   52 #define PCI_CB_MEMLIMIT1        0x28
   53 #define PCI_CB_IOBASE0          0x2C
   54 #define PCI_CB_IOLIMIT0         0x30
   55 #define PCI_CB_IOBASE1          0x34
   56 #define PCI_CB_IOLIMIT1         0x38
   57 
   58 /* PCI_CB_LSCP_REG */
   59 #define PCI_CB_LATENCY_SHIFT    24
   60 #define PCI_CB_LATENCY_MASK     0xFF
   61 #define PCI_CB_LATENCY(x)(      \
   62         ((x) >> PCI_CB_LATENCY_SHIFT) & PCI_CB_LATENCY_MASK)
   63 
   64 /*
   65  * Cardbus socket registers
   66  */
   67 #define CB_SOCKET_EVENT         0x00 /* Event */
   68 #define CB_SOCKET_EVENT_CSTS            0x01 /* CARDSTS event occurs */
   69 #define CB_SOCKET_EVENT_CD              0x06 /* CD event occurs */
   70 #define CB_SOCKET_EVENT_CD1             0x02 /* CD1 event occurs */
   71 #define CB_SOCKET_EVENT_CD2             0x04 /* CD2 event occurs */
   72 #define CB_SOCKET_EVENT_POWER           0x08 /* Power cycle event occurs */
   73 
   74 #define CB_SOCKET_MASK          0x04 /* Mask */
   75 #define CB_SOCKET_MASK_CSTS             0x01 /* CARDSTS event mask */
   76 #define CB_SOCKET_MASK_CD               0x06 /* CD event mask */
   77 #define CB_SOCKET_MASK_POWER            0x08 /* Power cycle event mask */
   78 
   79 #define CB_SOCKET_STAT          0x08 /* Present-state */
   80 #define CB_SOCKET_STAT_CARDSTS          0x00000001 /* Card status change bit */
   81 #define CB_SOCKET_STAT_CD1              0x00000002 /* Card detect 1 */
   82 #define CB_SOCKET_STAT_CD2              0x00000004 /* Card detect 2 */
   83 #define CB_SOCKET_STAT_CD               0x00000006 /* Card detect 1 and 2 */
   84 #define CB_SOCKET_STAT_PWRCYCLE         0x00000008 /* Power cycle */
   85 #define CB_SOCKET_STAT_16BIT            0x00000010 /* 16-bit card */
   86 #define CB_SOCKET_STAT_CB               0x00000020 /* Cardbus card */
   87 #define CB_SOCKET_STAT_IREQ             0x00000040 /* READY(~IREQ)//(~CINT) */
   88                                                    /* bit */
   89 #define CB_SOCKET_STAT_NOTCARD          0x00000080 /* Inserted card is */
   90                                                    /* unrecognisable */
   91 #define CB_SOCKET_STAT_DATALOST         0x00000100 /* Data lost */
   92 #define CB_SOCKET_STAT_BADVCC           0x00000200 /* Bad Vcc Request */
   93 #define CB_SOCKET_STAT_5VCARD           0x00000400 /* 5 V Card */
   94 #define CB_SOCKET_STAT_3VCARD           0x00000800 /* 3.3 V Card */
   95 #define CB_SOCKET_STAT_XVCARD           0x00001000 /* X.X V Card */
   96 #define CB_SOCKET_STAT_YVCARD           0x00002000 /* Y.Y V Card */
   97 #define CB_SOCKET_STAT_5VSOCK           0x10000000 /* 5 V Socket */
   98 #define CB_SOCKET_STAT_3VSOCK           0x20000000 /* 3.3 V Socket */
   99 #define CB_SOCKET_STAT_XVSOCK           0x40000000 /* X.X V Socket */
  100 #define CB_SOCKET_STAT_YVSOCK           0x80000000 /* Y.Y V Socket */
  101 
  102 #define CB_SOCKET_FORCE         0x0C /* Force event */
  103 #define CB_SOCKET_FORCE_BADVCC          0x0200 /* Bad Vcc Request */
  104 
  105 #define CB_SOCKET_CTRL          0x10 /* Control */
  106 #define CB_SOCKET_CTRL_VPPMASK          0x007
  107 #define CB_SOCKET_CTRL_VPP_OFF          0x000
  108 #define CB_SOCKET_CTRL_VPP_12V          0x001
  109 #define CB_SOCKET_CTRL_VPP_5V           0x002
  110 #define CB_SOCKET_CTRL_VPP_3V           0x003
  111 #define CB_SOCKET_CTRL_VPP_XV           0x004
  112 #define CB_SOCKET_CTRL_VPP_YV           0x005
  113 
  114 #define CB_SOCKET_CTRL_VCCMASK          0x070
  115 #define CB_SOCKET_CTRL_VCC_OFF          0x000
  116 #define CB_SOCKET_CTRL_VCC_5V           0x020
  117 #define CB_SOCKET_CTRL_VCC_3V           0x030
  118 #define CB_SOCKET_CTRL_VCC_XV           0x040
  119 #define CB_SOCKET_CTRL_VCC_YV           0x050
  120 
  121 #define CB_SOCKET_CTRL_STOPCLK  0x080
  122 
  123 #define PCCBB_SOCKEVENT_BITS    "\020\001CSTS\002CD1\003CD2\004PWR"
  124 #define PCCBB_SOCKSTATE_BITS    \
  125     "\020\001CSTS\002CD1\003CD3\004PWR\00516BIT\006CB\007CINT\010NOTA"  \
  126     "\011DLOST\012BADVCC\0135v\0143v\015Xv\016Yv\0355vS\0363vS\037XvS\040YvS"
  127 
  128 /* PCI_BCR_INTR bits for generic PCI-CardBus bridge */
  129 #define CB_BCR_RESET_ENABLE             0x00400000
  130 #define CB_BCR_INTR_IREQ_ENABLE         0x00800000
  131 #define CB_BCR_PREFETCH_MEMWIN0         0x01000000
  132 #define CB_BCR_PREFETCH_MEMWIN1         0x02000000
  133 #define CB_BCR_WRITE_POST_ENABLE        0x04000000
  134 
  135 /* TI [14][245]xx */
  136 #define PCI12XX_MMCTRL          0x84
  137 
  138 /* TI 12xx/14xx/15xx (except 1250, 1251, 1251B/1450) */
  139 #define PCI12XX_MFUNC                   0x8c
  140 #define PCI12XX_MFUNC_PIN0              0x0000000F
  141 #define PCI12XX_MFUNC_PIN0_INTA         0x02
  142 #define PCI12XX_MFUNC_PIN1              0x000000F0
  143 #define PCI12XX_MFUNC_PIN1_INTB         0x20
  144 #define PCI12XX_MFUNC_PIN2              0x00000F00
  145 #define PCI12XX_MFUNC_PIN3              0x0000F000
  146 #define PCI12XX_MFUNC_PIN4              0x000F0000
  147 #define PCI12XX_MFUNC_PIN5              0x00F00000
  148 #define PCI12XX_MFUNC_PIN6              0x0F000000
  149 
  150 /*  PCI_CBCTRL bits for TI PCI113X */
  151 #define PCI113X_CBCTRL_INT_SERIAL       0x040000
  152 #define PCI113X_CBCTRL_INT_ISA          0x020000
  153 #define PCI113X_CBCTRL_INT_MASK         0x060000
  154 #define PCI113X_CBCTRL_RIENB            0x008000 /* Ring indicate output */
  155                                                  /* enable */
  156 #define PCI113X_CBCTRL_ZVENAB           0x004000 /* ZV mode enable */
  157 #define PCI113X_CBCTRL_PCI_IRQ_ENA      0x002000 /* PCI intr enable */
  158                                                  /* (funct and CSC) */
  159 #define PCI113X_CBCTRL_PCI_INTR         0x001000 /* PCI functional intr req */
  160 #define PCI113X_CBCTRL_PCI_CSC          0x000800 /* CSC intr route to PCI */
  161 #define PCI113X_CBCTRL_PCI_CSC_D        0x000400 /* Unknown */
  162 #define PCI113X_CBCTRL_SPK_ENA          0x000200 /* Speaker enable */
  163 #define PCI113X_CBCTRL_INTR_DET         0x000100 /* Functional interrupt */
  164                                                  /* detect */
  165 
  166 /*  PCI_CBCTRL bits for TI PCI12XX */
  167 #define PCI12XX_SYSCTRL_INTRTIE         0x20000000u
  168 #define PCI12XX_SYSCTRL_VCCPROT         0x200000
  169 #define PCI12XX_SYSCTRL_PWRSAVE         0x000040
  170 #define PCI12XX_SYSCTRL_SUBSYSRW        0x000020
  171 #define PCI12XX_SYSCTRL_CB_DPAR         0x000010
  172 #define PCI12XX_SYSCTRL_CDMA_EN         0x000008
  173 #define PCI12XX_SYSCTRL_KEEPCLK         0x000002
  174 #define PCI12XX_SYSCTRL_RIMUX           0x000001
  175 #define PCI12XX_CBCTRL_CSC              0x20000000u
  176 #define PCI12XX_CBCTRL_ASYNC_CSC        0x01000000u
  177 #define PCI12XX_CBCTRL_INT_SERIAL       0x060000
  178 #define PCI12XX_CBCTRL_INT_PCI_SERIAL   0x040000
  179 #define PCI12XX_CBCTRL_INT_ISA          0x020000
  180 #define PCI12XX_CBCTRL_INT_PCI          0x000000
  181 #define PCI12XX_CBCTRL_INT_MASK         0x060000
  182 #define PCI12XX_CBCTRL_RIENB            0x008000 /* Ring indicate output */
  183                                                  /* enable */
  184 #define PCI12XX_CBCTRL_ZVENAB           0x004000 /* ZV mode enable */
  185 #define PCI12XX_CBCTRL_AUD2MUX          0x000400 /* Unknown */
  186 #define PCI12XX_CBCTRL_SPK_ENA          0x000200 /* Speaker enable */
  187 #define PCI12XX_CBCTRL_INTR_DET         0x000100 /* Functional interrupt */
  188                                                  /* detect */
  189 
  190 
  191 /* PCI_BCR_INTR additional bit for Rx5C46[567] */
  192 #define CB_BCRI_RL_3E0_ENA              0x08000000
  193 #define CB_BCRI_RL_3E2_ENA              0x10000000
  194 
  195 /*
  196  * Special register definition for Toshiba ToPIC95/97
  197  * These values are borrowed from pcmcia-cs/Linux.
  198  */
  199 #define TOPIC_SOCKET_CTRL       0x90
  200 #define TOPIC_SOCKET_CTRL_SCR_IRQSEL    0x00000001 /* PCI intr */
  201 
  202 #define TOPIC_SLOT_CTRL         0xA0
  203 #define TOPIC_SLOT_CTRL_SLOTON          0x00000080
  204 #define TOPIC_SLOT_CTRL_SLOTEN          0x00000040
  205 #define TOPIC_SLOT_CTRL_ID_LOCK         0x00000020
  206 #define TOPIC_SLOT_CTRL_ID_WP           0x00000010
  207 #define TOPIC_SLOT_CTRL_PORT_MASK       0x0000000C
  208 #define TOPIC_SLOT_CTRL_PORT_SHIFT      2
  209 #define TOPIC_SLOT_CTRL_OSF_MASK        0x00000003
  210 #define TOPIC_SLOT_CTRL_OSF_SHIFT       0
  211 
  212 #define TOPIC_SLOT_CTRL_INTB            0x00002000
  213 #define TOPIC_SLOT_CTRL_INTA            0x00001000
  214 #define TOPIC_SLOT_CTRL_INT_MASK        0x00003000
  215 #define TOPIC_SLOT_CTRL_CLOCK_MASK      0x00000C00
  216 #define TOPIC_SLOT_CTRL_CLOCK_2         0x00000800 /* PCI Clock/2 */
  217 #define TOPIC_SLOT_CTRL_CLOCK_1         0x00000400 /* PCI Clock */
  218 #define TOPIC_SLOT_CTRL_CLOCK_0         0x00000000 /* No clock */
  219 #define TOPIC97_SLOT_CTRL_STSIRQP       0x00000400 /* Status change intr */
  220                                                    /* pulse */
  221 #define TOPIC97_SLOT_CTRL_IRQP          0x00000200 /* Function intr pulse */
  222 #define TOPIC97_SLOT_CTRL_PCIINT        0x00000100 /* Intr routing to PCI INT */
  223 
  224 #define TOPIC_SLOT_CTRL_CARDBUS         0x80000000
  225 #define TOPIC_SLOT_CTRL_VS1             0x04000000
  226 #define TOPIC_SLOT_CTRL_VS2             0x02000000
  227 #define TOPIC_SLOT_CTRL_SWDETECT        0x01000000
  228 
  229 #define TOPIC_REG_CTRL          0x00A4
  230 #define TOPIC_REG_CTRL_RESUME_RESET     0x80000000
  231 #define TOPIC_REG_CTRL_REMOVE_RESET     0x40000000
  232 #define TOPIC97_REG_CTRL_CLKRUN_ENA     0x20000000
  233 #define TOPIC97_REG_CTRL_TESTMODE       0x10000000
  234 #define TOPIC97_REG_CTRL_IOPLUP         0x08000000
  235 #define TOPIC_REG_CTRL_BUFOFF_PWROFF    0x02000000
  236 #define TOPIC_REG_CTRL_BUFOFF_SIGOFF    0x01000000
  237 #define TOPIC97_REG_CTRL_CB_DEV_MASK    0x0000F800
  238 #define TOPIC97_REG_CTRL_CB_DEV_SHIFT   11
  239 #define TOPIC97_REG_CTRL_RI_DISABLE     0x00000004
  240 #define TOPIC97_REG_CTRL_CAUDIO_OFF     0x00000002
  241 #define TOPIC_REG_CTRL_CAUDIO_INVERT    0x00000001
  242 
  243 /*
  244  * Additional (subset of) Topic100 registers from
  245  * Toshiba datasheet (Draft Rev. 01.4) 98/10/07
  246  */
  247 #define TOPIC100_PMCSR          0x84    /* Power mgmt ctrl/stat register */
  248 #define TOPIC100_PMCSR_MASK             0x00000003
  249 #define TOPIC100_PMCSR_D0               0x0
  250 
  251 /*
  252  * Additional O2Micro registers
  253  *
  254  * 'reserved' register at 0x94/D4. allows setting read prefetch and write
  255  * bursting. read prefetching for example makes the RME Hammerfall DSP
  256  * working. for some bridges it is at 0x94, for others at 0xD4. it's
  257  * ok to write to both registers on all O2 bridges.
  258  * from Eric Still, 02Micro.
  259  */
  260 #define O2MICRO_RESERVED1       0x94
  261 #define O2MICRO_RESERVED2       0xD4
  262 #define O2MICRO_RES_READ_PREFETCH       0x02
  263 #define O2MICRO_RES_WRITE_BURST         0x08
  264 
  265 #endif /* _DEV_PCI_PCCBBREG_H_ */

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