Skip to contentSkip to conversation

Pass n900 MMC slot names in pdata for legacy user space

PATCH New Tony Lindgren 4 participants 9 messages Apr 26, 2016 – May 2, 2016

Subsystems (5)
lore
Share & tools
lore

Tony Lindgren

author maintainer
#0 lore raw

cover Pass n900 MMC slot names in pdata for legacy user space

Hi all,

N900 needs the MMC slot names to work. Let's pass them in pdata for now to remove the last remaining blocker for removing omap3 legacy booting support for v4.8.

Then when we have a generic DT binding for the slot names, we can use that assuming it will work for the n900 legacy user space.

Regards,

Tony

Tony Lindgren (2):
ARM: OMAP2+: n900 needs MMC slot names for legacy user space
mmc: omap_hsmmc: Check if MMC slot name is passed in pdata

 arch/arm/mach-omap2/pdata-quirks.c | 7 +++++++
 drivers/mmc/host/omap_hsmmc.c      | 6 +++++-
 2 files changed, 12 insertions(+), 1 deletion(-)
Signature · 1 line
2.8.1
author maintainer
#1 lore raw

PATCH 1/2 ARM: OMAP2+: n900 needs MMC slot names for legacy user space

Let's pass the slot names in pdata like the legacy code does. Once we have a generic DT binding for the slot names we can switch to that.

---
 arch/arm/mach-omap2/pdata-quirks.c | 7 +++++++
 1 file changed, 7 insertions(+)
arch/arm/mach-omap2/pdata-quirks.c +7 -0
index a935d28..cfaf45f 100644
@@ -21,6 +21,7 @@
 #include <linux/regulator/fixed.h>
 
 #include <linux/platform_data/pinctrl-single.h>
+#include <linux/platform_data/hsmmc-omap.h>
 #include <linux/platform_data/iommu-omap.h>
 #include <linux/platform_data/wkup_m3.h>
 #include <linux/platform_data/pwm_omap_dmtimer.h>
@@ -35,6 +36,8 @@
 #include "soc.h"
 #include "hsmmc.h"
 
+static struct __maybe_unused omap_hsmmc_platform_data mmc_pdata[2];
+
 struct pdata_init {
 	const char *compatible;
 	void (*fn)(void);
@@ -271,6 +274,8 @@ static struct platform_device omap3_rom_rng_device = {
 static void __init nokia_n900_legacy_init(void)
 {
 	hsmmc2_internal_input_clk();
+	mmc_pdata[0].name = "external";
+	mmc_pdata[1].name = "internal";
 
 	if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
 		if (IS_ENABLED(CONFIG_ARM_ERRATA_430973)) {
@@ -497,6 +502,8 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
 	OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002a00, "48002a00.pinmux", &pcs_pdata),
 	OF_DEV_AUXDATA("ti,omap2-iommu", 0x5d000000, "5d000000.mmu",
 		       &omap3_iommu_pdata),
+	OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x4809c000, "4809c000.mmc", &mmc_pdata[0]),
+	OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x480b4000, "480b4000.mmc", &mmc_pdata[1]),
 	/* Only on am3517 */
 	OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c030000, "davinci_mdio.0", NULL),
 	OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0",
Signature · 1 line
2.8.1
#2 lore raw

PATCH 1/2 ARM: OMAP2+: n900 needs MMC slot names for legacy user space

Quoted 3 lines · Tony Lindgren

Let's pass the slot names in pdata like the legacy code does. Once we have a generic DT binding for the slot names we can switch to that.

I am not sure we ever will get a DT binding accepted for the slot name. It seem far from being a HW description. :-)

Instead, the long term and proper solution, is to enable userspace to be able to use UUID/PARTID instead.

Until that happens, I guess this will have to do.

Kind regards
Uffe

Quoted 48 lines
---
 arch/arm/mach-omap2/pdata-quirks.c | 7 +++++++
 1 file changed, 7 insertions(+)
arch/arm/mach-omap2/pdata-quirks.c +7 -1
index a935d28..cfaf45f 100644
@@ -21,6 +21,7 @@
 #include <linux/regulator/fixed.h>
 
 #include <linux/platform_data/pinctrl-single.h>
+#include <linux/platform_data/hsmmc-omap.h>
 #include <linux/platform_data/iommu-omap.h>
 #include <linux/platform_data/wkup_m3.h>
 #include <linux/platform_data/pwm_omap_dmtimer.h>
@@ -35,6 +36,8 @@
 #include "soc.h"
 #include "hsmmc.h"
 
+static struct __maybe_unused omap_hsmmc_platform_data mmc_pdata[2];
+
 struct pdata_init {
        const char *compatible;
        void (*fn)(void);
@@ -271,6 +274,8 @@ static struct platform_device omap3_rom_rng_device = {
 static void __init nokia_n900_legacy_init(void)
 {
        hsmmc2_internal_input_clk();
+       mmc_pdata[0].name = "external";
+       mmc_pdata[1].name = "internal";
 
        if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
                if (IS_ENABLED(CONFIG_ARM_ERRATA_430973)) {
@@ -497,6 +502,8 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
        OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002a00, "48002a00.pinmux", &pcs_pdata),
        OF_DEV_AUXDATA("ti,omap2-iommu", 0x5d000000, "5d000000.mmu",
                       &omap3_iommu_pdata),
+       OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x4809c000, "4809c000.mmc", &mmc_pdata[0]),
+       OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x480b4000, "480b4000.mmc", &mmc_pdata[1]),
        /* Only on am3517 */
        OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c030000, "davinci_mdio.0", NULL),
        OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0",
--

2.8.1

author maintainer
#3 lore raw

PATCH 1/2 ARM: OMAP2+: n900 needs MMC slot names for legacy user space

Quoted 7 lines · Ulf Hansson
Quoted 3 lines · Tony Lindgren

Let's pass the slot names in pdata like the legacy code does. Once we have a generic DT binding for the slot names we can switch to that.

I am not sure we ever will get a DT binding accepted for the slot name. It seem far from being a HW description. :-)

Hmm it does describe where on the the device the MMC is located though as in "external" or "internal".

Quoted 2 lines

Instead, the long term and proper solution, is to enable userspace to be able to use UUID/PARTID instead.

OK.

Quoted 1 line

Until that happens, I guess this will have to do.

Yeah especially as that has been working with the legacy booting for years.

Regards,

Tony

#4 lore raw

PATCH 1/2 ARM: OMAP2+: n900 needs MMC slot names for legacy user space

In reply to Tony Lindgren
Quoted 5 lines · Tony Lindgren

Let's pass the slot names in pdata like the legacy code does. Once we have a generic DT binding for the slot names we can switch to that.

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
author maintainer
#5 lore raw

PATCH 2/2 mmc: omap_hsmmc: Check if MMC slot name is passed in pdata

In reply to Tony Lindgren

The legacy user space for n900 relies on the MMC slot names. Let's check if those are passed in pdata and use them.

Then when we have a generic MMC slot name binding we can switch to use that assuming it works for the n900 legacy user space too.

As this makes the DT booting compatible with legacy booting, we should be able to start dropping omap3 legacy booting support in v4.8.

Cc Ulf Hansson <[email protected]>
Cc Kishon Vijay Abraham I <[email protected]>
Cc linux-mmc at vger.kernel.org

---

Ulf, this is safe to pick separately to the MMC tree if it looks acceptable to you.

 drivers/mmc/host/omap_hsmmc.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/mmc/host/omap_hsmmc.c +5 -1
