home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-arm / mach / pci.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.2 KB  |  76 lines

  1. /*
  2.  *  linux/include/asm-arm/mach/pci.h
  3.  *
  4.  *  Copyright (C) 2000 Russell King
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  */
  10.  
  11. struct pci_sys_data;
  12. struct pci_bus;
  13.  
  14. struct hw_pci {
  15.     struct list_head buses;
  16.     int        nr_controllers;
  17.     int        (*setup)(int nr, struct pci_sys_data *);
  18.     struct pci_bus *(*scan)(int nr, struct pci_sys_data *);
  19.     void        (*preinit)(void);
  20.     void        (*postinit)(void);
  21.     u8        (*swizzle)(struct pci_dev *dev, u8 *pin);
  22.     int        (*map_irq)(struct pci_dev *dev, u8 slot, u8 pin);
  23. };
  24.  
  25. /*
  26.  * Per-controller structure
  27.  */
  28. struct pci_sys_data {
  29.     struct list_head node;
  30.     int        busnr;        /* primary bus number            */
  31.     unsigned long    mem_offset;    /* bus->cpu memory mapping offset    */
  32.     unsigned long    io_offset;    /* bus->cpu IO mapping offset        */
  33.     struct pci_bus    *bus;        /* PCI bus                */
  34.     struct resource *resource[3];    /* Primary PCI bus resources        */
  35.                     /* Bridge swizzling            */
  36.     u8        (*swizzle)(struct pci_dev *, u8 *);
  37.                     /* IRQ mapping                */
  38.     int        (*map_irq)(struct pci_dev *, u8, u8);
  39.     struct hw_pci    *hw;
  40. };
  41.  
  42. /*
  43.  * This is the standard PCI-PCI bridge swizzling algorithm.
  44.  */
  45. u8 pci_std_swizzle(struct pci_dev *dev, u8 *pinp);
  46.  
  47. /*
  48.  * Call this with your hw_pci struct to initialise the PCI system.
  49.  */
  50. void pci_common_init(struct hw_pci *);
  51.  
  52. /*
  53.  * PCI controllers
  54.  */
  55. extern int iop321_setup(int nr, struct pci_sys_data *);
  56. extern struct pci_bus *iop321_scan_bus(int nr, struct pci_sys_data *);
  57. extern void iop321_init(void);
  58.  
  59. extern int iop331_setup(int nr, struct pci_sys_data *);
  60. extern struct pci_bus *iop331_scan_bus(int nr, struct pci_sys_data *);
  61. extern void iop331_init(void);
  62.  
  63. extern int dc21285_setup(int nr, struct pci_sys_data *);
  64. extern struct pci_bus *dc21285_scan_bus(int nr, struct pci_sys_data *);
  65. extern void dc21285_preinit(void);
  66. extern void dc21285_postinit(void);
  67.  
  68. extern int via82c505_setup(int nr, struct pci_sys_data *);
  69. extern struct pci_bus *via82c505_scan_bus(int nr, struct pci_sys_data *);
  70. extern void via82c505_init(void *sysdata);
  71.  
  72. extern int pci_v3_setup(int nr, struct pci_sys_data *);
  73. extern struct pci_bus *pci_v3_scan_bus(int nr, struct pci_sys_data *);
  74. extern void pci_v3_preinit(void);
  75. extern void pci_v3_postinit(void);
  76.