From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 6.2/7] MMC: mmci: Enable Device Tree support for ux500
Date: Thu, 03 May 2012 16:03:34 +0100 [thread overview]
Message-ID: <4FA29E46.6040204@linaro.org> (raw)
In-Reply-To: <20120425185747.GC24211@n2100.arm.linux.org.uk>
Here you are Russell. Sorry for the delay.
From: Lee Jones <lee.jones@linaro.org>
Date: Mon, 16 Apr 2012 10:18:43 +0100
Subject: [PATCH 01/19] MMC: mmci: Enable Device Tree support for ux500
variants
Provide a means to collect attributes specific to ST-Ericsson's
ux500 variant series. This patch registers itself as the AMBA
driver to be called during the probe process. Once all
attributes and ux500 specifics are are collected the normal
mmci core probe is called.
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/mmc/host/mmci.c | 68 ++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 64 insertions(+), 4 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 032b847..23764ec 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -15,6 +15,7 @@
#include <linux/device.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/highmem.h>
@@ -1196,21 +1197,77 @@ static const struct mmc_host_ops mmci_ops = {
.get_cd = mmci_get_cd,
};
+#ifdef CONFIG_OF
+static void mmci_dt_populate_generic_pdata(struct device_node *np,
+ struct mmci_platform_data *pdata)
+{
+ int bus_width = 0;
+
+ of_property_read_u32(np, "wp-gpios", &pdata->gpio_wp);
+ if (!pdata->gpio_wp)
+ pdata->gpio_wp = -1;
+
+ of_property_read_u32(np, "cd-gpios", &pdata->gpio_cd);
+ if (!pdata->gpio_cd)
+ pdata->gpio_cd = -1;
+
+ if (of_get_property(np, "cd-inverted", NULL))
+ pdata->cd_invert = true;
+ else
+ pdata->cd_invert = false;
+
+ of_property_read_u32(np, "max-frequency", &pdata->f_max);
+ if (!pdata->f_max)
+ pr_warn("%s has no 'max-frequency' property\n", np->full_name);
+
+ if (of_get_property(np, "mmc-cap-mmc-highspeed", NULL))
+ pdata->capabilities |= MMC_CAP_MMC_HIGHSPEED;
+ if (of_get_property(np, "mmc-cap-sd-highspeed", NULL))
+ pdata->capabilities |= MMC_CAP_SD_HIGHSPEED;
+
+ of_property_read_u32(np, "bus-width", &bus_width);
+ switch (bus_width) {
+ case 0 :
+ /* No bus-width supplied. */
+ break;
+ case 4 :
+ pdata->capabilities |= MMC_CAP_4_BIT_DATA;
+ break;
+ case 8 :
+ pdata->capabilities |= MMC_CAP_8_BIT_DATA;
+ break;
+ default :
+ pr_warn("%s: Unsupported bus width\n", np->full_name);
+ }
+}
+#endif
+
static int __devinit mmci_probe(struct amba_device *dev,
const struct amba_id *id)
{
struct mmci_platform_data *plat = dev->dev.platform_data;
+ struct device_node *np = dev->dev.of_node;
struct variant_data *variant = id->data;
struct mmci_host *host;
struct mmc_host *mmc;
- int ret;
+ int ret, freeplat = 0;
+
+ /* Must have platform data or Device Tree. */
+ if (!plat && !np) {
+ dev_err(&dev->dev, "No plat data or DT found\n");
+ return -EINVAL;
+ }
- /* must have platform data */
if (!plat) {
- ret = -EINVAL;
- goto out;
+ plat = kzalloc(sizeof(*plat), GFP_KERNEL);
+ if (!plat)
+ return -ENOMEM;
+ freeplat = 1;
}
+ if (np)
+ mmci_dt_populate_generic_pdata(np, plat);
+
ret = amba_request_regions(dev, DRIVER_NAME);
if (ret)
goto out;
@@ -1448,6 +1505,9 @@ static int __devinit mmci_probe(struct amba_device *dev,
rel_regions:
amba_release_regions(dev);
out:
+ if (freeplat)
+ kfree(plat);
+
return ret;
}
--
1.7.9.5
next prev parent reply other threads:[~2012-05-03 15:03 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-13 14:05 [PATCH 0/7 v2] Next round of DT enablement for ux500/Snowball Lee Jones
2012-04-13 14:05 ` [PATCH 1/7] ARM: ux500: Rename the DT compatible entry for i2c devices on Snowball Lee Jones
2012-04-16 8:34 ` Linus Walleij
2012-04-13 14:05 ` [PATCH 2/7] ARM: ux500: Shorten Snowball's DT compatible gpio entry Lee Jones
2012-04-16 8:36 ` Linus Walleij
2012-04-16 9:00 ` Lee Jones
2012-04-13 14:05 ` [PATCH 3/7] drivers/gpio: gpio-nomadik: Apply Device Tree bindings Lee Jones
2012-04-16 8:40 ` Linus Walleij
2012-05-17 21:33 ` Grant Likely
2012-05-18 7:37 ` Lee Jones
2012-04-13 14:05 ` [PATCH 4/7] drivers/gpio: gpio-nomadik: Provide documentation for " Lee Jones
2012-04-13 14:59 ` Lee Jones
2012-04-16 8:43 ` Linus Walleij
2012-04-13 14:05 ` [PATCH 5/7] ARM: ux500: Rename gpio_keys in the Device Tree file Lee Jones
2012-04-13 14:05 ` [PATCH 6/7] MMC: mmci: Enable Device Tree support for ux500 variants Lee Jones
2012-04-13 14:42 ` Pawel Moll
2012-04-13 14:51 ` Arnd Bergmann
2012-04-13 14:54 ` Lee Jones
2012-04-13 15:05 ` Pawel Moll
2012-04-13 15:16 ` Lee Jones
2012-04-13 15:27 ` Pawel Moll
2012-04-16 8:48 ` Linus Walleij
2012-04-16 9:06 ` Lee Jones
2012-04-16 9:18 ` Linus Walleij
2012-04-16 9:25 ` [PATCH 6.1/7] ARM: ux500: Enable Device Tree support mmci for Snowball Lee Jones
2012-04-16 9:26 ` [PATCH 6.2/7] MMC: mmci: Enable Device Tree support for ux500 Lee Jones
2012-04-25 18:57 ` Russell King - ARM Linux
2012-04-30 8:25 ` Lee Jones
2012-05-03 15:03 ` Lee Jones [this message]
2012-05-03 15:12 ` Russell King - ARM Linux
2012-05-03 15:18 ` Lee Jones
2012-05-03 15:30 ` Lee Jones
2012-05-03 16:30 ` Russell King - ARM Linux
2012-05-03 16:38 ` Lee Jones
2012-05-03 16:45 ` Russell King - ARM Linux
2012-05-03 16:59 ` Lee Jones
2012-05-03 17:13 ` Mark Brown
2012-05-03 21:21 ` Lee Jones
2012-05-03 17:09 ` Chris Ball
2012-05-04 13:18 ` Lee Jones
2012-05-04 13:26 ` Chris Ball
2012-05-04 13:39 ` Lee Jones
2012-05-07 22:00 ` Paul Gortmaker
2012-05-08 11:19 ` Lee Jones
2012-05-08 12:18 ` Chris Ball
2012-05-08 12:59 ` Lee Jones
2012-05-08 14:38 ` Chris Ball
2012-05-08 23:58 ` Paul Gortmaker
2012-05-09 0:29 ` Chris Ball
2012-05-09 0:52 ` Paul Gortmaker
2012-06-04 10:14 ` Russell King - ARM Linux
2012-06-05 10:47 ` Lee Jones
2012-06-05 10:52 ` Russell King - ARM Linux
2012-06-05 12:59 ` Linus Walleij
2012-06-06 8:09 ` Lee Jones
2012-06-11 10:03 ` Lee Jones
2012-06-11 10:34 ` Linus Walleij
2012-04-13 14:05 ` [PATCH 7/7] MMC: mmci: Add required documentation for Device Tree bindings Lee Jones
2012-04-18 14:31 ` Pawel Moll
2012-04-18 15:01 ` Pawel Moll
2012-04-18 15:12 ` Lee Jones
2012-04-18 15:20 ` Chris Ball
2012-04-18 15:25 ` Lee Jones
2012-04-18 15:20 ` [PATCH 7/7 v2] " Lee Jones
2012-05-17 21:23 ` [PATCH 7/7] " Grant Likely
2012-04-13 14:21 ` [PATCH 0/7 v2] Next round of DT enablement for ux500/Snowball Arnd Bergmann
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=4FA29E46.6040204@linaro.org \
--to=lee.jones@linaro.org \
--cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).