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;
262 pending = ks_pcie_app_readl(ks_pcie, IRQ_STATUS(offset));
266 generic_handle_domain_irq(ks_pcie->legacy_irq_domain, offset);
270 ks_pcie_app_writel(ks_pcie, IRQ_EOI, offset);
273 static void ks_pcie_enable_error_irq(struct keystone_pcie *ks_pcie)
275 ks_pcie_app_writel(ks_pcie, ERR_IRQ_ENABLE_SET, ERR_IRQ_ALL);
278 static irqreturn_t ks_pcie_handle_error_irq(struct keystone_pcie *ks_pcie)
281 struct device *dev = ks_pcie->pci->dev;
283 reg = ks_pcie_app_readl(ks_pcie, ERR_IRQ_STATUS);
299 if (!ks_pcie->is_am6 && (reg & ERR_AXI))
302 if (reg & ERR_AER || (ks_pcie->is_am6 && (reg & AM6_ERR_AER)))
305 ks_pcie_app_writel(ks_pcie, ERR_IRQ_STATUS, reg);
347 * @ks_pcie: A pointer to the keystone_pcie structure which holds the KeyStone
353 static void ks_pcie_set_dbi_mode(struct keystone_pcie *ks_pcie)
357 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
359 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val);
362 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
368 * @ks_pcie: A pointer to the keystone_pcie structure which holds the KeyStone
374 static void ks_pcie_clear_dbi_mode(struct keystone_pcie *ks_pcie)
378 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
380 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val);
383 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
387 static void ks_pcie_setup_rc_app_regs(struct keystone_pcie *ks_pcie)
390 u32 num_viewport = ks_pcie->num_viewport;
391 struct dw_pcie *pci = ks_pcie->pci;
402 ks_pcie_set_dbi_mode(ks_pcie);
405 ks_pcie_clear_dbi_mode(ks_pcie);
407 if (ks_pcie->is_am6)
411 ks_pcie_app_writel(ks_pcie, OB_SIZE, val);
415 ks_pcie_app_writel(ks_pcie, OB_OFFSET_INDEX(i),
417 ks_pcie_app_writel(ks_pcie, OB_OFFSET_HI(i),
422 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
424 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val);
432 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
439 ks_pcie_app_writel(ks_pcie, CFG_SETUP, reg);
460 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
466 ks_pcie_set_dbi_mode(ks_pcie);
472 ks_pcie_clear_dbi_mode(ks_pcie);
478 dw_pcie_writel_dbi(pci, PCI_BASE_ADDRESS_0, ks_pcie->app.start);
506 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
510 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
512 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val);
517 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
521 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS);
522 ks_pcie_app_writel(ks_pcie, CMD_STATUS, LTSSM_EN_VAL | val);
573 struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
574 u32 offset = irq - ks_pcie->msi_host_irq;
575 struct dw_pcie *pci = ks_pcie->pci;
590 reg = ks_pcie_app_readl(ks_pcie, MSI_IRQ_STATUS(offset));
617 struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
618 struct dw_pcie *pci = ks_pcie->pci;
620 u32 irq_offset = irq - ks_pcie->legacy_host_irqs[0];
631 ks_pcie_handle_legacy_irq(ks_pcie, irq_offset);
635 static int ks_pcie_config_msi_irq(struct keystone_pcie *ks_pcie)
637 struct device *dev = ks_pcie->pci->dev;
638 struct device_node *np = ks_pcie->np;
648 if (ks_pcie->is_am6)
668 if (!ks_pcie->msi_host_irq) {
674 ks_pcie->msi_host_irq = irq_data->hwirq;
678 ks_pcie);
689 static int ks_pcie_config_legacy_irq(struct keystone_pcie *ks_pcie)
691 struct device *dev = ks_pcie->pci->dev;
693 struct device_node *np = ks_pcie->np;
703 if (ks_pcie->is_am6)
722 ks_pcie->legacy_host_irqs[i] = irq;
726 ks_pcie);
737 ks_pcie->legacy_irq_domain = legacy_irq_domain;
740 ks_pcie_app_writel(ks_pcie, IRQ_ENABLE_SET(i), INTx_EN);
769 static int __init ks_pcie_init_id(struct keystone_pcie *ks_pcie)
774 struct dw_pcie *pci = ks_pcie->pci;
804 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
808 if (!ks_pcie->is_am6)
811 ret = ks_pcie_config_legacy_irq(ks_pcie);
815 ret = ks_pcie_config_msi_irq(ks_pcie);
820 ks_pcie_setup_rc_app_regs(ks_pcie);
824 ret = ks_pcie_init_id(ks_pcie);
851 struct keystone_pcie *ks_pcie = priv;
853 return ks_pcie_handle_error_irq(ks_pcie);
859 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
861 ks_pcie_set_dbi_mode(ks_pcie);
863 ks_pcie_clear_dbi_mode(ks_pcie);
884 static void ks_pcie_am654_raise_legacy_irq(struct keystone_pcie *ks_pcie)
886 struct dw_pcie *pci = ks_pcie->pci;
893 ks_pcie_app_writel(ks_pcie, PCIE_LEGACY_IRQ_ENABLE_SET(int_pin),
895 ks_pcie_app_writel(ks_pcie, PCIE_EP_IRQ_SET, INT_ENABLE);
897 ks_pcie_app_writel(ks_pcie, PCIE_EP_IRQ_CLR, INT_ENABLE);
898 ks_pcie_app_writel(ks_pcie, PCIE_LEGACY_IRQ_ENABLE_CLR(int_pin),
907 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci);
911 ks_pcie_am654_raise_legacy_irq(ks_pcie);
952 static void ks_pcie_disable_phy(struct keystone_pcie *ks_pcie)
954 int num_lanes = ks_pcie->num_lanes;
957 phy_power_off(ks_pcie->phy[num_lanes]);
958 phy_exit(ks_pcie->phy[num_lanes]);
962 static int ks_pcie_enable_phy(struct keystone_pcie *ks_pcie)
966 int num_lanes = ks_pcie->num_lanes;
969 ret = phy_reset(ks_pcie->phy[i]);
973 ret = phy_init(ks_pcie->phy[i]);
977 ret = phy_power_on(ks_pcie->phy[i]);
979 phy_exit(ks_pcie->phy[i]);
988 phy_power_off(ks_pcie->phy[i]);
989 phy_exit(ks_pcie->phy[i]);
1112 struct keystone_pcie *ks_pcie;
1135 ks_pcie = devm_kzalloc(dev, sizeof(*ks_pcie), GFP_KERNEL);
1136 if (!ks_pcie)
1144 ks_pcie->va_app_base = devm_ioremap_resource(dev, res);
1145 if (IS_ERR(ks_pcie->va_app_base))
1146 return PTR_ERR(ks_pcie->va_app_base);
1148 ks_pcie->app = *res;
1156 ks_pcie->is_am6 = true;
1169 "ks-pcie-error-irq", ks_pcie);
1206 ks_pcie->np = np;
1207 ks_pcie->pci = pci;
1208 ks_pcie->link = link;
1209 ks_pcie->num_lanes = num_lanes;
1210 ks_pcie->phy = phy;
1223 phy_pm_runtime_get_sync(ks_pcie->phy[i]);
1225 ret = ks_pcie_enable_phy(ks_pcie);
1229 phy_pm_runtime_put_sync(ks_pcie->phy[i]);
1236 platform_set_drvdata(pdev, ks_pcie);
1277 ks_pcie->num_viewport = num_viewport;
1298 ks_pcie_enable_error_irq(ks_pcie);
1305 ks_pcie_disable_phy(ks_pcie);
1316 struct keystone_pcie *ks_pcie = platform_get_drvdata(pdev);
1317 struct device_link **link = ks_pcie->link;
1318 int num_lanes = ks_pcie->num_lanes;
1323 ks_pcie_disable_phy(ks_pcie);