Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1487443

[PATCH 2/2] mfd: arizona: Handle probe deferral for reset GPIO

From Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Newsgroups linux.kernel
Subject [PATCH 2/2] mfd: arizona: Handle probe deferral for reset GPIO
Date 2016-09-20 17:40 +0200
Message-ID <sjvjk-4Q2-5@gated-at.bofh.it> (permalink)
References <sjvjk-4Q2-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


The Arizona CODECs will generally function correctly without a reset line
although it is strongly advised to have one, as such we do allow the system
to boot if the reset gpio is missing or incorrectly specified.  However
we should fail probe if we get a probe deferral request, this patch adds
handling for this case.

Reported-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
---
 drivers/mfd/arizona-core.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
index f466f29..d18f3b1 100644
--- a/drivers/mfd/arizona-core.c
+++ b/drivers/mfd/arizona-core.c
@@ -813,7 +813,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);
 
@@ -1011,11 +1013,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++) {
-- 
2.1.4

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH 1/2] mfd: arizona: Remove arizona_of_get_named_gpio helper function Charles Keepax <ckeepax@opensource.wolfsonmicro.com> - 2016-09-20 17:40 +0200
  [PATCH 2/2] mfd: arizona: Handle probe deferral for reset GPIO Charles Keepax <ckeepax@opensource.wolfsonmicro.com> - 2016-09-20 17:40 +0200

csiph-web