From: Jan Glauber <jglauber@cavium.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: David Daney <david.daney@cavium.com>,
Rob Herring <robh+dt@kernel.org>,
Frank Rowand <frowand.list@gmail.com>,
"Steven J . Hill" <Steven.Hill@cavium.com>,
linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org,
Jan Glauber <jglauber@cavium.com>
Subject: [PATCH 3/5] mmc: cavium: Prevent crash with incomplete DT
Date: Tue, 16 May 2017 11:36:53 +0200 [thread overview]
Message-ID: <20170516093655.17746-4-jglauber@cavium.com> (raw)
In-Reply-To: <20170516093655.17746-1-jglauber@cavium.com>
In case the DT specifies neither a regulator nor a gpio
for the shared power the driver will crash accessing the regulator.
Prevent the crash by checking the regulator before use.
As the MMC devices would likely not be usable without power
check for that condition during probe and print a warning.
Signed-off-by: Jan Glauber <jglauber@cavium.com>
---
drivers/mmc/host/cavium.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/host/cavium.c b/drivers/mmc/host/cavium.c
index 58b51ba..63f96dc 100644
--- a/drivers/mmc/host/cavium.c
+++ b/drivers/mmc/host/cavium.c
@@ -839,14 +839,14 @@ static void cvm_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
cvm_mmc_reset_bus(slot);
if (host->global_pwr_gpiod)
host->set_shared_power(host, 0);
- else
+ else if (mmc->supply.vmmc)
mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0);
break;
case MMC_POWER_UP:
if (host->global_pwr_gpiod)
host->set_shared_power(host, 1);
- else
+ else if (mmc->supply.vmmc)
mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd);
break;
}
@@ -976,6 +976,7 @@ static int cvm_mmc_of_parse(struct device *dev, struct cvm_mmc_slot *slot)
* Legacy Octeon firmware has no regulator entry, fall-back to
* a hard-coded voltage to get a sane OCR.
*/
+ mmc->supply.vmmc = NULL;
mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
} else {
ret = mmc_regulator_get_ocrmask(mmc->supply.vmmc);
@@ -983,6 +984,9 @@ static int cvm_mmc_of_parse(struct device *dev, struct cvm_mmc_slot *slot)
mmc->ocr_avail = ret;
}
+ if (!mmc->supply.vmmc && !slot->host->global_pwr_gpiod)
+ dev_warn(dev, "Missing power regulator or gpio, device may not work.\n");
+
/* Common MMC bindings */
ret = mmc_of_parse(mmc);
if (ret)
--
2.9.0.rc0.21.g7777322
next prev parent reply other threads:[~2017-05-16 9:36 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-16 9:36 [PATCH 0/5] mmc: cavium: bug fixes for 4.12 Jan Glauber
2017-05-16 9:36 ` [PATCH 1/5] mmc: cavium-octeon: Fix interrupt enable code Jan Glauber
2017-05-16 9:36 ` [PATCH 2/5] mmc: cavium-octeon: Use proper GPIO name for power control Jan Glauber
2017-05-16 9:36 ` Jan Glauber [this message]
2017-05-19 7:16 ` [PATCH 3/5] mmc: cavium: Prevent crash with incomplete DT Ulf Hansson
2017-05-16 9:36 ` [PATCH 4/5] of/platform: Make of_platform_device_destroy globally visible Jan Glauber
2017-05-16 9:36 ` [PATCH 5/5] mmc: cavium: Fix probing race with regulator Jan Glauber
2017-05-16 13:07 ` Rob Herring
2017-05-16 13:38 ` Jan Glauber
2017-05-16 14:37 ` Rob Herring
2017-05-16 16:50 ` David Daney
2017-05-17 13:41 ` Jan Glauber
2017-05-18 9:39 ` Jan Glauber
2017-05-18 12:55 ` Rob Herring
2017-05-19 8:30 ` [PATCH 0/5] mmc: cavium: bug fixes for 4.12 Ulf Hansson
2017-05-19 10:42 ` Jan Glauber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170516093655.17746-4-jglauber@cavium.com \
--to=jglauber@cavium.com \
--cc=Steven.Hill@cavium.com \
--cc=david.daney@cavium.com \
--cc=frowand.list@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=robh+dt@kernel.org \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox