>From 2f6a22e9091a09fb3cbb720356116035611636b2 Mon Sep 17 00:00:00 2001 From: Adrian Hunter <adrian.hunter@xxxxxxxxx> Date: Fri, 23 Jan 2009 11:45:49 +0200 Subject: [PATCH] OMAP: mmc-twl4030 support VSIM is VMMC2_IO eMMC has two voltage lines, one for I/O and one for the NAND core. This patch allows VSIM and VMMC2 respectively, to be used for those two. Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> --- arch/arm/mach-omap2/mmc-twl4030.c | 25 ++++++++++++++++++++++++- arch/arm/mach-omap2/mmc-twl4030.h | 1 + 2 files changed, 25 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c index aeaab5a..736b039 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.c +++ b/arch/arm/mach-omap2/mmc-twl4030.c @@ -52,6 +52,10 @@ #define VMMC_DEV_GRP_P1 0x20 +#define VSIM_DEV_GRP 0x37 +#define VSIM_18V 0x03 +#define VSIM_DEDICATED 0x3A + static u16 control_pbias_offset; static u16 control_devconf1_offset; @@ -61,6 +65,7 @@ static struct twl_mmc_controller { struct omap_mmc_platform_data *mmc; u8 twl_vmmc_dev_grp; u8 twl_mmc_dedicated; + bool vsim_18v; char name[HSMMC_NAME_LEN + 1]; } hsmmc[OMAP34XX_NR_MMC] = { { @@ -251,6 +256,19 @@ doit: ret = twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, vmmc, c->twl_mmc_dedicated); + if (ret) + return ret; + + if (c->vsim_18v) { + u8 vsim = vmmc ? VSIM_18V : 0; + + ret = twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, + dev_grp_val, VSIM_DEV_GRP); + if (ret) + return ret; + ret = twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, + vsim, VSIM_DEDICATED); + } return ret; } @@ -437,7 +455,12 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers) mmc->slots[0].set_power = twl_mmc2_set_power; if (c->transceiver) mmc->slots[0].ocr_mask = MMC2_OCR; - else + else if (c->vsim_18v) { + mmc->slots[0].ocr_mask = MMC_VDD_27_28 | + MMC_VDD_28_29 | MMC_VDD_29_30 | + MMC_VDD_30_31 | MMC_VDD_31_32; + twl->vsim_18v = true; + } else mmc->slots[0].ocr_mask = MMC_VDD_165_195; break; case 3: diff --git a/arch/arm/mach-omap2/mmc-twl4030.h b/arch/arm/mach-omap2/mmc-twl4030.h index 21d3572..087a969 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.h +++ b/arch/arm/mach-omap2/mmc-twl4030.h @@ -11,6 +11,7 @@ struct twl4030_hsmmc_info { u8 wires; /* 1/4/8 wires */ bool transceiver; /* MMC-2 option */ bool ext_clock; /* use external pin for input clock */ + bool vsim_18v; /* MMC-2 option */ int gpio_cd; /* or -EINVAL */ int gpio_wp; /* or -EINVAL */ struct device *dev; /* returned: pointer to mmc adapter */ -- 1.5.6.3 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html