diff options
Diffstat (limited to 'drivers/regulator/max8952.c')
| -rw-r--r-- | drivers/regulator/max8952.c | 28 | 
1 files changed, 11 insertions, 17 deletions
diff --git a/drivers/regulator/max8952.c b/drivers/regulator/max8952.c index 788e5ae2af1..c2792f0271a 100644 --- a/drivers/regulator/max8952.c +++ b/drivers/regulator/max8952.c @@ -48,9 +48,7 @@ enum {  struct max8952_data {  	struct i2c_client	*client; -	struct device		*dev;  	struct max8952_platform_data *pdata; -	struct regulator_dev	*rdev;  	bool vid0;  	bool vid1; @@ -59,6 +57,7 @@ struct max8952_data {  static int max8952_read_reg(struct max8952_data *max8952, u8 reg)  {  	int ret = i2c_smbus_read_byte_data(max8952->client, reg); +  	if (ret > 0)  		ret &= 0xff; @@ -130,7 +129,7 @@ static const struct regulator_desc regulator = {  };  #ifdef CONFIG_OF -static struct of_device_id max8952_dt_match[] = { +static const struct of_device_id max8952_dt_match[] = {  	{ .compatible = "maxim,max8952" },  	{},  }; @@ -144,10 +143,8 @@ static struct max8952_platform_data *max8952_parse_dt(struct device *dev)  	int i;  	pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL); -	if (!pd) { -		dev_err(dev, "Failed to allocate platform data\n"); +	if (!pd)  		return NULL; -	}  	pd->gpio_vid0 = of_get_named_gpio(np, "max8952,vid-gpios", 0);  	pd->gpio_vid1 = of_get_named_gpio(np, "max8952,vid-gpios", 1); @@ -199,6 +196,7 @@ static int max8952_pmic_probe(struct i2c_client *client,  	struct max8952_platform_data *pdata = dev_get_platdata(&client->dev);  	struct regulator_config config = { };  	struct max8952_data *max8952; +	struct regulator_dev *rdev;  	int ret = 0, err = 0; @@ -219,10 +217,9 @@ static int max8952_pmic_probe(struct i2c_client *client,  		return -ENOMEM;  	max8952->client = client; -	max8952->dev = &client->dev;  	max8952->pdata = pdata; -	config.dev = max8952->dev; +	config.dev = &client->dev;  	config.init_data = pdata->reg_data;  	config.driver_data = max8952;  	config.of_node = client->dev.of_node; @@ -231,11 +228,11 @@ static int max8952_pmic_probe(struct i2c_client *client,  	if (pdata->reg_data->constraints.boot_on)  		config.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH; -	max8952->rdev = regulator_register(®ulator, &config); +	rdev = devm_regulator_register(&client->dev, ®ulator, &config); -	if (IS_ERR(max8952->rdev)) { -		ret = PTR_ERR(max8952->rdev); -		dev_err(max8952->dev, "regulator init failed (%d)\n", ret); +	if (IS_ERR(rdev)) { +		ret = PTR_ERR(rdev); +		dev_err(&client->dev, "regulator init failed (%d)\n", ret);  		return ret;  	} @@ -263,7 +260,7 @@ static int max8952_pmic_probe(struct i2c_client *client,  		err = 3;  	if (err) { -		dev_warn(max8952->dev, "VID0/1 gpio invalid: " +		dev_warn(&client->dev, "VID0/1 gpio invalid: "  				"DVS not available.\n");  		max8952->vid0 = 0;  		max8952->vid1 = 0; @@ -274,7 +271,7 @@ static int max8952_pmic_probe(struct i2c_client *client,  		/* Disable Pulldown of EN only */  		max8952_write_reg(max8952, MAX8952_REG_CONTROL, 0x60); -		dev_err(max8952->dev, "DVS modes disabled because VID0 and VID1" +		dev_err(&client->dev, "DVS modes disabled because VID0 and VID1"  				" do not have proper controls.\n");  	} else {  		/* @@ -321,9 +318,6 @@ static int max8952_pmic_remove(struct i2c_client *client)  {  	struct max8952_data *max8952 = i2c_get_clientdata(client);  	struct max8952_platform_data *pdata = max8952->pdata; -	struct regulator_dev *rdev = max8952->rdev; - -	regulator_unregister(rdev);  	gpio_free(pdata->gpio_vid0);  	gpio_free(pdata->gpio_vid1);  | 
