|
@@ -504,6 +504,17 @@ int arizona_dev_init(struct arizona *arizona)
|
|
|
goto err_early;
|
|
|
}
|
|
|
|
|
|
+ if (arizona->pdata.reset) {
|
|
|
+ /* Start out with /RESET low to put the chip into reset */
|
|
|
+ ret = gpio_request_one(arizona->pdata.reset,
|
|
|
+ GPIOF_DIR_OUT | GPIOF_INIT_LOW,
|
|
|
+ "arizona /RESET");
|
|
|
+ if (ret != 0) {
|
|
|
+ dev_err(dev, "Failed to request /RESET: %d\n", ret);
|
|
|
+ goto err_early;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
ret = regulator_bulk_enable(arizona->num_core_supplies,
|
|
|
arizona->core_supplies);
|
|
|
if (ret != 0) {
|
|
@@ -518,18 +529,8 @@ int arizona_dev_init(struct arizona *arizona)
|
|
|
goto err_enable;
|
|
|
}
|
|
|
|
|
|
- if (arizona->pdata.reset) {
|
|
|
- /* Start out with /RESET low to put the chip into reset */
|
|
|
- ret = gpio_request_one(arizona->pdata.reset,
|
|
|
- GPIOF_DIR_OUT | GPIOF_INIT_LOW,
|
|
|
- "arizona /RESET");
|
|
|
- if (ret != 0) {
|
|
|
- dev_err(dev, "Failed to request /RESET: %d\n", ret);
|
|
|
- goto err_dcvdd;
|
|
|
- }
|
|
|
-
|
|
|
+ if (arizona->pdata.reset)
|
|
|
gpio_set_value_cansleep(arizona->pdata.reset, 1);
|
|
|
- }
|
|
|
|
|
|
regcache_cache_only(arizona->regmap, false);
|
|
|
|
|
@@ -769,10 +770,9 @@ err_irq:
|
|
|
arizona_irq_exit(arizona);
|
|
|
err_reset:
|
|
|
if (arizona->pdata.reset) {
|
|
|
- gpio_set_value_cansleep(arizona->pdata.reset, 1);
|
|
|
+ gpio_set_value_cansleep(arizona->pdata.reset, 0);
|
|
|
gpio_free(arizona->pdata.reset);
|
|
|
}
|
|
|
-err_dcvdd:
|
|
|
regulator_disable(arizona->dcvdd);
|
|
|
err_enable:
|
|
|
regulator_bulk_disable(arizona->num_core_supplies,
|