diff options
Diffstat (limited to 'drivers/pci/controller/dwc/pci-dra7xx.c')
| -rw-r--r-- | drivers/pci/controller/dwc/pci-dra7xx.c | 22 | 
1 files changed, 20 insertions, 2 deletions
| diff --git a/drivers/pci/controller/dwc/pci-dra7xx.c b/drivers/pci/controller/dwc/pci-dra7xx.c index fbbb78f6885e..a4221f6f3629 100644 --- a/drivers/pci/controller/dwc/pci-dra7xx.c +++ b/drivers/pci/controller/dwc/pci-dra7xx.c @@ -7,6 +7,7 @@   * Authors: Kishon Vijay Abraham I <[email protected]>   */ +#include <linux/clk.h>  #include <linux/delay.h>  #include <linux/device.h>  #include <linux/err.h> @@ -14,7 +15,7 @@  #include <linux/irq.h>  #include <linux/irqdomain.h>  #include <linux/kernel.h> -#include <linux/init.h> +#include <linux/module.h>  #include <linux/of_device.h>  #include <linux/of_gpio.h>  #include <linux/of_pci.h> @@ -90,6 +91,7 @@ struct dra7xx_pcie {  	int			phy_count;	/* DT phy-names count */  	struct phy		**phy;  	struct irq_domain	*irq_domain; +	struct clk              *clk;  	enum dw_pcie_device_mode mode;  }; @@ -607,6 +609,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {  	},  	{},  }; +MODULE_DEVICE_TABLE(of, of_dra7xx_pcie_match);  /*   * dra7xx_pcie_unaligned_memaccess: workaround for AM572x/AM571x Errata i870 @@ -740,6 +743,15 @@ static int dra7xx_pcie_probe(struct platform_device *pdev)  	if (!link)  		return -ENOMEM; +	dra7xx->clk = devm_clk_get_optional(dev, NULL); +	if (IS_ERR(dra7xx->clk)) +		return dev_err_probe(dev, PTR_ERR(dra7xx->clk), +				     "clock request failed"); + +	ret = clk_prepare_enable(dra7xx->clk); +	if (ret) +		return ret; +  	for (i = 0; i < phy_count; i++) {  		snprintf(name, sizeof(name), "pcie-phy%d", i);  		phy[i] = devm_phy_get(dev, name); @@ -925,6 +937,8 @@ static void dra7xx_pcie_shutdown(struct platform_device *pdev)  	pm_runtime_disable(dev);  	dra7xx_pcie_disable_phy(dra7xx); + +	clk_disable_unprepare(dra7xx->clk);  }  static const struct dev_pm_ops dra7xx_pcie_pm_ops = { @@ -943,4 +957,8 @@ static struct platform_driver dra7xx_pcie_driver = {  	},  	.shutdown = dra7xx_pcie_shutdown,  }; -builtin_platform_driver(dra7xx_pcie_driver); +module_platform_driver(dra7xx_pcie_driver); + +MODULE_AUTHOR("Kishon Vijay Abraham I <[email protected]>"); +MODULE_DESCRIPTION("PCIe controller driver for TI DRA7xx SoCs"); +MODULE_LICENSE("GPL v2"); |