Lines Matching full:pci
20 #include "../../pci.h"
44 .name = "PCI-MSI",
63 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_handle_msi_irq() local
68 status = dw_pcie_readl_dbi(pci, PCIE_MSI_INTR0_STATUS + in dw_handle_msi_irq()
105 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pci_setup_msi_msg() local
115 dev_dbg(pci->dev, "msi#%d address_hi %#x address_lo %#x\n", in dw_pci_setup_msi_msg()
128 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pci_bottom_mask() local
139 dw_pcie_writel_dbi(pci, PCIE_MSI_INTR0_MASK + res, pp->irq_mask[ctrl]); in dw_pci_bottom_mask()
147 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pci_bottom_unmask() local
158 dw_pcie_writel_dbi(pci, PCIE_MSI_INTR0_MASK + res, pp->irq_mask[ctrl]); in dw_pci_bottom_unmask()
166 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pci_bottom_ack() local
173 dw_pcie_writel_dbi(pci, PCIE_MSI_INTR0_STATUS + res, BIT(bit)); in dw_pci_bottom_ack()
235 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_allocate_domains() local
236 struct fwnode_handle *fwnode = of_node_to_fwnode(pci->dev->of_node); in dw_pcie_allocate_domains()
241 dev_err(pci->dev, "Failed to create IRQ domain\n"); in dw_pcie_allocate_domains()
251 dev_err(pci->dev, "Failed to create MSI domain\n"); in dw_pcie_allocate_domains()
275 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_msi_init() local
282 dw_pcie_writel_dbi(pci, PCIE_MSI_ADDR_LO, lower_32_bits(msi_target)); in dw_pcie_msi_init()
283 dw_pcie_writel_dbi(pci, PCIE_MSI_ADDR_HI, upper_32_bits(msi_target)); in dw_pcie_msi_init()
288 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_parse_split_msi_irq() local
289 struct device *dev = pci->dev; in dw_pcie_parse_split_msi_irq()
328 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_msi_host_init() local
329 struct device *dev = pci->dev; in dw_pcie_msi_host_init()
398 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_host_init() local
399 struct device *dev = pci->dev; in dw_pcie_host_init()
409 ret = dw_pcie_get_resources(pci); in dw_pcie_host_init()
478 dw_pcie_version_detect(pci); in dw_pcie_host_init()
480 dw_pcie_iatu_detect(pci); in dw_pcie_host_init()
482 ret = dw_pcie_edma_detect(pci); in dw_pcie_host_init()
490 if (!dw_pcie_link_up(pci)) { in dw_pcie_host_init()
491 ret = dw_pcie_start_link(pci); in dw_pcie_host_init()
497 dw_pcie_wait_for_link(pci); in dw_pcie_host_init()
508 dw_pcie_stop_link(pci); in dw_pcie_host_init()
511 dw_pcie_edma_remove(pci); in dw_pcie_host_init()
527 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_host_deinit() local
532 dw_pcie_stop_link(pci); in dw_pcie_host_deinit()
534 dw_pcie_edma_remove(pci); in dw_pcie_host_deinit()
548 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_other_conf_map_bus() local
555 * SError upon PCI configuration transactions issued when the link in dw_pcie_other_conf_map_bus()
560 if (!dw_pcie_link_up(pci)) in dw_pcie_other_conf_map_bus()
571 ret = dw_pcie_prog_outbound_atu(pci, 0, type, pp->cfg0_base, busdev, in dw_pcie_other_conf_map_bus()
583 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_rd_other_conf() local
591 ret = dw_pcie_prog_outbound_atu(pci, 0, PCIE_ATU_TYPE_IO, in dw_pcie_rd_other_conf()
605 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_wr_other_conf() local
613 ret = dw_pcie_prog_outbound_atu(pci, 0, PCIE_ATU_TYPE_IO, in dw_pcie_wr_other_conf()
632 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_own_conf_map_bus() local
637 return pci->dbi_base + where; in dw_pcie_own_conf_map_bus()
649 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_iatu_setup() local
654 if (!pci->num_ob_windows) { in dw_pcie_iatu_setup()
655 dev_err(pci->dev, "No outbound iATU found\n"); in dw_pcie_iatu_setup()
663 for (i = 0; i < pci->num_ob_windows; i++) in dw_pcie_iatu_setup()
664 dw_pcie_disable_atu(pci, PCIE_ATU_REGION_DIR_OB, i); in dw_pcie_iatu_setup()
666 for (i = 0; i < pci->num_ib_windows; i++) in dw_pcie_iatu_setup()
667 dw_pcie_disable_atu(pci, PCIE_ATU_REGION_DIR_IB, i); in dw_pcie_iatu_setup()
674 if (pci->num_ob_windows <= ++i) in dw_pcie_iatu_setup()
677 ret = dw_pcie_prog_outbound_atu(pci, i, PCIE_ATU_TYPE_MEM, in dw_pcie_iatu_setup()
682 dev_err(pci->dev, "Failed to set MEM range %pr\n", in dw_pcie_iatu_setup()
689 if (pci->num_ob_windows > ++i) { in dw_pcie_iatu_setup()
690 ret = dw_pcie_prog_outbound_atu(pci, i, PCIE_ATU_TYPE_IO, in dw_pcie_iatu_setup()
695 dev_err(pci->dev, "Failed to set IO range %pr\n", in dw_pcie_iatu_setup()
704 if (pci->num_ob_windows <= i) in dw_pcie_iatu_setup()
705 dev_warn(pci->dev, "Ranges exceed outbound iATU size (%d)\n", in dw_pcie_iatu_setup()
706 pci->num_ob_windows); in dw_pcie_iatu_setup()
713 if (pci->num_ib_windows <= i) in dw_pcie_iatu_setup()
716 ret = dw_pcie_prog_inbound_atu(pci, i++, PCIE_ATU_TYPE_MEM, in dw_pcie_iatu_setup()
721 dev_err(pci->dev, "Failed to set DMA range %pr\n", in dw_pcie_iatu_setup()
727 if (pci->num_ib_windows <= i) in dw_pcie_iatu_setup()
728 dev_warn(pci->dev, "Dma-ranges exceed inbound iATU size (%u)\n", in dw_pcie_iatu_setup()
729 pci->num_ib_windows); in dw_pcie_iatu_setup()
736 struct dw_pcie *pci = to_dw_pcie_from_pp(pp); in dw_pcie_setup_rc() local
744 dw_pcie_dbi_ro_wr_en(pci); in dw_pcie_setup_rc()
746 dw_pcie_setup(pci); in dw_pcie_setup_rc()
753 dw_pcie_writel_dbi(pci, PCIE_MSI_INTR0_MASK + in dw_pcie_setup_rc()
756 dw_pcie_writel_dbi(pci, PCIE_MSI_INTR0_ENABLE + in dw_pcie_setup_rc()
765 dw_pcie_writel_dbi(pci, PCI_BASE_ADDRESS_0, 0x00000004); in dw_pcie_setup_rc()
766 dw_pcie_writel_dbi(pci, PCI_BASE_ADDRESS_1, 0x00000000); in dw_pcie_setup_rc()
769 val = dw_pcie_readl_dbi(pci, PCI_INTERRUPT_LINE); in dw_pcie_setup_rc()
772 dw_pcie_writel_dbi(pci, PCI_INTERRUPT_LINE, val); in dw_pcie_setup_rc()
775 val = dw_pcie_readl_dbi(pci, PCI_PRIMARY_BUS); in dw_pcie_setup_rc()
778 dw_pcie_writel_dbi(pci, PCI_PRIMARY_BUS, val); in dw_pcie_setup_rc()
781 val = dw_pcie_readl_dbi(pci, PCI_COMMAND); in dw_pcie_setup_rc()
785 dw_pcie_writel_dbi(pci, PCI_COMMAND, val); in dw_pcie_setup_rc()
798 dw_pcie_writel_dbi(pci, PCI_BASE_ADDRESS_0, 0); in dw_pcie_setup_rc()
801 dw_pcie_writew_dbi(pci, PCI_CLASS_DEVICE, PCI_CLASS_BRIDGE_PCI); in dw_pcie_setup_rc()
803 val = dw_pcie_readl_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL); in dw_pcie_setup_rc()
805 dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, val); in dw_pcie_setup_rc()
807 dw_pcie_dbi_ro_wr_dis(pci); in dw_pcie_setup_rc()
813 int dw_pcie_suspend_noirq(struct dw_pcie *pci) in dw_pcie_suspend_noirq() argument
815 u8 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); in dw_pcie_suspend_noirq()
823 if (dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKCTL) & PCI_EXP_LNKCTL_ASPM_L1) in dw_pcie_suspend_noirq()
826 if (dw_pcie_get_ltssm(pci) <= DW_PCIE_LTSSM_DETECT_ACT) in dw_pcie_suspend_noirq()
829 if (!pci->pp.ops->pme_turn_off) in dw_pcie_suspend_noirq()
832 pci->pp.ops->pme_turn_off(&pci->pp); in dw_pcie_suspend_noirq()
836 PCIE_PME_TO_L2_TIMEOUT_US, false, pci); in dw_pcie_suspend_noirq()
838 dev_err(pci->dev, "Timeout waiting for L2 entry! LTSSM: 0x%x\n", val); in dw_pcie_suspend_noirq()
842 if (pci->pp.ops->host_deinit) in dw_pcie_suspend_noirq()
843 pci->pp.ops->host_deinit(&pci->pp); in dw_pcie_suspend_noirq()
845 pci->suspended = true; in dw_pcie_suspend_noirq()
851 int dw_pcie_resume_noirq(struct dw_pcie *pci) in dw_pcie_resume_noirq() argument
855 if (!pci->suspended) in dw_pcie_resume_noirq()
858 pci->suspended = false; in dw_pcie_resume_noirq()
860 if (pci->pp.ops->host_init) { in dw_pcie_resume_noirq()
861 ret = pci->pp.ops->host_init(&pci->pp); in dw_pcie_resume_noirq()
863 dev_err(pci->dev, "Host init failed: %d\n", ret); in dw_pcie_resume_noirq()
868 dw_pcie_setup_rc(&pci->pp); in dw_pcie_resume_noirq()
870 ret = dw_pcie_start_link(pci); in dw_pcie_resume_noirq()
874 ret = dw_pcie_wait_for_link(pci); in dw_pcie_resume_noirq()