index e9d75c6..3563321 100644
@@ -1946,13 +1946,17 @@ MODULE_DEVICE_TABLE(of, omap_mmc_of_match);
 
 static struct omap_hsmmc_platform_data *of_get_hsmmc_pdata(struct device *dev)
 {
-	struct omap_hsmmc_platform_data *pdata;
+	struct omap_hsmmc_platform_data *pdata, *legacy;
 	struct device_node *np = dev->of_node;
 
 	pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
 	if (!pdata)
 		return ERR_PTR(-ENOMEM); /* out of memory */
 
+	legacy = dev_get_platdata(dev);
+	if (legacy && legacy->name)
+		pdata->name = legacy->name;
+
 	if (of_find_property(np, "ti,dual-volt", NULL))
 		pdata->controller_flags |= OMAP_HSMMC_SUPPORTS_DUAL_VOLT;
 
Signature · 1 line
2.8.1
Applied
#6 lore raw

PATCH 2/2 mmc: omap_hsmmc: Check if MMC slot name is passed in pdata

Quoted 6 lines · Tony Lindgren

The legacy user space for n900 relies on the MMC slot names. Let's check if those are passed in pdata and use them.

Then when we have a generic MMC slot name binding we can switch to use that assuming it works for the n900 legacy user space too.

I dropped this section, because I don't think it will happen.

Quoted 9 lines

As this makes the DT booting compatible with legacy booting, we should be able to start dropping omap3 legacy booting support in v4.8.

Cc Ulf Hansson <[email protected]>
Cc Kishon Vijay Abraham I <[email protected]>
Cc linux-mmc at vger.kernel.org

Thanks, applied for next!

Kind regards
Uffe

Quoted 35 lines

---

Ulf, this is safe to pick separately to the MMC tree if it looks acceptable to you.

 drivers/mmc/host/omap_hsmmc.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/mmc/host/omap_hsmmc.c +5 -2
index e9d75c6..3563321 100644
@@ -1946,13 +1946,17 @@ MODULE_DEVICE_TABLE(of, omap_mmc_of_match);
 
 static struct omap_hsmmc_platform_data *of_get_hsmmc_pdata(struct device *dev)
 {
-       struct omap_hsmmc_platform_data *pdata;
+       struct omap_hsmmc_platform_data *pdata, *legacy;
        struct device_node *np = dev->of_node;
 
        pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return ERR_PTR(-ENOMEM); /* out of memory */
 
+       legacy = dev_get_platdata(dev);
+       if (legacy && legacy->name)
+               pdata->name = legacy->name;
+
        if (of_find_property(np, "ti,dual-volt", NULL))
                pdata->controller_flags |= OMAP_HSMMC_SUPPORTS_DUAL_VOLT;
 
--

2.8.1

author maintainer
#7 lore raw

PATCH 2/2 mmc: omap_hsmmc: Check if MMC slot name is passed in pdata

Quoted 9 lines · Ulf Hansson
Quoted 6 lines · Tony Lindgren

The legacy user space for n900 relies on the MMC slot names. Let's check if those are passed in pdata and use them.

Then when we have a generic MMC slot name binding we can switch to use that assuming it works for the n900 legacy user space too.

I dropped this section, because I don't think it will happen.

Yeah fine with me.

Quoted 1 line

Thanks, applied for next!

Thanks!

Tony

#8 lore raw

cover Pass n900 MMC slot names in pdata for legacy user space

In reply to Tony Lindgren

Hi,

Quoted 14 lines · Tony Lindgren

Hi all,

N900 needs the MMC slot names to work. Let's pass them in pdata for now to remove the last remaining blocker for removing omap3 legacy booting support for v4.8.

Then when we have a generic DT binding for the slot names, we can use that assuming it will work for the n900 legacy user space.

Regards,

Tony

Quoted 8 lines

Tony Lindgren (2):
ARM: OMAP2+: n900 needs MMC slot names for legacy user space
mmc: omap_hsmmc: Check if MMC slot name is passed in pdata

  arch/arm/mach-omap2/pdata-quirks.c | 7 +++++++
  drivers/mmc/host/omap_hsmmc.c      | 6 +++++-
  2 files changed, 12 insertions(+), 1 deletion(-)

For both patches, you may add:

Thanks,
Ivo