OMAP: hwmod data: Add dev_attr and use in the host driver
authorKishore Kadiyala <kishore.kadiyala@ti.com>
Tue, 1 Mar 2011 21:12:56 +0000 (13:12 -0800)
committerTony Lindgren <tony@atomide.com>
Tue, 1 Mar 2011 21:12:56 +0000 (13:12 -0800)
Add a device attribute to hwmod data of omap2430, omap3, omap4.
Currently the device attribute holds information regarding dual volt MMC card
support by the controller which will be later passed to the host driver via
platform data.

Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Kishore Kadiyala <kishore.kadiyala@ti.com>
Acked-by: Benoit Cousson<b-cousson@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/omap_hwmod_2430_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/plat-omap/include/plat/mmc.h

index 0d239e3a9801766412301895a454786199558fc0..ca25fa2af78f982d5f06b22b5e786b60902600ca 100644 (file)
@@ -20,6 +20,7 @@
 #include <plat/gpio.h>
 #include <plat/mcspi.h>
 #include <plat/dmtimer.h>
+#include <plat/mmc.h>
 #include <plat/l3_2xxx.h>
 
 #include "omap_hwmod_common_data.h"
@@ -2204,6 +2205,10 @@ static struct omap_hwmod_ocp_if *omap2430_mmc1_slaves[] = {
        &omap2430_l4_core__mmc1,
 };
 
+static struct omap_mmc_dev_attr mmc1_dev_attr = {
+       .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
+};
+
 static struct omap_hwmod omap2430_mmc1_hwmod = {
        .name           = "mmc1",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
@@ -2223,6 +2228,7 @@ static struct omap_hwmod omap2430_mmc1_hwmod = {
                        .idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT,
                },
        },
+       .dev_attr       = &mmc1_dev_attr,
        .slaves         = omap2430_mmc1_slaves,
        .slaves_cnt     = ARRAY_SIZE(omap2430_mmc1_slaves),
        .class          = &omap2430_mmc_class,
index 207ccfbac2e4b43ef36a10889438c759a5cb2e6b..5fdcc1e9d4ace7435033771d476c38a669e7a247 100644 (file)
@@ -22,6 +22,7 @@
 #include <plat/l4_3xxx.h>
 #include <plat/i2c.h>
 #include <plat/gpio.h>
+#include <plat/mmc.h>
 #include <plat/smartreflex.h>
 #include <plat/mcspi.h>
 #include <plat/dmtimer.h>
@@ -2944,6 +2945,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_mmc1_slaves[] = {
        &omap3xxx_l4_core__mmc1,
 };
 
+static struct omap_mmc_dev_attr mmc1_dev_attr = {
+       .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
+};
+
 static struct omap_hwmod omap3xxx_mmc1_hwmod = {
        .name           = "mmc1",
        .mpu_irqs       = omap34xx_mmc1_mpu_irqs,
@@ -2962,6 +2967,7 @@ static struct omap_hwmod omap3xxx_mmc1_hwmod = {
                        .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
                },
        },
+       .dev_attr       = &mmc1_dev_attr,
        .slaves         = omap3xxx_mmc1_slaves,
        .slaves_cnt     = ARRAY_SIZE(omap3xxx_mmc1_slaves),
        .class          = &omap34xx_mmc_class,
index 12fcd0a082073b09cd57fde66681fabf31fce66b..9398c2db7258747c4d1c2dc5cbfd1c11bc363c42 100644 (file)
@@ -25,6 +25,7 @@
 #include <plat/gpio.h>
 #include <plat/dma.h>
 #include <plat/mcspi.h>
+#include <plat/mmc.h>
 
 #include "omap_hwmod_common_data.h"
 
@@ -3383,6 +3384,7 @@ static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
 };
 
 /* mmc1 */
+
 static struct omap_hwmod_irq_info omap44xx_mmc1_irqs[] = {
        { .irq = 83 + OMAP44XX_IRQ_GIC_START },
 };
@@ -3420,6 +3422,11 @@ static struct omap_hwmod_ocp_if *omap44xx_mmc1_slaves[] = {
        &omap44xx_l4_per__mmc1,
 };
 
+/* mmc1 dev_attr */
+static struct omap_mmc_dev_attr mmc1_dev_attr = {
+       .flags  = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
+};
+
 static struct omap_hwmod omap44xx_mmc1_hwmod = {
        .name           = "mmc1",
        .class          = &omap44xx_mmc_hwmod_class,
@@ -3433,6 +3440,7 @@ static struct omap_hwmod omap44xx_mmc1_hwmod = {
                        .clkctrl_reg = OMAP4430_CM_L3INIT_MMC1_CLKCTRL,
                },
        },
+       .dev_attr       = &mmc1_dev_attr,
        .slaves         = omap44xx_mmc1_slaves,
        .slaves_cnt     = ARRAY_SIZE(omap44xx_mmc1_slaves),
        .masters        = omap44xx_mmc1_masters,
index e5de5d452b3e0de57311ea2ea6af9c071fd3a120..a7afab095716af06a85505ff3cdbe3a47da5ed66 100644 (file)
 
 #define OMAP_MMC_MAX_SLOTS     2
 
+#define OMAP_HSMMC_SUPPORTS_DUAL_VOLT  BIT(1)
+
+struct omap_mmc_dev_attr {
+       u8 flags;
+};
+
 struct omap_mmc_platform_data {
        /* back-link to device */
        struct device *dev;
@@ -71,6 +77,9 @@ struct omap_mmc_platform_data {
 
        u64 dma_mask;
 
+       /* Integrating attributes from the omap_hwmod layer */
+       u8 controller_flags;
+
        /* Register offset deviation */
        u16 reg_offset;