diff options
Diffstat (limited to 'drivers/regulator/max8952.c')
-rw-r--r-- | drivers/regulator/max8952.c | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/drivers/regulator/max8952.c b/drivers/regulator/max8952.c index 788e5ae2af1b..d920f5a32ec8 100644 --- a/drivers/regulator/max8952.c +++ b/drivers/regulator/max8952.c | |||
@@ -48,9 +48,7 @@ enum { | |||
48 | 48 | ||
49 | struct max8952_data { | 49 | struct max8952_data { |
50 | struct i2c_client *client; | 50 | struct i2c_client *client; |
51 | struct device *dev; | ||
52 | struct max8952_platform_data *pdata; | 51 | struct max8952_platform_data *pdata; |
53 | struct regulator_dev *rdev; | ||
54 | 52 | ||
55 | bool vid0; | 53 | bool vid0; |
56 | bool vid1; | 54 | bool vid1; |
@@ -59,6 +57,7 @@ struct max8952_data { | |||
59 | static int max8952_read_reg(struct max8952_data *max8952, u8 reg) | 57 | static int max8952_read_reg(struct max8952_data *max8952, u8 reg) |
60 | { | 58 | { |
61 | int ret = i2c_smbus_read_byte_data(max8952->client, reg); | 59 | int ret = i2c_smbus_read_byte_data(max8952->client, reg); |
60 | |||
62 | if (ret > 0) | 61 | if (ret > 0) |
63 | ret &= 0xff; | 62 | ret &= 0xff; |
64 | 63 | ||
@@ -144,10 +143,8 @@ static struct max8952_platform_data *max8952_parse_dt(struct device *dev) | |||
144 | int i; | 143 | int i; |
145 | 144 | ||
146 | pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL); | 145 | pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL); |
147 | if (!pd) { | 146 | if (!pd) |
148 | dev_err(dev, "Failed to allocate platform data\n"); | ||
149 | return NULL; | 147 | return NULL; |
150 | } | ||
151 | 148 | ||
152 | pd->gpio_vid0 = of_get_named_gpio(np, "max8952,vid-gpios", 0); | 149 | pd->gpio_vid0 = of_get_named_gpio(np, "max8952,vid-gpios", 0); |
153 | pd->gpio_vid1 = of_get_named_gpio(np, "max8952,vid-gpios", 1); | 150 | 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, | |||
199 | struct max8952_platform_data *pdata = dev_get_platdata(&client->dev); | 196 | struct max8952_platform_data *pdata = dev_get_platdata(&client->dev); |
200 | struct regulator_config config = { }; | 197 | struct regulator_config config = { }; |
201 | struct max8952_data *max8952; | 198 | struct max8952_data *max8952; |
199 | struct regulator_dev *rdev; | ||
202 | 200 | ||
203 | int ret = 0, err = 0; | 201 | int ret = 0, err = 0; |
204 | 202 | ||
@@ -219,10 +217,9 @@ static int max8952_pmic_probe(struct i2c_client *client, | |||
219 | return -ENOMEM; | 217 | return -ENOMEM; |
220 | 218 | ||
221 | max8952->client = client; | 219 | max8952->client = client; |
222 | max8952->dev = &client->dev; | ||
223 | max8952->pdata = pdata; | 220 | max8952->pdata = pdata; |
224 | 221 | ||
225 | config.dev = max8952->dev; | 222 | config.dev = &client->dev; |
226 | config.init_data = pdata->reg_data; | 223 | config.init_data = pdata->reg_data; |
227 | config.driver_data = max8952; | 224 | config.driver_data = max8952; |
228 | config.of_node = client->dev.of_node; | 225 | config.of_node = client->dev.of_node; |
@@ -231,11 +228,11 @@ static int max8952_pmic_probe(struct i2c_client *client, | |||
231 | if (pdata->reg_data->constraints.boot_on) | 228 | if (pdata->reg_data->constraints.boot_on) |
232 | config.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH; | 229 | config.ena_gpio_flags |= GPIOF_OUT_INIT_HIGH; |
233 | 230 | ||
234 | max8952->rdev = regulator_register(®ulator, &config); | 231 | rdev = devm_regulator_register(&client->dev, ®ulator, &config); |
235 | 232 | ||
236 | if (IS_ERR(max8952->rdev)) { | 233 | if (IS_ERR(rdev)) { |
237 | ret = PTR_ERR(max8952->rdev); | 234 | ret = PTR_ERR(rdev); |
238 | dev_err(max8952->dev, "regulator init failed (%d)\n", ret); | 235 | dev_err(&client->dev, "regulator init failed (%d)\n", ret); |
239 | return ret; | 236 | return ret; |
240 | } | 237 | } |
241 | 238 | ||
@@ -263,7 +260,7 @@ static int max8952_pmic_probe(struct i2c_client *client, | |||
263 | err = 3; | 260 | err = 3; |
264 | 261 | ||
265 | if (err) { | 262 | if (err) { |
266 | dev_warn(max8952->dev, "VID0/1 gpio invalid: " | 263 | dev_warn(&client->dev, "VID0/1 gpio invalid: " |
267 | "DVS not available.\n"); | 264 | "DVS not available.\n"); |
268 | max8952->vid0 = 0; | 265 | max8952->vid0 = 0; |
269 | max8952->vid1 = 0; | 266 | max8952->vid1 = 0; |
@@ -274,7 +271,7 @@ static int max8952_pmic_probe(struct i2c_client *client, | |||
274 | /* Disable Pulldown of EN only */ | 271 | /* Disable Pulldown of EN only */ |
275 | max8952_write_reg(max8952, MAX8952_REG_CONTROL, 0x60); | 272 | max8952_write_reg(max8952, MAX8952_REG_CONTROL, 0x60); |
276 | 273 | ||
277 | dev_err(max8952->dev, "DVS modes disabled because VID0 and VID1" | 274 | dev_err(&client->dev, "DVS modes disabled because VID0 and VID1" |
278 | " do not have proper controls.\n"); | 275 | " do not have proper controls.\n"); |
279 | } else { | 276 | } else { |
280 | /* | 277 | /* |
@@ -321,9 +318,6 @@ static int max8952_pmic_remove(struct i2c_client *client) | |||
321 | { | 318 | { |
322 | struct max8952_data *max8952 = i2c_get_clientdata(client); | 319 | struct max8952_data *max8952 = i2c_get_clientdata(client); |
323 | struct max8952_platform_data *pdata = max8952->pdata; | 320 | struct max8952_platform_data *pdata = max8952->pdata; |
324 | struct regulator_dev *rdev = max8952->rdev; | ||
325 | |||
326 | regulator_unregister(rdev); | ||
327 | 321 | ||
328 | gpio_free(pdata->gpio_vid0); | 322 | gpio_free(pdata->gpio_vid0); |
329 | gpio_free(pdata->gpio_vid1); | 323 | gpio_free(pdata->gpio_vid1); |