cwz set default regulator status
authorubuntu <superboy@ubuntu.(none)>
Sat, 12 Mar 2011 06:42:04 +0000 (22:42 -0800)
committerubuntu <superboy@ubuntu.(none)>
Sat, 12 Mar 2011 06:42:04 +0000 (22:42 -0800)
arch/arm/mach-rk29/board-rk29-fih.c
drivers/mfd/tps65910-core.c
drivers/power/bq27510_battery.c
drivers/regulator/tps65910-regulator.c

index 4dfe822ab7287533b28c150f6552fea2521b072c..af0a88f124e33cb8fbc7429b9714ac1a918e2c71 100755 (executable)
@@ -431,6 +431,31 @@ static struct mpu3050_platform_data mpu3050_data = {
 };
 #endif
 
+#if defined (CONFIG_BATTERY_BQ27510)
+#define DC_CHECK_PIN RK29_PIN4_PA1
+#define LI_LION_BAT_NUM 2
+static int bq27510_init_dc_check_pin(void)
+{ 
+       if(gpio_request(DC_CHECK_PIN,"dc_check") != 0)
+       {      
+               gpio_free(DC_CHECK_PIN);      
+               printk("bq27510 init dc check pin request error\n");      
+    return -EIO;    
+       } 
+       gpio_direction_input(DC_CHECK_PIN); 
+       return 0;
+}
+struct bq27510_platform_data bq27510_info = 
+{ 
+               .init_dc_check_pin = bq27510_init_dc_check_pin, 
+    .dc_check_pin =  DC_CHECK_PIN, 
+    .bat_num = LI_LION_BAT_NUM,
+};
+#endif
+
+
 /*****************************************************************************************
 * TI TPS65910 voltage regulator devices 
 ******************************************************************************************/
