twl_reg twl_reg.7: can't register VMMC2, -22

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
       I'm getting a twl_reg twl_reg.7: can't register VMMC2, -22 error. What could the reason be? 


[   14.808441] twl4030: PIH (irq 7) chaining IRQs 368..375
[   14.808471] twl4030: power (irq 373) chaining IRQs 376..383
[   14.808898] twl4030: gpio (irq 368) chaining IRQs 384..401
[   14.812438] regulator: VUSB1V5: 1500 mV normal standby
[   14.812957] regulator: VUSB1V8: 1800 mV normal standby
[   14.813507] regulator: VUSB3V1: 3100 mV normal standby
[   14.815338] twl4030_usb twl4030_usb: Initialized TWL4030 USB module
[   14.816192] regulator: VMMC1: 1850 <--> 3150 mV normal standby
[   14.816741] regulator: VDAC: 1800 mV normal standby
[   14.817291] regulator: VPLL2: 1800 mV normal standby
[   14.817932] regulator: VMMC2: 1850 mV normal standby
[   14.818206] twl_reg twl_reg.7: can't register VMMC2, -22
[   14.818237] twl_reg: probe of twl_reg.7 failed with error -22
[   14.818878] regulator: VSIM: 1800 <--> 3000 mV normal standby

Here are some code snippets for the relevant modifications:

diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index b23e9bb..04fc7ce 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c

@@ -332,6 +334,15 @@ static struct twl4030_hsmmc_info mmc[] = {
                .gpio_wp                = -EINVAL,
                .name                   = "MMC1"
        },
+   {
+               .mmc                    = 2,
+               .wires          = 4,
+               .gpio_cd                = -EINVAL,
+               .gpio_wp                = -EINVAL,
+               .nonremovable   = true,
+               .power_saving   = true,
+               .name                   = "wl1271",
+   },
        {}      /* Terminator */
 };
 
@@ -339,6 +350,11 @@ static struct regulator_consumer_supply beagle_vmmc1_supply = {
        .supply                 = "vmmc",
 };
 
+static struct regulator_consumer_supply beagle_vmmc2_supply = {
+       .supply                 = "vmmc",
+       .dev_name               = "mmci-omap-hs.1",
+};
+
 static struct regulator_consumer_supply beagle_vsim_supply = {
        .supply                 = "vmmc_aux",
 };
@@ -348,11 +364,18 @@ static struct gpio_led gpio_leds[];
 static int beagle_twl_gpio_setup(struct device *dev,
                unsigned gpio, unsigned ngpio)
 {
+  /* The MMC controller that is connected to the wl1271 device
+       * should have the card detect gpio disabled. This is
+       * achieved by initializing it with a negative value.
+       */
+       mmc[CONFIG_TIWLAN_MMC_CONTROLLER - 1].gpio_cd = -EINVAL;
+
        twl4030_mmc_init(mmc);
 
        /* link regulators to MMC adapters */
        beagle_vmmc1_supply.dev = mmc[0].dev;
        beagle_vsim_supply.dev = mmc[0].dev;
+       beagle_vmmc2_supply.dev = mmc[1].dev;
 
        return 0;
 }
@@ -383,6 +406,21 @@ static struct regulator_init_data beagle_vmmc1 = {
        .consumer_supplies      = &beagle_vmmc1_supply,
 };
 
+/* VMMC2 for MMC2 card */
+static struct regulator_init_data beagle_vmmc2 = {
+       .constraints = {
+               .min_uV                 = 1850000,
+               .max_uV                 = 1850000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask         = REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = 1,
+       .consumer_supplies      = &beagle_vmmc2_supply,
+};
+
 /* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
 static struct regulator_init_data beagle_vsim = {
        .constraints = {
@@ -454,6 +492,7 @@ static struct twl4030_platform_data beagle_twldata = {
        .codec          = &beagle_codec_data,
        .madc           = &beagle_madc_data,
        .vmmc1          = &beagle_vmmc1,
+       .vmmc2          = &beagle_vmmc2,
        .vsim           = &beagle_vsim,
        .vdac           = &beagle_vdac,
        .vpll2          = &beagle_vpll2,


Best regards,

Elvis Dowson


--
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


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux