};
#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
******************************************************************************************/
.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,
},
.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,
},
.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,
},
.vpll = &rk29_regulator_vpll,
.board_tps65910_config = rk29_tps65910_config,
};
-
#endif /* CONFIG_TPS65910_CORE */
.type = "bq27510",
.addr = 0x55,
.flags = 0,
+ .platform_data = &bq27510_info,
},
#endif
#if defined (CONFIG_RTC_HYM8563)
#endif
#if defined (CONFIG_TPS65910_CORE)
{
- .type = "tps65910",
+ .type = "tps659102",
.addr = TPS65910_I2C_ID0,
.flags = 0,
.irq = TPS65910_HOST_IRQ,
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,
#define TPS65910_SPEED 400 * 1000
-#define DRIVER_NAME "tps65910"
+#define DRIVER_NAME "tps659102"
#if defined(CONFIG_GPIO_TPS65910)
#define tps65910_has_gpio() true
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);
}
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);
}
if (tps65910_has_regulator()) {
-
child = add_regulator(TPS65910_VIO, pdata->vio);
if (IS_ERR(child))
return PTR_ERR(child);
if (IS_ERR(child))
return PTR_ERR(child);
}
+
return 0;
-
err:
return -1;
-
}
static int tps65910_remove(struct i2c_client *client)
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;
}
}
val |= TPS65910_REG_OHP;
+ DBG("%s: enable regulator id=%d\n", __FUNCTION__, info->id);
+
return tps65910reg_write(info, TPS65910_I2C_ID0, offset, val);
}
}
val &= TPS65910_REG_OFF_00;
+ DBG("%s: disable regulator id=%d\n", __FUNCTION__, info->id);
+
return tps65910reg_write(info, TPS65910_I2C_ID0, offset, val);
}
*/
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)
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;
| 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:
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__);
return 0;
}
+
+MODULE_ALIAS("platform:tps65910_regulator");
static struct platform_driver tps65910_regulator_driver = {
.probe = tps65910_regulator_probe,
.remove = tps65910_regulator_remove,