[PATCH] powerpc: pci_64 fixes & cleanups
I discovered that in some cases (PowerMac for example) we wouldn't properly map the PCI IO space on recent kernels. In addition, the code for initializing PCI host bridges was scattered all over the place with some duplication between platforms. This patch fixes the problem and does a small cleanup by creating a pcibios_alloc_controller() in pci_64.c that is similar to the one in pci_32.c (just takes an additional device node argument) that takes care of all the grunt allocation and initialisation work. It should work for both boot time and dynamically allocated PHBs. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
f9e4ec57c6
commit
b5166cc252
@ -326,26 +326,12 @@ static int __init add_bridge(struct device_node *dev)
|
||||
dev->full_name);
|
||||
}
|
||||
|
||||
hose = alloc_bootmem(sizeof(struct pci_controller));
|
||||
hose = pcibios_alloc_controller(dev);
|
||||
if (hose == NULL)
|
||||
return -ENOMEM;
|
||||
pci_setup_pci_controller(hose);
|
||||
|
||||
hose->arch_data = dev;
|
||||
hose->first_busno = bus_range ? bus_range[0] : 0;
|
||||
hose->last_busno = bus_range ? bus_range[1] : 0xff;
|
||||
|
||||
of_prop = alloc_bootmem(sizeof(struct property) +
|
||||
sizeof(hose->global_number));
|
||||
if (of_prop) {
|
||||
memset(of_prop, 0, sizeof(struct property));
|
||||
of_prop->name = "linux,pci-domain";
|
||||
of_prop->length = sizeof(hose->global_number);
|
||||
of_prop->value = (unsigned char *)&of_prop[1];
|
||||
memcpy(of_prop->value, &hose->global_number, sizeof(hose->global_number));
|
||||
prom_add_property(dev, of_prop);
|
||||
}
|
||||
|
||||
disp_name = NULL;
|
||||
if (device_is_compatible(dev, "u3-agp")) {
|
||||
setup_u3_agp(hose);
|
||||
|
Reference in New Issue
Block a user