diff options
-rw-r--r-- | src/pci.c | 7 | ||||
-rw-r--r-- | src/pci.h | 34 | ||||
-rw-r--r-- | src/pcibios.c | 30 |
3 files changed, 43 insertions, 28 deletions
@@ -1,3 +1,10 @@ +// PCI config space access functions. +// +// Copyright (C) 2008 Kevin O'Connor <kevin@koconnor.net> +// Copyright (C) 2002 MandrakeSoft S.A. +// +// This file may be distributed under the terms of the GNU GPLv3 license. + #include "pci.h" // PCIDevice #include "ioport.h" // outl @@ -25,4 +25,38 @@ u8 pci_config_readb(PCIDevice d, u32 addr); int pci_find_device(u16 vendid, u16 devid, int index, PCIDevice *dev); int pci_find_class(u32 classid, int index, PCIDevice *dev); + +/**************************************************************** + * PIR table + ****************************************************************/ + +struct pir_header { + u32 signature; + u16 version; + u16 size; + u8 router_bus; + u8 router_devfunc; + u16 exclusive_irqs; + u32 compatible_devid; + u32 miniport_data; + u8 reserved[11]; + u8 checksum; +} PACKED; + +#define PIR_SIGNATURE 0x52495024 // $PIR + +struct link_info { + u8 link; + u16 bitmap; +} PACKED; + +struct pir_slot { + u8 bus; + u8 dev; + struct link_info links[4]; + u8 slot_nr; + u8 reserved; +} PACKED; + + #endif diff --git a/src/pcibios.c b/src/pcibios.c index 68a50ed..6a83b83 100644 --- a/src/pcibios.c +++ b/src/pcibios.c @@ -14,39 +14,13 @@ * PIR table ****************************************************************/ -struct pir { - u32 signature; - u16 version; - u16 size; - u8 router_bus; - u8 router_devfunc; - u16 exclusive_irqs; - u32 compatible_devid; - u32 miniport_data; - u8 reserved[11]; - u8 checksum; -} PACKED; - -struct link_info { - u8 link; - u16 bitmap; -} PACKED; - -struct pir_slot { - u8 bus; - u8 dev; - struct link_info links[4]; - u8 slot_nr; - u8 reserved; -} PACKED; - struct pir_table { - struct pir pir; + struct pir_header pir; struct pir_slot slots[6]; } PACKED PIR_TABLE VISIBLE16 __attribute__((aligned(16))) = { #if CONFIG_PIRTABLE .pir = { - .signature = 0x52495024, // "$PIR" + .signature = PIR_SIGNATURE, .version = 0x0100, .size = sizeof(struct pir_table), .router_devfunc = 0x08, |