Lines Matching refs:ks_pcie

136 static u32 ks_pcie_app_readl(struct keystone_pcie *ks_pcie, u32 offset)
138 return readl(ks_pcie->va_app_base + offset);
141 static void ks_pcie_app_writel(struct keystone_pcie *ks_pcie, u32 offset,
144 writel(val, ks_pcie->va_app_base + offset);
150 struct keystone_pcie *ks_pcie;
157 ks_pcie = to_keystone_pcie(pci);
162 ks_pcie_app_writel(ks_pcie, MSI_IRQ_STATUS(reg_offset),
164 ks_pcie_app_writel(ks_pcie, IRQ_EOI, reg_offset + MSI_IRQ_OFFSET);
170 struct keystone_pcie *ks_pcie;
175 ks_pcie = to_keystone_pcie(pci);
177 msi_target = ks_pcie->app.start + MSI_IRQ;
195 struct keystone_pcie *ks_pcie;
205 ks_pcie = to_keystone_pcie(pci);
210 ks_pcie_app_writel(ks_pcie, MSI_IRQ_ENABLE_CLR(reg_offset),
219 struct keystone_pcie *ks_pcie;
229 ks_pcie = to_keystone_pcie(pci);
234 ks_pcie_app_writel(ks_pcie, MSI_IRQ_ENABLE_SET(reg_offset),
255 static void ks_pcie_handle_legacy_irq(struct keystone_pcie *ks_pcie,
258 struct dw_pcie *pci = ks_pcie->pci;
263 pending = ks_pcie_app_readl(ks_pcie, IRQ_STATUS(offset));
266 virq = irq_linear_revmap(ks_pcie->legacy_irq_domain, offset);
272 ks_pcie_app_writel(ks_pcie, IRQ_EOI, offset);
283 static void ks_pcie_enable_error_irq(struct keystone_pcie *ks_pcie)
285 ks_pcie_app_writel(ks_pcie, ERR_IRQ_ENABLE_SET, ERR_IRQ_ALL);
288 static irqreturn_t ks_pcie_handle_error_irq(struct keystone_pcie *ks_pcie)
291 struct device *dev = ks_pcie->pci->dev;
293 reg = ks_pcie_app_readl(ks_pcie, ERR_IRQ_STATUS);
309 if (!ks_pcie->is_am6 && (reg & ERR_AXI))
312 if (reg & ERR_AER || (ks_pcie->is_am6 && (reg & AM6_ERR_AER)))
315 ks_pcie_app_writel(ks_pcie, ERR_IRQ_STATUS, reg);
362 static void ks_pcie_set_dbi_mode(struct keystone_pcie *ks_pcie)
366 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
368 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val);
371 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
381 static void ks_pcie_clear_dbi_mode(struct keystone_pcie *ks_pcie)
385 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
387 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val);
390 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
394 static void ks_pcie_setup_rc_app_regs(struct keystone_pcie *ks_pcie)
397 struct dw_pcie *pci = ks_pcie->pci;
409 ks_pcie_set_dbi_mode(ks_pcie);
412 ks_pcie_clear_dbi_mode(ks_pcie);
414 if (ks_pcie->is_am6)
418 ks_pcie_app_writel(ks_pcie, OB_SIZE, val);
422 ks_pcie_app_writel(ks_pcie, OB_OFFSET_INDEX(i),
424 ks_pcie_app_writel(ks_pcie, OB_OFFSET_HI(i),
429 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
431 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val);
439 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
446 ks_pcie_app_writel(ks_pcie, CFG_SETUP, reg);
466 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
472 ks_pcie_set_dbi_mode(ks_pcie);
478 ks_pcie_clear_dbi_mode(ks_pcie);
484 dw_pcie_writel_dbi(pci, PCI_BASE_ADDRESS_0, ks_pcie->app.start);
510 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
514 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
516 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val);
521 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
531 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
532 ks_pcie_app_writel(ks_pcie, CMD_STATUS, LTSSM_EN_VAL | val);
583 struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
584 u32 offset = irq - ks_pcie->msi_host_irq;
585 struct dw_pcie *pci = ks_pcie->pci;
600 reg = ks_pcie_app_readl(ks_pcie, MSI_IRQ_STATUS(offset));
630 struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
631 struct dw_pcie *pci = ks_pcie->pci;
633 u32 irq_offset = irq - ks_pcie->legacy_host_irqs[0];
644 ks_pcie_handle_legacy_irq(ks_pcie, irq_offset);
648 static int ks_pcie_config_msi_irq(struct keystone_pcie *ks_pcie)
650 struct device *dev = ks_pcie->pci->dev;
651 struct device_node *np = ks_pcie->np;
661 if (ks_pcie->is_am6)
681 if (!ks_pcie->msi_host_irq) {
687 ks_pcie->msi_host_irq = irq_data->hwirq;
691 ks_pcie);
702 static int ks_pcie_config_legacy_irq(struct keystone_pcie *ks_pcie)
704 struct device *dev = ks_pcie->pci->dev;
706 struct device_node *np = ks_pcie->np;
716 if (ks_pcie->is_am6)
735 ks_pcie->legacy_host_irqs[i] = irq;
739 ks_pcie);
750 ks_pcie->legacy_irq_domain = legacy_irq_domain;
753 ks_pcie_app_writel(ks_pcie, IRQ_ENABLE_SET(i), INTx_EN);
782 static int __init ks_pcie_init_id(struct keystone_pcie *ks_pcie)
787 struct dw_pcie *pci = ks_pcie->pci;
810 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
814 if (!ks_pcie->is_am6)
817 ret = ks_pcie_config_legacy_irq(ks_pcie);
821 ret = ks_pcie_config_msi_irq(ks_pcie);
828 ks_pcie_setup_rc_app_regs(ks_pcie);
832 ret = ks_pcie_init_id(ks_pcie);
863 struct keystone_pcie *ks_pcie = priv;
865 return ks_pcie_handle_error_irq(ks_pcie);
868 static int ks_pcie_add_pcie_port(struct keystone_pcie *ks_pcie,
871 struct dw_pcie *pci = ks_pcie->pci;
888 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
890 ks_pcie_set_dbi_mode(ks_pcie);
892 ks_pcie_clear_dbi_mode(ks_pcie);
913 static void ks_pcie_am654_raise_legacy_irq(struct keystone_pcie *ks_pcie)
915 struct dw_pcie *pci = ks_pcie->pci;
922 ks_pcie_app_writel(ks_pcie, PCIE_LEGACY_IRQ_ENABLE_SET(int_pin),
924 ks_pcie_app_writel(ks_pcie, PCIE_EP_IRQ_SET, INT_ENABLE);
926 ks_pcie_app_writel(ks_pcie, PCIE_EP_IRQ_CLR, INT_ENABLE);
927 ks_pcie_app_writel(ks_pcie, PCIE_LEGACY_IRQ_ENABLE_CLR(int_pin),
936 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
940 ks_pcie_am654_raise_legacy_irq(ks_pcie);
981 static int ks_pcie_add_pcie_ep(struct keystone_pcie *ks_pcie,
988 struct dw_pcie *pci = ks_pcie->pci;
1008 static void ks_pcie_disable_phy(struct keystone_pcie *ks_pcie)
1010 int num_lanes = ks_pcie->num_lanes;
1013 phy_power_off(ks_pcie->phy[num_lanes]);
1014 phy_exit(ks_pcie->phy[num_lanes]);
1018 static int ks_pcie_enable_phy(struct keystone_pcie *ks_pcie)
1022 int num_lanes = ks_pcie->num_lanes;
1025 ret = phy_reset(ks_pcie->phy[i]);
1029 ret = phy_init(ks_pcie->phy[i]);
1033 ret = phy_power_on(ks_pcie->phy[i]);
1035 phy_exit(ks_pcie->phy[i]);
1044 phy_power_off(ks_pcie->phy[i]);
1045 phy_exit(ks_pcie->phy[i]);
1155 struct keystone_pcie *ks_pcie;
1178 ks_pcie = devm_kzalloc(dev, sizeof(*ks_pcie), GFP_KERNEL);
1179 if (!ks_pcie)
1187 ks_pcie->va_app_base = devm_ioremap_resource(dev, res);
1188 if (IS_ERR(ks_pcie->va_app_base))
1189 return PTR_ERR(ks_pcie->va_app_base);
1191 ks_pcie->app = *res;
1199 ks_pcie->is_am6 = true;
1212 "ks-pcie-error-irq", ks_pcie);
1249 ks_pcie->np = np;
1250 ks_pcie->pci = pci;
1251 ks_pcie->link = link;
1252 ks_pcie->num_lanes = num_lanes;
1253 ks_pcie->phy = phy;
1266 phy_pm_runtime_get_sync(ks_pcie->phy[i]);
1268 ret = ks_pcie_enable_phy(ks_pcie);
1272 phy_pm_runtime_put_sync(ks_pcie->phy[i]);
1279 platform_set_drvdata(pdev, ks_pcie);
1315 ret = ks_pcie_add_pcie_port(ks_pcie, pdev);
1326 ret = ks_pcie_add_pcie_ep(ks_pcie, pdev);
1334 ks_pcie_enable_error_irq(ks_pcie);
1341 ks_pcie_disable_phy(ks_pcie);
1352 struct keystone_pcie *ks_pcie = platform_get_drvdata(pdev);
1353 struct device_link **link = ks_pcie->link;
1354 int num_lanes = ks_pcie->num_lanes;
1359 ks_pcie_disable_phy(ks_pcie);