aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2430_data.c6
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_3xxx_data.c6
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c8
-rw-r--r--arch/arm/plat-omap/include/plat/mmc.h9
4 files changed, 29 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
index 0d239e3a980..ca25fa2af78 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
@@ -20,6 +20,7 @@
20#include <plat/gpio.h> 20#include <plat/gpio.h>
21#include <plat/mcspi.h> 21#include <plat/mcspi.h>
22#include <plat/dmtimer.h> 22#include <plat/dmtimer.h>
23#include <plat/mmc.h>
23#include <plat/l3_2xxx.h> 24#include <plat/l3_2xxx.h>
24 25
25#include "omap_hwmod_common_data.h" 26#include "omap_hwmod_common_data.h"
@@ -2204,6 +2205,10 @@ static struct omap_hwmod_ocp_if *omap2430_mmc1_slaves[] = {
2204 &omap2430_l4_core__mmc1, 2205 &omap2430_l4_core__mmc1,
2205}; 2206};
2206 2207
2208static struct omap_mmc_dev_attr mmc1_dev_attr = {
2209 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
2210};
2211
2207static struct omap_hwmod omap2430_mmc1_hwmod = { 2212static struct omap_hwmod omap2430_mmc1_hwmod = {
2208 .name = "mmc1", 2213 .name = "mmc1",
2209 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, 2214 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
@@ -2223,6 +2228,7 @@ static struct omap_hwmod omap2430_mmc1_hwmod = {
2223 .idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT, 2228 .idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT,
2224 }, 2229 },
2225 }, 2230 },
2231 .dev_attr = &mmc1_dev_attr,
2226 .slaves = omap2430_mmc1_slaves, 2232 .slaves = omap2430_mmc1_slaves,
2227 .slaves_cnt = ARRAY_SIZE(omap2430_mmc1_slaves), 2233 .slaves_cnt = ARRAY_SIZE(omap2430_mmc1_slaves),
2228 .class = &omap2430_mmc_class, 2234 .class = &omap2430_mmc_class,
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index 207ccfbac2e..5fdcc1e9d4a 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -22,6 +22,7 @@
22#include <plat/l4_3xxx.h> 22#include <plat/l4_3xxx.h>
23#include <plat/i2c.h> 23#include <plat/i2c.h>
24#include <plat/gpio.h> 24#include <plat/gpio.h>
25#include <plat/mmc.h>
25#include <plat/smartreflex.h> 26#include <plat/smartreflex.h>
26#include <plat/mcspi.h> 27#include <plat/mcspi.h>
27#include <plat/dmtimer.h> 28#include <plat/dmtimer.h>
@@ -2944,6 +2945,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_mmc1_slaves[] = {
2944 &omap3xxx_l4_core__mmc1, 2945 &omap3xxx_l4_core__mmc1,
2945}; 2946};
2946 2947
2948static struct omap_mmc_dev_attr mmc1_dev_attr = {
2949 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
2950};
2951
2947static struct omap_hwmod omap3xxx_mmc1_hwmod = { 2952static struct omap_hwmod omap3xxx_mmc1_hwmod = {
2948 .name = "mmc1", 2953 .name = "mmc1",
2949 .mpu_irqs = omap34xx_mmc1_mpu_irqs, 2954 .mpu_irqs = omap34xx_mmc1_mpu_irqs,
@@ -2962,6 +2967,7 @@ static struct omap_hwmod omap3xxx_mmc1_hwmod = {
2962 .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT, 2967 .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
2963 }, 2968 },
2964 }, 2969 },
2970 .dev_attr = &mmc1_dev_attr,
2965 .slaves = omap3xxx_mmc1_slaves, 2971 .slaves = omap3xxx_mmc1_slaves,
2966 .slaves_cnt = ARRAY_SIZE(omap3xxx_mmc1_slaves), 2972 .slaves_cnt = ARRAY_SIZE(omap3xxx_mmc1_slaves),
2967 .class = &omap34xx_mmc_class, 2973 .class = &omap34xx_mmc_class,
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index 12fcd0a0820..9398c2db725 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -25,6 +25,7 @@
25#include <plat/gpio.h> 25#include <plat/gpio.h>
26#include <plat/dma.h> 26#include <plat/dma.h>
27#include <plat/mcspi.h> 27#include <plat/mcspi.h>
28#include <plat/mmc.h>
28 29
29#include "omap_hwmod_common_data.h" 30#include "omap_hwmod_common_data.h"
30 31
@@ -3383,6 +3384,7 @@ static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
3383}; 3384};
3384 3385
3385/* mmc1 */ 3386/* mmc1 */
3387
3386static struct omap_hwmod_irq_info omap44xx_mmc1_irqs[] = { 3388static struct omap_hwmod_irq_info omap44xx_mmc1_irqs[] = {
3387 { .irq = 83 + OMAP44XX_IRQ_GIC_START }, 3389 { .irq = 83 + OMAP44XX_IRQ_GIC_START },
3388}; 3390};
@@ -3420,6 +3422,11 @@ static struct omap_hwmod_ocp_if *omap44xx_mmc1_slaves[] = {
3420 &omap44xx_l4_per__mmc1, 3422 &omap44xx_l4_per__mmc1,
3421}; 3423};
3422 3424
3425/* mmc1 dev_attr */
3426static struct omap_mmc_dev_attr mmc1_dev_attr = {
3427 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
3428};
3429
3423static struct omap_hwmod omap44xx_mmc1_hwmod = { 3430static struct omap_hwmod omap44xx_mmc1_hwmod = {
3424 .name = "mmc1", 3431 .name = "mmc1",
3425 .class = &omap44xx_mmc_hwmod_class, 3432 .class = &omap44xx_mmc_hwmod_class,
@@ -3433,6 +3440,7 @@ static struct omap_hwmod omap44xx_mmc1_hwmod = {
3433 .clkctrl_reg = OMAP4430_CM_L3INIT_MMC1_CLKCTRL, 3440 .clkctrl_reg = OMAP4430_CM_L3INIT_MMC1_CLKCTRL,
3434 }, 3441 },
3435 }, 3442 },
3443 .dev_attr = &mmc1_dev_attr,
3436 .slaves = omap44xx_mmc1_slaves, 3444 .slaves = omap44xx_mmc1_slaves,
3437 .slaves_cnt = ARRAY_SIZE(omap44xx_mmc1_slaves), 3445 .slaves_cnt = ARRAY_SIZE(omap44xx_mmc1_slaves),
3438 .masters = omap44xx_mmc1_masters, 3446 .masters = omap44xx_mmc1_masters,
diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h
index e5de5d452b3..a7afab09571 100644
--- a/arch/arm/plat-omap/include/plat/mmc.h
+++ b/arch/arm/plat-omap/include/plat/mmc.h
@@ -43,6 +43,12 @@
43 43
44#define OMAP_MMC_MAX_SLOTS 2 44#define OMAP_MMC_MAX_SLOTS 2
45 45
46#define OMAP_HSMMC_SUPPORTS_DUAL_VOLT BIT(1)
47
48struct omap_mmc_dev_attr {
49 u8 flags;
50};
51
46struct omap_mmc_platform_data { 52struct omap_mmc_platform_data {
47 /* back-link to device */ 53 /* back-link to device */
48 struct device *dev; 54 struct device *dev;
@@ -71,6 +77,9 @@ struct omap_mmc_platform_data {
71 77
72 u64 dma_mask; 78 u64 dma_mask;
73 79
80 /* Integrating attributes from the omap_hwmod layer */
81 u8 controller_flags;
82
74 /* Register offset deviation */ 83 /* Register offset deviation */
75 u16 reg_offset; 84 u16 reg_offset;
76 85