void __init pplus_setup_hose(void) { struct pci_controller* hose; hose = pcibios_alloc_controller(); if (!hose) return; hose->first_busno = 0; hose->last_busno = 0xff; hose->pci_mem_offset = PREP_ISA_MEM_BASE; hose->io_base_virt = (void *)PREP_ISA_IO_BASE; pplus_init_resource(&hose->io_resource, 0x00000000, 0x0fffffff, IORESOURCE_IO); pplus_init_resource(&hose->mem_resources[0], 0xc0000000, 0xfdffffff, IORESOURCE_MEM); hose->io_space.start = 0x00000000; hose->io_space.end = 0x0fffffff; hose->mem_space.start = 0x00000000; hose->mem_space.end = 0x3cfbffff; /* MPIC at 0x3cfc0000-0x3dffffff */ setup_indirect_pci(hose, 0x80000cf8, 0x80000cfc); pplus_set_VIA_IDE_legacy(); hose->last_busno = pciauto_bus_scan(hose, hose->first_busno); ppc_md.pcibios_fixup = pplus_pcibios_fixup; ppc_md.pci_swizzle = common_swizzle; pplus_set_board_type(); }
void __init pplus_find_bridges(void) { struct pci_controller *hose; hose = pcibios_alloc_controller(); if (!hose) return; hose->first_busno = 0; hose->last_busno = 0xff; hose->pci_mem_offset = PREP_ISA_MEM_BASE; hose->io_base_virt = (void *)PREP_ISA_IO_BASE; pci_init_resource(&hose->io_resource, PPLUS_PCI_IO_START, PPLUS_PCI_IO_END, IORESOURCE_IO, "PCI host bridge"); pci_init_resource(&hose->mem_resources[0], PPLUS_PROC_PCI_MEM_START, PPLUS_PROC_PCI_MEM_END, IORESOURCE_MEM, "PCI host bridge"); hose->io_space.start = PPLUS_PCI_IO_START; hose->io_space.end = PPLUS_PCI_IO_END; hose->mem_space.start = PPLUS_PCI_MEM_START; hose->mem_space.end = PPLUS_PCI_MEM_END - HAWK_MPIC_SIZE; if (hawk_init(hose, PPLUS_HAWK_PPC_REG_BASE, PPLUS_PROC_PCI_MEM_START, PPLUS_PROC_PCI_MEM_END - HAWK_MPIC_SIZE, PPLUS_PROC_PCI_IO_START, PPLUS_PROC_PCI_IO_END, PPLUS_PROC_PCI_MEM_END - HAWK_MPIC_SIZE + 1) != 0) { printk(KERN_CRIT "Could not initialize host bridge\n"); } pplus_set_VIA_IDE_legacy(); hose->last_busno = pciauto_bus_scan(hose, hose->first_busno); ppc_md.pcibios_fixup = pplus_pcibios_fixup; ppc_md.pci_swizzle = common_swizzle; }