Lines Matching refs:ks_pcie

143 static u32 ks_pcie_app_readl(struct keystone_pcie *ks_pcie, u32 offset)  in ks_pcie_app_readl()  argument
145 return readl(ks_pcie->va_app_base + offset); in ks_pcie_app_readl()
148 static void ks_pcie_app_writel(struct keystone_pcie *ks_pcie, u32 offset, in ks_pcie_app_writel() argument
151 writel(val, ks_pcie->va_app_base + offset); in ks_pcie_app_writel()
157 struct keystone_pcie *ks_pcie; in ks_pcie_msi_irq_ack() local
164 ks_pcie = to_keystone_pcie(pci); in ks_pcie_msi_irq_ack()
169 ks_pcie_app_writel(ks_pcie, MSI_IRQ_STATUS(reg_offset), in ks_pcie_msi_irq_ack()
171 ks_pcie_app_writel(ks_pcie, IRQ_EOI, reg_offset + MSI_IRQ_OFFSET); in ks_pcie_msi_irq_ack()
177 struct keystone_pcie *ks_pcie; in ks_pcie_compose_msi_msg() local
182 ks_pcie = to_keystone_pcie(pci); in ks_pcie_compose_msi_msg()
184 msi_target = ks_pcie->app.start + MSI_IRQ; in ks_pcie_compose_msi_msg()
202 struct keystone_pcie *ks_pcie; in ks_pcie_msi_mask() local
212 ks_pcie = to_keystone_pcie(pci); in ks_pcie_msi_mask()
217 ks_pcie_app_writel(ks_pcie, MSI_IRQ_ENABLE_CLR(reg_offset), in ks_pcie_msi_mask()
226 struct keystone_pcie *ks_pcie; in ks_pcie_msi_unmask() local
236 ks_pcie = to_keystone_pcie(pci); in ks_pcie_msi_unmask()
241 ks_pcie_app_writel(ks_pcie, MSI_IRQ_ENABLE_SET(reg_offset), in ks_pcie_msi_unmask()
264 static void ks_pcie_set_dbi_mode(struct keystone_pcie *ks_pcie) in ks_pcie_set_dbi_mode() argument
268 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_set_dbi_mode()
270 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val); in ks_pcie_set_dbi_mode()
273 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_set_dbi_mode()
285 static void ks_pcie_clear_dbi_mode(struct keystone_pcie *ks_pcie) in ks_pcie_clear_dbi_mode() argument
289 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_clear_dbi_mode()
291 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val); in ks_pcie_clear_dbi_mode()
294 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_clear_dbi_mode()
301 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_msi_host_init() local
304 ks_pcie_set_dbi_mode(ks_pcie); in ks_pcie_msi_host_init()
310 ks_pcie_clear_dbi_mode(ks_pcie); in ks_pcie_msi_host_init()
316 dw_pcie_writel_dbi(pci, PCI_BASE_ADDRESS_0, ks_pcie->app.start); in ks_pcie_msi_host_init()
322 static void ks_pcie_handle_legacy_irq(struct keystone_pcie *ks_pcie, in ks_pcie_handle_legacy_irq() argument
325 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_handle_legacy_irq()
329 pending = ks_pcie_app_readl(ks_pcie, IRQ_STATUS(offset)); in ks_pcie_handle_legacy_irq()
333 generic_handle_domain_irq(ks_pcie->legacy_irq_domain, offset); in ks_pcie_handle_legacy_irq()
337 ks_pcie_app_writel(ks_pcie, IRQ_EOI, offset); in ks_pcie_handle_legacy_irq()
340 static void ks_pcie_enable_error_irq(struct keystone_pcie *ks_pcie) in ks_pcie_enable_error_irq() argument
342 ks_pcie_app_writel(ks_pcie, ERR_IRQ_ENABLE_SET, ERR_IRQ_ALL); in ks_pcie_enable_error_irq()
345 static irqreturn_t ks_pcie_handle_error_irq(struct keystone_pcie *ks_pcie) in ks_pcie_handle_error_irq() argument
348 struct device *dev = ks_pcie->pci->dev; in ks_pcie_handle_error_irq()
350 reg = ks_pcie_app_readl(ks_pcie, ERR_IRQ_STATUS); in ks_pcie_handle_error_irq()
366 if (!ks_pcie->is_am6 && (reg & ERR_AXI)) in ks_pcie_handle_error_irq()
369 if (reg & ERR_AER || (ks_pcie->is_am6 && (reg & AM6_ERR_AER))) in ks_pcie_handle_error_irq()
372 ks_pcie_app_writel(ks_pcie, ERR_IRQ_STATUS, reg); in ks_pcie_handle_error_irq()
412 static int ks_pcie_setup_rc_app_regs(struct keystone_pcie *ks_pcie) in ks_pcie_setup_rc_app_regs() argument
415 u32 num_viewport = ks_pcie->num_viewport; in ks_pcie_setup_rc_app_regs()
416 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_setup_rc_app_regs()
432 ks_pcie_set_dbi_mode(ks_pcie); in ks_pcie_setup_rc_app_regs()
435 ks_pcie_clear_dbi_mode(ks_pcie); in ks_pcie_setup_rc_app_regs()
437 if (ks_pcie->is_am6) in ks_pcie_setup_rc_app_regs()
441 ks_pcie_app_writel(ks_pcie, OB_SIZE, val); in ks_pcie_setup_rc_app_regs()
445 ks_pcie_app_writel(ks_pcie, OB_OFFSET_INDEX(i), in ks_pcie_setup_rc_app_regs()
447 ks_pcie_app_writel(ks_pcie, OB_OFFSET_HI(i), in ks_pcie_setup_rc_app_regs()
452 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_setup_rc_app_regs()
454 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val); in ks_pcie_setup_rc_app_regs()
464 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_other_map_bus() local
471 ks_pcie_app_writel(ks_pcie, CFG_SETUP, reg); in ks_pcie_other_map_bus()
504 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_stop_link() local
508 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_stop_link()
510 ks_pcie_app_writel(ks_pcie, CMD_STATUS, val); in ks_pcie_stop_link()
515 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_start_link() local
519 val = ks_pcie_app_readl(ks_pcie, CMD_STATUS); in ks_pcie_start_link()
520 ks_pcie_app_writel(ks_pcie, CMD_STATUS, LTSSM_EN_VAL | val); in ks_pcie_start_link()
528 struct keystone_pcie *ks_pcie; in ks_pcie_quirk() local
585 ks_pcie = dev_get_drvdata(bridge_dev->parent); in ks_pcie_quirk()
586 if (!ks_pcie) in ks_pcie_quirk()
589 val = ks_pcie_app_readl(ks_pcie, PID); in ks_pcie_quirk()
606 struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc); in ks_pcie_msi_irq_handler() local
607 u32 offset = irq - ks_pcie->msi_host_irq; in ks_pcie_msi_irq_handler()
608 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_msi_irq_handler()
623 reg = ks_pcie_app_readl(ks_pcie, MSI_IRQ_STATUS(offset)); in ks_pcie_msi_irq_handler()
650 struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc); in ks_pcie_legacy_irq_handler() local
651 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_legacy_irq_handler()
653 u32 irq_offset = irq - ks_pcie->legacy_host_irqs[0]; in ks_pcie_legacy_irq_handler()
664 ks_pcie_handle_legacy_irq(ks_pcie, irq_offset); in ks_pcie_legacy_irq_handler()
668 static int ks_pcie_config_msi_irq(struct keystone_pcie *ks_pcie) in ks_pcie_config_msi_irq() argument
670 struct device *dev = ks_pcie->pci->dev; in ks_pcie_config_msi_irq()
671 struct device_node *np = ks_pcie->np; in ks_pcie_config_msi_irq()
681 if (ks_pcie->is_am6) in ks_pcie_config_msi_irq()
701 if (!ks_pcie->msi_host_irq) { in ks_pcie_config_msi_irq()
707 ks_pcie->msi_host_irq = irq_data->hwirq; in ks_pcie_config_msi_irq()
711 ks_pcie); in ks_pcie_config_msi_irq()
722 static int ks_pcie_config_legacy_irq(struct keystone_pcie *ks_pcie) in ks_pcie_config_legacy_irq() argument
724 struct device *dev = ks_pcie->pci->dev; in ks_pcie_config_legacy_irq()
726 struct device_node *np = ks_pcie->np; in ks_pcie_config_legacy_irq()
736 if (ks_pcie->is_am6) in ks_pcie_config_legacy_irq()
755 ks_pcie->legacy_host_irqs[i] = irq; in ks_pcie_config_legacy_irq()
759 ks_pcie); in ks_pcie_config_legacy_irq()
770 ks_pcie->legacy_irq_domain = legacy_irq_domain; in ks_pcie_config_legacy_irq()
773 ks_pcie_app_writel(ks_pcie, IRQ_ENABLE_SET(i), INTx_EN); in ks_pcie_config_legacy_irq()
802 static int __init ks_pcie_init_id(struct keystone_pcie *ks_pcie) in ks_pcie_init_id() argument
807 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_init_id()
837 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_host_init() local
841 if (!ks_pcie->is_am6) in ks_pcie_host_init()
844 ret = ks_pcie_config_legacy_irq(ks_pcie); in ks_pcie_host_init()
848 ret = ks_pcie_config_msi_irq(ks_pcie); in ks_pcie_host_init()
853 ret = ks_pcie_setup_rc_app_regs(ks_pcie); in ks_pcie_host_init()
860 ret = ks_pcie_init_id(ks_pcie); in ks_pcie_host_init()
887 struct keystone_pcie *ks_pcie = priv; in ks_pcie_err_irq_handler() local
889 return ks_pcie_handle_error_irq(ks_pcie); in ks_pcie_err_irq_handler()
895 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_am654_write_dbi2() local
897 ks_pcie_set_dbi_mode(ks_pcie); in ks_pcie_am654_write_dbi2()
899 ks_pcie_clear_dbi_mode(ks_pcie); in ks_pcie_am654_write_dbi2()
920 static void ks_pcie_am654_raise_legacy_irq(struct keystone_pcie *ks_pcie) in ks_pcie_am654_raise_legacy_irq() argument
922 struct dw_pcie *pci = ks_pcie->pci; in ks_pcie_am654_raise_legacy_irq()
929 ks_pcie_app_writel(ks_pcie, PCIE_LEGACY_IRQ_ENABLE_SET(int_pin), in ks_pcie_am654_raise_legacy_irq()
931 ks_pcie_app_writel(ks_pcie, PCIE_EP_IRQ_SET, INT_ENABLE); in ks_pcie_am654_raise_legacy_irq()
933 ks_pcie_app_writel(ks_pcie, PCIE_EP_IRQ_CLR, INT_ENABLE); in ks_pcie_am654_raise_legacy_irq()
934 ks_pcie_app_writel(ks_pcie, PCIE_LEGACY_IRQ_ENABLE_CLR(int_pin), in ks_pcie_am654_raise_legacy_irq()
943 struct keystone_pcie *ks_pcie = to_keystone_pcie(pci); in ks_pcie_am654_raise_irq() local
947 ks_pcie_am654_raise_legacy_irq(ks_pcie); in ks_pcie_am654_raise_irq()
988 static void ks_pcie_disable_phy(struct keystone_pcie *ks_pcie) in ks_pcie_disable_phy() argument
990 int num_lanes = ks_pcie->num_lanes; in ks_pcie_disable_phy()
993 phy_power_off(ks_pcie->phy[num_lanes]); in ks_pcie_disable_phy()
994 phy_exit(ks_pcie->phy[num_lanes]); in ks_pcie_disable_phy()
998 static int ks_pcie_enable_phy(struct keystone_pcie *ks_pcie) in ks_pcie_enable_phy() argument
1002 int num_lanes = ks_pcie->num_lanes; in ks_pcie_enable_phy()
1005 ret = phy_reset(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1009 ret = phy_init(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1013 ret = phy_power_on(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1015 phy_exit(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1024 phy_power_off(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1025 phy_exit(ks_pcie->phy[i]); in ks_pcie_enable_phy()
1148 struct keystone_pcie *ks_pcie; in ks_pcie_probe() local
1171 ks_pcie = devm_kzalloc(dev, sizeof(*ks_pcie), GFP_KERNEL); in ks_pcie_probe()
1172 if (!ks_pcie) in ks_pcie_probe()
1180 ks_pcie->va_app_base = devm_ioremap_resource(dev, res); in ks_pcie_probe()
1181 if (IS_ERR(ks_pcie->va_app_base)) in ks_pcie_probe()
1182 return PTR_ERR(ks_pcie->va_app_base); in ks_pcie_probe()
1184 ks_pcie->app = *res; in ks_pcie_probe()
1192 ks_pcie->is_am6 = true; in ks_pcie_probe()
1205 "ks-pcie-error-irq", ks_pcie); in ks_pcie_probe()
1242 ks_pcie->np = np; in ks_pcie_probe()
1243 ks_pcie->pci = pci; in ks_pcie_probe()
1244 ks_pcie->link = link; in ks_pcie_probe()
1245 ks_pcie->num_lanes = num_lanes; in ks_pcie_probe()
1246 ks_pcie->phy = phy; in ks_pcie_probe()
1259 phy_pm_runtime_get_sync(ks_pcie->phy[i]); in ks_pcie_probe()
1261 ret = ks_pcie_enable_phy(ks_pcie); in ks_pcie_probe()
1265 phy_pm_runtime_put_sync(ks_pcie->phy[i]); in ks_pcie_probe()
1272 platform_set_drvdata(pdev, ks_pcie); in ks_pcie_probe()
1313 ks_pcie->num_viewport = num_viewport; in ks_pcie_probe()
1334 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()