aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/wm831x-dcdc.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-05-12 06:10:25 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-05-12 06:10:25 -0400
commit5949a7e9ab2db04edaeee7c368eb4c99131f4629 (patch)
tree13e8da5dc42cc62b9721659c41045d2c27c31cc3 /drivers/regulator/wm831x-dcdc.c
parent178e43aef2979525d7864daefd9499614e13800e (diff)
parent411a2df5090ccb88f4c3726e4951ebed579fec11 (diff)
Merge remote-tracking branch 'regulator/topic/drivers' into regulator-next
Conflicts: drivers/regulator/88pm8607.c (simple overlap with a bugfix in v3.4)
Diffstat (limited to 'drivers/regulator/wm831x-dcdc.c')
-rw-r--r--drivers/regulator/wm831x-dcdc.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/drivers/regulator/wm831x-dcdc.c b/drivers/regulator/wm831x-dcdc.c
index 318b9631155c..8710cfb0c19b 100644
--- a/drivers/regulator/wm831x-dcdc.c
+++ b/drivers/regulator/wm831x-dcdc.c
@@ -35,7 +35,7 @@
35#define WM831X_DCDC_MODE_IDLE 2 35#define WM831X_DCDC_MODE_IDLE 2
36#define WM831X_DCDC_MODE_STANDBY 3 36#define WM831X_DCDC_MODE_STANDBY 3
37 37
38#define WM831X_DCDC_MAX_NAME 6 38#define WM831X_DCDC_MAX_NAME 9
39 39
40/* Register offsets in control block */ 40/* Register offsets in control block */
41#define WM831X_DCDC_CONTROL_1 0 41#define WM831X_DCDC_CONTROL_1 0
@@ -50,6 +50,7 @@
50 50
51struct wm831x_dcdc { 51struct wm831x_dcdc {
52 char name[WM831X_DCDC_MAX_NAME]; 52 char name[WM831X_DCDC_MAX_NAME];
53 char supply_name[WM831X_DCDC_MAX_NAME];
53 struct regulator_desc desc; 54 struct regulator_desc desc;
54 int base; 55 int base;
55 struct wm831x *wm831x; 56 struct wm831x *wm831x;
@@ -402,23 +403,17 @@ static __devinit void wm831x_buckv_dvs_init(struct wm831x_dcdc *dcdc,
402 if (!pdata || !pdata->dvs_gpio) 403 if (!pdata || !pdata->dvs_gpio)
403 return; 404 return;
404 405
405 ret = gpio_request(pdata->dvs_gpio, "DCDC DVS");
406 if (ret < 0) {
407 dev_err(wm831x->dev, "Failed to get %s DVS GPIO: %d\n",
408 dcdc->name, ret);
409 return;
410 }
411
412 /* gpiolib won't let us read the GPIO status so pick the higher 406 /* gpiolib won't let us read the GPIO status so pick the higher
413 * of the two existing voltages so we take it as platform data. 407 * of the two existing voltages so we take it as platform data.
414 */ 408 */
415 dcdc->dvs_gpio_state = pdata->dvs_init_state; 409 dcdc->dvs_gpio_state = pdata->dvs_init_state;
416 410
417 ret = gpio_direction_output(pdata->dvs_gpio, dcdc->dvs_gpio_state); 411 ret = gpio_request_one(pdata->dvs_gpio,
412 dcdc->dvs_gpio_state ? GPIOF_INIT_HIGH : 0,
413 "DCDC DVS");
418 if (ret < 0) { 414 if (ret < 0) {
419 dev_err(wm831x->dev, "Failed to enable %s DVS GPIO: %d\n", 415 dev_err(wm831x->dev, "Failed to get %s DVS GPIO: %d\n",
420 dcdc->name, ret); 416 dcdc->name, ret);
421 gpio_free(pdata->dvs_gpio);
422 return; 417 return;
423 } 418 }
424 419
@@ -496,6 +491,11 @@ static __devinit int wm831x_buckv_probe(struct platform_device *pdev)
496 491
497 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1); 492 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1);
498 dcdc->desc.name = dcdc->name; 493 dcdc->desc.name = dcdc->name;
494
495 snprintf(dcdc->supply_name, sizeof(dcdc->supply_name),
496 "DC%dVDD", id + 1);
497 dcdc->desc.supply_name = dcdc->supply_name;
498
499 dcdc->desc.id = id; 499 dcdc->desc.id = id;
500 dcdc->desc.type = REGULATOR_VOLTAGE; 500 dcdc->desc.type = REGULATOR_VOLTAGE;
501 dcdc->desc.n_voltages = WM831X_BUCKV_MAX_SELECTOR + 1; 501 dcdc->desc.n_voltages = WM831X_BUCKV_MAX_SELECTOR + 1;
@@ -697,6 +697,11 @@ static __devinit int wm831x_buckp_probe(struct platform_device *pdev)
697 697
698 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1); 698 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1);
699 dcdc->desc.name = dcdc->name; 699 dcdc->desc.name = dcdc->name;
700
701 snprintf(dcdc->supply_name, sizeof(dcdc->supply_name),
702 "DC%dVDD", id + 1);
703 dcdc->desc.supply_name = dcdc->supply_name;
704
700 dcdc->desc.id = id; 705 dcdc->desc.id = id;
701 dcdc->desc.type = REGULATOR_VOLTAGE; 706 dcdc->desc.type = REGULATOR_VOLTAGE;
702 dcdc->desc.n_voltages = WM831X_BUCKP_MAX_SELECTOR + 1; 707 dcdc->desc.n_voltages = WM831X_BUCKP_MAX_SELECTOR + 1;