@@ -510,7 +535,7 @@ static struct regulator_init_data rk29_regulator_vaux1 = {
        .constraints = {
                .min_uV = 2800000,
                .max_uV = 2800000,
-               .valid_modes_mask = REGULATOR_MODE_STANDBY,
+               .valid_modes_mask = REGULATOR_MODE_NORMAL,
                .valid_ops_mask = REGULATOR_CHANGE_STATUS,
                .apply_uV = true,
        },
@@ -590,7 +615,7 @@ static struct regulator_init_data rk29_regulator_vmmc = {
        .constraints = {
                .min_uV = 3000000,
                .max_uV = 3000000,
-               .valid_modes_mask = REGULATOR_MODE_STANDBY,
+               .valid_modes_mask = REGULATOR_MODE_NORMAL,
                .valid_ops_mask = REGULATOR_CHANGE_STATUS,
                .apply_uV = true,
        },
@@ -631,7 +656,7 @@ static struct regulator_init_data rk29_regulator_vdig1 = {
        .constraints = {
                .min_uV = 2700000,
                .max_uV = 2700000,
-               .valid_modes_mask = REGULATOR_MODE_STANDBY,
+               .valid_modes_mask = REGULATOR_MODE_NORMAL,
                .valid_ops_mask = REGULATOR_CHANGE_STATUS,
                .apply_uV = true,
        },
@@ -778,7 +803,6 @@ struct tps65910_platform_data rk29_tps65910_data = {
        .vpll           = &rk29_regulator_vpll,
        .board_tps65910_config = rk29_tps65910_config,
 };
-
 #endif /* CONFIG_TPS65910_CORE */
 
 
@@ -884,6 +908,7 @@ static struct i2c_board_info __initdata board_i2c0_devices[] = {
                .type                   = "bq27510",
                .addr           = 0x55,
                .flags                  = 0,
+               .platform_data  = &bq27510_info,
        },
 #endif
 #if defined (CONFIG_RTC_HYM8563)
@@ -983,7 +1008,7 @@ static struct i2c_board_info __initdata board_i2c2_devices[] = {
 #endif
 #if defined (CONFIG_TPS65910_CORE)
        {
-        .type           = "tps65910",
+        .type           = "tps659102",
         .addr           = TPS65910_I2C_ID0,
         .flags          = 0,
         .irq            = TPS65910_HOST_IRQ,
@@ -2285,7 +2310,7 @@ static void __init machine_rk29_board_init(void)
 
        spi_register_board_info(board_spi_devices, ARRAY_SIZE(board_spi_devices));
         
-        rk29sdk_init_wifi_mem();
+    rk29sdk_init_wifi_mem();
 }
 
 static void __init machine_rk29_fixup(struct machine_desc *desc, struct tag *tags,
index 55e16e4c95ec535b7ba9d88e7a13f4fcd28f3858..9ce24a227c333992e201c13746e6cdd1d559973d 100644 (file)
@@ -44,7 +44,7 @@
 #define TPS65910_SPEED         400 * 1000
 
 
-#define DRIVER_NAME                    "tps65910"
+#define DRIVER_NAME                    "tps659102"
 
 #if defined(CONFIG_GPIO_TPS65910)
 #define tps65910_has_gpio()            true
@@ -374,6 +374,7 @@ struct device *add_regulator_linked(int num, struct regulator_init_data *pdata,
                pdata->consumer_supplies = consumers;
                pdata->num_consumer_supplies = num_consumers;
        }
+       
        return add_numbered_child(TPS65910_GENERAL, "tps65910_regulator", num,
                        pdata, sizeof(*pdata), false, TPS65910_HOST_IRQ);
 }
@@ -392,6 +393,8 @@ add_children(struct tps65910_platform_data *pdata, unsigned long features)
 
        struct platform_device  *pdev = NULL;
 
+       DBG("cwz add_children: tps65910 add children.\n");
+
        if (tps65910_has_gpio() && (pdata->gpio != NULL)) {
 
                pdev = platform_device_alloc("tps65910_gpio", -1);
@@ -419,7 +422,6 @@ add_children(struct tps65910_platform_data *pdata, unsigned long features)
        }
 
        if (tps65910_has_regulator()) {
-
                child = add_regulator(TPS65910_VIO, pdata->vio);
                if (IS_ERR(child))
                        return PTR_ERR(child);
@@ -468,11 +470,10 @@ add_children(struct tps65910_platform_data *pdata, unsigned long features)
                if (IS_ERR(child))
                        return PTR_ERR(child);
        }
+       
        return 0;
-
 err:
        return -1;
-
 }
 
 static int tps65910_remove(struct i2c_client *client)
@@ -721,7 +722,20 @@ static int proc_tps65910_show(struct seq_file *s, void *v)
                seq_printf(s, "Get VCORE=%d(uV).\n", uV);
        }
 }
-#endif 
+#endif
+
+#if 1
+{
+    struct regulator *vldo;
+       
+       vldo = regulator_get(NULL, "vmmc");
+       if (vldo > NULL)
+       {               
+               seq_printf(s, "Disable VMMC.\n");
+               regulator_disable(vldo);
+       }
+}
+#endif
        return 0;
 }
 
index 7e69a7ea309e277173438bf76fc5e58fc40ed642..40991ba22c396193a01dd5863d41955bc9a0c6f1 100755 (executable)
@@ -561,7 +561,7 @@ static const struct i2c_device_id bq27510_id[] = {
 
 static struct i2c_driver bq27510_battery_driver = {
        .driver = {
-               .name = "bq27510-battery",
+               .name = "bq27510",
        },
        .probe = bq27510_battery_probe,
        .remove = bq27510_battery_remove,
index 67d6c1de5347e76aee052aa6db11f64c599f49a5..faa194c4783f397ef69d64926998bb96b64718dc 100644 (file)
@@ -250,6 +250,8 @@ static int tps65910reg_enable(struct regulator_dev *rdev)
        }
        val |= TPS65910_REG_OHP;
 
+       DBG("%s: enable regulator id=%d\n", __FUNCTION__, info->id);
+
        return tps65910reg_write(info, TPS65910_I2C_ID0, offset, val);
 }
 
@@ -272,6 +274,8 @@ static int tps65910reg_disable(struct regulator_dev *rdev)
        }
        val &= TPS65910_REG_OFF_00;
 
+       DBG("%s: disable regulator id=%d\n", __FUNCTION__, info->id);
+
        return tps65910reg_write(info, TPS65910_I2C_ID0, offset, val);
 }
 
