Archived
14
0
Fork 0

regulator: Add support for tps62362 and tps62363 in tps62360-regulator driver

According to the datasheet[1], tps62360 is register compatible with tps62362.
tps62361B is register compatible with tps62363.
Thus this patch adds support for tps62362 and tps62363.

[1] http://www.ti.com/litv/pdf/slvsau9b

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
Axel Lin 2012-04-02 18:19:28 +08:00 committed by Mark Brown
parent 7f52ba7791
commit d1cf4f65e1
2 changed files with 24 additions and 10 deletions

View file

@ -268,11 +268,11 @@ config REGULATOR_TPS6105X
audio amplifiers. audio amplifiers.
config REGULATOR_TPS62360 config REGULATOR_TPS62360
tristate "TI TPS62360 Power Regulator" tristate "TI TPS6236x Power Regulator"
depends on I2C depends on I2C
select REGMAP_I2C select REGMAP_I2C
help help
This driver supports TPS62360 voltage regulator chip. This This driver supports TPS6236x voltage regulator chip. This
regulator is meant for processor core supply. This chip is regulator is meant for processor core supply. This chip is
high-frequency synchronous step down dc-dc converter optimized high-frequency synchronous step down dc-dc converter optimized
for battery-powered portable applications. for battery-powered portable applications.

View file

@ -1,7 +1,7 @@
/* /*
* tps62360.c -- TI tps62360 * tps62360.c -- TI tps62360
* *
* Driver for processor core supply tps62360 and tps62361B * Driver for processor core supply tps62360, tps62361B, tps62362 and tps62363.
* *
* Copyright (c) 2012, NVIDIA Corporation. * Copyright (c) 2012, NVIDIA Corporation.
* *
@ -46,7 +46,7 @@
#define REG_RAMPCTRL 6 #define REG_RAMPCTRL 6
#define REG_CHIPID 8 #define REG_CHIPID 8
enum chips {TPS62360, TPS62361}; enum chips {TPS62360, TPS62361, TPS62362, TPS62363};
#define TPS62360_BASE_VOLTAGE 770 #define TPS62360_BASE_VOLTAGE 770
#define TPS62360_N_VOLTAGES 64 #define TPS62360_N_VOLTAGES 64
@ -296,14 +296,26 @@ static int __devinit tps62360_probe(struct i2c_client *client,
tps->vsel0_gpio = pdata->vsel0_gpio; tps->vsel0_gpio = pdata->vsel0_gpio;
tps->vsel1_gpio = pdata->vsel1_gpio; tps->vsel1_gpio = pdata->vsel1_gpio;
tps->dev = &client->dev; tps->dev = &client->dev;
tps->voltage_base = (id->driver_data == TPS62360) ?
TPS62360_BASE_VOLTAGE : TPS62361_BASE_VOLTAGE; switch (id->driver_data) {
tps->voltage_reg_mask = (id->driver_data == TPS62360) ? 0x3F : 0x7F; case TPS62360:
case TPS62362:
tps->voltage_base = TPS62360_BASE_VOLTAGE;
tps->voltage_reg_mask = 0x3F;
tps->desc.n_voltages = TPS62360_N_VOLTAGES;
break;
case TPS62361:
case TPS62363:
tps->voltage_base = TPS62361_BASE_VOLTAGE;
tps->voltage_reg_mask = 0x7F;
tps->desc.n_voltages = TPS62361_N_VOLTAGES;
break;
default:
return -ENODEV;
}
tps->desc.name = id->name; tps->desc.name = id->name;
tps->desc.id = 0; tps->desc.id = 0;
tps->desc.n_voltages = (id->driver_data == TPS62360) ?
TPS62360_N_VOLTAGES : TPS62361_N_VOLTAGES;
tps->desc.ops = &tps62360_dcdc_ops; tps->desc.ops = &tps62360_dcdc_ops;
tps->desc.type = REGULATOR_VOLTAGE; tps->desc.type = REGULATOR_VOLTAGE;
tps->desc.owner = THIS_MODULE; tps->desc.owner = THIS_MODULE;
@ -435,6 +447,8 @@ static void tps62360_shutdown(struct i2c_client *client)
static const struct i2c_device_id tps62360_id[] = { static const struct i2c_device_id tps62360_id[] = {
{.name = "tps62360", .driver_data = TPS62360}, {.name = "tps62360", .driver_data = TPS62360},
{.name = "tps62361", .driver_data = TPS62361}, {.name = "tps62361", .driver_data = TPS62361},
{.name = "tps62362", .driver_data = TPS62362},
{.name = "tps62363", .driver_data = TPS62363},
{}, {},
}; };
@ -464,5 +478,5 @@ static void __exit tps62360_cleanup(void)
module_exit(tps62360_cleanup); module_exit(tps62360_cleanup);
MODULE_AUTHOR("Laxman Dewangan <ldewangan@nvidia.com>"); MODULE_AUTHOR("Laxman Dewangan <ldewangan@nvidia.com>");
MODULE_DESCRIPTION("TPS62360 voltage regulator driver"); MODULE_DESCRIPTION("TPS6236x voltage regulator driver");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");