summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kurz <akurz@blala.de>2017-02-11 23:31:39 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2017-02-14 08:48:34 +0100
commitb225bbf295c92263adbcec2c385c5e8d83542c72 (patch)
treefb7c4a0abb6cbb33e64ba44423dcf914b9ab1d0a
parent45164aadfaccf3c138e6a0f3d93df05ddb3a52aa (diff)
downloadbarebox-b225bbf295c92263adbcec2c385c5e8d83542c72.tar.gz
i.MX: esdhc: fix imx-esdhc driver for non-OF boards
Commit 39f7a7ee8b68 ("i.MX: esdhc: Do not rely on CPU type for quirks") made imx-esdhc dependent on OF and broke probing for all non-OF boards. Since newer platforms like mx6 and vf610 are restricted to OF, the non-OF probing only needs to distinguish mx5 vs earlier SoC. Signed-off-by: Alexander Kurz <akurz@blala.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/mci/imx-esdhc.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/drivers/mci/imx-esdhc.c b/drivers/mci/imx-esdhc.c
index b2961cc..141d715 100644
--- a/drivers/mci/imx-esdhc.c
+++ b/drivers/mci/imx-esdhc.c
@@ -600,6 +600,9 @@ static int fsl_esdhc_detect(struct device_d *dev)
return mci_detect_card(&host->mci);
}
+static struct esdhc_soc_data esdhc_imx25_data;
+static struct esdhc_soc_data esdhc_imx53_data;
+
static int fsl_esdhc_probe(struct device_d *dev)
{
struct resource *iores;
@@ -613,9 +616,16 @@ static int fsl_esdhc_probe(struct device_d *dev)
host = xzalloc(sizeof(*host));
mci = &host->mci;
- host->socdata = of_device_get_match_data(dev);
- if (!host->socdata)
- return -EINVAL;
+ if (IS_ENABLED(CONFIG_OFDEVICE)) {
+ host->socdata = of_device_get_match_data(dev);
+ if (!host->socdata)
+ return -EINVAL;
+ } else {
+ if (cpu_is_mx50() || cpu_is_mx51() || cpu_is_mx53())
+ host->socdata = &esdhc_imx53_data;
+ else
+ host->socdata = &esdhc_imx25_data;
+ }
host->clk = clk_get(dev, "per");
if (IS_ERR(host->clk))
@@ -693,16 +703,6 @@ static struct esdhc_soc_data esdhc_imx25_data = {
.flags = ESDHC_FLAG_ENGCM07207,
};
-static struct esdhc_soc_data esdhc_imx50_data = {
- .flags = ESDHC_FLAG_MULTIBLK_NO_INT,
- /* .flags = 0, */
-};
-
-static struct esdhc_soc_data esdhc_imx51_data = {
- .flags = ESDHC_FLAG_MULTIBLK_NO_INT,
- /* .flags = 0, */
-};
-
static struct esdhc_soc_data esdhc_imx53_data = {
.flags = ESDHC_FLAG_MULTIBLK_NO_INT,
};
@@ -724,8 +724,8 @@ static struct esdhc_soc_data usdhc_imx6sx_data = {
static __maybe_unused struct of_device_id fsl_esdhc_compatible[] = {
{ .compatible = "fsl,imx25-esdhc", .data = &esdhc_imx25_data },
- { .compatible = "fsl,imx50-esdhc", .data = &esdhc_imx50_data },
- { .compatible = "fsl,imx51-esdhc", .data = &esdhc_imx51_data },
+ { .compatible = "fsl,imx50-esdhc", .data = &esdhc_imx53_data },
+ { .compatible = "fsl,imx51-esdhc", .data = &esdhc_imx53_data },
{ .compatible = "fsl,imx53-esdhc", .data = &esdhc_imx53_data },
{ .compatible = "fsl,imx6q-usdhc", .data = &usdhc_imx6q_data },
{ .compatible = "fsl,imx6sl-usdhc", .data = &usdhc_imx6sl_data },