PCI/IA64: SN: use normal resource instead of pci_window

Pci_window in pci_controller will not be used again,
use normal resource instead of pci_window in
sn_legacy_pci_window_fixup(), this patch is to prepare
to remove pci_window in IA64.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Cc: John Keller <jpk@sgi.com>
Cc: Jay Lan <jlan@engr.sgi.com>
Cc: Jack Steiner <steiner@sgi.com>
Cc: Mark Maule <maule@sgi.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: linux-ia64@vger.kernel.org
Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
Yijing Wang 2013-06-06 15:34:47 +08:00 committed by Tony Luck
parent c60fb074c0
commit 2ead66b547

View file

@ -118,34 +118,26 @@ static void __init sn_fixup_ionodes(void)
} }
/* /*
* sn_pci_legacy_window_fixup - Create PCI controller windows for * sn_pci_legacy_window_fixup - Setup PCI resources for
* legacy IO and MEM space. This needs to * legacy IO and MEM space. This needs to
* be done here, as the PROM does not have * be done here, as the PROM does not have
* ACPI support defining the root buses * ACPI support defining the root buses
* and their resources (_CRS), * and their resources (_CRS),
*/ */
static void static void
sn_legacy_pci_window_fixup(struct pci_controller *controller, sn_legacy_pci_window_fixup(struct resource *res,
u64 legacy_io, u64 legacy_mem) u64 legacy_io, u64 legacy_mem)
{ {
controller->window = kcalloc(2, sizeof(struct pci_window), res[0].name = "legacy_io";
GFP_KERNEL); res[0].flags = IORESOURCE_IO;
BUG_ON(controller->window == NULL); res[0].start = legacy_io;
controller->window[0].offset = legacy_io; res[0].end = res[0].start + 0xffff;
controller->window[0].resource.name = "legacy_io"; res[0].parent = &ioport_resource;
controller->window[0].resource.flags = IORESOURCE_IO; res[1].name = "legacy_mem";
controller->window[0].resource.start = legacy_io; res[1].flags = IORESOURCE_MEM;
controller->window[0].resource.end = res[1].start = legacy_mem;
controller->window[0].resource.start + 0xffff; res[1].end = res[1].start + (1024 * 1024) - 1;
controller->window[0].resource.parent = &ioport_resource; res[1].parent = &iomem_resource;
controller->window[1].offset = legacy_mem;
controller->window[1].resource.name = "legacy_mem";
controller->window[1].resource.flags = IORESOURCE_MEM;
controller->window[1].resource.start = legacy_mem;
controller->window[1].resource.end =
controller->window[1].resource.start + (1024 * 1024) - 1;
controller->window[1].resource.parent = &iomem_resource;
controller->windows = 2;
} }
/* /*
@ -244,8 +236,8 @@ sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
s64 status = 0; s64 status = 0;
struct pci_controller *controller; struct pci_controller *controller;
struct pcibus_bussoft *prom_bussoft_ptr; struct pcibus_bussoft *prom_bussoft_ptr;
struct resource *res;
LIST_HEAD(resources); LIST_HEAD(resources);
int i;
status = sal_get_pcibus_info((u64) segment, (u64) busnum, status = sal_get_pcibus_info((u64) segment, (u64) busnum,
(u64) ia64_tpa(&prom_bussoft_ptr)); (u64) ia64_tpa(&prom_bussoft_ptr));
@ -257,19 +249,23 @@ sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
BUG_ON(!controller); BUG_ON(!controller);
controller->segment = segment; controller->segment = segment;
res = kcalloc(2, sizeof(struct resource), GFP_KERNEL);
BUG_ON(!res);
/* /*
* Temporarily save the prom_bussoft_ptr for use by sn_bus_fixup(). * Temporarily save the prom_bussoft_ptr for use by sn_bus_fixup().
* (platform_data will be overwritten later in sn_common_bus_fixup()) * (platform_data will be overwritten later in sn_common_bus_fixup())
*/ */
controller->platform_data = prom_bussoft_ptr; controller->platform_data = prom_bussoft_ptr;
sn_legacy_pci_window_fixup(controller, sn_legacy_pci_window_fixup(res,
prom_bussoft_ptr->bs_legacy_io, prom_bussoft_ptr->bs_legacy_io,
prom_bussoft_ptr->bs_legacy_mem); prom_bussoft_ptr->bs_legacy_mem);
for (i = 0; i < controller->windows; i++) pci_add_resource_offset(&resources, &res[0],
pci_add_resource_offset(&resources, prom_bussoft_ptr->bs_legacy_io);
&controller->window[i].resource, pci_add_resource_offset(&resources, &res[1],
controller->window[i].offset); prom_bussoft_ptr->bs_legacy_mem);
bus = pci_scan_root_bus(NULL, busnum, &pci_root_ops, controller, bus = pci_scan_root_bus(NULL, busnum, &pci_root_ops, controller,
&resources); &resources);
if (bus == NULL) if (bus == NULL)
@ -280,7 +276,7 @@ sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
return; return;
error_return: error_return:
kfree(res);
kfree(controller); kfree(controller);
return; return;
} }