From: David Brownell <[email protected]>

For OMAP3430 SDP, link regulators to the appropriate MMC host adapters.

Note that when MMC1 is used in 8 bit mode (e.g. for an MMCplus card
or CE-ATA device), DAT4..DAT7 I/O uses a separate supply (VSIM).
But MMC_BUS_WIDTH_8 support isn't merged into the MMC framework.

Signed-off-by: David Brownell <[email protected]>
---
 arch/arm/mach-omap2/board-3430sdp.c |   25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -332,6 +332,18 @@ static struct twl4030_hsmmc_info mmc[] =
        {}      /* Terminator */
 };
 
+static struct regulator_consumer_supply sdp3430_vmmc1_supply = {
+       .supply                 = "vmmc",
+};
+
+static struct regulator_consumer_supply sdp3430_vsim_supply = {
+       .supply                 = "vmmc_dat4..7",
+};
+
+static struct regulator_consumer_supply sdp3430_vmmc2_supply = {
+       .supply                 = "vmmc",
+};
+
 static int sdp3430_twl_gpio_setup(struct device *dev,
                unsigned gpio, unsigned ngpio)
 {
@@ -342,6 +354,13 @@ static int sdp3430_twl_gpio_setup(struct
        mmc[1].gpio_cd = gpio + 1;
        twl4030_mmc_init(mmc);
 
+       /* link regulators to MMC adapters ... we "know" the
+        * regulators will be set up only *after* we return.
+        */
+       sdp3430_vmmc1_supply.dev = mmc[0].dev;
+       sdp3430_vsim_supply.dev = mmc[0].dev;
+       sdp3430_vmmc2_supply.dev = mmc[1].dev;
+
        /* gpio + 7 is "sub_lcd_en_bkl" (output/PWM1) */
        gpio_request(gpio + 7, "sub_lcd_en_bkl");
        gpio_direction_output(gpio + 7, 0);
@@ -517,6 +536,8 @@ static struct regulator_init_data sdp343
                                | REGULATOR_CHANGE_MODE
                                | REGULATOR_CHANGE_STATUS,
        },
+       .num_consumer_supplies  = 1,
+       .consumer_supplies      = &sdp3430_vmmc1_supply,
 };
 
 /* VMMC2 for MMC2 card */
@@ -530,6 +551,8 @@ static struct regulator_init_data sdp343
                .valid_ops_mask         = REGULATOR_CHANGE_MODE
                                        | REGULATOR_CHANGE_STATUS,
        },
+       .num_consumer_supplies  = 1,
+       .consumer_supplies      = &sdp3430_vmmc2_supply,
 };
 
 /* VSIM for OMAP VDD_MMC1A (i/o for DAT4..DAT7) */
@@ -541,6 +564,8 @@ static struct regulator_init_data sdp343
                                | REGULATOR_CHANGE_MODE
                                | REGULATOR_CHANGE_STATUS,
        },
+       .num_consumer_supplies  = 1,
+       .consumer_supplies      = &sdp3430_vsim_supply,
 };
 
 /* VDAC for DSS driving S-Video */
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to