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

Annotation of sys/dev/pci/pccbbvar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: pccbbvar.h,v 1.12 2006/10/12 16:35:51 grange Exp $    */
        !             2: /*     $NetBSD: pccbbvar.h,v 1.13 2000/06/08 10:28:29 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: /* require sys/device.h */
        !            33: /* require sys/queue.h */
        !            34: /* require sys/callout.h */
        !            35: /* require dev/ic/i82365reg.h */
        !            36: /* require dev/ic/i82365var.h */
        !            37:
        !            38: #ifndef _DEV_PCI_PCCBBVAR_H_
        !            39: #define        _DEV_PCI_PCCBBVAR_H_
        !            40:
        !            41: #include <sys/timeout.h>
        !            42:
        !            43: #define        PCIC_FLAG_SOCKETP       0x0001
        !            44: #define        PCIC_FLAG_CARDP         0x0002
        !            45:
        !            46: /* Chipset ID */
        !            47: #define        CB_UNKNOWN      0       /* NOT Cardbus-PCI bridge */
        !            48: #define        CB_TI113X       1       /* TI PCI1130/1131 */
        !            49: #define        CB_TI12XX       2       /* TI PCI1250/1220 */
        !            50: #define        CB_RX5C47X      3       /* RICOH RX5C475/476/477 */
        !            51: #define        CB_RX5C46X      4       /* RICOH RX5C465/466/467 */
        !            52: #define        CB_TOPIC95      5       /* Toshiba ToPIC95 */
        !            53: #define        CB_TOPIC95B     6       /* Toshiba ToPIC95B */
        !            54: #define        CB_TOPIC97      7       /* Toshiba ToPIC97 */
        !            55: #define        CB_CIRRUS       8       /* Cirrus Logic CL-PD683X */
        !            56: #define        CB_TI125X       9       /* TI PCI1250/1251(B)/1450 */
        !            57: #define        CB_OLDO2MICRO   10      /* O2Micro */
        !            58: #define        CB_CHIPS_LAST   11      /* Sentinel */
        !            59:
        !            60: #define PCCARD_VCC_UKN         0x00    /* Unknown */
        !            61: #define PCCARD_VCC_5V          0x01
        !            62: #define PCCARD_VCC_3V          0x02
        !            63: #define PCCARD_VCC_XV          0x04
        !            64: #define PCCARD_VCC_YV          0x08
        !            65:
        !            66: #if 0
        !            67: static char *cb_chipset_name[CB_CHIPS_LAST] = {
        !            68:        "unknown", "TI 113X", "TI 12XX", "RF5C47X", "RF5C46X", "ToPIC95",
        !            69:        "ToPIC95B", "ToPIC97", "CL-PD 683X", "TI 125X",
        !            70: };
        !            71: #endif
        !            72:
        !            73: struct pccbb_softc;
        !            74: struct pccbb_intrhand_list;
        !            75:
        !            76:
        !            77: struct cbb_pcic_handle {
        !            78:        struct device *ph_parent;
        !            79:        bus_space_tag_t ph_base_t;
        !            80:        bus_space_handle_t ph_base_h;
        !            81:        u_int8_t (*ph_read)(struct cbb_pcic_handle *, int);
        !            82:        void (*ph_write)(struct cbb_pcic_handle *, int, u_int8_t);
        !            83:        int sock;
        !            84:
        !            85:        int vendor;
        !            86:        int flags;
        !            87:        int memalloc;
        !            88:        struct {
        !            89:                bus_addr_t addr;
        !            90:                bus_size_t size;
        !            91:                long offset;
        !            92:                int kind;
        !            93:        } mem[PCIC_MEM_WINS];
        !            94:        int ioalloc;
        !            95:        struct {
        !            96:                bus_addr_t addr;
        !            97:                bus_size_t size;
        !            98:                int width;
        !            99:        } io[PCIC_IO_WINS];
        !           100:        int ih_irq;
        !           101:        struct device *pcmcia;
        !           102:
        !           103:        int shutdown;
        !           104: };
        !           105:
        !           106: struct pccbb_win_chain {
        !           107:        bus_addr_t wc_start;            /* Caution: region [start, end], */
        !           108:        bus_addr_t wc_end;              /* instead of [start, end). */
        !           109:        int wc_flags;
        !           110:        bus_space_handle_t wc_handle;
        !           111:        TAILQ_ENTRY(pccbb_win_chain) wc_list;
        !           112: };
        !           113: #define        PCCBB_MEM_CACHABLE      1
        !           114:
        !           115: TAILQ_HEAD(pccbb_win_chain_head, pccbb_win_chain);
        !           116:
        !           117: struct pccbb_softc {
        !           118:        struct device sc_dev;
        !           119:        bus_space_tag_t sc_iot;
        !           120:        bus_space_tag_t sc_memt;
        !           121:        bus_dma_tag_t sc_dmat;
        !           122:
        !           123:        rbus_tag_t sc_rbus_iot;         /* rbus for i/o donated from parent */
        !           124:        rbus_tag_t sc_rbus_memt;        /* rbus for mem donated from parent */
        !           125:
        !           126:        bus_space_tag_t sc_base_memt;
        !           127:        bus_space_handle_t sc_base_memh;
        !           128:
        !           129:        struct timeout sc_ins_tmo;
        !           130:        void *sc_ih;                    /* interrupt handler */
        !           131:        int sc_intrline;                /* interrupt line */
        !           132:        pcitag_t sc_intrtag;            /* copy of pa->pa_intrtag */
        !           133:        pci_intr_pin_t sc_intrpin;      /* copy of pa->pa_intrpin */
        !           134:        int sc_function;
        !           135:        u_int32_t sc_flags;
        !           136: #define        CBB_CARDEXIST   0x01
        !           137: #define        CBB_INSERTING   0x01000000
        !           138: #define        CBB_16BITCARD   0x04
        !           139: #define        CBB_32BITCARD   0x08
        !           140: #define        CBB_MEMHMAPPED  0x02000000
        !           141:
        !           142:        pci_chipset_tag_t sc_pc;
        !           143:        pcitag_t sc_tag;
        !           144:        int sc_chipset;                 /* chipset id */
        !           145:        int sc_ints_on;
        !           146:
        !           147:        bus_addr_t sc_mem_start;        /* CardBus/PCMCIA memory start */
        !           148:        bus_addr_t sc_mem_end;          /* CardBus/PCMCIA memory end */
        !           149:        bus_addr_t sc_io_start;         /* CardBus/PCMCIA io start */
        !           150:        bus_addr_t sc_io_end;           /* CardBus/PCMCIA io end */
        !           151:
        !           152:        pcireg_t sc_sockbase;           /* Socket base register */
        !           153:        pcireg_t sc_busnum;             /* bus number */
        !           154:
        !           155:        /* CardBus stuff */
        !           156:        struct cardslot_softc *sc_csc;
        !           157:
        !           158:        struct pccbb_win_chain_head sc_memwindow;
        !           159:        struct pccbb_win_chain_head sc_iowindow;
        !           160:
        !           161:        /* pcmcia stuff */
        !           162:        struct pcic_handle sc_pcmcia_h;
        !           163:        pcmcia_chipset_tag_t sc_pct;
        !           164:        int sc_pcmcia_flags;
        !           165: #define        PCCBB_PCMCIA_IO_RELOC   0x01    /* IO addr relocatable stuff exists */
        !           166: #define        PCCBB_PCMCIA_MEM_32     0x02    /* 32-bit memory address ready */
        !           167: #define        PCCBB_PCMCIA_16BITONLY  0x04    /* 32-bit mode disable */
        !           168:
        !           169:        struct proc *sc_event_thread;
        !           170:        SIMPLEQ_HEAD(, pcic_event) sc_events;
        !           171:
        !           172:        /* interrupt handler list on the bridge */
        !           173:        struct pccbb_intrhand_list *sc_pil;
        !           174:        int sc_pil_intr_enable; /* can i call intr handler for child device? */
        !           175: };
        !           176:
        !           177: /*
        !           178:  * struct pccbb_intrhand_list holds interrupt handler and argument for
        !           179:  * child devices.
        !           180:  */
        !           181:
        !           182: struct pccbb_intrhand_list {
        !           183:        int (*pil_func)(void *);
        !           184:        void *pil_arg;
        !           185:        int pil_level;
        !           186:        struct evcount pil_count;
        !           187:        struct pccbb_intrhand_list *pil_next;
        !           188: };
        !           189:
        !           190: #endif /* _DEV_PCI_PCCBBREG_H_ */

CVSweb