aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd/arizona-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mfd/arizona-core.c')
-rw-r--r--drivers/mfd/arizona-core.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
index c80ab7910615..93024acc145e 100644
--- a/drivers/mfd/arizona-core.c
+++ b/drivers/mfd/arizona-core.c
@@ -478,6 +478,37 @@ static int arizona_runtime_resume(struct device *dev)
478 goto err; 478 goto err;
479 } 479 }
480 break; 480 break;
481 case WM5110:
482 case WM8280:
483 ret = arizona_wait_for_boot(arizona);
484 if (ret)
485 goto err;
486
487 if (arizona->external_dcvdd) {
488 ret = regmap_update_bits(arizona->regmap,
489 ARIZONA_ISOLATION_CONTROL,
490 ARIZONA_ISOLATE_DCVDD1, 0);
491 if (ret) {
492 dev_err(arizona->dev,
493 "Failed to connect DCVDD: %d\n", ret);
494 goto err;
495 }
496 } else {
497 /*
498 * As this is only called for the internal regulator
499 * (where we know voltage ranges available) it is ok
500 * to request an exact range.
501 */
502 ret = regulator_set_voltage(arizona->dcvdd,
503 1200000, 1200000);
504 if (ret < 0) {
505 dev_err(arizona->dev,
506 "Failed to set resume voltage: %d\n",
507 ret);
508 goto err;
509 }
510 }
511 break;
481 default: 512 default:
482 ret = arizona_wait_for_boot(arizona); 513 ret = arizona_wait_for_boot(arizona);
483 if (ret != 0) { 514 if (ret != 0) {
@@ -528,6 +559,27 @@ static int arizona_runtime_suspend(struct device *dev)
528 ret); 559 ret);
529 return ret; 560 return ret;
530 } 561 }
562 } else {
563 switch (arizona->type) {
564 case WM5110:
565 case WM8280:
566 /*
567 * As this is only called for the internal regulator
568 * (where we know voltage ranges available) it is ok
569 * to request an exact range.
570 */
571 ret = regulator_set_voltage(arizona->dcvdd,
572 1175000, 1175000);
573 if (ret < 0) {
574 dev_err(arizona->dev,
575 "Failed to set suspend voltage: %d\n",
576 ret);
577 return ret;
578 }
579 break;
580 default:
581 break;
582 }
531 } 583 }
532 584
533 regcache_cache_only(arizona->regmap, true); 585 regcache_cache_only(arizona->regmap, true);