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