PCI: dwc: Add host_post_init() callback
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Tue, 10 Oct 2023 15:59:13 +0000 (21:29 +0530)
committerKrzysztof Wilczyński <kwilczynski@kernel.org>
Sat, 14 Oct 2023 20:02:17 +0000 (20:02 +0000)
This callback can be used by the platform drivers to do configuration
once all the devices are scanned. Like changing LNKCTL of all downstream
devices to enable ASPM etc...

Link: https://lore.kernel.org/linux-pci/20231010155914.9516-2-manivannan.sadhasivam@linaro.org
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
drivers/pci/controller/dwc/pcie-designware-host.c
drivers/pci/controller/dwc/pcie-designware.h

index a7170fd0e847adaa87ed83bd3d6b2b02f0d36f13..7991f0e179b215a46726f6d8f2693409d49358a5 100644 (file)
@@ -502,6 +502,9 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp)
        if (ret)
                goto err_stop_link;
 
+       if (pp->ops->host_post_init)
+               pp->ops->host_post_init(pp);
+
        return 0;
 
 err_stop_link:
index ef0b2efa9f93e0d99c23c35dcdbd9726cb040663..efb4d4754fc8dddf23270bbf9759c1da5617022f 100644 (file)
@@ -301,6 +301,7 @@ enum dw_pcie_ltssm {
 struct dw_pcie_host_ops {
        int (*host_init)(struct dw_pcie_rp *pp);
        void (*host_deinit)(struct dw_pcie_rp *pp);
+       void (*host_post_init)(struct dw_pcie_rp *pp);
        int (*msi_host_init)(struct dw_pcie_rp *pp);
        void (*pme_turn_off)(struct dw_pcie_rp *pp);
 };