Subversion Repositories shark

Rev

Rev 436 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
436 giacomo 1
/*
2
 *      Low-Level PCI Access for i386 machines.
3
 *
4
 *      (c) 1999 Martin Mares <mj@ucw.cz>
5
 */
6
 
439 giacomo 7
#define DEBUG
436 giacomo 8
 
9
#ifdef DEBUG
10
#define DBG(x...) printk(x)
11
#else
12
#define DBG(x...)
13
#endif
14
 
15
#define PCI_PROBE_BIOS          0x0001
16
#define PCI_PROBE_CONF1         0x0002
17
#define PCI_PROBE_CONF2         0x0004
18
#define PCI_NO_SORT             0x0100
19
#define PCI_BIOS_SORT           0x0200
20
#define PCI_NO_CHECKS           0x0400
21
#define PCI_USE_PIRQ_MASK       0x0800
22
#define PCI_ASSIGN_ROMS         0x1000
23
#define PCI_BIOS_IRQ_SCAN       0x2000
24
#define PCI_ASSIGN_ALL_BUSSES   0x4000
25
#define PCI_NO_ACPI_ROUTING     0x8000
26
 
27
extern unsigned int pci_probe;
28
 
29
/* pci-i386.c */
30
 
31
extern unsigned int pcibios_max_latency;
32
 
33
void pcibios_resource_survey(void);
34
int pcibios_enable_resources(struct pci_dev *, int);
35
 
36
/* pci-pc.c */
37
 
38
extern int pcibios_last_bus;
39
extern struct pci_bus *pci_root_bus;
40
extern struct pci_ops pci_root_ops;
41
 
42
/* pci-irq.c */
43
 
44
struct irq_info {
45
        u8 bus, devfn;                  /* Bus, device and function */
46
        struct {
47
                u8 link;                /* IRQ line ID, chipset dependent, 0=not routed */
48
                u16 bitmap;             /* Available IRQs */
49
        } __attribute__((packed)) irq[4];
50
        u8 slot;                        /* Slot number, 0=onboard */
51
        u8 rfu;
52
} __attribute__((packed));
53
 
54
struct irq_routing_table {
55
        u32 signature;                  /* PIRQ_SIGNATURE should be here */
56
        u16 version;                    /* PIRQ_VERSION */
57
        u16 size;                       /* Table size in bytes */
58
        u8 rtr_bus, rtr_devfn;          /* Where the interrupt router lies */
59
        u16 exclusive_irqs;             /* IRQs devoted exclusively to PCI usage */
60
        u16 rtr_vendor, rtr_device;     /* Vendor and device ID of interrupt router */
61
        u32 miniport_data;              /* Crap */
62
        u8 rfu[11];
63
        u8 checksum;                    /* Modulo 256 checksum must give zero */
64
        struct irq_info slots[0];
65
} __attribute__((packed));
66
 
67
extern unsigned int pcibios_irq_mask;
68
 
69
extern int pcibios_scanned;
70
extern spinlock_t pci_config_lock;
71
 
72
int pirq_enable_irq(struct pci_dev *dev);
73
 
74
extern int (*pcibios_enable_irq)(struct pci_dev *dev);