diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-05-12 06:10:25 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-05-12 06:10:25 -0400 |
commit | 5949a7e9ab2db04edaeee7c368eb4c99131f4629 (patch) | |
tree | 13e8da5dc42cc62b9721659c41045d2c27c31cc3 /drivers/regulator/wm831x-dcdc.c | |
parent | 178e43aef2979525d7864daefd9499614e13800e (diff) | |
parent | 411a2df5090ccb88f4c3726e4951ebed579fec11 (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.c | 27 |
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 | ||
51 | struct wm831x_dcdc { | 51 | struct 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; |