staging: greybus: arche-apb-ctrl.c: Switch to the gpio descriptor interface
Subsystems (3)
PATCH 1/1 staging: greybus: arche-apb-ctrl.c: Switch to the gpio descriptor interface
Use the gpiod interface instead of the deprecated old non-descriptor interface.
--- drivers/staging/greybus/arche-apb-ctrl.c | 158 ++++++++++------------- 1 file changed, 65 insertions(+), 93 deletions(-)
drivers/staging/greybus/arche-apb-ctrl.c +65 -93
@@ -8,9 +8,8 @@#include <linux/clk.h> #include <linux/delay.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/interrupt.h> -#include <linux/of_gpio.h> #include <linux/of_irq.h> #include <linux/module.h> #include <linux/pinctrl/consumer.h>
@@ -20,17 +19,16 @@#include <linux/spinlock.h> #include "arche_platform.h" -static void apb_bootret_deassert (struct device *dev);struct arche_apb_ctrl_drvdata {/* Control GPIO signals to and from AP <=> AP Bridges */ -int resetn_gpio; -int boot_ret_gpio; -int pwroff_gpio; -int wake_in_gpio; -int wake_out_gpio; -int pwrdn_gpio; +struct gpio_desc *resetn; +struct gpio_desc *boot_ret; +struct gpio_desc *pwroff; +struct gpio_desc *wake_in; +struct gpio_desc *wake_out; +struct gpio_desc *pwrdn;enum arche_platform_state state;bool init_disabled;
@@ -38,28 +36,28 @@ struct arche_apb_ctrl_drvdata {struct regulator *vcore;struct regulator *vio; -int clk_en_gpio; +struct gpio_desc *clk_en;struct clk *clk;struct pinctrl *pinctrl;struct pinctrl_state *pin_default;/* V2: SPI Bus control */ -int spi_en_gpio; +struct gpio_desc *spi_en;bool spi_en_polarity_high; };/* * Note that these low level api's are active high */ -static inline void deassert_reset (unsigned int gpio) +static inline void deassert_reset (struct gpio_desc *gpio) { -gpio_set_value (gpio,1 ); +gpiod_set_value (gpio,1 ); } -static inline void assert_reset (unsigned int gpio) +static inline void assert_reset (struct gpio_desc *gpio) { -gpio_set_value (gpio,0 ); +gpiod_set_value (gpio,0 ); }/*
@@ -76,11 +74,11 @@ static int coldboot_seq(struct platform_device *pdev)return 0 ;/* Hold APB in reset state */ -assert_reset (apb->resetn_gpio); +assert_reset (apb->resetn);if (apb->state ==ARCHE_PLATFORM_STATE_FW_FLASHING && -gpio_is_valid (apb->spi_en_gpio)) -devm_gpio_free (dev, apb->spi_en_gpio); + apb->spi_en) +devm_gpiod_put (dev, apb->spi_en);/* Enable power to APB */ if (!IS_ERR (apb->vcore)) {
@@ -102,13 +100,13 @@ static int coldboot_seq(struct platform_device *pdev)apb_bootret_deassert (dev);/* On DB3 clock was not mandatory */ -if (gpio_is_valid (apb->clk_en_gpio)) -gpio_set_value (apb->clk_en_gpio,1 ); +if (apb->clk_en) +gpiod_set_value (apb->clk_en,1 );usleep_range (100 ,200 );/* deassert reset to APB : Active-low signal */ -deassert_reset (apb->resetn_gpio); +deassert_reset (apb->resetn); apb->state =ARCHE_PLATFORM_STATE_ACTIVE ;
@@ -120,6 +118,7 @@ static int fw_flashing_seq(struct platform_device *pdev)struct device *dev = &pdev->dev;struct arche_apb_ctrl_drvdata *apb =platform_get_drvdata (pdev);int ret; +unsigned long flags;if (apb->init_disabled || apb->state ==ARCHE_PLATFORM_STATE_FW_FLASHING )
@@ -137,25 +136,20 @@ static int fw_flashing_seq(struct platform_device *pdev)return ret; } -if (gpio_is_valid (apb->spi_en_gpio)) { -unsigned long flags; - -if (apb->spi_en_polarity_high) - flags =GPIOF_OUT_INIT_HIGH ; -else - flags =GPIOF_OUT_INIT_LOW ; +if (apb->spi_en_polarity_high) + flags =GPIOD_OUT_HIGH ; +else + flags =GPIOD_OUT_LOW ; - ret =devm_gpio_request_one (dev, apb->spi_en_gpio, - flags,"apb_spi_en" ); -if (ret) { -dev_err (dev,"Failed requesting SPI bus en gpio %d\n" , - apb->spi_en_gpio); -return ret; - } + apb->spi_en =devm_gpiod_get (dev,"gb,apb_spi_en" , flags); +if (IS_ERR (apb->spi_en)) { + ret =PTR_ERR (apb->spi_en); +dev_err (dev,"Failed requesting SPI bus en GPIO: %d\n" , ret); +return ret; }/* for flashing device should be in reset state */ -assert_reset (apb->resetn_gpio); +assert_reset (apb->resetn); apb->state =ARCHE_PLATFORM_STATE_FW_FLASHING ;return 0 ;
@@ -178,8 +172,8 @@ static int standby_boot_seq(struct platform_device *pdev)return 0 ;if (apb->state ==ARCHE_PLATFORM_STATE_FW_FLASHING && -gpio_is_valid (apb->spi_en_gpio)) -devm_gpio_free (dev, apb->spi_en_gpio); + apb->spi_en) +devm_gpiod_put (dev, apb->spi_en);/* * As per WDM spec, do nothing
@@ -203,12 +197,12 @@ static void poweroff_seq(struct platform_device *pdev)return ;if (apb->state ==ARCHE_PLATFORM_STATE_FW_FLASHING && -gpio_is_valid (apb->spi_en_gpio)) -devm_gpio_free (dev, apb->spi_en_gpio); + apb->spi_en) +devm_gpiod_put (dev, apb->spi_en);/* disable the clock */ -if (gpio_is_valid (apb->clk_en_gpio)) -gpio_set_value (apb->clk_en_gpio,0 ); +if (apb->clk_en) +gpiod_set_value (apb->clk_en,0 );if (!IS_ERR (apb->vcore) &®ulator_is_enabled (apb->vcore) >0 )regulator_disable (apb->vcore);
@@ -217,7 +211,7 @@ static void poweroff_seq(struct platform_device *pdev)regulator_disable (apb->vio);/* As part of exit, put APB back in reset state */ -assert_reset (apb->resetn_gpio); +assert_reset (apb->resetn); apb->state =ARCHE_PLATFORM_STATE_OFF ;/* TODO: May have to send an event to SVC about this exit */
@@ -227,7 +221,7 @@ static void apb_bootret_deassert(struct device *dev) {struct arche_apb_ctrl_drvdata *apb =dev_get_drvdata (dev); -gpio_set_value (apb->boot_ret_gpio,0 ); +gpiod_set_value (apb->boot_ret,0 ); }int apb_ctrl_coldboot (struct device *dev)
@@ -326,63 +320,44 @@ static int apb_ctrl_get_devtree_data(struct platform_device *pdev,struct device_node *np = dev->of_node;int ret; - apb->resetn_gpio =of_get_named_gpio (np,"reset-gpios" ,0 ); -if (apb->resetn_gpio <0 ) { -dev_err (dev,"failed to get reset gpio\n" ); -return apb->resetn_gpio; - } - ret =devm_gpio_request_one (dev, apb->resetn_gpio, -GPIOF_OUT_INIT_LOW ,"apb-reset" ); -if (ret) { -dev_err (dev,"Failed requesting reset gpio %d\n" , - apb->resetn_gpio); + apb->resetn =devm_gpiod_get (dev,"gb,reset-gpios" ,GPIOD_OUT_LOW ); +if (IS_ERR (apb->resetn)) { + ret =PTR_ERR (apb->resetn); +dev_err (dev,"Failed requesting reset GPIO: %d\n" , ret);return ret; } - apb->boot_ret_gpio =of_get_named_gpio (np,"boot-ret-gpios" ,0 ); -if (apb->boot_ret_gpio <0 ) { -dev_err (dev,"failed to get boot retention gpio\n" ); -return apb->boot_ret_gpio; - } - ret =devm_gpio_request_one (dev, apb->boot_ret_gpio, -GPIOF_OUT_INIT_LOW ,"boot retention" ); -if (ret) { -dev_err (dev,"Failed requesting bootret gpio %d\n" , - apb->boot_ret_gpio); + apb->boot_ret =devm_gpiod_get (dev,"gb,boot-ret-gpios" ,GPIOD_OUT_LOW ); +if (IS_ERR (apb->boot_ret)) { + ret =PTR_ERR (apb->boot_ret); +dev_err (dev,"Failed requesting bootret GPIO: %d\n" , ret);return ret; }/* It's not mandatory to support power management interface */ - apb->pwroff_gpio =of_get_named_gpio (np,"pwr-off-gpios" ,0 ); -if (apb->pwroff_gpio <0 ) { -dev_err (dev,"failed to get power off gpio\n" ); -return apb->pwroff_gpio; - } - ret =devm_gpio_request_one (dev, apb->pwroff_gpio, -GPIOF_IN ,"pwroff_n" ); -if (ret) { -dev_err (dev,"Failed requesting pwroff_n gpio %d\n" , - apb->pwroff_gpio); + apb->pwroff =devm_gpiod_get_optional (dev,"gb,pwr-off-gpios" , +GPIOD_IN ); +if (IS_ERR (apb->pwroff)) { + ret =PTR_ERR (apb->pwroff); +dev_err (dev,"Failed requesting pwroff_n GPIO: %d\n" , ret);return ret; }/* Do not make clock mandatory as of now (for DB3) */ - apb->clk_en_gpio =of_get_named_gpio (np,"clock-en-gpio" ,0 ); -if (apb->clk_en_gpio <0 ) { -dev_warn (dev,"failed to get clock en gpio\n" ); - }else if (gpio_is_valid (apb->clk_en_gpio)) { - ret =devm_gpio_request_one (dev, apb->clk_en_gpio, -GPIOF_OUT_INIT_LOW ,"apb_clk_en" ); -if (ret) { -dev_warn (dev,"Failed requesting APB clock en gpio %d\n" , - apb->clk_en_gpio); -return ret; - } + apb->clk_en =devm_gpiod_get_optional (dev,"gb,clock-en-gpio" , +GPIOD_OUT_LOW ); +if (IS_ERR (apb->clk_en)) { + ret =PTR_ERR (apb->clk_en); +dev_err (dev,"Failed requesting APB clock en GPIO: %d\n" , ret); +return ret; } - apb->pwrdn_gpio =of_get_named_gpio (np,"pwr-down-gpios" ,0 ); -if (apb->pwrdn_gpio <0 ) -dev_warn (dev,"failed to get power down gpio\n" ); + apb->pwrdn =devm_gpiod_get (dev,"gb,pwr-down-gpios" ,GPIOD_OUT_LOW ); +if (IF_ERR (apb->pwrdn)) { + ret =PTR_ERR (apb->pwrdn); +dev_warn (dev,"Failed requesting power down GPIO: %d\n" , ret); +return ret; + }/* Regulators are optional, as we may have fixed supply coming in */ apb->vcore =devm_regulator_get (dev,"vcore" );
@@ -405,11 +380,8 @@ static int apb_ctrl_get_devtree_data(struct platform_device *pdev, }/* Only applicable for platform >= V2 */ - apb->spi_en_gpio =of_get_named_gpio (np,"spi-en-gpio" ,0 ); -if (apb->spi_en_gpio >=0 ) { -if (of_property_read_bool (pdev->dev.of_node, -"spi-en-active-high" )) - apb->spi_en_polarity_high = true; +if (of_property_read_bool (pdev->dev.of_node,"gb,spi-en-active-high" )) + apb->spi_en_polarity_high = true; }return 0 ;
Signature · 1 line
2.17.1
Greg Kroah-Hartman
maintainerQuoted 7 lines · Nishad Kamdar
Use the gpiod interface instead of the deprecated old non-descriptor interface.
Signed-off-by Nishad Kamdar <[email protected]>--- drivers/staging/greybus/arche-apb-ctrl.c | 158 ++++++++++------------- 1 file changed, 65 insertions(+), 93 deletions(-)
This patch does not apply to my tree at all :(
Please rebase and resend, thanks.
greg k-h
Quoted 9 lines · Greg Kroah-Hartman
Quoted 7 lines · Nishad Kamdar
Use the gpiod interface instead of the deprecated old non-descriptor interface.
Signed-off-by Nishad Kamdar <[email protected]>--- drivers/staging/greybus/arche-apb-ctrl.c | 158 ++++++++++------------- 1 file changed, 65 insertions(+), 93 deletions(-)
Quoted 5 lines
This patch does not apply to my tree at all :(
Please rebase and resend, thanks.
greg k-h
Sorry about that. I'll check and resend.
Thanks for the review.
Regards,
Nishad
Johan Hovold
maintainerdrivers/staging/greybus/arche-apb-ctrl.c static int apb_ctrl_get_devtree_data(struct platform_device *pdev, · line 356
Quoted 13 lines · Nishad Kamdar
Use the gpiod interface instead of the deprecated old non-descriptor interface.
Signed-off-by Nishad Kamdar <[email protected]>--- drivers/staging/greybus/arche-apb-ctrl.c | 158 ++++++++++------------- 1 file changed, 65 insertions(+), 93 deletions(-)drivers/staging/greybus/arche-apb-ctrl.c +2
-3- apb->pwrdn_gpio =of_get_named_gpio (np,"pwr-down-gpios" ,0 ); -if (apb->pwrdn_gpio <0 ) -dev_warn (dev,"failed to get power down gpio\n" ); + apb->pwrdn =devm_gpiod_get (dev,"gb,pwr-down-gpios" ,GPIOD_OUT_LOW ); +if (IF_ERR (apb->pwrdn)) {
Looks like you didn't even compile test this one. :(
drivers/staging/greybus/arche-apb-ctrl.c static int apb_ctrl_get_devtree_data(struct platform_device *pdev, · line 360
Quoted 4 lines
drivers/staging/greybus/arche-apb-ctrl.c +4
-0+ ret =PTR_ERR (apb->pwrdn); +dev_warn (dev,"Failed requesting power down GPIO: %d\n" , ret); +return ret; + }
Johan
Quoted 17 lines · Johan Hovold
drivers/staging/greybus/arche-apb-ctrl.c static int apb_ctrl_get_devtree_data(struct platform_device *pdev, · line 356
Quoted 13 lines · Nishad Kamdar
Use the gpiod interface instead of the deprecated old non-descriptor interface.
Signed-off-by Nishad Kamdar <[email protected]>--- drivers/staging/greybus/arche-apb-ctrl.c | 158 ++++++++++------------- 1 file changed, 65 insertions(+), 93 deletions(-)drivers/staging/greybus/arche-apb-ctrl.c +2
-3- apb->pwrdn_gpio =of_get_named_gpio (np,"pwr-down-gpios" ,0 ); -if (apb->pwrdn_gpio <0 ) -dev_warn (dev,"failed to get power down gpio\n" ); + apb->pwrdn =devm_gpiod_get (dev,"gb,pwr-down-gpios" ,GPIOD_OUT_LOW ); +if (IF_ERR (apb->pwrdn)) {Looks like you didn't even compile test this one. :(
Quoted 6 lines
drivers/staging/greybus/arche-apb-ctrl.c static int apb_ctrl_get_devtree_data(struct platform_device *pdev, · line 360
Quoted 4 lines
drivers/staging/greybus/arche-apb-ctrl.c +4
-0+ ret =PTR_ERR (apb->pwrdn); +dev_warn (dev,"Failed requesting power down GPIO: %d\n" , ret); +return ret; + }Johan
Sorry about that, I'll check and resend.
Thanks for the review.
Regards,
Nishad