Lines Matching refs:hose
72 int fsl_setup_hose(struct pci_controller *hose, unsigned long addr) in fsl_setup_hose() argument
77 memset(hose, 0, sizeof(struct pci_controller)); in fsl_setup_hose()
79 pci_setup_indirect(hose, (u32)&pci->cfg_addr, (u32)&pci->cfg_data); in fsl_setup_hose()
81 return fsl_is_pci_agent(hose); in fsl_setup_hose()
84 static int fsl_pci_setup_inbound_windows(struct pci_controller *hose, in fsl_pci_setup_inbound_windows() argument
88 struct pci_region *r = hose->regions + hose->region_count; in fsl_pci_setup_inbound_windows()
195 hose->region_count = r - hose->regions; in fsl_pci_setup_inbound_windows()
293 void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info) in fsl_pci_init() argument
313 struct pci_region *reg = hose->regions + hose->region_count; in fsl_pci_init()
314 pci_dev_t dev = PCI_BDF(hose->first_busno, 0, 0); in fsl_pci_init()
323 pci_setup_indirect(hose, cfg_addr, cfg_data); in fsl_pci_init()
333 for (r = 0; r < hose->region_count; r++) { in fsl_pci_init()
334 unsigned long flags = hose->regions[r].flags; in fsl_pci_init()
335 u32 sz = (__ilog2_u64((u64)hose->regions[r].size) - 1); in fsl_pci_init()
339 u64 start = hose->regions[r].bus_start; in fsl_pci_init()
340 u64 end = start + hose->regions[r].size; in fsl_pci_init()
342 out_be32(&po->powbar, hose->regions[r].phys_start >> 12); in fsl_pci_init()
349 if (hose->regions[r].flags & PCI_REGION_IO) { in fsl_pci_init()
364 pci_hose_write_config_dword(hose, dev, PCI_BASE_ADDRESS_0, 0xffffffff); in fsl_pci_init()
365 pci_hose_read_config_dword (hose, dev, PCI_BASE_ADDRESS_0, &pcicsrbar_sz); in fsl_pci_init()
373 pci_hose_write_config_dword(hose, dev, PCI_BASE_ADDRESS_0, pcicsrbar); in fsl_pci_init()
381 hose->region_count++; in fsl_pci_init()
384 pcie_cap_pos = pci_hose_find_capability(hose, dev, PCI_CAP_ID_EXP); in fsl_pci_init()
389 pci_hose_read_config_byte(hose, dev, pcie_cap_pos, &pcie_cap); in fsl_pci_init()
403 inbound = fsl_pci_setup_inbound_windows(hose, in fsl_pci_init()
408 inbound = fsl_pci_setup_inbound_windows(hose, out_lo, pcie_cap, pi); in fsl_pci_init()
411 for (r = 0; r < hose->region_count; r++) in fsl_pci_init()
413 (u64)hose->regions[r].phys_start, in fsl_pci_init()
414 (u64)hose->regions[r].bus_start, in fsl_pci_init()
415 (u64)hose->regions[r].size, in fsl_pci_init()
416 hose->regions[r].flags); in fsl_pci_init()
418 pci_register_hose(hose); in fsl_pci_init()
419 pciauto_config_init(hose); /* grab pci_{mem,prefetch,io} */ in fsl_pci_init()
420 hose->current_busno = hose->first_busno; in fsl_pci_init()
428 pci_hose_read_config_dword(hose, dev, pci_dcr, &temp32); in fsl_pci_init()
430 pci_hose_write_config_dword(hose, dev, pci_dcr, temp32); in fsl_pci_init()
435 pci_hose_read_config_dword(hose, dev, pci_lcr, &temp32); in fsl_pci_init()
437 pci_hose_write_config_dword(hose, dev, pci_lcr, temp32); in fsl_pci_init()
457 pci_hose_read_config_word(hose, dev, PCI_LTSSM, in fsl_pci_init()
465 pci_hose_read_config_word(hose, dev, PCI_LTSSM, <ssm); in fsl_pci_init()
482 pci_hose_read_config_word(hose, dev, PCI_LTSSM, in fsl_pci_init()
493 pci_hose_write_config_dword(hose, dev, in fsl_pci_init()
514 pci_hose_read_config_word(hose, dev, PCI_LTSSM, <ssm); in fsl_pci_init()
526 if (fsl_is_pci_agent(hose)) in fsl_pci_init()
530 hose->last_busno = hose->first_busno; in fsl_pci_init()
538 pci_hose_read_config_word(hose, dev, pci_lsr, &temp16); in fsl_pci_init()
542 hose->current_busno++; /* Start scan with secondary */ in fsl_pci_init()
543 pciauto_prescan_setup_bridge(hose, dev, hose->current_busno); in fsl_pci_init()
557 pciauto_setup_device(hose, dev, 0, hose->pci_mem, in fsl_pci_init()
558 hose->pci_prefetch, hose->pci_io); in fsl_pci_init()
561 pci_hose_read_config_word(hose, dev, PCI_COMMAND, &temp16); in fsl_pci_init()
562 pci_hose_write_config_word(hose, dev, PCI_COMMAND, in fsl_pci_init()
567 if (!fsl_is_pci_agent(hose)) { in fsl_pci_init()
569 hose->current_busno); in fsl_pci_init()
570 hose->last_busno = pci_hose_scan_bus(hose, hose->current_busno); in fsl_pci_init()
573 hose->current_busno, temp8); in fsl_pci_init()
574 hose->last_busno = hose->current_busno; in fsl_pci_init()
581 pciauto_postscan_setup_bridge(hose, dev, hose->last_busno); in fsl_pci_init()
584 hose->last_busno = hose->current_busno; in fsl_pci_init()
592 pci_hose_read_config_word(hose, dev, pci_dsr, &temp16); in fsl_pci_init()
594 pci_hose_write_config_word(hose, dev, pci_dsr, 0xffff); in fsl_pci_init()
597 pci_hose_read_config_word (hose, dev, PCI_SEC_STATUS, &temp16); in fsl_pci_init()
599 pci_hose_write_config_word(hose, dev, PCI_SEC_STATUS, 0xffff); in fsl_pci_init()
603 int fsl_is_pci_agent(struct pci_controller *hose) in fsl_is_pci_agent() argument
607 pci_dev_t dev = PCI_BDF(hose->first_busno, 0, 0); in fsl_is_pci_agent()
609 pcie_cap_pos = pci_hose_find_capability(hose, dev, PCI_CAP_ID_EXP); in fsl_is_pci_agent()
610 pci_hose_read_config_byte(hose, dev, pcie_cap_pos, &pcie_cap); in fsl_is_pci_agent()
614 pci_hose_read_config_byte(hose, dev, PCI_HEADER_TYPE, in fsl_is_pci_agent()
620 pci_hose_read_config_byte(hose, dev, PCI_CLASS_PROG, &prog_if); in fsl_is_pci_agent()
630 struct pci_controller *hose, int busno) in fsl_pci_init_port() argument
649 r = hose->regions + hose->region_count; in fsl_pci_init_port()
665 hose->region_count = r - hose->regions; in fsl_pci_init_port()
666 hose->first_busno = busno; in fsl_pci_init_port()
668 fsl_pci_init(hose, pci_info); in fsl_pci_init_port()
670 if (fsl_is_pci_agent(hose)) { in fsl_pci_init_port()
671 fsl_pci_config_unlock(hose); in fsl_pci_init_port()
672 hose->last_busno = hose->first_busno; in fsl_pci_init_port()
685 pcie_cap_pos = pci_hose_find_capability(hose, dev, PCI_CAP_ID_EXP); in fsl_pci_init_port()
686 pci_hose_read_config_byte(hose, dev, pcie_cap_pos, &pcie_cap); in fsl_pci_init_port()
689 hose->first_busno, hose->last_busno); in fsl_pci_init_port()
690 return(hose->last_busno + 1); in fsl_pci_init_port()
694 void fsl_pci_config_unlock(struct pci_controller *hose) in fsl_pci_config_unlock() argument
696 pci_dev_t dev = PCI_BDF(hose->first_busno,0,0); in fsl_pci_config_unlock()
701 if (!fsl_is_pci_agent(hose)) in fsl_pci_config_unlock()
704 pcie_cap_pos = pci_hose_find_capability(hose, dev, PCI_CAP_ID_EXP); in fsl_pci_config_unlock()
705 pci_hose_read_config_byte(hose, dev, pcie_cap_pos, &pcie_cap); in fsl_pci_config_unlock()
707 ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *)hose->cfg_addr; in fsl_pci_config_unlock()
713 pci_hose_write_config_byte(hose, dev, in fsl_pci_config_unlock()
717 pci_hose_read_config_word(hose, dev, FSL_PCI_PBFR, &pbfr); in fsl_pci_config_unlock()
719 pci_hose_write_config_word(hose, dev, FSL_PCI_PBFR, pbfr); in fsl_pci_config_unlock()
726 struct pci_controller *hose, in fsl_configure_pcie() argument
734 is_endpoint = fsl_setup_hose(hose, info->regs); in fsl_configure_pcie()
741 return fsl_pci_init_port(info, hose, busno); in fsl_configure_pcie()
814 struct pci_controller *hose; in fsl_pcie_init_ctrl() local
817 hose = calloc(1, sizeof(struct pci_controller)); in fsl_pcie_init_ctrl()
818 if (!hose) in fsl_pcie_init_ctrl()
822 busno = fsl_configure_pcie(pci_info, hose, in fsl_pcie_init_ctrl()
898 struct pci_controller *hose; in ft_fsl_pci_setup() local
900 hose = find_hose_by_cfg_addr((void *)(ctrl_addr)); in ft_fsl_pci_setup()
912 if ((hose == NULL) || (hose->cfg_addr == NULL)) { in ft_fsl_pci_setup()
916 bus_range[1] = hose->last_busno - hose->first_busno; in ft_fsl_pci_setup()
918 fdt_pci_dma_ranges(blob, off, hose); in ft_fsl_pci_setup()