diff options
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/arizona-core.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index dcee48fc2e06..41767f7239bb 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -814,7 +814,9 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) int count = 0; pdata->reset = of_get_named_gpio(arizona->dev->of_node, "wlf,reset", 0); - if (pdata->reset < 0) { + if (pdata->reset == -EPROBE_DEFER) { + return pdata->reset; + } else if (pdata->reset < 0) { dev_err(arizona->dev, "Reset GPIO missing/malformed: %d\n", pdata->reset); @@ -1041,11 +1043,14 @@ int arizona_dev_init(struct arizona *arizona) dev_set_drvdata(arizona->dev, arizona); mutex_init(&arizona->clk_lock); - if (dev_get_platdata(arizona->dev)) + if (dev_get_platdata(arizona->dev)) { memcpy(&arizona->pdata, dev_get_platdata(arizona->dev), sizeof(arizona->pdata)); - else - arizona_of_get_core_pdata(arizona); + } else { + ret = arizona_of_get_core_pdata(arizona); + if (ret < 0) + return ret; + } BUILD_BUG_ON(ARRAY_SIZE(arizona->mclk) != ARRAY_SIZE(mclk_name)); for (i = 0; i < ARRAY_SIZE(arizona->mclk); i++) { |