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/dev/pci/pccbbvar.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 /*      $NetBSD: pccbbvar.h,v 1.20.2.1 2004/07/23 22:29:12 he Exp $     */
    2 /*
    3  * Copyright (c) 1999 HAYAKAWA Koichi.  All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  * 3. All advertising materials mentioning features or use of this software
   14  *    must display the following acknowledgement:
   15  *      This product includes software developed by HAYAKAWA Koichi.
   16  * 4. The name of the author may not be used to endorse or promote products
   17  *    derived from this software without specific prior written permission.
   18  *
   19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   29  */
   30 
   31 /* require sys/device.h */
   32 /* require sys/queue.h */
   33 /* require sys/callout.h */
   34 /* require dev/ic/i82365reg.h */
   35 /* require dev/ic/i82365var.h */
   36 
   37 #ifndef _DEV_PCI_PCCBBVAR_H_
   38 #define _DEV_PCI_PCCBBVAR_H_
   39 
   40 #define PCIC_FLAG_SOCKETP       0x0001
   41 #define PCIC_FLAG_CARDP         0x0002
   42 
   43 /* Chipset ID */
   44 #define CB_UNKNOWN      0       /* NOT Cardbus-PCI bridge */
   45 #define CB_TI113X       1       /* TI PCI1130/1131 */
   46 #define CB_TI12XX       2       /* TI PCI12xx/14xx/44xx/15xx/45xx */
   47 #define CB_RX5C47X      3       /* RICOH RX5C475/476/477 */
   48 #define CB_RX5C46X      4       /* RICOH RX5C465/466/467 */
   49 #define CB_TOPIC95      5       /* Toshiba ToPIC95 */
   50 #define CB_TOPIC95B     6       /* Toshiba ToPIC95B */
   51 #define CB_TOPIC97      7       /* Toshiba ToPIC97 */
   52 #define CB_CIRRUS       8       /* Cirrus Logic CL-PD683X */
   53 #define CB_TI125X       9       /* TI PCI1250/1251(B)/1450 */
   54 #define CB_CHIPS_LAST   10      /* Sentinel */
   55 
   56 #if 0
   57 static char *cb_chipset_name[CB_CHIPS_LAST] = {
   58         "unknown", "TI 113X", "TI 12XX", "RF5C47X", "RF5C46X", "ToPIC95",
   59         "ToPIC95B", "ToPIC97", "CL-PD 683X", "TI 125X",
   60 };
   61 #endif
   62 
   63 struct pccbb_softc;
   64 struct pccbb_intrhand_list;
   65 
   66 
   67 struct cbb_pcic_handle {
   68         struct device *ph_parent;
   69         bus_space_tag_t ph_base_t;
   70         bus_space_handle_t ph_base_h;
   71         u_int8_t (*ph_read) __P((struct cbb_pcic_handle *, int));
   72         void (*ph_write) __P((struct cbb_pcic_handle *, int, u_int8_t));
   73         int sock;
   74 
   75         int vendor;
   76         int flags;
   77         int memalloc;
   78         struct {
   79                 bus_addr_t addr;
   80                 bus_size_t size;
   81                 long offset;
   82                 int kind;
   83         } mem[PCIC_MEM_WINS];
   84         int ioalloc;
   85         struct {
   86                 bus_addr_t addr;
   87                 bus_size_t size;
   88                 int width;
   89         } io[PCIC_IO_WINS];
   90         int ih_irq;
   91         struct device *pcmcia;
   92 
   93         int shutdown;
   94 };
   95 
   96 struct pccbb_win_chain {
   97         bus_addr_t wc_start;            /* Caution: region [start, end], */
   98         bus_addr_t wc_end;              /* instead of [start, end). */
   99         int wc_flags;
  100         bus_space_handle_t wc_handle;
  101         TAILQ_ENTRY(pccbb_win_chain) wc_list;
  102 };
  103 #define PCCBB_MEM_CACHABLE      1
  104 
  105 TAILQ_HEAD(pccbb_win_chain_head, pccbb_win_chain);
  106 
  107 struct pccbb_softc {
  108         struct device sc_dev;
  109         bus_space_tag_t sc_iot;
  110         bus_space_tag_t sc_memt;
  111         bus_dma_tag_t sc_dmat;
  112 
  113 #if rbus
  114         rbus_tag_t sc_rbus_iot;         /* rbus for i/o donated from parent */
  115         rbus_tag_t sc_rbus_memt;        /* rbus for mem donated from parent */
  116 #endif
  117 
  118         bus_space_tag_t sc_base_memt;
  119         bus_space_handle_t sc_base_memh;
  120 
  121         struct callout sc_insert_ch;
  122 
  123         void *sc_ih;                    /* interrupt handler */
  124         struct pci_attach_args sc_pa;   /* copy of our attach args */
  125         int sc_function;
  126         u_int32_t sc_flags;
  127 #define CBB_CARDEXIST   0x01
  128 #define CBB_INSERTING   0x01000000
  129 #define CBB_16BITCARD   0x04
  130 #define CBB_32BITCARD   0x08
  131 #define CBB_MEMHMAPPED  0x02000000
  132 
  133         pci_chipset_tag_t sc_pc;
  134         pcitag_t sc_tag;
  135         int sc_chipset;                 /* chipset id */
  136 
  137         bus_addr_t sc_mem_start;        /* CardBus/PCMCIA memory start */
  138         bus_addr_t sc_mem_end;          /* CardBus/PCMCIA memory end */
  139         bus_addr_t sc_io_start;         /* CardBus/PCMCIA io start */
  140         bus_addr_t sc_io_end;           /* CardBus/PCMCIA io end */
  141 
  142         pcireg_t sc_sockbase;           /* Socket base register */
  143         pcireg_t sc_busnum;             /* bus number */
  144 
  145         /* CardBus stuff */
  146         struct cardslot_softc *sc_csc;
  147 
  148         struct pccbb_win_chain_head sc_memwindow;
  149         struct pccbb_win_chain_head sc_iowindow;
  150 
  151         /* pcmcia stuff */
  152         struct pcic_handle sc_pcmcia_h;
  153         pcmcia_chipset_tag_t sc_pct;
  154         int sc_pcmcia_flags;
  155 #define PCCBB_PCMCIA_IO_RELOC   0x01    /* IO addr relocatable stuff exists */
  156 #define PCCBB_PCMCIA_MEM_32     0x02    /* 32-bit memory address ready */
  157 
  158         struct proc *sc_event_thread;
  159         SIMPLEQ_HEAD(, pcic_event) sc_events;
  160 
  161         /* interrupt handler list on the bridge */
  162         LIST_HEAD(, pccbb_intrhand_list) sc_pil;
  163         int sc_pil_intr_enable; /* can i call intr handler for child device? */
  164 
  165         int sc_pwrmgt_offs;     /* Offset for power management capability */
  166 };
  167 
  168 /*
  169  * struct pccbb_intrhand_list holds interrupt handler and argument for
  170  * child devices.
  171  */
  172 
  173 struct pccbb_intrhand_list {
  174         int (*pil_func) __P((void *));
  175         void *pil_arg;
  176         int pil_level;
  177         LIST_ENTRY(pccbb_intrhand_list) pil_next;
  178 };
  179 
  180 void pccbb_intr_route __P((struct pccbb_softc *sc));
  181 
  182 
  183 #endif /* _DEV_PCI_PCCBBREG_H_ */

Cache object: 517c46d37bf043e8e389ab03d0af7419


[ 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.