10
10
#include <linux/i2c.h>
11
11
#include <linux/regmap.h>
12
12
#include <linux/err.h>
13
- #include <linux/gpio.h>
13
+ #include <linux/gpio/consumer .h>
14
14
#include <linux/delay.h>
15
15
#include <linux/regulator/lp872x.h>
16
16
#include <linux/regulator/driver.h>
17
17
#include <linux/platform_device.h>
18
18
#include <linux/of.h>
19
- #include <linux/of_gpio.h>
20
19
#include <linux/regulator/of_regulator.h>
21
20
22
21
/* Registers : LP8720/8725 shared */
@@ -250,12 +249,12 @@ static int lp872x_regulator_enable_time(struct regulator_dev *rdev)
250
249
}
251
250
252
251
static void lp872x_set_dvs (struct lp872x * lp , enum lp872x_dvs_sel dvs_sel ,
253
- int gpio )
252
+ struct gpio_desc * gpio )
254
253
{
255
254
enum lp872x_dvs_state state ;
256
255
257
256
state = dvs_sel == SEL_V1 ? DVS_HIGH : DVS_LOW ;
258
- gpio_set_value (gpio , state );
257
+ gpiod_set_value (gpio , state );
259
258
lp -> dvs_pin = state ;
260
259
}
261
260
@@ -321,7 +320,7 @@ static int lp872x_buck_set_voltage_sel(struct regulator_dev *rdev,
321
320
u8 addr , mask = LP872X_VOUT_M ;
322
321
struct lp872x_dvs * dvs = lp -> pdata ? lp -> pdata -> dvs : NULL ;
323
322
324
- if (dvs && gpio_is_valid ( dvs -> gpio ) )
323
+ if (dvs && dvs -> gpio )
325
324
lp872x_set_dvs (lp , dvs -> vsel , dvs -> gpio );
326
325
327
326
addr = lp872x_select_buck_vout_addr (lp , buck );
@@ -675,7 +674,6 @@ static const struct regulator_desc lp8725_regulator_desc[] = {
675
674
676
675
static int lp872x_init_dvs (struct lp872x * lp )
677
676
{
678
- int ret , gpio ;
679
677
struct lp872x_dvs * dvs = lp -> pdata ? lp -> pdata -> dvs : NULL ;
680
678
enum lp872x_dvs_state pinstate ;
681
679
u8 mask [] = { LP8720_EXT_DVS_M , LP8725_DVS1_M | LP8725_DVS2_M };
@@ -684,15 +682,15 @@ static int lp872x_init_dvs(struct lp872x *lp)
684
682
if (!dvs )
685
683
goto set_default_dvs_mode ;
686
684
687
- gpio = dvs -> gpio ;
688
- if (!gpio_is_valid (gpio ))
685
+ if (!dvs -> gpio )
689
686
goto set_default_dvs_mode ;
690
687
691
688
pinstate = dvs -> init_state ;
692
- ret = devm_gpio_request_one (lp -> dev , gpio , pinstate , "LP872X DVS" );
693
- if (ret ) {
694
- dev_err (lp -> dev , "gpio request err: %d\n" , ret );
695
- return ret ;
689
+ dvs -> gpio = devm_gpiod_get_optional (lp -> dev , "ti,dvs" , pinstate );
690
+
691
+ if (IS_ERR (dvs -> gpio )) {
692
+ dev_err (lp -> dev , "gpio request err: %ld\n" , PTR_ERR (dvs -> gpio ));
693
+ return PTR_ERR (dvs -> gpio );
696
694
}
697
695
698
696
lp -> dvs_pin = pinstate ;
@@ -706,20 +704,17 @@ static int lp872x_init_dvs(struct lp872x *lp)
706
704
707
705
static int lp872x_hw_enable (struct lp872x * lp )
708
706
{
709
- int ret , gpio ;
710
-
711
707
if (!lp -> pdata )
712
708
return - EINVAL ;
713
709
714
- gpio = lp -> pdata -> enable_gpio ;
715
- if (!gpio_is_valid (gpio ))
710
+ if (!lp -> pdata -> enable_gpio )
716
711
return 0 ;
717
712
718
713
/* Always set enable GPIO high. */
719
- ret = devm_gpio_request_one (lp -> dev , gpio , GPIOF_OUT_INIT_HIGH , "LP872X EN" );
720
- if (ret ) {
721
- dev_err (lp -> dev , "gpio request err: %d \n" , ret );
722
- return ret ;
714
+ lp -> pdata -> enable_gpio = devm_gpiod_get_optional (lp -> dev , "enable" , GPIOD_OUT_HIGH );
715
+ if (IS_ERR ( lp -> pdata -> enable_gpio ) ) {
716
+ dev_err (lp -> dev , "gpio request err: %ld \n" , PTR_ERR ( lp -> pdata -> enable_gpio ) );
717
+ return PTR_ERR ( lp -> pdata -> enable_gpio ) ;
723
718
}
724
719
725
720
/* Each chip has a different enable delay. */
@@ -844,13 +839,10 @@ static struct lp872x_platform_data
844
839
if (!pdata -> dvs )
845
840
return ERR_PTR (- ENOMEM );
846
841
847
- pdata -> dvs -> gpio = of_get_named_gpio (np , "ti,dvs-gpio" , 0 );
848
842
of_property_read_u8 (np , "ti,dvs-vsel" , (u8 * )& pdata -> dvs -> vsel );
849
843
of_property_read_u8 (np , "ti,dvs-state" , & dvs_state );
850
844
pdata -> dvs -> init_state = dvs_state ? DVS_HIGH : DVS_LOW ;
851
845
852
- pdata -> enable_gpio = of_get_named_gpio (np , "enable-gpios" , 0 );
853
-
854
846
if (of_get_child_count (np ) == 0 )
855
847
goto out ;
856
848
0 commit comments