From: ubuntu Date: Sat, 12 Mar 2011 06:42:04 +0000 (-0800) Subject: cwz set default regulator status X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6ba95bd59d175acc60f09b0e0e47fa6da3924510;p=firefly-linux-kernel-4.4.55.git cwz set default regulator status --- diff --git a/arch/arm/mach-rk29/board-rk29-fih.c b/arch/arm/mach-rk29/board-rk29-fih.c index 4dfe822ab728..af0a88f124e3 100755 --- a/arch/arm/mach-rk29/board-rk29-fih.c +++ b/arch/arm/mach-rk29/board-rk29-fih.c @@ -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, diff --git a/drivers/mfd/tps65910-core.c b/drivers/mfd/tps65910-core.c index 55e16e4c95ec..9ce24a227c33 100644 --- a/drivers/mfd/tps65910-core.c +++ b/drivers/mfd/tps65910-core.c @@ -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; } diff --git a/drivers/power/bq27510_battery.c b/drivers/power/bq27510_battery.c index 7e69a7ea309e..40991ba22c39 100755 --- a/drivers/power/bq27510_battery.c +++ b/drivers/power/bq27510_battery.c @@ -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, diff --git a/drivers/regulator/tps65910-regulator.c b/drivers/regulator/tps65910-regulator.c index 67d6c1de5347..faa194c4783f 100644 --- a/drivers/regulator/tps65910-regulator.c +++ b/drivers/regulator/tps65910-regulator.c @@ -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,