1*3db86aabSstevel /* 2*3db86aabSstevel * CDDL HEADER START 3*3db86aabSstevel * 4*3db86aabSstevel * The contents of this file are subject to the terms of the 5*3db86aabSstevel * Common Development and Distribution License (the "License"). 6*3db86aabSstevel * You may not use this file except in compliance with the License. 7*3db86aabSstevel * 8*3db86aabSstevel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*3db86aabSstevel * or http://www.opensolaris.org/os/licensing. 10*3db86aabSstevel * See the License for the specific language governing permissions 11*3db86aabSstevel * and limitations under the License. 12*3db86aabSstevel * 13*3db86aabSstevel * When distributing Covered Code, include this CDDL HEADER in each 14*3db86aabSstevel * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*3db86aabSstevel * If applicable, add the following below this CDDL HEADER, with the 16*3db86aabSstevel * fields enclosed by brackets "[]" replaced with your own identifying 17*3db86aabSstevel * information: Portions Copyright [yyyy] [name of copyright owner] 18*3db86aabSstevel * 19*3db86aabSstevel * CDDL HEADER END 20*3db86aabSstevel */ 21*3db86aabSstevel 22*3db86aabSstevel /* 23*3db86aabSstevel * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24*3db86aabSstevel * Use is subject to license terms. 25*3db86aabSstevel */ 26*3db86aabSstevel 27*3db86aabSstevel /* 28*3db86aabSstevel * Intel 82365SL device and register definitions 29*3db86aabSstevel */ 30*3db86aabSstevel 31*3db86aabSstevel #ifndef _PCIC_REG_H 32*3db86aabSstevel #define _PCIC_REG_H 33*3db86aabSstevel 34*3db86aabSstevel #pragma ident "%Z%%M% %I% %E% SMI" 35*3db86aabSstevel 36*3db86aabSstevel #ifdef __cplusplus 37*3db86aabSstevel extern "C" { 38*3db86aabSstevel #endif 39*3db86aabSstevel 40*3db86aabSstevel /* 41*3db86aabSstevel * global information 42*3db86aabSstevel */ 43*3db86aabSstevel #define PCIC_MAX_CONTROLLERS 4 /* maximum of 4 chips in system */ 44*3db86aabSstevel 45*3db86aabSstevel /* 46*3db86aabSstevel * per socket information 47*3db86aabSstevel */ 48*3db86aabSstevel 49*3db86aabSstevel #define PCIC_SOCKETS 2 /* number of sockets per PCIC chip */ 50*3db86aabSstevel #define PCIC_MEMWINDOWS 5 /* number of memory windows per socket */ 51*3db86aabSstevel #define PCIC_IOWINDOWS 2 /* number of I/O address windows per socket */ 52*3db86aabSstevel /* number of windows per chip */ 53*3db86aabSstevel #define PCIC_NUMWINDOWS ((PCIC_MEMWINDOWS + PCIC_IOWINDOWS) * PCIC_SOCKETS) 54*3db86aabSstevel /* number of windows per socket */ 55*3db86aabSstevel #define PCIC_NUMWINSOCK (PCIC_MEMWINDOWS+PCIC_IOWINDOWS) 56*3db86aabSstevel 57*3db86aabSstevel /* 58*3db86aabSstevel * socket selection registers 59*3db86aabSstevel * 60*3db86aabSstevel * the PCIC allows up to 8 sockets per system 61*3db86aabSstevel * this is done by having two sockets per chip and up to 4 chips per 62*3db86aabSstevel * system. There can be up to 4 sockets (2 PCIC chips) per I/O address. 63*3db86aabSstevel * There are two possible I/O address (index register) values. 64*3db86aabSstevel * socket# I/O address value to write to index register 65*3db86aabSstevel * 0 INDEX_REG0 BASE0 + SOCKET_0 + register offset 66*3db86aabSstevel * 1 INDEX_REG0 BASE0 + SOCKET_1 + register offset 67*3db86aabSstevel * 2 INDEX_REG0 BASE1 + SOCKET_0 + register offset 68*3db86aabSstevel * 3 INDEX_REG0 BASE1 + SOCKET_1 + register offset 69*3db86aabSstevel * next 4 are based off of INDEX_REG1 70*3db86aabSstevel */ 71*3db86aabSstevel 72*3db86aabSstevel #define PCIC_INDEX_REG0 0x3e0 /* first possible index register */ 73*3db86aabSstevel #define PCIC_INDEX_REG1 0x3e2 /* second possible index register */ 74*3db86aabSstevel 75*3db86aabSstevel #define PCIC_BASE0 0x00 /* first set of sockets */ 76*3db86aabSstevel #define PCIC_BASE1 0x80 /* second set of sockets */ 77*3db86aabSstevel 78*3db86aabSstevel #define PCIC_SOCKET_0 0x00 /* first socket */ 79*3db86aabSstevel #define PCIC_SOCKET_1 0x40 /* second socket */ 80*3db86aabSstevel 81*3db86aabSstevel #define PCIC_DATA_REG0 (PCIC_INDEX_REG0+1) 82*3db86aabSstevel #define PCIC_DATA_REG1 (PCIC_INDEX_REG1+1) 83*3db86aabSstevel 84*3db86aabSstevel /* 85*3db86aabSstevel * per socket register 86*3db86aabSstevel * these are accessed by writing the offset value into the 87*3db86aabSstevel * index register and adding the appropriate base offset and socket offset 88*3db86aabSstevel * the register is then present in the data register. 89*3db86aabSstevel */ 90*3db86aabSstevel 91*3db86aabSstevel /* General Registers */ 92*3db86aabSstevel 93*3db86aabSstevel #define PCIC_CHIP_REVISION 0x00 /* identification and revision */ 94*3db86aabSstevel #define PCIC_INTERFACE_STATUS 0x01 /* Interface status */ 95*3db86aabSstevel #define PCIC_POWER_CONTROL 0x02 /* Power and RESETDRV control */ 96*3db86aabSstevel #define PCIC_CARD_STATUS_CHANGE 0x04 /* card status change */ 97*3db86aabSstevel #define PCIC_MAPPING_ENABLE 0x06 /* address window mapping enable */ 98*3db86aabSstevel #define PCIC_CARD_DETECT 0x16 /* card detect&general control register */ 99*3db86aabSstevel #define PCIC_MISC_CTL_1 0x16 /* CL version */ 100*3db86aabSstevel #define PCIC_GLOBAL_CONTROL 0x1e /* global control register */ 101*3db86aabSstevel #define PCIC_MISC_CTL_2 0x1e /* CL version */ 102*3db86aabSstevel #define PCIC_CHIP_INFO 0x1f /* Cirrus Logic chip info register */ 103*3db86aabSstevel 104*3db86aabSstevel /* Interrupt Registers */ 105*3db86aabSstevel 106*3db86aabSstevel #define PCIC_INTERRUPT 0x03 /* interrupt & general control register */ 107*3db86aabSstevel #define PCIC_MANAGEMENT_INT 0x05 /* card status change interrupt register */ 108*3db86aabSstevel 109*3db86aabSstevel /* I/O Registers */ 110*3db86aabSstevel 111*3db86aabSstevel #define PCIC_IO_CONTROL 0x07 /* I/O Control register */ 112*3db86aabSstevel #define PCIC_IO_ADDR_0_STARTLOW 0x08 /* I/O address map 0 start low byte */ 113*3db86aabSstevel #define PCIC_IO_ADDR_0_STARTHI 0x09 /* I/O address map 0 start high byte */ 114*3db86aabSstevel #define PCIC_IO_ADDR_0_STOPLOW 0x0a /* I/O address map 0 stop low byte */ 115*3db86aabSstevel #define PCIC_IO_ADDR_0_STOPHI 0x0b /* I/O address map 0 stop high byte */ 116*3db86aabSstevel #define PCIC_IO_OFFSET_LOW 0x36 /* I/O Offset for CL */ 117*3db86aabSstevel #define PCIC_IO_OFFSET_HI 0x37 118*3db86aabSstevel #define PCIC_IO_OFFSET_OFFSET 2 119*3db86aabSstevel 120*3db86aabSstevel #define PCIC_IO_ADDR_1_OFFSET 5 /* offset to second I/O map register set */ 121*3db86aabSstevel #define PCIC_IO_WIN_MASK 0xf 122*3db86aabSstevel 123*3db86aabSstevel /* Memory Registers */ 124*3db86aabSstevel /* window 0 */ 125*3db86aabSstevel #define PCIC_SYSMEM_0_STARTLOW 0x10 /* system memory map 0 start low byte */ 126*3db86aabSstevel #define PCIC_SYSMEM_0_STARTHI 0x11 /* system memory map 0 start high byte */ 127*3db86aabSstevel #define PCIC_SYSMEM_0_STOPLOW 0x12 /* system memory map 0 stop low byte */ 128*3db86aabSstevel #define PCIC_SYSMEM_0_STOPHI 0x13 /* system memory map 0 stop high byte */ 129*3db86aabSstevel #define PCIC_CARDMEM_0_LOW 0x14 /* card memory offset 0 low byte */ 130*3db86aabSstevel #define PCIC_CARDMEM_0_HI 0x15 /* card memory offset 0 high byte */ 131*3db86aabSstevel 132*3db86aabSstevel /* window 1 */ 133*3db86aabSstevel #define PCIC_SYSMEM_1_STARTLOW 0x18 /* system memory map 0 start low byte */ 134*3db86aabSstevel #define PCIC_SYSMEM_1_STARTHI 0x19 /* system memory map 0 start high byte */ 135*3db86aabSstevel #define PCIC_SYSMEM_1_STOPLOW 0x1a /* system memory map 0 stop low byte */ 136*3db86aabSstevel #define PCIC_SYSMEM_1_STOPHI 0x1b /* system memory map 0 stop high byte */ 137*3db86aabSstevel #define PCIC_CARDMEM_1_LOW 0x1c /* card memory offset 0 low byte */ 138*3db86aabSstevel #define PCIC_CARDMEM_1_HI 0x1d /* card memory offset 0 high byte */ 139*3db86aabSstevel 140*3db86aabSstevel #define PCIC_MEM_1_OFFSET 8 /* offset to second memory map register set */ 141*3db86aabSstevel #define PCIC_MEM_2_OFFSET 16 142*3db86aabSstevel #define PCIC_MEM_3_OFFSET 24 143*3db86aabSstevel #define PCIC_MEM_4_OFFSET 32 144*3db86aabSstevel 145*3db86aabSstevel #define PCIC_IO_OFFSET 4 /* offset to next set of I/O map registers */ 146*3db86aabSstevel 147*3db86aabSstevel /* Cirrus Logic specific registers */ 148*3db86aabSstevel #define PCIC_TIME_SETUP_0 0x3A 149*3db86aabSstevel #define PCIC_TIME_SETUP_1 0x3D 150*3db86aabSstevel #define PCIC_TIME_COMMAND_0 0x3B 151*3db86aabSstevel #define PCIC_TIME_COMMAND_1 0x3E 152*3db86aabSstevel #define PCIC_TIME_RECOVER_0 0x3C 153*3db86aabSstevel #define PCIC_TIME_RECOVER_1 0x3F 154*3db86aabSstevel #define PCIC_ATA_CONTROL 0x26 155*3db86aabSstevel #define PCIC_FIFO_CONTROL 0x17 156*3db86aabSstevel #define PCIC_CL_EXINDEX 0x2e 157*3db86aabSstevel #define PCIC_CL_EXDATA 0x2f 158*3db86aabSstevel 159*3db86aabSstevel /* 160*3db86aabSstevel * Cirrus Logic PCI-PCMCIA adapters extension register indicies 161*3db86aabSstevel */ 162*3db86aabSstevel #define PCIC_CLEXT_SCRATCH 0x00 163*3db86aabSstevel #define PCIC_CLEXT_DMASK_0 0x01 164*3db86aabSstevel #define PCIC_CLEXT_EXT_CTL_1 0x03 165*3db86aabSstevel #define PCIC_CLEXT_MMAP0_UA 0x05 166*3db86aabSstevel #define PCIC_CLEXT_MMAP1_UA 0x06 167*3db86aabSstevel #define PCIC_CLEXT_MMAP2_UA 0x07 168*3db86aabSstevel #define PCIC_CLEXT_MMAP3_UA 0x08 169*3db86aabSstevel #define PCIC_CLEXT_MMAP4_UA 0x09 170*3db86aabSstevel #define PCIC_CLEXT_EXDATA 0x0a 171*3db86aabSstevel #define PCIC_CLEXT_EXT_CTL_2 0x0b /* 6729 */ 172*3db86aabSstevel #define PCIC_CLEXT_MISC_CTL_3 0x25 /* 6730 */ 173*3db86aabSstevel #define PCIC_CLEXT_SMB_CTL 0x26 /* 6730 */ 174*3db86aabSstevel 175*3db86aabSstevel /* the 6832 is mapped into different offsets for extension regs */ 176*3db86aabSstevel 177*3db86aabSstevel #define PCIC_CBCLEXT_MMAP0_UA 0x40 /* minus the 0x800 */ 178*3db86aabSstevel #define PCIC_CBCLEXT_MMAP1_UA 0x41 179*3db86aabSstevel #define PCIC_CBCLEXT_MMAP2_UA 0x42 180*3db86aabSstevel #define PCIC_CBCLEXT_MMAP3_UA 0x43 181*3db86aabSstevel #define PCIC_CBCLEXT_MMAP4_UA 0x44 182*3db86aabSstevel #define PCIC_CBCLEXT_MMAP5_UA 0x45 183*3db86aabSstevel 184*3db86aabSstevel #define PCIC_CLEXT_MISC_CTL_3_REV_MASK 0xf0 185*3db86aabSstevel 186*3db86aabSstevel /* 187*3db86aabSstevel * Cirrus Logic PCI-PCMCIA PCIC_CLEXT_EXT_CTL_1 reg bit definitions 188*3db86aabSstevel */ 189*3db86aabSstevel #define PCIC_CLEXT_IRQ_LVL_MODE 0x08 190*3db86aabSstevel #define PCIC_CLEXT_SMI_LVL_MODE 0x00 /* see errata 1.0 */ 191*3db86aabSstevel 192*3db86aabSstevel /* 193*3db86aabSstevel * Cirrus Logic PCI-PCMCIA PCIC_MISC_CTL_2 reg bit definitions 194*3db86aabSstevel */ 195*3db86aabSstevel #define PCIC_CL_LP_DYN_MODE 0x02 /* low-power dynamic mode */ 196*3db86aabSstevel #define PCIC_CL_TIMER_CLK_DIV 0x10 /* PCI clock divide */ 197*3db86aabSstevel 198*3db86aabSstevel /* 199*3db86aabSstevel * Cirrus Logic PCI-PCMCIA PCIC_CLEXT_MISC_CTL_3 reg bit definitions 200*3db86aabSstevel */ 201*3db86aabSstevel #define PCIC_CLEXT_INT_PC_PCI 0x00 202*3db86aabSstevel #define PCIC_CLEXT_INT_EXT_HW 0x01 203*3db86aabSstevel #define PCIC_CLEXT_INT_PCI_WAY 0x10 204*3db86aabSstevel #define PCIC_CLEXT_INT_PCI 0x03 /* see errata 1.0 */ 205*3db86aabSstevel #define PCIC_CLEXT_PWR_EXT_HW 0x00 206*3db86aabSstevel #define PCIC_CLEXT_PWR_RESERVED 0x04 207*3db86aabSstevel #define PCIC_CLEXT_PWR_TI 0x80 208*3db86aabSstevel #define PCIC_CLEXT_PWR_SMB 0xc0 209*3db86aabSstevel 210*3db86aabSstevel /* 211*3db86aabSstevel * Intel 82092-AA reg and bit definitions 212*3db86aabSstevel */ 213*3db86aabSstevel #define PCIC_82092_PCICON 0x40 /* PCI configuration control */ 214*3db86aabSstevel #define PCIC_82092_PCICLK_25MHZ 0x01 /* 25MHz PCI clock */ 215*3db86aabSstevel #define PCIC_82092_SLOT_CONFIG 0x06 /* config mask */ 216*3db86aabSstevel #define PCIC_82092_2_SOCKETS 0x00 /* 2 sockets */ 217*3db86aabSstevel #define PCIC_82092_1_SOCKET 0x02 /* 1 socket + IDE */ 218*3db86aabSstevel #define PCIC_82092_4_SOCKETS 0x04 /* 4 sockets + IDE */ 219*3db86aabSstevel #define PCIC_82092_EN_TIMING 0x20 /* enhanced memory window timing */ 220*3db86aabSstevel #define PCIC_82092_PWB 0x08 /* Post Write Buffering */ 221*3db86aabSstevel #define PCIC_82092_RPFB 0x10 /* Read Prefetch Buffering */ 222*3db86aabSstevel #define PCIC_82092_PPIRR 0x50 /* interrupt routing register */ 223*3db86aabSstevel #define PCIC_82092_SMI_CTL(sock, state) (state << (sock * 2)) 224*3db86aabSstevel #define PCIC_82092_IRQ_CTL(sock, state) (state << ((sock * 2) + 1)) 225*3db86aabSstevel #define PCIC_82092_CTL_SMI 0x01 226*3db86aabSstevel #define PCIC_82092_CTL_IRQ 0x02 227*3db86aabSstevel #define PCIC_82092_INT_DISABLE 0x00 228*3db86aabSstevel #define PCIC_82092_INT_ENABLE 0x01 229*3db86aabSstevel #define PCIC_82092_CPAGE 0x26 /* CPAGE register */ 230*3db86aabSstevel 231*3db86aabSstevel /* 232*3db86aabSstevel * identification and revision register 233*3db86aabSstevel */ 234*3db86aabSstevel #define PCIC_REV_ID_MASK 0xc0 235*3db86aabSstevel #define PCIC_REV_ID_IO 0x00 236*3db86aabSstevel #define PCIC_REV_ID_MEM 0x40 237*3db86aabSstevel #define PCIC_REV_ID_BOTH 0x80 238*3db86aabSstevel 239*3db86aabSstevel /* 240*3db86aabSstevel * interface status register bit definitions 241*3db86aabSstevel */ 242*3db86aabSstevel #define PCIC_ISTAT_CD_MASK 0xC /* card detect mask */ 243*3db86aabSstevel #define PCIC_CD_PRESENT_OK 0xC /* card is present and fully seated */ 244*3db86aabSstevel #define PCIC_CD_NOTPRESENT 0x0 /* card not present */ 245*3db86aabSstevel #define PCIC_CD_NOTSEATED_1 0x8 /* card not fully seated */ 246*3db86aabSstevel #define PCIC_CD1 0x8 247*3db86aabSstevel #define PCIC_CD_NOTSEATED_2 0x4 /* card not fully seated */ 248*3db86aabSstevel #define PCIC_CD2 0x4 249*3db86aabSstevel #define PCIC_WRITE_PROTECT 0x10 250*3db86aabSstevel #define PCIC_READY 0x20 251*3db86aabSstevel #define PCIC_POWER_ON 0x40 252*3db86aabSstevel #define PCIC_VPP_VALID 0x80 253*3db86aabSstevel #define PCIC_BVD1 0x1 254*3db86aabSstevel #define PCIC_BVD2 0x2 255*3db86aabSstevel 256*3db86aabSstevel /* 257*3db86aabSstevel * memory register definitions 258*3db86aabSstevel */ 259*3db86aabSstevel #define SYSMEM_LOW(x) (((uint32_t)(x)>>12)&0xFF) 260*3db86aabSstevel #define SYSMEM_HIGH(x) (((uint32_t)(x)>>20)&0xF) 261*3db86aabSstevel #define SYSMEM_EXT(x) (((uint32_t)(x)>>24)&0xFF) 262*3db86aabSstevel #define SYSMEM_WINDOW(x) (1<<(x)) 263*3db86aabSstevel #define SYSMEM_ZERO_WAIT 0x40 /* zero wait state bit */ 264*3db86aabSstevel #define SYSMEM_DATA_16 0x80 /* 16 bit memory bit */ 265*3db86aabSstevel #define SYSMEM_MEM16 0x20 /* 16 bit memory in window enable */ 266*3db86aabSstevel #define SYSMEM_CLTIMER_SET_0 0x00 267*3db86aabSstevel #define SYSMEM_CLTIMER_SET_1 0x80 268*3db86aabSstevel 269*3db86aabSstevel #define SYSMEM_82092_600NS 0x0110 270*3db86aabSstevel #define SYSMEM_82092_250NS 0x0101 271*3db86aabSstevel #define SYSMEM_82092_200NS 0x0100 272*3db86aabSstevel #define SYSMEM_82092_150NS 0x0011 273*3db86aabSstevel #define SYSMEM_82092_100NS 0x0010 274*3db86aabSstevel #define SYSMEM_82092_80NS 0x0001 275*3db86aabSstevel 276*3db86aabSstevel #define DEFAULT_AM_ADDR 0xd0000 277*3db86aabSstevel 278*3db86aabSstevel #define CARDMEM_REG_ACTIVE 0x40 279*3db86aabSstevel #define CARDMEM_WRITE_PROTECT 0x80 280*3db86aabSstevel 281*3db86aabSstevel #define CARDMEM_LOW(x) (((uint32_t)((x))>>12)&0xFF) 282*3db86aabSstevel #define CARDMEM_HIGH(x) (((uint32_t)((x))>>20)&0x3F) 283*3db86aabSstevel 284*3db86aabSstevel #define POWER_CARD_ENABLE 0x10 285*3db86aabSstevel #define POWER_3VCARD_ENABLE 0x18 286*3db86aabSstevel #define POWER_OUTPUT_ENABLE 0x80 287*3db86aabSstevel #define POWER_VPP_VCC_ENABLE 0x01 288*3db86aabSstevel #define POWER_VPP_12V_ENABLE 0x02 289*3db86aabSstevel 290*3db86aabSstevel /* interrupt register definitions */ 291*3db86aabSstevel #define PCIC_INTR_ENABLE 0x10 292*3db86aabSstevel #define PCIC_IO_CARD 0x20 293*3db86aabSstevel #define PCIC_RESET 0x40 294*3db86aabSstevel #define PCIC_INTR_MASK 0x0f 295*3db86aabSstevel 296*3db86aabSstevel /* card status change register definitions */ 297*3db86aabSstevel #define PCIC_CD_DETECT 0x08 298*3db86aabSstevel #define PCIC_RD_DETECT 0x04 299*3db86aabSstevel #define PCIC_BW_DETECT 0x02 300*3db86aabSstevel #define PCIC_BD_DETECT 0x01 301*3db86aabSstevel #define PCIC_CHANGE_MASK 0x0f 302*3db86aabSstevel 303*3db86aabSstevel /* card status change interrupt register definitions */ 304*3db86aabSstevel #define PCIC_CD_ENABLE 0x08 /* card detect enable */ 305*3db86aabSstevel #define PCIC_RD_ENABLE 0x04 /* ready change enable */ 306*3db86aabSstevel #define PCIC_BW_ENABLE 0x02 /* battery warning enable */ 307*3db86aabSstevel #define PCIC_BD_ENABLE 0x01 /* battery deat enable */ 308*3db86aabSstevel #define PCIC_GPI_CHANGE 0x10 /* general purpose interrupt */ 309*3db86aabSstevel #define PCIC_CHANGE_DEFAULT (PCIC_CD_ENABLE|PCIC_RD_ENABLE|\ 310*3db86aabSstevel PCIC_BW_ENABLE|PCIC_BD_ENABLE) 311*3db86aabSstevel 312*3db86aabSstevel /* card detect change register */ 313*3db86aabSstevel #define PCIC_GPI_ENABLE 0x04 314*3db86aabSstevel #define PCIC_GPI_TRANSITION 0x08 315*3db86aabSstevel #define PCIC_16MDI 0x01 316*3db86aabSstevel #define PCIC_SOFT_CD_INTR 0x20 317*3db86aabSstevel 318*3db86aabSstevel /* misc control 1 */ 319*3db86aabSstevel #define PCIC_MC_5VDETECT 0x01 320*3db86aabSstevel #define PCIC_MC_3VCC 0x02 321*3db86aabSstevel #define PCIC_MC_PULSE_SMI 0x04 322*3db86aabSstevel #define PCIC_MC_PULSE_IRQ 0x08 323*3db86aabSstevel #define PCIC_MC_SPEAKER_ENB 0x10 324*3db86aabSstevel #define PCIC_MC_INPACK_ENB 0x80 325*3db86aabSstevel 326*3db86aabSstevel /* global control registers definitions */ 327*3db86aabSstevel #define PCIC_GC_POWERDOWN 0x01 328*3db86aabSstevel #define PCIC_GC_LEVELMODE 0x02 329*3db86aabSstevel #define PCIC_GC_CSC_WRITE 0x04 330*3db86aabSstevel #define PCIC_GC_IRQ1_PULSE 0x08 331*3db86aabSstevel 332*3db86aabSstevel /* misc control 2 */ 333*3db86aabSstevel #define PCIC_MC_BYPASS_FS 0x01 334*3db86aabSstevel #define PCIC_MC_LOWPOWER 0x02 335*3db86aabSstevel #define PCIC_MC_SUSPEND 0x04 336*3db86aabSstevel #define PCIC_5V_CORE 0x08 337*3db86aabSstevel #define PCIC_LED_ENABLE 0x10 338*3db86aabSstevel #define PCIC_THREESTATE 0x20 339*3db86aabSstevel #define PCIC_CL_DMA 0x40 340*3db86aabSstevel #define PCIC_IRQ15_RI_OUT 0x80 341*3db86aabSstevel 342*3db86aabSstevel /* chip info register (Cirrus) definitions */ 343*3db86aabSstevel #define PCIC_CI_ID 0xc0 344*3db86aabSstevel #define PCIC_CI_SLOTS 0x20 345*3db86aabSstevel 346*3db86aabSstevel /* Vadem unique registers */ 347*3db86aabSstevel #define PCIC_VADEM_P1 0x0E 348*3db86aabSstevel #define PCIC_VADEM_P2 0x37 349*3db86aabSstevel 350*3db86aabSstevel #define PCIC_VG_VSENSE 0x1f 351*3db86aabSstevel #define PCIC_VG_VSELECT 0x2f 352*3db86aabSstevel #define PCIC_VG_CONTROL 0x38 353*3db86aabSstevel #define PCIC_VG_TIMER 0x39 354*3db86aabSstevel #define PCIC_VG_DMA 0x3A 355*3db86aabSstevel #define PCIC_VG_EXT_A 0x3C 356*3db86aabSstevel #define PCIC_VG_STATUS 0x3E 357*3db86aabSstevel 358*3db86aabSstevel /* Vadem DMA Register */ 359*3db86aabSstevel #define PCIC_V_DMAWSB 0x04 360*3db86aabSstevel #define PCIC_V_VADEMREV 0x40 361*3db86aabSstevel #define PCIC_V_UNLOCK 0x80 362*3db86aabSstevel 363*3db86aabSstevel /* Vadem identification register */ 364*3db86aabSstevel #define PCIC_VADEM_D3 0x8 365*3db86aabSstevel #define PCIC_VADEM_365 0x9 366*3db86aabSstevel #define PCIC_VADEM_465 0x8 367*3db86aabSstevel #define PCIC_VADEM_468 0xB 368*3db86aabSstevel #define PCIC_VADEM_469 0xC 369*3db86aabSstevel 370*3db86aabSstevel /* Vadem Voltage Select */ 371*3db86aabSstevel #define PCIC_VSEL_EXTENDED 0x10 /* extended mode */ 372*3db86aabSstevel #define PCIC_VSEL_BUSSEL 0x20 /* extended buffers on ISA */ 373*3db86aabSstevel 374*3db86aabSstevel /* Vadem Control Register */ 375*3db86aabSstevel #define PCIC_VC_DELAYENABLE 0x10 376*3db86aabSstevel 377*3db86aabSstevel /* Vadem Extended Mode Register A */ 378*3db86aabSstevel #define PCIC_VEXT_CABLEMODE 0x08 /* enable external cable */ 379*3db86aabSstevel 380*3db86aabSstevel #define PCIC_YENTA_MEM_PAGE 0x40 /* yenta defined extended address byte */ 381*3db86aabSstevel 382*3db86aabSstevel /* Ricoh Specific Registers */ 383*3db86aabSstevel #define PCIC_RF_CHIP_IDENT 0x3A 384*3db86aabSstevel #define PCIC_RF_296 0x32 385*3db86aabSstevel #define PCIC_RF_396 0xB2 386*3db86aabSstevel #define PCIC_RF_MEM_PAGE PCIC_YENTA_MEM_PAGE 387*3db86aabSstevel 388*3db86aabSstevel /* O2 Micro Specific registers */ 389*3db86aabSstevel #define PCIC_CENTDMA 0x3C 390*3db86aabSstevel #define PCIC_MULTIFUNC 0x8C 391*3db86aabSstevel #define PCIC_O2_CTRL1 0xD0 392*3db86aabSstevel #define PCIC_O2_CTRL2 0xD4 393*3db86aabSstevel 394*3db86aabSstevel /* Texas Instruments specific Registers */ 395*3db86aabSstevel #define PCIC_INTLINE_REG 0x3C 396*3db86aabSstevel #define PCIC_INTPIN_REG 0x3D 397*3db86aabSstevel #define PCIC_BRIDGE_CTL_REG 0x3e 398*3db86aabSstevel #define PCIC_FUN_INT_MOD_ISA 0x80 399*3db86aabSstevel 400*3db86aabSstevel /* for PCI1420 chip */ 401*3db86aabSstevel #define PCIC_BRDGCTL_INTR_MASK 0x80 402*3db86aabSstevel #define PCIC_GPIO0_REG 0x88 403*3db86aabSstevel #define PCIC_GPIO1_REG 0x89 404*3db86aabSstevel #define PCIC_GPIO2_REG 0x8A 405*3db86aabSstevel #define PCIC_GPIO3_REG 0x8B 406*3db86aabSstevel 407*3db86aabSstevel #define PCIC_MFROUTE_REG 0x8c 408*3db86aabSstevel #define PCIC_MFUNC0_MASK 0xF 409*3db86aabSstevel #define PCIC_MFUNC0_INTA 0x2 410*3db86aabSstevel 411*3db86aabSstevel #define PCIC_DIAG_REG 0x93 412*3db86aabSstevel #define PCIC_GPIO_FMASK 0xC0 413*3db86aabSstevel #define PCIC_GPIO_INTENBL 0x10 414*3db86aabSstevel #define PCIC_GPIO_DELTA 0x08 415*3db86aabSstevel #define PCIC_GPIO_DOUT 0x02 416*3db86aabSstevel #define PCIC_GPIO_DIN 0x01 417*3db86aabSstevel #define PCIC_GPIO_FOUTPUT 0xC0 418*3db86aabSstevel #define PCIC_GPIO_FINPUT 0x80 419*3db86aabSstevel #define PCIC_GPIO2_IS_PCILOCK 0x00 420*3db86aabSstevel #define PCIC_GPIO3_IS_INTA 0x00 421*3db86aabSstevel #define PCIC_TI_WINDOW_PAGE 0x3C /* legacy */ 422*3db86aabSstevel #define PCIC_TI_WINDOW_PAGE_PCI 0x40 423*3db86aabSstevel 424*3db86aabSstevel #define PCIC_DIAG_REG 0x93 /* Diagnostic Register */ 425*3db86aabSstevel /* for PCI1225 chip */ 426*3db86aabSstevel #define PCIC_DIAG_CSC 0x20 /* CSC Interrupt Routing Control */ 427*3db86aabSstevel /* for PCI1221 and PCI1225 chips */ 428*3db86aabSstevel #define PCIC_DIAG_ASYNC 0x01 /* Async. interrupt enable */ 429*3db86aabSstevel 430*3db86aabSstevel #define PCIC_DEVCTL_REG 0x92 /* Device Control Register */ 431*3db86aabSstevel #define PCIC_DEVCTL_INTR_MASK 0x06 /* to mask out mode */ 432*3db86aabSstevel #define PCIC_DEVCTL_INTR_PCI 0x00 /* PCI style interrupts */ 433*3db86aabSstevel #define PCIC_DEVCTL_INTR_ISA 0x02 /* ISA style interrupts */ 434*3db86aabSstevel #define PCIC_DEVCTL_INTR_SER 0x04 /* serialize IRQ scheme */ 435*3db86aabSstevel #define PCIC_DEVCTL_INTR_RSVD 0x06 /* reserved */ 436*3db86aabSstevel /* for PCI1221 and PCI1225 chips */ 437*3db86aabSstevel #define PCIC_DEVCTL_3VCAPABLE 0x40 /* 3V socket capable force */ 438*3db86aabSstevel #define PCIC_DEVCTL_INTR_DFLT 0x06 /* default interrupt mode */ 439*3db86aabSstevel 440*3db86aabSstevel #define PCIC_CRDCTL_REG 0x91 /* Card Control Register */ 441*3db86aabSstevel #define PCIC_CRDCTL_RIENABLE 0x80 /* Ring indicate enable on TI1250a */ 442*3db86aabSstevel #define PCIC_CRDCTL_ZVENABLE 0x40 /* Z buffer enable on TI1250a */ 443*3db86aabSstevel #define PCIC_CRDCTL_PCIINTR 0x20 /* use PCI INT A/B */ 444*3db86aabSstevel #define PCIC_CRDCTL_PCICSC 0x10 /* PCI intr for status */ 445*3db86aabSstevel #define PCIC_CRDCTL_PCIFUNC 0x08 /* use PCI intr for cards */ 446*3db86aabSstevel #define PCIC_CRDCTL_SPKR_ENBL 0x02 /* Enable speaker plumbing */ 447*3db86aabSstevel #define PCIC_CRDCTL_IFG 0x01 /* card interrupt flag */ 448*3db86aabSstevel 449*3db86aabSstevel #define PCIC_SYSCTL_REG 0x80 /* System Control Register */ 450*3db86aabSstevel #define PCIC_SYSCTL_INTRTIE 0x20 /* tie INTA and INTB */ 451*3db86aabSstevel 452*3db86aabSstevel /* for Toshiba chips */ 453*3db86aabSstevel #define PCIC_TOSHIBA_SLOT_CTL_REG 0xa0 /* slot control register */ 454*3db86aabSstevel #define PCIC_TOSHIBA_SCR_SLOTON 0x80 455*3db86aabSstevel #define PCIC_TOSHIBA_SCR_SLOTEN 0x40 456*3db86aabSstevel #define PCIC_TOSHIBA_SCR_PRT_MASK 0xc 457*3db86aabSstevel #define PCIC_TOSHIBA_SCR_PRT_3E0 0x0 458*3db86aabSstevel #define PCIC_TOSHIBA_SCR_PRT_3E2 0x4 459*3db86aabSstevel #define PCIC_TOSHIBA_SCR_PRT_3E4 0x8 460*3db86aabSstevel #define PCIC_TOSHIBA_SCR_PRT_3E6 0xc 461*3db86aabSstevel #define PCIC_TOSHIBA_INTR_CTL_REG 0xa1 /* interrupt control register */ 462*3db86aabSstevel #define PCIC_TOSHIBA_ICR_PIN_MASK 0x30 463*3db86aabSstevel #define PCIC_TOSHIBA_ICR_PIN_DISEN 0x0 464*3db86aabSstevel #define PCIC_TOSHIBA_ICR_PIN_INTA 0x10 465*3db86aabSstevel #define PCIC_TOSHIBA_ICR_PIN_INTB 0x20 466*3db86aabSstevel #define PCIC_TOSHIBA_ICR_MOD_CSC 0x4 /* CSC interrupt mode */ 467*3db86aabSstevel #define PCIC_TOSHIBA_ICR_MOD_FUN 0x2 /* Funtional interrupt mode */ 468*3db86aabSstevel #define PCIC_TOSHIBA_ICR_SRC 0x1 /* INTA or IRQ */ 469*3db86aabSstevel 470*3db86aabSstevel /* for Ricoh chips */ 471*3db86aabSstevel #define PCIC_RICOH_MISC_CTL 0x82 472*3db86aabSstevel #define PCIC_RICOH_SIRQ_EN 0x80 /* serialized IRQ */ 473*3db86aabSstevel #define PCIC_RICOH_MISC_CTL_2 0xa0 /* ricoh */ 474*3db86aabSstevel #define PCIC_RICOH_CSC_INT_MOD 0x80 /* csc to ISA */ 475*3db86aabSstevel #define PCIC_RICOH_FUN_INT_MOD 0x40 /* cint to ISA */ 476*3db86aabSstevel 477*3db86aabSstevel /* for o2micro */ 478*3db86aabSstevel #define PCIC_O2MICRO_MISC_CTL 0x28 479*3db86aabSstevel #define PCIC_O2MICRO_INT_MOD_MASK 0x300 480*3db86aabSstevel #define PCIC_O2MICRO_INT_MOD_PCI 0x300 481*3db86aabSstevel #define PCIC_O2MICRO_ISA_LEGACY 0x800 482*3db86aabSstevel /* */ 483*3db86aabSstevel 484*3db86aabSstevel /* SMC 34C90 specific registers */ 485*3db86aabSstevel #define PCIC_SMC_MEM_PAGE 0x40 486*3db86aabSstevel 487*3db86aabSstevel /* available interrupts and interrupt mask */ 488*3db86aabSstevel #define PCIC_IRQ(irq) (1 << (irq)) 489*3db86aabSstevel #define PCIC_IRQ03 PCIC_IRQ(3) 490*3db86aabSstevel #define PCIC_IRQ04 PCIC_IRQ(4) 491*3db86aabSstevel #define PCIC_IRQ05 PCIC_IRQ(5) 492*3db86aabSstevel #define PCIC_IRQ07 PCIC_IRQ(7) 493*3db86aabSstevel #define PCIC_IRQ09 PCIC_IRQ(9) 494*3db86aabSstevel #define PCIC_IRQ10 PCIC_IRQ(10) 495*3db86aabSstevel #define PCIC_IRQ11 PCIC_IRQ(11) 496*3db86aabSstevel #define PCIC_IRQ12 PCIC_IRQ(12) 497*3db86aabSstevel #define PCIC_IRQ14 PCIC_IRQ(14) 498*3db86aabSstevel #define PCIC_IRQ15 PCIC_IRQ(15) 499*3db86aabSstevel 500*3db86aabSstevel #define PCIC_AVAIL_IRQS (PCIC_IRQ03|PCIC_IRQ04|PCIC_IRQ05|PCIC_IRQ07|\ 501*3db86aabSstevel PCIC_IRQ09|PCIC_IRQ10|PCIC_IRQ11|PCIC_IRQ12|\ 502*3db86aabSstevel PCIC_IRQ14|PCIC_IRQ15) 503*3db86aabSstevel 504*3db86aabSstevel /* page size used for window mapping and memory resource page size */ 505*3db86aabSstevel #define PCIC_PAGE 4096 506*3db86aabSstevel 507*3db86aabSstevel /* used in I/O window mapping */ 508*3db86aabSstevel #define HIGH_BYTE(x) (uchar_t)((((ushort_t)(x)) >> 8) & 0xFF) 509*3db86aabSstevel #define LOW_BYTE(x) (uchar_t)(((ushort_t)(x)) & 0xFF) 510*3db86aabSstevel #define PCIC_IO_0_MASK 0x0f 511*3db86aabSstevel #define PCIC_IO_1_MASK 0xf0 512*3db86aabSstevel #define IOMEM_WINDOW(x) (1<<((x)+6)) 513*3db86aabSstevel 514*3db86aabSstevel #define IOMEM_16BIT 0x01 515*3db86aabSstevel #define IOMEM_IOCS16 0x02 516*3db86aabSstevel #define IOMEM_ZERO_WAIT 0x04 517*3db86aabSstevel #define IOMEM_CLTIMER_SET_0 0x00 /* CL timer set selection */ 518*3db86aabSstevel #define IOMEM_CLTIMER_SET_1 0x08 /* CL timer set selection */ 519*3db86aabSstevel #define IOMEM_WAIT16 0x08 520*3db86aabSstevel #define IOMEM_SETWIN(w, x) ((x) << ((w)*4)) 521*3db86aabSstevel 522*3db86aabSstevel #define IOMEM_FIRST 0 /* First I/O address */ 523*3db86aabSstevel #define IOMEM_LAST 0xFFFF /* Last I/O address */ 524*3db86aabSstevel #define IOMEM_MIN 1 /* minimum I/O window size */ 525*3db86aabSstevel #define IOMEM_MAX 0x10000 /* maximum I/O window size */ 526*3db86aabSstevel #define IOMEM_GRAN 1 /* granularity of request */ 527*3db86aabSstevel #define IOMEM_DECODE 16 /* number of address lines decoded */ 528*3db86aabSstevel 529*3db86aabSstevel #define MEM_FIRST 0x10000 /* first memory address */ 530*3db86aabSstevel #define MEM_LAST 0xFFFFF /* last memory address */ 531*3db86aabSstevel #define MEM_MIN PCIC_PAGE /* minimum window size */ 532*3db86aabSstevel #define MEM_MAX 0x10000 /* maximum window size */ 533*3db86aabSstevel #define PAGE_SHIFT 12 /* bits to shift */ 534*3db86aabSstevel 535*3db86aabSstevel #define SYSCLK 120 /* sysclk min time (ns) */ 536*3db86aabSstevel #define MEM_SPEED_MIN (SYSCLK*2) 537*3db86aabSstevel #define MEM_SPEED_MAX (SYSCLK*6) 538*3db86aabSstevel 539*3db86aabSstevel /* CardBus (Yenta) specific values */ 540*3db86aabSstevel #define CB_R2_OFFSET 0x800 /* R2 is always at offset 0x800 */ 541*3db86aabSstevel #define CB_CLEXT_OFFSET 0x900 /* Cirrus Logic extended at offset 0x900 */ 542*3db86aabSstevel #define CB_CB_OFFSET 0x00 /* Cardbus registers at offset 0 */ 543*3db86aabSstevel 544*3db86aabSstevel /* Cardbus registers in TI 1250A/Cirrus 6832 and probably others. */ 545*3db86aabSstevel /* Register offsets (these are 32 bit registers). */ 546*3db86aabSstevel #define CB_STATUS_EVENT 0x00 547*3db86aabSstevel #define CB_STATUS_MASK 0x04 548*3db86aabSstevel #define CB_PRESENT_STATE 0x08 549*3db86aabSstevel #define CB_EVENT_FORCE 0x0c 550*3db86aabSstevel #define CB_CONTROL 0x10 551*3db86aabSstevel 552*3db86aabSstevel /* TI1420 */ 553*3db86aabSstevel #define CB_SOCKET_POWER 0x20 554*3db86aabSstevel 555*3db86aabSstevel /* Cardbus registers in 02 0Z6912. */ 556*3db86aabSstevel #define CB_SZVCTRL 0x20 557*3db86aabSstevel #define CB_SIMDCTRL 0x24 558*3db86aabSstevel #define CB_MISCCTRL 0x28 559*3db86aabSstevel 560*3db86aabSstevel /* Register bit definitions. */ 561*3db86aabSstevel #define BYTE_3(x) ((x)<<24) 562*3db86aabSstevel #define BYTE_2(x) ((x)<<16) 563*3db86aabSstevel #define BYTE_1(x) ((x)<<8) 564*3db86aabSstevel #define BYTE_0(x) (x) 565*3db86aabSstevel 566*3db86aabSstevel #define CB_SE_POWER_CYCLE BYTE_0(0x08) 567*3db86aabSstevel #define CB_SE_CCDMASK BYTE_0(0x06) 568*3db86aabSstevel #define CB_SE_CCD2 BYTE_0(0x04) 569*3db86aabSstevel #define CB_SE_CCD1 BYTE_0(0x02) 570*3db86aabSstevel #define CB_SE_CSTSCHG BYTE_0(0x01) 571*3db86aabSstevel 572*3db86aabSstevel #define CB_SM_POWER_CYCLE BYTE_0(0x08) 573*3db86aabSstevel #define CB_SM_CCDMASK BYTE_0(0x06) 574*3db86aabSstevel #define CB_SM_CCD2 BYTE_0(0x04) 575*3db86aabSstevel #define CB_SM_CCD1 BYTE_0(0x02) 576*3db86aabSstevel #define CB_SM_CSTSCHG BYTE_0(0x01) 577*3db86aabSstevel 578*3db86aabSstevel #define CB_PS_CSTSCHG BYTE_0(0x01) 579*3db86aabSstevel #define CB_PS_CCDMASK BYTE_0(0x06) 580*3db86aabSstevel #define CB_PS_NCCD1 BYTE_0(0x02) 581*3db86aabSstevel #define CB_PS_NCCD2 BYTE_0(0x04) 582*3db86aabSstevel #define CB_PS_POWER_CYCLE BYTE_0(0x08) 583*3db86aabSstevel #define CB_PS_16BITCARD BYTE_0(0x10) 584*3db86aabSstevel #define CB_PS_CBCARD BYTE_0(0x20) 585*3db86aabSstevel #define CB_PS_INTERRUPT BYTE_0(0x40) 586*3db86aabSstevel #define CB_PS_NOTACARD BYTE_0(0x80) 587*3db86aabSstevel 588*3db86aabSstevel #define CB_PS_DATALOST BYTE_1(0x01) 589*3db86aabSstevel #define CB_PS_BADVCC BYTE_1(0x02) 590*3db86aabSstevel #define CB_PS_50VCARD BYTE_1(0x04) 591*3db86aabSstevel #define CB_PS_33VCARD BYTE_1(0x08) 592*3db86aabSstevel #define CB_PS_XVCARD BYTE_1(0x10) 593*3db86aabSstevel #define CB_PS_YVCARD BYTE_1(0x20) 594*3db86aabSstevel 595*3db86aabSstevel #define CB_PS_50VSOCKET BYTE_3(0x10) 596*3db86aabSstevel #define CB_PS_33VSOCKET BYTE_3(0x20) 597*3db86aabSstevel #define CB_PS_XVSOCKET BYTE_3(0x40) 598*3db86aabSstevel #define CB_PS_YVSOCKET BYTE_3(0x80) 599*3db86aabSstevel 600*3db86aabSstevel #define CB_EF_CSTSCHG BYTE_0(0x01) 601*3db86aabSstevel #define CB_EF_CCD1 BYTE_0(0x02) 602*3db86aabSstevel #define CB_EF_CCD2 BYTE_0(0x04) 603*3db86aabSstevel #define CB_EF_POWER_CYCLE BYTE_0(0x08) 604*3db86aabSstevel #define CB_EF_16BITCARD BYTE_0(0x10) 605*3db86aabSstevel #define CB_EF_CBCARD BYTE_0(0x20) 606*3db86aabSstevel #define CB_EF_NOTACARD BYTE_0(0x80) 607*3db86aabSstevel 608*3db86aabSstevel #define CB_EF_DATALOST BYTE_1(0x01) 609*3db86aabSstevel #define CB_EF_BADVCC BYTE_1(0x02) 610*3db86aabSstevel #define CB_EF_50V BYTE_1(0x04) 611*3db86aabSstevel #define CB_EF_33V BYTE_1(0x08) 612*3db86aabSstevel #define CB_EF_XV BYTE_1(0x10) 613*3db86aabSstevel #define CB_EF_YV BYTE_1(0x20) 614*3db86aabSstevel #define CB_EF_CVTEST BYTE_1(0x40) 615*3db86aabSstevel 616*3db86aabSstevel #define CB_C_VPPMASK BYTE_0(0x07) 617*3db86aabSstevel #define CB_C_VCCMASK BYTE_0(0x70) 618*3db86aabSstevel 619*3db86aabSstevel #define CB_C_VPP0V BYTE_0(0x00) 620*3db86aabSstevel #define CB_C_VPP12V BYTE_0(0x01) 621*3db86aabSstevel #define CB_C_VPPVCC BYTE_0(0x03) 622*3db86aabSstevel 623*3db86aabSstevel #define CB_C_VCC0V BYTE_0(0x00) 624*3db86aabSstevel #define CB_C_VCC50V BYTE_0(0x20) 625*3db86aabSstevel #define CB_C_VCC33V BYTE_0(0x30) 626*3db86aabSstevel 627*3db86aabSstevel #ifdef __cplusplus 628*3db86aabSstevel } 629*3db86aabSstevel #endif 630*3db86aabSstevel 631*3db86aabSstevel #endif /* _PCIC_REG_H */ 632