PCI: imx6: Replace legacy gpio interface for gpiod interface
Subsystems (4)
PATCH v2 1/1 PCI: imx6: Replace legacy gpio interface for gpiod interface
Considering the current transition of the GPIO subsystem, remove all dependencies of the legacy GPIO interface (linux/gpio.h and linux /of_gpio.h) and replace it with the descriptor-based GPIO approach.
Signed-off-by Maíra Canal <[email protected]>
---
V1 -> V2: Rewrite commit log and subject line to match PCI subsystem standard
--- drivers/pci/controller/dwc/pci-imx6.c | 31 ++++++++++----------------- 1 file changed, 11 insertions(+), 20 deletions(-)
drivers/pci/controller/dwc/pci-imx6.c +11 -20
@@ -11,13 +11,12 @@#include <linux/bitfield.h> #include <linux/clk.h> #include <linux/delay.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/mfd/syscon.h> #include <linux/mfd/syscon/imx6q-iomuxc-gpr.h> #include <linux/mfd/syscon/imx7-iomuxc-gpr.h> #include <linux/module.h> -#include <linux/of_gpio.h> #include <linux/of_device.h> #include <linux/of_address.h> #include <linux/pci.h>
@@ -63,7 +62,7 @@ struct imx6_pcie_drvdata {struct imx6_pcie {struct dw_pcie *pci; -int reset_gpio; +struct gpio_desc *reset_gpio;bool gpio_active_high;struct clk *pcie_bus;struct clk *pcie_phy;
@@ -526,11 +525,11 @@ static void imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)usleep_range (200 ,500 );/* Some boards don't have PCIe reset GPIO. */ -if (gpio_is_valid (imx6_pcie->reset_gpio)) { -gpio_set_value_cansleep (imx6_pcie->reset_gpio, +if (imx6_pcie->reset_gpio) { +gpiod_set_value_cansleep (imx6_pcie->reset_gpio, imx6_pcie->gpio_active_high);msleep (100 ); -gpio_set_value_cansleep (imx6_pcie->reset_gpio, +gpiod_set_value_cansleep (imx6_pcie->reset_gpio, !imx6_pcie->gpio_active_high); }
@@ -1025,22 +1024,14 @@ static int imx6_pcie_probe(struct platform_device *pdev)return PTR_ERR (pci->dbi_base);/* Fetch GPIOs */ - imx6_pcie->reset_gpio =of_get_named_gpio (node,"reset-gpio" ,0 ); imx6_pcie->gpio_active_high =of_property_read_bool (node,"reset-gpio-active-high" ); -if (gpio_is_valid (imx6_pcie->reset_gpio)) { - ret =devm_gpio_request_one (dev, imx6_pcie->reset_gpio, - imx6_pcie->gpio_active_high ? -GPIOF_OUT_INIT_HIGH : -GPIOF_OUT_INIT_LOW , -"PCIe reset" ); -if (ret) { -dev_err (dev,"unable to get reset gpio\n" ); -return ret; - } - }else if (imx6_pcie->reset_gpio == -EPROBE_DEFER ) { -return imx6_pcie->reset_gpio; - } + imx6_pcie->reset_gpio =devm_gpiod_get_optional (dev,"reset" , + imx6_pcie->gpio_active_high ?GPIOD_OUT_HIGH : +GPIOD_OUT_LOW ); +if (IS_ERR (imx6_pcie->reset_gpio)) +return dev_err_probe (dev,PTR_ERR (imx6_pcie->reset_gpio), +"unable to get reset gpio\n" );/* Fetch clocks */ imx6_pcie->pcie_phy =devm_clk_get (dev,"pcie_phy" );
Signature · 1 line
2.31.1
Quoted 7 lines · Maíra Canal
Considering the current transition of the GPIO subsystem, remove all dependencies of the legacy GPIO interface (
linux/gpio.hand linux /of_gpio.h) and replace it with the descriptor-based GPIO approach.Signed-off-by Maíra Canal <[email protected]>---
V1 -> V2: Rewrite commit log and subject line to match PCI subsystem standard
Thanks, I appreciate that! Lorenzo will take a look when it gets to the front of his queue.
Quoted 79 lines
--- drivers/pci/controller/dwc/pci-imx6.c | 31 ++++++++++----------------- 1 file changed, 11 insertions(+), 20 deletions(-)drivers/pci/controller/dwc/pci-imx6.c +11
-20@@ -11,13 +11,12 @@#include <linux/bitfield.h> #include <linux/clk.h> #include <linux/delay.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/mfd/syscon.h> #include <linux/mfd/syscon/imx6q-iomuxc-gpr.h> #include <linux/mfd/syscon/imx7-iomuxc-gpr.h> #include <linux/module.h> -#include <linux/of_gpio.h> #include <linux/of_device.h> #include <linux/of_address.h> #include <linux/pci.h> @@ -63,7 +62,7 @@ struct imx6_pcie_drvdata {struct imx6_pcie {struct dw_pcie *pci; -int reset_gpio; +struct gpio_desc *reset_gpio;bool gpio_active_high;struct clk *pcie_bus;struct clk *pcie_phy;@@ -526,11 +525,11 @@ static void imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)usleep_range (200 ,500 );/* Some boards don't have PCIe reset GPIO. */ -if (gpio_is_valid (imx6_pcie->reset_gpio)) { -gpio_set_value_cansleep (imx6_pcie->reset_gpio, +if (imx6_pcie->reset_gpio) { +gpiod_set_value_cansleep (imx6_pcie->reset_gpio, imx6_pcie->gpio_active_high);msleep (100 ); -gpio_set_value_cansleep (imx6_pcie->reset_gpio, +gpiod_set_value_cansleep (imx6_pcie->reset_gpio, !imx6_pcie->gpio_active_high); }@@ -1025,22 +1024,14 @@ static int imx6_pcie_probe(struct platform_device *pdev)return PTR_ERR (pci->dbi_base);/* Fetch GPIOs */ - imx6_pcie->reset_gpio =of_get_named_gpio (node,"reset-gpio" ,0 ); imx6_pcie->gpio_active_high =of_property_read_bool (node,"reset-gpio-active-high" ); -if (gpio_is_valid (imx6_pcie->reset_gpio)) { - ret =devm_gpio_request_one (dev, imx6_pcie->reset_gpio, - imx6_pcie->gpio_active_high ? -GPIOF_OUT_INIT_HIGH : -GPIOF_OUT_INIT_LOW , -"PCIe reset" ); -if (ret) { -dev_err (dev,"unable to get reset gpio\n" ); -return ret; - } - }else if (imx6_pcie->reset_gpio == -EPROBE_DEFER ) { -return imx6_pcie->reset_gpio; - } + imx6_pcie->reset_gpio =devm_gpiod_get_optional (dev,"reset" , + imx6_pcie->gpio_active_high ?GPIOD_OUT_HIGH : +GPIOD_OUT_LOW ); +if (IS_ERR (imx6_pcie->reset_gpio)) +return dev_err_probe (dev,PTR_ERR (imx6_pcie->reset_gpio), +"unable to get reset gpio\n" );/* Fetch clocks */ imx6_pcie->pcie_phy =devm_clk_get (dev,"pcie_phy" );Signature · 1 line
2.31.1