pci-imx6: replacing legacy gpio interface for gpiod
Subsystems (4)
PATCH 1/1 pci-imx6: replacing legacy gpio interface for gpiod
Removing all dependencies of linux/gpio.h and linux/of_gpio.h and replacing it with linux/gpio/consumer.h
--- 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
[fixed "[email protected]" in cc]
Quoted 2 lines · Maíra Canal
Removing all dependencies of
linux/gpio.handlinux/of_gpio.hand replacing it withlinux/gpio/consumer.h
Run "git log --oneline drivers/pci/controller/dwc/pci-imx6.c" and make your subject line match -- capitalization, sentence structure, etc.
Write commit log in imperative mood, i.e., "Remove" instead of "Removing": https://chris.beams.io/posts/git-commit/
The commit log mentions the trivial part but omits the important part (converting from gpio to gpiod model).
Quoted 80 lines
Signed-off-by Maíra Canal <[email protected]>--- 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
I'm sorry about the commit log. I made an effort to do a better commit log on v2 and sent the new version on the mailing list. Thanks for reviewing the entry!
Em ter., 19 de out. de 2021 às 16:45, Bjorn Helgaas <[email protected]> escreveu:
Quoted 96 lines
[fixed "[email protected]" in cc]
Quoted 2 lines · Maíra Canal
Removing all dependencies of
linux/gpio.handlinux/of_gpio.hand replacing it withlinux/gpio/consumer.hRun "git log --oneline
drivers/pci/controller/dwc/pci-imx6.c" and make your subject line match -- capitalization, sentence structure, etc.Write commit log in imperative mood, i.e., "Remove" instead of "Removing": https://chris.beams.io/posts/git-commit/
The commit log mentions the trivial part but omits the important part (converting from gpio to gpiod model).
Quoted 80 lines
Signed-off-by Maíra Canal <[email protected]>--- drivers/pci/controller/dwc/pci-imx6.c | 31 ++++++++++----------------- 1 file changed, 11 insertions(+), 20 deletions(-)drivers/pci/controller/dwc/pci-imx6.c +11
-21@@ -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" ); --2.31.1