diff options
-rw-r--r-- | drivers/regulator/rk808-regulator.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c index f00d6d89c7f4..f42952ead1bd 100644 --- a/drivers/regulator/rk808-regulator.c +++ b/drivers/regulator/rk808-regulator.c | |||
@@ -294,11 +294,10 @@ static struct of_regulator_match rk808_reg_matches[] = { | |||
294 | [RK808_ID_SWITCH2] = { .name = "SWITCH_REG2" }, | 294 | [RK808_ID_SWITCH2] = { .name = "SWITCH_REG2" }, |
295 | }; | 295 | }; |
296 | 296 | ||
297 | static int rk808_regulator_dts(struct rk808 *rk808) | 297 | static int rk808_regulator_dts(struct i2c_client *client, |
298 | struct rk808_board *pdata) | ||
298 | { | 299 | { |
299 | struct device_node *np, *reg_np; | 300 | struct device_node *np, *reg_np; |
300 | struct i2c_client *client = rk808->i2c; | ||
301 | struct rk808_board *pdata = rk808->pdata; | ||
302 | int i, ret; | 301 | int i, ret; |
303 | 302 | ||
304 | np = client->dev.of_node; | 303 | np = client->dev.of_node; |
@@ -335,7 +334,7 @@ static int rk808_regulator_probe(struct platform_device *pdev) | |||
335 | { | 334 | { |
336 | struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent); | 335 | struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent); |
337 | struct i2c_client *client = rk808->i2c; | 336 | struct i2c_client *client = rk808->i2c; |
338 | struct rk808_board *pdata = rk808->pdata; | 337 | struct rk808_board *pdata = dev_get_platdata(&client->dev); |
339 | struct regulator_config config = {}; | 338 | struct regulator_config config = {}; |
340 | struct regulator_dev *rk808_rdev; | 339 | struct regulator_dev *rk808_rdev; |
341 | struct regulator_init_data *reg_data; | 340 | struct regulator_init_data *reg_data; |
@@ -343,22 +342,15 @@ static int rk808_regulator_probe(struct platform_device *pdev) | |||
343 | int ret = 0; | 342 | int ret = 0; |
344 | 343 | ||
345 | if (!pdata) { | 344 | if (!pdata) { |
346 | dev_warn(&client->dev, "%s no pdata, create it\n", __func__); | ||
347 | pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); | 345 | pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); |
348 | if (!pdata) | 346 | if (!pdata) |
349 | return -ENOMEM; | 347 | return -ENOMEM; |
350 | } | 348 | } |
351 | 349 | ||
352 | ret = rk808_regulator_dts(rk808); | 350 | ret = rk808_regulator_dts(client, pdata); |
353 | if (ret) | 351 | if (ret) |
354 | return ret; | 352 | return ret; |
355 | 353 | ||
356 | rk808->num_regulators = RK808_NUM_REGULATORS; | ||
357 | rk808->rdev = devm_kzalloc(&pdev->dev, RK808_NUM_REGULATORS * | ||
358 | sizeof(struct regulator_dev *), GFP_KERNEL); | ||
359 | if (!rk808->rdev) | ||
360 | return -ENOMEM; | ||
361 | |||
362 | /* Instantiate the regulators */ | 354 | /* Instantiate the regulators */ |
363 | for (i = 0; i < RK808_NUM_REGULATORS; i++) { | 355 | for (i = 0; i < RK808_NUM_REGULATORS; i++) { |
364 | reg_data = pdata->rk808_init_data[i]; | 356 | reg_data = pdata->rk808_init_data[i]; |
@@ -382,7 +374,6 @@ static int rk808_regulator_probe(struct platform_device *pdev) | |||
382 | "failed to register %d regulator\n", i); | 374 | "failed to register %d regulator\n", i); |
383 | return PTR_ERR(rk808_rdev); | 375 | return PTR_ERR(rk808_rdev); |
384 | } | 376 | } |
385 | rk808->rdev[i] = rk808_rdev; | ||
386 | } | 377 | } |
387 | return 0; | 378 | return 0; |
388 | } | 379 | } |