@@ -655,20 +659,20 @@ static struct regulator_ops tps65910_fixed_ops = {
  */
 static struct tps65910reg_info tps65910_regs[] = {
                
-       TPS65910_ADJUSTABLE_LDO(VDD1, TPS65910_VDD1, 950, 1400, 1500),
-       TPS65910_FIXED_LDO(VDD2, TPS65910_VDD2, 1200, 1500),
-       TPS65910_FIXED_LDO(VIO, TPS65910_VIO, 3300, 3300),
+       TPS65910_ADJUSTABLE_LDO(VDD1, TPS65910_VDD1, 950, 1400, 4),
+       TPS65910_FIXED_LDO(VDD2, TPS65910_VDD2, 1200, 4),
+       TPS65910_FIXED_LDO(VIO, TPS65910_VIO, 3300, 1),
        
-       TPS65910_FIXED_LDO(VDD3, TPS65910_VDD3, 5000, 200),
+       TPS65910_FIXED_LDO(VDD3, TPS65910_VDD3, 5000, 0),
        
-       TPS65910_FIXED_LDO(VDIG1, TPS65910_VDIG1, 2700, 2700),
-       TPS65910_FIXED_LDO(VDIG2, TPS65910_VDIG2, 1200, 1800),
-       TPS65910_FIXED_LDO(VAUX33, TPS65910_VAUX33, 3300, 3300),
-       TPS65910_FIXED_LDO(VMMC, TPS65910_VMMC, 3000, 3300),
-       TPS65910_FIXED_LDO(VAUX1, TPS65910_VAUX1, 2800, 3300),
-       TPS65910_FIXED_LDO(VAUX2, TPS65910_VAUX1, 2900, 3300),
-       TPS65910_FIXED_LDO(VDAC, TPS65910_VDAC, 1800, 2850),
-       TPS65910_FIXED_LDO(VPLL, TPS65910_VPLL, 2500, 2500),
+       TPS65910_FIXED_LDO(VDIG1, TPS65910_VDIG1, 2700, 7),
+       TPS65910_FIXED_LDO(VDIG2, TPS65910_VDIG2, 1200, 2),
+       TPS65910_FIXED_LDO(VAUX33, TPS65910_VAUX33, 3300, 2),
+       TPS65910_FIXED_LDO(VMMC, TPS65910_VMMC, 3000, 7),
+       TPS65910_FIXED_LDO(VAUX1, TPS65910_VAUX1, 2800, 7),
+       TPS65910_FIXED_LDO(VAUX2, TPS65910_VAUX1, 2900, 6),
+       TPS65910_FIXED_LDO(VDAC, TPS65910_VDAC, 1800, 6),
+       TPS65910_FIXED_LDO(VPLL, TPS65910_VPLL, 2500, 2),
 };
 
 static int tps65910_regulator_probe(struct platform_device *pdev)
@@ -679,8 +683,6 @@ static int tps65910_regulator_probe(struct platform_device *pdev)
        struct regulation_constraints   *c;
        struct regulator_dev            *rdev;
 
-       
-       DBG("%s\n", __FUNCTION__);
        for (i = 0, info = NULL; i < ARRAY_SIZE(tps65910_regs); i++) {
                if (tps65910_regs[i].desc.id != pdev->id)
                        continue;
@@ -706,11 +708,11 @@ static int tps65910_regulator_probe(struct platform_device *pdev)
                | REGULATOR_CHANGE_STATUS;
 
        switch (pdev->id) {
-       case TPS65910_REG_VDD1:
        case TPS65910_REG_VIO:
+       case TPS65910_REG_VDD1:
        case TPS65910_REG_VDD2:
-       case TPS65910_REG_VPLL:
        case TPS65910_REG_VDIG2:
+       case TPS65910_REG_VPLL:
                c->always_on = true;
                break;
        default:
@@ -724,6 +726,9 @@ static int tps65910_regulator_probe(struct platform_device *pdev)
                                info->desc.name, PTR_ERR(rdev));
                return PTR_ERR(rdev);
        }
+       //      cwz add for init status, for regulator disable
+       rdev->use_count = 1;
+       
        platform_set_drvdata(pdev, rdev);
 
        DBG("%s: reguloter register OK.\n", __FUNCTION__);
@@ -736,6 +741,8 @@ static int __devexit tps65910_regulator_remove(struct platform_device *pdev)
        return 0;
 }
 
+
+MODULE_ALIAS("platform:tps65910_regulator");
 static struct platform_driver tps65910_regulator_driver = {
        .probe          = tps65910_regulator_probe,
        .remove         = tps65910_regulator_remove,