summaryrefslogtreecommitdiffstats
path: root/drivers/mci/mci-core.c
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2017-03-16 08:04:41 -0700
committerSascha Hauer <s.hauer@pengutronix.de>2017-03-30 08:23:18 +0200
commit8aa89eaf2d2453bf63597b508ac22bca33889689 (patch)
tree7a2d465eccaf5fa7b46673b161f29210bed00e22 /drivers/mci/mci-core.c
parent04c88ff32c242bb520662b3a2074707c0aaac2c1 (diff)
downloadbarebox-8aa89eaf2d2453bf63597b508ac22bca33889689.tar.gz
barebox-8aa89eaf2d2453bf63597b508ac22bca33889689.tar.xz
mci: Allow parsing for explicit DT node
Convert mci_of_parse into mci_of_parse_node, a function that takes explicit deivce tree node pointer to be used for SD/MMC related properties extraction. Implement original mci_of_parse as a wrapper around the call to new function. This is useful for controllers who specify parameter like bus witdth and GPIOs as a part of main controller's child nodes (e.g. AT91 SoCs). Acked-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mci/mci-core.c')
-rw-r--r--drivers/mci/mci-core.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
index 055a5e2b06..928277a924 100644
--- a/drivers/mci/mci-core.c
+++ b/drivers/mci/mci-core.c
@@ -1843,20 +1843,18 @@ err_free:
return ret;
}
-void mci_of_parse(struct mci_host *host)
+void mci_of_parse_node(struct mci_host *host,
+ struct device_node *np)
{
- struct device_node *np;
u32 bus_width;
u32 dsr_val;
if (!IS_ENABLED(CONFIG_OFDEVICE))
return;
- if (!host->hw_dev || !host->hw_dev->device_node)
+ if (!host->hw_dev || !np)
return;
- np = host->hw_dev->device_node;
-
/* "bus-width" is translated to MMC_CAP_*_BIT_DATA flags */
if (of_property_read_u32(np, "bus-width", &bus_width) < 0) {
/* If bus-width is missing we get the driver's default, which
@@ -1897,6 +1895,11 @@ void mci_of_parse(struct mci_host *host)
host->non_removable = of_property_read_bool(np, "non-removable");
}
+void mci_of_parse(struct mci_host *host)
+{
+ return mci_of_parse_node(host, host->hw_dev->device_node);
+}
+
struct mci *mci_get_device_by_name(const char *name)
{
struct mci *mci;