summaryrefslogtreecommitdiff
path: root/arch/x86/pci/broadcom_bus.c
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2012-04-03 05:31:54 +0400
committerBjorn Helgaas <bhelgaas@google.com>2012-05-01 00:52:43 +0400
commitd28e5ac2a07e27638cf5ac061721b7969e17fe78 (patch)
tree4ae91ae8d95f3ef23d8fa9be5f1d02b8cdc53715 /arch/x86/pci/broadcom_bus.c
parent35cb05e5bdac209cfdfafbe50d89ee7069cb6237 (diff)
downloadlinux-d28e5ac2a07e27638cf5ac061721b7969e17fe78.tar.xz
x86/PCI: dynamically allocate pci_root_info for native host bridge drivers
This dynamically allocates struct pci_root_info instead of using a static array. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'arch/x86/pci/broadcom_bus.c')
-rw-r--r--arch/x86/pci/broadcom_bus.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/arch/x86/pci/broadcom_bus.c b/arch/x86/pci/broadcom_bus.c
index f3a7c569a403..614392ced7d6 100644
--- a/arch/x86/pci/broadcom_bus.c
+++ b/arch/x86/pci/broadcom_bus.c
@@ -22,19 +22,15 @@
static void __init cnb20le_res(u8 bus, u8 slot, u8 func)
{
struct pci_root_info *info;
+ struct pci_root_res *root_res;
struct resource res;
u16 word1, word2;
u8 fbus, lbus;
- int i;
-
- info = &pci_root_info[pci_root_num];
- pci_root_num++;
/* read the PCI bus numbers */
fbus = read_pci_config_byte(bus, slot, func, 0x44);
lbus = read_pci_config_byte(bus, slot, func, 0x45);
- info->bus_min = fbus;
- info->bus_max = lbus;
+ info = alloc_pci_root_info(fbus, lbus, 0, 0);
/*
* Add the legacy IDE ports on bus 0
@@ -86,8 +82,8 @@ static void __init cnb20le_res(u8 bus, u8 slot, u8 func)
res.flags = IORESOURCE_BUS;
printk(KERN_INFO "CNB20LE PCI Host Bridge (domain 0000 %pR)\n", &res);
- for (i = 0; i < info->res_num; i++)
- printk(KERN_INFO "host bridge window %pR\n", &info->res[i]);
+ list_for_each_entry(root_res, &info->resources, list)
+ printk(KERN_INFO "host bridge window %pR\n", &root_res->res);
}
static int __init broadcom_postcore_init(void)