Lines Matching refs:hose

58 	struct pci_controller *hose;  in fixup_ppc4xx_pci_bridge()  local
64 hose = pci_bus_to_host(dev->bus); in fixup_ppc4xx_pci_bridge()
65 if (hose == NULL) in fixup_ppc4xx_pci_bridge()
68 if (!of_device_is_compatible(hose->dn, "ibm,plb-pciex") && in fixup_ppc4xx_pci_bridge()
69 !of_device_is_compatible(hose->dn, "ibm,plb-pcix") && in fixup_ppc4xx_pci_bridge()
70 !of_device_is_compatible(hose->dn, "ibm,plb-pci")) in fixup_ppc4xx_pci_bridge()
73 if (of_device_is_compatible(hose->dn, "ibm,plb440epx-pci") || in fixup_ppc4xx_pci_bridge()
74 of_device_is_compatible(hose->dn, "ibm,plb440grx-pci")) { in fixup_ppc4xx_pci_bridge()
75 hose->indirect_type |= PPC_INDIRECT_TYPE_BROKEN_MRM; in fixup_ppc4xx_pci_bridge()
91 static int __init ppc4xx_parse_dma_ranges(struct pci_controller *hose, in ppc4xx_parse_dma_ranges() argument
98 int pna = of_n_addr_cells(hose->dn); in ppc4xx_parse_dma_ranges()
108 ranges = of_get_property(hose->dn, "dma-ranges", &rlen); in ppc4xx_parse_dma_ranges()
116 u64 cpu_addr = of_translate_dma_address(hose->dn, ranges + 3); in ppc4xx_parse_dma_ranges()
132 hose->dn->full_name, in ppc4xx_parse_dma_ranges()
156 hose->dn->full_name); in ppc4xx_parse_dma_ranges()
166 hose->dn->full_name, size, (u64)total_memory); in ppc4xx_parse_dma_ranges()
174 hose->dn->full_name); in ppc4xx_parse_dma_ranges()
182 !(of_device_is_compatible(hose->dn, "ibm,plb-pciex-460sx") in ppc4xx_parse_dma_ranges()
183 || of_device_is_compatible(hose->dn, "ibm,plb-pciex-476fpe"))) { in ppc4xx_parse_dma_ranges()
185 hose->dn->full_name); in ppc4xx_parse_dma_ranges()
191 hose->dma_window_base_cur = res->start; in ppc4xx_parse_dma_ranges()
192 hose->dma_window_size = resource_size(res); in ppc4xx_parse_dma_ranges()
197 (unsigned long long)hose->dma_window_base_cur); in ppc4xx_parse_dma_ranges()
199 (unsigned long long)hose->dma_window_size); in ppc4xx_parse_dma_ranges()
207 static int __init ppc4xx_setup_one_pci_PMM(struct pci_controller *hose, in ppc4xx_setup_one_pci_PMM() argument
237 hose->dn->full_name); in ppc4xx_setup_one_pci_PMM()
255 static void __init ppc4xx_configure_pci_PMMs(struct pci_controller *hose, in ppc4xx_configure_pci_PMMs() argument
262 struct resource *res = &hose->mem_resources[i]; in ppc4xx_configure_pci_PMMs()
263 resource_size_t offset = hose->mem_offset[i]; in ppc4xx_configure_pci_PMMs()
270 hose->dn->full_name); in ppc4xx_configure_pci_PMMs()
275 if (ppc4xx_setup_one_pci_PMM(hose, reg, in ppc4xx_configure_pci_PMMs()
292 if (j <= 2 && !found_isa_hole && hose->isa_mem_size) in ppc4xx_configure_pci_PMMs()
293 if (ppc4xx_setup_one_pci_PMM(hose, reg, hose->isa_mem_phys, 0, in ppc4xx_configure_pci_PMMs()
294 hose->isa_mem_size, 0, j) == 0) in ppc4xx_configure_pci_PMMs()
296 hose->dn->full_name); in ppc4xx_configure_pci_PMMs()
299 static void __init ppc4xx_configure_pci_PTMs(struct pci_controller *hose, in ppc4xx_configure_pci_PTMs() argument
315 early_write_config_dword(hose, hose->first_busno, 0, in ppc4xx_configure_pci_PTMs()
317 early_write_config_dword(hose, hose->first_busno, 0, in ppc4xx_configure_pci_PTMs()
319 early_write_config_word(hose, hose->first_busno, 0, in ppc4xx_configure_pci_PTMs()
329 struct pci_controller *hose = NULL; in ppc4xx_probe_pci_bridge() local
369 hose = pcibios_alloc_controller(np); in ppc4xx_probe_pci_bridge()
370 if (!hose) in ppc4xx_probe_pci_bridge()
373 hose->first_busno = bus_range ? bus_range[0] : 0x0; in ppc4xx_probe_pci_bridge()
374 hose->last_busno = bus_range ? bus_range[1] : 0xff; in ppc4xx_probe_pci_bridge()
377 setup_indirect_pci(hose, rsrc_cfg.start, rsrc_cfg.start + 0x4, 0); in ppc4xx_probe_pci_bridge()
387 pci_process_bridge_OF_ranges(hose, np, primary); in ppc4xx_probe_pci_bridge()
390 if (ppc4xx_parse_dma_ranges(hose, reg, &dma_window) != 0) in ppc4xx_probe_pci_bridge()
394 ppc4xx_configure_pci_PMMs(hose, reg); in ppc4xx_probe_pci_bridge()
397 ppc4xx_configure_pci_PTMs(hose, reg, &dma_window); in ppc4xx_probe_pci_bridge()
404 if (hose) in ppc4xx_probe_pci_bridge()
405 pcibios_free_controller(hose); in ppc4xx_probe_pci_bridge()
414 static int __init ppc4xx_setup_one_pcix_POM(struct pci_controller *hose, in ppc4xx_setup_one_pcix_POM() argument
427 hose->dn->full_name); in ppc4xx_setup_one_pcix_POM()
456 static void __init ppc4xx_configure_pcix_POMs(struct pci_controller *hose, in ppc4xx_configure_pcix_POMs() argument
463 struct resource *res = &hose->mem_resources[i]; in ppc4xx_configure_pcix_POMs()
464 resource_size_t offset = hose->mem_offset[i]; in ppc4xx_configure_pcix_POMs()
471 hose->dn->full_name); in ppc4xx_configure_pcix_POMs()
476 if (ppc4xx_setup_one_pcix_POM(hose, reg, in ppc4xx_configure_pcix_POMs()
493 if (j <= 1 && !found_isa_hole && hose->isa_mem_size) in ppc4xx_configure_pcix_POMs()
494 if (ppc4xx_setup_one_pcix_POM(hose, reg, hose->isa_mem_phys, 0, in ppc4xx_configure_pcix_POMs()
495 hose->isa_mem_size, 0, j) == 0) in ppc4xx_configure_pcix_POMs()
497 hose->dn->full_name); in ppc4xx_configure_pcix_POMs()
500 static void __init ppc4xx_configure_pcix_PIMs(struct pci_controller *hose, in ppc4xx_configure_pcix_PIMs() argument
535 struct pci_controller *hose = NULL; in ppc4xx_probe_pcix_bridge() local
576 hose = pcibios_alloc_controller(np); in ppc4xx_probe_pcix_bridge()
577 if (!hose) in ppc4xx_probe_pcix_bridge()
580 hose->first_busno = bus_range ? bus_range[0] : 0x0; in ppc4xx_probe_pcix_bridge()
581 hose->last_busno = bus_range ? bus_range[1] : 0xff; in ppc4xx_probe_pcix_bridge()
584 setup_indirect_pci(hose, rsrc_cfg.start, rsrc_cfg.start + 0x4, in ppc4xx_probe_pcix_bridge()
600 pci_process_bridge_OF_ranges(hose, np, primary); in ppc4xx_probe_pcix_bridge()
603 if (ppc4xx_parse_dma_ranges(hose, reg, &dma_window) != 0) in ppc4xx_probe_pcix_bridge()
607 ppc4xx_configure_pcix_POMs(hose, reg); in ppc4xx_probe_pcix_bridge()
610 ppc4xx_configure_pcix_PIMs(hose, reg, &dma_window, big_pim, msi); in ppc4xx_probe_pcix_bridge()
617 if (hose) in ppc4xx_probe_pcix_bridge()
618 pcibios_free_controller(hose); in ppc4xx_probe_pcix_bridge()
643 struct pci_controller *hose; member
1565 if (port->endpoint && bus->number != port->hose->first_busno) in ppc4xx_pciex_validate_bdf()
1569 if (bus->number > port->hose->last_busno) { in ppc4xx_pciex_validate_bdf()
1579 if (bus->number == port->hose->first_busno && devfn != 0) in ppc4xx_pciex_validate_bdf()
1583 if (bus->number == (port->hose->first_busno + 1) && in ppc4xx_pciex_validate_bdf()
1588 if ((bus->number != port->hose->first_busno) && !port->link) in ppc4xx_pciex_validate_bdf()
1603 if (bus->number == port->hose->first_busno) in ppc4xx_pciex_get_config_base()
1604 return (void __iomem *)port->hose->cfg_addr; in ppc4xx_pciex_get_config_base()
1606 relbus = bus->number - (port->hose->first_busno + 1); in ppc4xx_pciex_get_config_base()
1607 return (void __iomem *)port->hose->cfg_data + in ppc4xx_pciex_get_config_base()
1614 struct pci_controller *hose = pci_bus_to_host(bus); in ppc4xx_pciex_read_config() local
1616 &ppc4xx_pciex_ports[hose->indirect_type]; in ppc4xx_pciex_read_config()
1620 BUG_ON(hose != port->hose); in ppc4xx_pciex_read_config()
1652 bus->number, hose->first_busno, hose->last_busno, in ppc4xx_pciex_read_config()
1671 struct pci_controller *hose = pci_bus_to_host(bus); in ppc4xx_pciex_write_config() local
1673 &ppc4xx_pciex_ports[hose->indirect_type]; in ppc4xx_pciex_write_config()
1692 bus->number, hose->first_busno, hose->last_busno, in ppc4xx_pciex_write_config()
1719 struct pci_controller *hose, in ppc4xx_setup_one_pciex_POM() argument
1734 hose->dn->full_name); in ppc4xx_setup_one_pciex_POM()
1796 struct pci_controller *hose, in ppc4xx_configure_pciex_POMs() argument
1803 struct resource *res = &hose->mem_resources[i]; in ppc4xx_configure_pciex_POMs()
1804 resource_size_t offset = hose->mem_offset[i]; in ppc4xx_configure_pciex_POMs()
1816 if (ppc4xx_setup_one_pciex_POM(port, hose, mbase, in ppc4xx_configure_pciex_POMs()
1833 if (j <= 1 && !found_isa_hole && hose->isa_mem_size) in ppc4xx_configure_pciex_POMs()
1834 if (ppc4xx_setup_one_pciex_POM(port, hose, mbase, in ppc4xx_configure_pciex_POMs()
1835 hose->isa_mem_phys, 0, in ppc4xx_configure_pciex_POMs()
1836 hose->isa_mem_size, 0, j) == 0) in ppc4xx_configure_pciex_POMs()
1838 hose->dn->full_name); in ppc4xx_configure_pciex_POMs()
1843 if (hose->io_resource.flags & IORESOURCE_IO) in ppc4xx_configure_pciex_POMs()
1844 ppc4xx_setup_one_pciex_POM(port, hose, mbase, in ppc4xx_configure_pciex_POMs()
1845 hose->io_base_phys, 0, in ppc4xx_configure_pciex_POMs()
1850 struct pci_controller *hose, in ppc4xx_configure_pciex_PIMs() argument
1926 struct pci_controller *hose = NULL; in ppc4xx_pciex_port_setup_hose() local
1941 hose = pcibios_alloc_controller(port->node); in ppc4xx_pciex_port_setup_hose()
1942 if (!hose) in ppc4xx_pciex_port_setup_hose()
1948 hose->indirect_type = port->index; in ppc4xx_pciex_port_setup_hose()
1951 hose->first_busno = bus_range ? bus_range[0] : 0x0; in ppc4xx_pciex_port_setup_hose()
1952 hose->last_busno = bus_range ? bus_range[1] : 0xff; in ppc4xx_pciex_port_setup_hose()
1959 busses = hose->last_busno - hose->first_busno; /* This is off by 1 */ in ppc4xx_pciex_port_setup_hose()
1962 hose->last_busno = hose->first_busno + busses; in ppc4xx_pciex_port_setup_hose()
1970 (hose->first_busno + 1) * 0x100000, in ppc4xx_pciex_port_setup_hose()
1977 hose->cfg_data = cfg_data; in ppc4xx_pciex_port_setup_hose()
1989 hose->cfg_addr = mbase; in ppc4xx_pciex_port_setup_hose()
1992 hose->first_busno, hose->last_busno); in ppc4xx_pciex_port_setup_hose()
1994 hose->cfg_addr, hose->cfg_data); in ppc4xx_pciex_port_setup_hose()
1997 hose->ops = &ppc4xx_pciex_pci_ops; in ppc4xx_pciex_port_setup_hose()
1998 port->hose = hose; in ppc4xx_pciex_port_setup_hose()
1999 mbase = (void __iomem *)hose->cfg_addr; in ppc4xx_pciex_port_setup_hose()
2005 out_8(mbase + PCI_PRIMARY_BUS, hose->first_busno); in ppc4xx_pciex_port_setup_hose()
2006 out_8(mbase + PCI_SECONDARY_BUS, hose->first_busno + 1); in ppc4xx_pciex_port_setup_hose()
2007 out_8(mbase + PCI_SUBORDINATE_BUS, hose->last_busno); in ppc4xx_pciex_port_setup_hose()
2016 pci_process_bridge_OF_ranges(hose, port->node, primary); in ppc4xx_pciex_port_setup_hose()
2019 if (ppc4xx_parse_dma_ranges(hose, mbase, &dma_window) != 0) in ppc4xx_pciex_port_setup_hose()
2023 ppc4xx_configure_pciex_POMs(port, hose, mbase); in ppc4xx_pciex_port_setup_hose()
2026 ppc4xx_configure_pciex_PIMs(port, hose, mbase, &dma_window); in ppc4xx_pciex_port_setup_hose()
2078 if (hose) in ppc4xx_pciex_port_setup_hose()
2079 pcibios_free_controller(hose); in ppc4xx_pciex_port_setup_hose()