Annotation of Gnu-Mach/linux/pcmcia-cs/modules/cirrus.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * cirrus.h 1.11 2003/09/09 07:05:40
                      3:  *
                      4:  * The contents of this file are subject to the Mozilla Public License
                      5:  * Version 1.1 (the "License"); you may not use this file except in
                      6:  * compliance with the License. You may obtain a copy of the License
                      7:  * at http://www.mozilla.org/MPL/
                      8:  *
                      9:  * Software distributed under the License is distributed on an "AS IS"
                     10:  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
                     11:  * the License for the specific language governing rights and
                     12:  * limitations under the License. 
                     13:  *
                     14:  * The initial developer of the original code is David A. Hinds
                     15:  * <[email protected]>.  Portions created by David A. Hinds
                     16:  * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
                     17:  *
                     18:  * Alternatively, the contents of this file may be used under the
                     19:  * terms of the GNU General Public License version 2 (the "GPL"), in
                     20:  * which case the provisions of the GPL are applicable instead of the
                     21:  * above.  If you wish to allow the use of your version of this file
                     22:  * only under the terms of the GPL and not to allow others to use
                     23:  * your version of this file under the MPL, indicate your decision by
                     24:  * deleting the provisions above and replace them with the notice and
                     25:  * other provisions required by the GPL.  If you do not delete the
                     26:  * provisions above, a recipient may use your version of this file
                     27:  * under either the MPL or the GPL.
                     28:  */
                     29: 
                     30: #ifndef _LINUX_CIRRUS_H
                     31: #define _LINUX_CIRRUS_H
                     32: 
                     33: #ifndef PCI_VENDOR_ID_CIRRUS
                     34: #define PCI_VENDOR_ID_CIRRUS           0x1013
                     35: #endif
                     36: #ifndef PCI_DEVICE_ID_CIRRUS_6729
                     37: #define PCI_DEVICE_ID_CIRRUS_6729      0x1100
                     38: #endif
                     39: #ifndef PCI_DEVICE_ID_CIRRUS_6832
                     40: #define PCI_DEVICE_ID_CIRRUS_6832      0x1110
                     41: #endif
                     42: 
                     43: #define PD67_MISC_CTL_1                0x16    /* Misc control 1 */
                     44: #define PD67_FIFO_CTL          0x17    /* FIFO control */
                     45: #define PD67_MISC_CTL_2                0x1E    /* Misc control 2 */
                     46: #define PD67_CHIP_INFO         0x1f    /* Chip information */
                     47: #define PD67_ATA_CTL           0x026   /* 6730: ATA control */
                     48: #define PD67_EXT_INDEX         0x2e    /* Extension index */
                     49: #define PD67_EXT_DATA          0x2f    /* Extension data */
                     50: 
                     51: #define pd67_ext_get(s, r) \
                     52:     (i365_set(s, PD67_EXT_INDEX, r), i365_get(s, PD67_EXT_DATA))
                     53: #define pd67_ext_set(s, r, v) \
                     54:     (i365_set(s, PD67_EXT_INDEX, r), i365_set(s, PD67_EXT_DATA, v))
                     55: 
                     56: /* PD6722 extension registers -- indexed in PD67_EXT_INDEX */
                     57: #define PD67_DATA_MASK0                0x01    /* Data mask 0 */
                     58: #define PD67_DATA_MASK1                0x02    /* Data mask 1 */
                     59: #define PD67_DMA_CTL           0x03    /* DMA control */
                     60: 
                     61: /* PD6730 extension registers -- indexed in PD67_EXT_INDEX */
                     62: #define PD67_EXT_CTL_1         0x03    /* Extension control 1 */
                     63: #define PD67_MEM_PAGE(n)       ((n)+5) /* PCI window bits 31:24 */
                     64: #define PD67_EXTERN_DATA       0x0a
                     65: #define PD67_EXT_CTL_2         0x0b
                     66: #define PD67_MISC_CTL_3                0x25
                     67: #define PD67_SMB_PWR_CTL       0x26
                     68: 
                     69: /* I/O window address offset */
                     70: #define PD67_IO_OFF(w)         (0x36+((w)<<1))
                     71: 
                     72: /* Timing register sets */
                     73: #define PD67_TIME_SETUP(n)     (0x3a + 3*(n))
                     74: #define PD67_TIME_CMD(n)       (0x3b + 3*(n))
                     75: #define PD67_TIME_RECOV(n)     (0x3c + 3*(n))
                     76: 
                     77: /* Flags for PD67_MISC_CTL_1 */
                     78: #define PD67_MC1_5V_DET                0x01    /* 5v detect */
                     79: #define PD67_MC1_MEDIA_ENA     0x01    /* 6730: Multimedia enable */
                     80: #define PD67_MC1_VCC_3V                0x02    /* 3.3v Vcc */
                     81: #define PD67_MC1_PULSE_MGMT    0x04
                     82: #define PD67_MC1_PULSE_IRQ     0x08
                     83: #define PD67_MC1_SPKR_ENA      0x10
                     84: #define PD67_MC1_INPACK_ENA    0x80
                     85: 
                     86: /* Flags for PD67_FIFO_CTL */
                     87: #define PD67_FIFO_EMPTY                0x80
                     88: 
                     89: /* Flags for PD67_MISC_CTL_2 */
                     90: #define PD67_MC2_FREQ_BYPASS   0x01
                     91: #define PD67_MC2_DYNAMIC_MODE  0x02
                     92: #define PD67_MC2_SUSPEND       0x04
                     93: #define PD67_MC2_5V_CORE       0x08
                     94: #define PD67_MC2_LED_ENA       0x10    /* IRQ 12 is LED enable */
                     95: #define PD67_MC2_FAST_PCI      0x10    /* 6729: PCI bus > 25 MHz */
                     96: #define PD67_MC2_3STATE_BIT7   0x20    /* Floppy change bit */
                     97: #define PD67_MC2_DMA_MODE      0x40
                     98: #define PD67_MC2_IRQ15_RI      0x80    /* IRQ 15 is ring enable */
                     99: 
                    100: /* Flags for PD67_CHIP_INFO */
                    101: #define PD67_INFO_SLOTS                0x20    /* 0 = 1 slot, 1 = 2 slots */
                    102: #define PD67_INFO_CHIP_ID      0xc0
                    103: #define PD67_INFO_REV          0x1c
                    104: 
                    105: /* Fields in PD67_TIME_* registers */
                    106: #define PD67_TIME_SCALE                0xc0
                    107: #define PD67_TIME_SCALE_1      0x00
                    108: #define PD67_TIME_SCALE_16     0x40
                    109: #define PD67_TIME_SCALE_256    0x80
                    110: #define PD67_TIME_SCALE_4096   0xc0
                    111: #define PD67_TIME_MULT         0x3f
                    112: 
                    113: /* Fields in PD67_DMA_CTL */
                    114: #define PD67_DMA_MODE          0xc0
                    115: #define PD67_DMA_OFF           0x00
                    116: #define PD67_DMA_DREQ_INPACK   0x40
                    117: #define PD67_DMA_DREQ_WP       0x80
                    118: #define PD67_DMA_DREQ_BVD2     0xc0
                    119: #define PD67_DMA_PULLUP                0x20    /* Disable socket pullups? */
                    120: 
                    121: /* Fields in PD67_EXT_CTL_1 */
                    122: #define PD67_EC1_VCC_PWR_LOCK  0x01
                    123: #define PD67_EC1_AUTO_PWR_CLEAR        0x02
                    124: #define PD67_EC1_LED_ENA       0x04
                    125: #define PD67_EC1_INV_CARD_IRQ  0x08
                    126: #define PD67_EC1_INV_MGMT_IRQ  0x10
                    127: #define PD67_EC1_PULLUP_CTL    0x20
                    128: 
                    129: /* Fields in PD67_EXTERN_DATA */
                    130: #define PD67_EXD_VS1(s)                (0x01 << ((s)<<1))
                    131: #define PD67_EXD_VS2(s)                (0x02 << ((s)<<1))
                    132: 
                    133: /* Fields in PD67_EXT_CTL_2 */
                    134: #define PD67_EC2_GPSTB_TOTEM   0x04
                    135: #define PD67_EC2_GPSTB_IOR     0x08
                    136: #define PD67_EC2_GPSTB_IOW     0x10
                    137: #define PD67_EC2_GPSTB_HIGH    0x20
                    138: 
                    139: /* Fields in PD67_MISC_CTL_3 */
                    140: #define PD67_MC3_IRQ_MASK      0x03
                    141: #define PD67_MC3_IRQ_PCPCI     0x00
                    142: #define PD67_MC3_IRQ_EXTERN    0x01
                    143: #define PD67_MC3_IRQ_PCIWAY    0x02
                    144: #define PD67_MC3_IRQ_PCI       0x03
                    145: #define PD67_MC3_PWR_MASK      0x0c
                    146: #define PD67_MC3_PWR_SERIAL    0x00
                    147: #define PD67_MC3_PWR_TI2202    0x08
                    148: #define PD67_MC3_PWR_SMB       0x0c
                    149: 
                    150: /* Register definitions for Cirrus PD6832 PCI-to-CardBus bridge */
                    151: 
                    152: /* PD6832 extension registers -- indexed in PD67_EXT_INDEX */
                    153: #define PD68_PCI_SPACE                 0x22
                    154: #define PD68_PCCARD_SPACE              0x23
                    155: #define PD68_WINDOW_TYPE               0x24
                    156: #define PD68_EXT_CSC                   0x2e
                    157: #define PD68_MISC_CTL_4                        0x2f
                    158: #define PD68_MISC_CTL_5                        0x30
                    159: #define PD68_MISC_CTL_6                        0x31
                    160: 
                    161: /* Extra flags in PD67_MISC_CTL_3 */
                    162: #define PD68_MC3_HW_SUSP               0x10
                    163: #define PD68_MC3_MM_EXPAND             0x40
                    164: #define PD68_MC3_MM_ARM                        0x80
                    165: 
                    166: /* Bridge Control Register */
                    167: #define  PD6832_BCR_MGMT_IRQ_ENA       0x0800
                    168: 
                    169: /* Socket Number Register */
                    170: #define PD6832_SOCKET_NUMBER           0x004c  /* 8 bit */
                    171: 
                    172: /* Data structure for tracking vendor-specific state */
                    173: typedef struct cirrus_state_t {
                    174:     u_char             misc1;          /* PD67_MISC_CTL_1 */
                    175:     u_char             misc2;          /* PD67_MISC_CTL_2 */
                    176:     u_char             ectl1;          /* PD67_EXT_CTL_1 */
                    177:     u_char             timer[6];       /* PD67_TIME_* */
                    178: } cirrus_state_t;
                    179: 
                    180: #define CIRRUS_PCIC_ID \
                    181:     IS_PD6729, IS_PD6730, IS_PD6832
                    182: 
                    183: #define CIRRUS_PCIC_INFO \
                    184:     { "Cirrus PD6729", IS_CIRRUS|IS_PCI, ID(CIRRUS, 6729) },           \
                    185:     { "Cirrus PD6730", IS_CIRRUS|IS_PCI, PCI_VENDOR_ID_CIRRUS, -1 },   \
                    186:     { "Cirrus PD6832", IS_CIRRUS|IS_CARDBUS, ID(CIRRUS, 6832) }
                    187: 
                    188: #endif /* _LINUX_CIRRUS_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.