mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-22 04:31:58 +08:00
regulator: tps62360: replacing legacy gpio interface for gpiod
Removing all linux/gpio.h and linux/of_gpio.h dependencies and replacing them with the gpiod interface. Signed-off-by: Maíra Canal <maira.canal@usp.br> Link: https://lore.kernel.org/r/YWxmL2baF5AdzyHv@fedora Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
061514dbfb
commit
6a8b5bb0f1
@ -28,13 +28,12 @@
|
|||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/of_device.h>
|
#include <linux/of_device.h>
|
||||||
#include <linux/of_gpio.h>
|
|
||||||
#include <linux/regulator/of_regulator.h>
|
#include <linux/regulator/of_regulator.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/regulator/driver.h>
|
#include <linux/regulator/driver.h>
|
||||||
#include <linux/regulator/machine.h>
|
#include <linux/regulator/machine.h>
|
||||||
#include <linux/regulator/tps62360.h>
|
#include <linux/regulator/tps62360.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio/consumer.h>
|
||||||
#include <linux/i2c.h>
|
#include <linux/i2c.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/regmap.h>
|
#include <linux/regmap.h>
|
||||||
@ -65,8 +64,8 @@ struct tps62360_chip {
|
|||||||
struct regulator_desc desc;
|
struct regulator_desc desc;
|
||||||
struct regulator_dev *rdev;
|
struct regulator_dev *rdev;
|
||||||
struct regmap *regmap;
|
struct regmap *regmap;
|
||||||
int vsel0_gpio;
|
struct gpio_desc *vsel0_gpio;
|
||||||
int vsel1_gpio;
|
struct gpio_desc *vsel1_gpio;
|
||||||
u8 voltage_reg_mask;
|
u8 voltage_reg_mask;
|
||||||
bool en_internal_pulldn;
|
bool en_internal_pulldn;
|
||||||
bool en_discharge;
|
bool en_discharge;
|
||||||
@ -165,8 +164,8 @@ static int tps62360_dcdc_set_voltage_sel(struct regulator_dev *dev,
|
|||||||
|
|
||||||
/* Select proper VSET register vio gpios */
|
/* Select proper VSET register vio gpios */
|
||||||
if (tps->valid_gpios) {
|
if (tps->valid_gpios) {
|
||||||
gpio_set_value_cansleep(tps->vsel0_gpio, new_vset_id & 0x1);
|
gpiod_set_value_cansleep(tps->vsel0_gpio, new_vset_id & 0x1);
|
||||||
gpio_set_value_cansleep(tps->vsel1_gpio,
|
gpiod_set_value_cansleep(tps->vsel1_gpio,
|
||||||
(new_vset_id >> 1) & 0x1);
|
(new_vset_id >> 1) & 0x1);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -310,9 +309,6 @@ static struct tps62360_regulator_platform_data *
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pdata->vsel0_gpio = of_get_named_gpio(np, "vsel0-gpio", 0);
|
|
||||||
pdata->vsel1_gpio = of_get_named_gpio(np, "vsel1-gpio", 0);
|
|
||||||
|
|
||||||
if (of_find_property(np, "ti,vsel0-state-high", NULL))
|
if (of_find_property(np, "ti,vsel0-state-high", NULL))
|
||||||
pdata->vsel0_def_state = 1;
|
pdata->vsel0_def_state = 1;
|
||||||
|
|
||||||
@ -349,6 +345,7 @@ static int tps62360_probe(struct i2c_client *client,
|
|||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
int chip_id;
|
int chip_id;
|
||||||
|
int gpio_flags;
|
||||||
|
|
||||||
pdata = dev_get_platdata(&client->dev);
|
pdata = dev_get_platdata(&client->dev);
|
||||||
|
|
||||||
@ -390,8 +387,6 @@ static int tps62360_probe(struct i2c_client *client,
|
|||||||
|
|
||||||
tps->en_discharge = pdata->en_discharge;
|
tps->en_discharge = pdata->en_discharge;
|
||||||
tps->en_internal_pulldn = pdata->en_internal_pulldn;
|
tps->en_internal_pulldn = pdata->en_internal_pulldn;
|
||||||
tps->vsel0_gpio = pdata->vsel0_gpio;
|
|
||||||
tps->vsel1_gpio = pdata->vsel1_gpio;
|
|
||||||
tps->dev = &client->dev;
|
tps->dev = &client->dev;
|
||||||
|
|
||||||
switch (chip_id) {
|
switch (chip_id) {
|
||||||
@ -426,29 +421,27 @@ static int tps62360_probe(struct i2c_client *client,
|
|||||||
tps->lru_index[0] = tps->curr_vset_id;
|
tps->lru_index[0] = tps->curr_vset_id;
|
||||||
tps->valid_gpios = false;
|
tps->valid_gpios = false;
|
||||||
|
|
||||||
if (gpio_is_valid(tps->vsel0_gpio) && gpio_is_valid(tps->vsel1_gpio)) {
|
gpio_flags = (pdata->vsel0_def_state) ?
|
||||||
int gpio_flags;
|
GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
|
||||||
gpio_flags = (pdata->vsel0_def_state) ?
|
tps->vsel0_gpio = devm_gpiod_get_optional(&client->dev, "vsel0", gpio_flags);
|
||||||
GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
|
if (IS_ERR(tps->vsel0_gpio)) {
|
||||||
ret = devm_gpio_request_one(&client->dev, tps->vsel0_gpio,
|
dev_err(&client->dev,
|
||||||
gpio_flags, "tps62360-vsel0");
|
"%s(): Could not obtain vsel0 GPIO: %ld\n",
|
||||||
if (ret) {
|
__func__, PTR_ERR(tps->vsel0_gpio));
|
||||||
dev_err(&client->dev,
|
return PTR_ERR(tps->vsel0_gpio);
|
||||||
"%s(): Could not obtain vsel0 GPIO %d: %d\n",
|
}
|
||||||
__func__, tps->vsel0_gpio, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
gpio_flags = (pdata->vsel1_def_state) ?
|
gpio_flags = (pdata->vsel1_def_state) ?
|
||||||
GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
|
GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
|
||||||
ret = devm_gpio_request_one(&client->dev, tps->vsel1_gpio,
|
tps->vsel1_gpio = devm_gpiod_get_optional(&client->dev, "vsel1", gpio_flags);
|
||||||
gpio_flags, "tps62360-vsel1");
|
if (IS_ERR(tps->vsel1_gpio)) {
|
||||||
if (ret) {
|
dev_err(&client->dev,
|
||||||
dev_err(&client->dev,
|
"%s(): Could not obtain vsel1 GPIO: %ld\n",
|
||||||
"%s(): Could not obtain vsel1 GPIO %d: %d\n",
|
__func__, PTR_ERR(tps->vsel1_gpio));
|
||||||
__func__, tps->vsel1_gpio, ret);
|
return PTR_ERR(tps->vsel1_gpio);
|
||||||
return ret;
|
}
|
||||||
}
|
|
||||||
|
if (tps->vsel0_gpio != NULL && tps->vsel1_gpio != NULL) {
|
||||||
tps->valid_gpios = true;
|
tps->valid_gpios = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -19,10 +19,6 @@
|
|||||||
* @en_discharge: Enable discharge the output capacitor via internal
|
* @en_discharge: Enable discharge the output capacitor via internal
|
||||||
* register.
|
* register.
|
||||||
* @en_internal_pulldn: internal pull down enable or not.
|
* @en_internal_pulldn: internal pull down enable or not.
|
||||||
* @vsel0_gpio: Gpio number for vsel0. It should be -1 if this is tied with
|
|
||||||
* fixed logic.
|
|
||||||
* @vsel1_gpio: Gpio number for vsel1. It should be -1 if this is tied with
|
|
||||||
* fixed logic.
|
|
||||||
* @vsel0_def_state: Default state of vsel0. 1 if it is high else 0.
|
* @vsel0_def_state: Default state of vsel0. 1 if it is high else 0.
|
||||||
* @vsel1_def_state: Default state of vsel1. 1 if it is high else 0.
|
* @vsel1_def_state: Default state of vsel1. 1 if it is high else 0.
|
||||||
*/
|
*/
|
||||||
@ -30,8 +26,6 @@ struct tps62360_regulator_platform_data {
|
|||||||
struct regulator_init_data *reg_init_data;
|
struct regulator_init_data *reg_init_data;
|
||||||
bool en_discharge;
|
bool en_discharge;
|
||||||
bool en_internal_pulldn;
|
bool en_internal_pulldn;
|
||||||
int vsel0_gpio;
|
|
||||||
int vsel1_gpio;
|
|
||||||
int vsel0_def_state;
|
int vsel0_def_state;
|
||||||
int vsel1_def_state;
|
int vsel1_def_state;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user