Lines Matching refs:ks_pcie
142 static u32 ks_pcie_app_readl(struct keystone_pcie *ks_pcie, u32 offset) in ks_pcie_app_readl() argument
144 return readl(ks_pcie->va_app_base + offset); in ks_pcie_app_readl()
147 static void ks_pcie_app_writel(struct keystone_pcie *ks_pcie, u32 offset, in ks_pcie_app_writel() argument
150 writel(val, ks_pcie->va_app_base + offset); in ks_pcie_app_writel()
156 struct keystone_pcie *ks_pcie; in ks_pcie_msi_irq_ack() local
163 ks_pcie = to_keystone_pcie(pci); in ks_pcie_msi_irq_ack()
168 ks_pcie_app_writel(ks_pcie, MSI_IRQ_STATUS(reg_offset), in ks_pcie_msi_irq_ack()
170 ks_pcie_app_writel(ks_pcie, IRQ_EOI, reg_offset + MSI_IRQ_OFFSET); in ks_pcie_msi_irq_ack()
176 struct keystone_pcie *ks_pcie; in ks_pcie_compose_msi_msg() local
181 ks_pcie = to_keystone_pcie(pci); in ks_pcie_compose_msi_msg()
183 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()
256 static void ks_pcie_set_dbi_mode(struct keystone_pcie *ks_pcie) in ks_pcie_set_dbi_mode() argument
260 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_set_dbi_mode()
262 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val); in ks_pcie_set_dbi_mode()
265 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_set_dbi_mode()
277 static void ks_pcie_clear_dbi_mode(struct keystone_pcie *ks_pcie) in ks_pcie_clear_dbi_mode() argument
281 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_clear_dbi_mode()
283 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val); in ks_pcie_clear_dbi_mode()
286 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_clear_dbi_mode()
293 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_msi_host_init() local
296 ks_pcie_set_dbi_mode(ks_pcie); in ks_pcie_msi_host_init()
302 ks_pcie_clear_dbi_mode(ks_pcie); in ks_pcie_msi_host_init()
308 dw_pcie_writel_dbi(pci, PCI_BASE_ADDRESS_0, ks_pcie->app.start); in ks_pcie_msi_host_init()
314 static void ks_pcie_handle_intx_irq(struct keystone_pcie *ks_pcie, in ks_pcie_handle_intx_irq() argument
317 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_handle_intx_irq()
321 pending = ks_pcie_app_readl(ks_pcie, IRQ_STATUS(offset)); in ks_pcie_handle_intx_irq()
325 generic_handle_domain_irq(ks_pcie->intx_irq_domain, offset); in ks_pcie_handle_intx_irq()
329 ks_pcie_app_writel(ks_pcie, IRQ_EOI, offset); in ks_pcie_handle_intx_irq()
332 static void ks_pcie_enable_error_irq(struct keystone_pcie *ks_pcie) in ks_pcie_enable_error_irq() argument
334 ks_pcie_app_writel(ks_pcie, ERR_IRQ_ENABLE_SET, ERR_IRQ_ALL); in ks_pcie_enable_error_irq()
337 static irqreturn_t ks_pcie_handle_error_irq(struct keystone_pcie *ks_pcie) in ks_pcie_handle_error_irq() argument
340 struct device *dev = ks_pcie->pci->dev; in ks_pcie_handle_error_irq()
342 reg = ks_pcie_app_readl(ks_pcie, ERR_IRQ_STATUS); in ks_pcie_handle_error_irq()
358 if (!ks_pcie->is_am6 && (reg & ERR_AXI)) in ks_pcie_handle_error_irq()
361 if (reg & ERR_AER || (ks_pcie->is_am6 && (reg & AM6_ERR_AER))) in ks_pcie_handle_error_irq()
364 ks_pcie_app_writel(ks_pcie, ERR_IRQ_STATUS, reg); in ks_pcie_handle_error_irq()
403 static int ks_pcie_setup_rc_app_regs(struct keystone_pcie *ks_pcie) in ks_pcie_setup_rc_app_regs() argument
406 u32 num_viewport = ks_pcie->num_viewport; in ks_pcie_setup_rc_app_regs()
407 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_setup_rc_app_regs()
423 ks_pcie_set_dbi_mode(ks_pcie); in ks_pcie_setup_rc_app_regs()
426 ks_pcie_clear_dbi_mode(ks_pcie); in ks_pcie_setup_rc_app_regs()
428 if (ks_pcie->is_am6) in ks_pcie_setup_rc_app_regs()
432 ks_pcie_app_writel(ks_pcie, OB_SIZE, val); in ks_pcie_setup_rc_app_regs()
436 ks_pcie_app_writel(ks_pcie, OB_OFFSET_INDEX(i), in ks_pcie_setup_rc_app_regs()
438 ks_pcie_app_writel(ks_pcie, OB_OFFSET_HI(i), in ks_pcie_setup_rc_app_regs()
443 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_setup_rc_app_regs()
445 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val); in ks_pcie_setup_rc_app_regs()
455 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_other_map_bus() local
462 ks_pcie_app_writel(ks_pcie, CFG_SETUP, reg); in ks_pcie_other_map_bus()
495 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_stop_link() local
499 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_stop_link()
501 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val); in ks_pcie_stop_link()
506 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_start_link() local
510 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_start_link()
511 ks_pcie_app_writel(ks_pcie, CMD_STATUS, LTSSM_EN_VAL | val); in ks_pcie_start_link()
519 struct keystone_pcie *ks_pcie; in ks_pcie_quirk() local
576 ks_pcie = dev_get_drvdata(bridge_dev->parent); in ks_pcie_quirk()
577 if (!ks_pcie) in ks_pcie_quirk()
580 val = ks_pcie_app_readl(ks_pcie, PID); in ks_pcie_quirk()
597 struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc); in ks_pcie_msi_irq_handler() local
598 u32 offset = irq - ks_pcie->msi_host_irq; in ks_pcie_msi_irq_handler()
599 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_msi_irq_handler()
614 reg = ks_pcie_app_readl(ks_pcie, MSI_IRQ_STATUS(offset)); in ks_pcie_msi_irq_handler()
641 struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc); in ks_pcie_intx_irq_handler() local
642 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_intx_irq_handler()
644 u32 irq_offset = irq - ks_pcie->intx_host_irqs[0]; in ks_pcie_intx_irq_handler()
655 ks_pcie_handle_intx_irq(ks_pcie, irq_offset); in ks_pcie_intx_irq_handler()
659 static int ks_pcie_config_msi_irq(struct keystone_pcie *ks_pcie) in ks_pcie_config_msi_irq() argument
661 struct device *dev = ks_pcie->pci->dev; in ks_pcie_config_msi_irq()
662 struct device_node *np = ks_pcie->np; in ks_pcie_config_msi_irq()
672 if (ks_pcie->is_am6) in ks_pcie_config_msi_irq()
692 if (!ks_pcie->msi_host_irq) { in ks_pcie_config_msi_irq()
698 ks_pcie->msi_host_irq = irq_data->hwirq; in ks_pcie_config_msi_irq()
702 ks_pcie); in ks_pcie_config_msi_irq()
713 static int ks_pcie_config_intx_irq(struct keystone_pcie *ks_pcie) in ks_pcie_config_intx_irq() argument
715 struct device *dev = ks_pcie->pci->dev; in ks_pcie_config_intx_irq()
717 struct device_node *np = ks_pcie->np; in ks_pcie_config_intx_irq()
727 if (ks_pcie->is_am6) in ks_pcie_config_intx_irq()
746 ks_pcie->intx_host_irqs[i] = irq; in ks_pcie_config_intx_irq()
750 ks_pcie); in ks_pcie_config_intx_irq()
760 ks_pcie->intx_irq_domain = intx_irq_domain; in ks_pcie_config_intx_irq()
763 ks_pcie_app_writel(ks_pcie, IRQ_ENABLE_SET(i), INTx_EN); in ks_pcie_config_intx_irq()
792 static int __init ks_pcie_init_id(struct keystone_pcie *ks_pcie) in ks_pcie_init_id() argument
797 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_init_id()
827 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_host_init() local
831 if (!ks_pcie->is_am6) in ks_pcie_host_init()
834 ret = ks_pcie_config_intx_irq(ks_pcie); in ks_pcie_host_init()
838 ret = ks_pcie_config_msi_irq(ks_pcie); in ks_pcie_host_init()
843 ret = ks_pcie_setup_rc_app_regs(ks_pcie); in ks_pcie_host_init()
850 ret = ks_pcie_init_id(ks_pcie); in ks_pcie_host_init()
877 struct keystone_pcie *ks_pcie = priv; in ks_pcie_err_irq_handler() local
879 return ks_pcie_handle_error_irq(ks_pcie); in ks_pcie_err_irq_handler()
885 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_am654_write_dbi2() local
887 ks_pcie_set_dbi_mode(ks_pcie); in ks_pcie_am654_write_dbi2()
889 ks_pcie_clear_dbi_mode(ks_pcie); in ks_pcie_am654_write_dbi2()
910 static void ks_pcie_am654_raise_intx_irq(struct keystone_pcie *ks_pcie) in ks_pcie_am654_raise_intx_irq() argument
912 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_am654_raise_intx_irq()
919 ks_pcie_app_writel(ks_pcie, PCIE_LEGACY_IRQ_ENABLE_SET(int_pin), in ks_pcie_am654_raise_intx_irq()
921 ks_pcie_app_writel(ks_pcie, PCIE_EP_IRQ_SET, INT_ENABLE); in ks_pcie_am654_raise_intx_irq()
923 ks_pcie_app_writel(ks_pcie, PCIE_EP_IRQ_CLR, INT_ENABLE); in ks_pcie_am654_raise_intx_irq()
924 ks_pcie_app_writel(ks_pcie, PCIE_LEGACY_IRQ_ENABLE_CLR(int_pin), in ks_pcie_am654_raise_intx_irq()
932 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_am654_raise_irq() local
936 ks_pcie_am654_raise_intx_irq(ks_pcie); in ks_pcie_am654_raise_irq()
977 static void ks_pcie_disable_phy(struct keystone_pcie *ks_pcie) in ks_pcie_disable_phy() argument
979 int num_lanes = ks_pcie->num_lanes; in ks_pcie_disable_phy()
982 phy_power_off(ks_pcie->phy[num_lanes]); in ks_pcie_disable_phy()
983 phy_exit(ks_pcie->phy[num_lanes]); in ks_pcie_disable_phy()
987 static int ks_pcie_enable_phy(struct keystone_pcie *ks_pcie) in ks_pcie_enable_phy() argument
991 int num_lanes = ks_pcie->num_lanes; in ks_pcie_enable_phy()
994 ret = phy_reset(ks_pcie->phy[i]); in ks_pcie_enable_phy()
998 ret = phy_init(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1002 ret = phy_power_on(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1004 phy_exit(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1013 phy_power_off(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1014 phy_exit(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1137 struct keystone_pcie *ks_pcie; in ks_pcie_probe() local
1160 ks_pcie = devm_kzalloc(dev, sizeof(*ks_pcie), GFP_KERNEL); in ks_pcie_probe()
1161 if (!ks_pcie) in ks_pcie_probe()
1169 ks_pcie->va_app_base = devm_ioremap_resource(dev, res); in ks_pcie_probe()
1170 if (IS_ERR(ks_pcie->va_app_base)) in ks_pcie_probe()
1171 return PTR_ERR(ks_pcie->va_app_base); in ks_pcie_probe()
1173 ks_pcie->app = *res; in ks_pcie_probe()
1181 ks_pcie->is_am6 = true; in ks_pcie_probe()
1194 "ks-pcie-error-irq", ks_pcie); in ks_pcie_probe()
1231 ks_pcie->np = np; in ks_pcie_probe()
1232 ks_pcie->pci = pci; in ks_pcie_probe()
1233 ks_pcie->link = link; in ks_pcie_probe()
1234 ks_pcie->num_lanes = num_lanes; in ks_pcie_probe()
1235 ks_pcie->phy = phy; in ks_pcie_probe()
1248 phy_pm_runtime_get_sync(ks_pcie->phy[i]); in ks_pcie_probe()
1250 ret = ks_pcie_enable_phy(ks_pcie); in ks_pcie_probe()
1254 phy_pm_runtime_put_sync(ks_pcie->phy[i]); in ks_pcie_probe()
1261 platform_set_drvdata(pdev, ks_pcie); in ks_pcie_probe()
1302 ks_pcie->num_viewport = num_viewport; in ks_pcie_probe()
1332 ks_pcie_enable_error_irq(ks_pcie); in ks_pcie_probe()
1341 ks_pcie_disable_phy(ks_pcie); in ks_pcie_probe()
1352 struct keystone_pcie *ks_pcie = platform_get_drvdata(pdev); in ks_pcie_remove() local
1353 struct device_link **link = ks_pcie->link; in ks_pcie_remove()
1354 int num_lanes = ks_pcie->num_lanes; in ks_pcie_remove()
1359 ks_pcie_disable_phy(ks_pcie); in ks_pcie_remove()