comparator. (see VMBCH_VSEL in TPS65910 datasheet)
- ti,en-gpio-sleep: enable sleep control for gpios
There should be 9 entries here, one for each gpio.
+- xxx-supply: Input voltage supply regulator.
+ Missing of these properties will be assume as there is no supply regulator
+ for that input pins and always powered on.
+ The valid input supply properties are:
+ tps65910:
+ vcc1-supply: VDD1 input.
+ vcc2-supply: VDD2 input.
+ vcc3-supply: VAUX33 and VMMC input.
+ vcc4-supply: VAUX1 and VAUX2 input.
+ vcc5-supply: VPLL and VDAC input.
+ vcc6-supply: VDIG1 and VDIG2 input.
+ vcc7-supply: VRTC input.
+ vccio-supply: VIO input.
+ tps65911:
+ vcc1-supply: VDD1 input.
+ vcc2-supply: VDD2 input.
+ vcc3-supply: LDO6, LDO7 and LDO8 input.
+ vcc4-supply: LDO5 input.
+ vcc5-supply: LDO3 and LDO4 input.
+ vcc6-supply: LDO1 and LDO2 input.
+ vcc7-supply: VRTC input.
+ vccio-supply: VIO input.
Regulator Optional properties:
- ti,regulator-ext-sleep-control: enable external sleep
ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
+ vcc7-supply = <®_parent>;
+ vcc1-supply = <®_parent>;
+
regulators {
#address-cells = <1>;
#size-cells = <0>;
struct tps_info {
const char *name;
+ const char *vin_name;
u8 n_voltages;
const unsigned int *voltage_table;
int enable_time_us;
static struct tps_info tps65910_regs[] = {
{
.name = "vrtc",
+ .vin_name = "vcc7",
.enable_time_us = 2200,
},
{
.name = "vio",
+ .vin_name = "vccio",
.n_voltages = ARRAY_SIZE(VIO_VSEL_table),
.voltage_table = VIO_VSEL_table,
.enable_time_us = 350,
},
{
.name = "vdd1",
+ .vin_name = "vcc1",
.enable_time_us = 350,
},
{
.name = "vdd2",
+ .vin_name = "vcc2",
.enable_time_us = 350,
},
{
},
{
.name = "vdig1",
+ .vin_name = "vcc6",
.n_voltages = ARRAY_SIZE(VDIG1_VSEL_table),
.voltage_table = VDIG1_VSEL_table,
.enable_time_us = 100,
},
{
.name = "vdig2",
+ .vin_name = "vcc6",
.n_voltages = ARRAY_SIZE(VDIG2_VSEL_table),
.voltage_table = VDIG2_VSEL_table,
.enable_time_us = 100,
},
{
.name = "vpll",
+ .vin_name = "vcc5",
.n_voltages = ARRAY_SIZE(VPLL_VSEL_table),
.voltage_table = VPLL_VSEL_table,
.enable_time_us = 100,
},
{
.name = "vdac",
+ .vin_name = "vcc5",
.n_voltages = ARRAY_SIZE(VDAC_VSEL_table),
.voltage_table = VDAC_VSEL_table,
.enable_time_us = 100,
},
{
.name = "vaux1",
+ .vin_name = "vcc4",
.n_voltages = ARRAY_SIZE(VAUX1_VSEL_table),
.voltage_table = VAUX1_VSEL_table,
.enable_time_us = 100,
},
{
.name = "vaux2",
+ .vin_name = "vcc4",
.n_voltages = ARRAY_SIZE(VAUX2_VSEL_table),
.voltage_table = VAUX2_VSEL_table,
.enable_time_us = 100,
},
{
.name = "vaux33",
+ .vin_name = "vcc3",
.n_voltages = ARRAY_SIZE(VAUX33_VSEL_table),
.voltage_table = VAUX33_VSEL_table,
.enable_time_us = 100,
},
{
.name = "vmmc",
+ .vin_name = "vcc3",
.n_voltages = ARRAY_SIZE(VMMC_VSEL_table),
.voltage_table = VMMC_VSEL_table,
.enable_time_us = 100,
static struct tps_info tps65911_regs[] = {
{
.name = "vrtc",
+ .vin_name = "vcc7",
.enable_time_us = 2200,
},
{
.name = "vio",
+ .vin_name = "vccio",
.n_voltages = ARRAY_SIZE(VIO_VSEL_table),
.voltage_table = VIO_VSEL_table,
.enable_time_us = 350,
},
{
.name = "vdd1",
+ .vin_name = "vcc1",
.n_voltages = 73,
.enable_time_us = 350,
},
{
.name = "vdd2",
+ .vin_name = "vcc2",
.n_voltages = 73,
.enable_time_us = 350,
},
},
{
.name = "ldo1",
+ .vin_name = "vcc6",
.n_voltages = 47,
.enable_time_us = 420,
},
{
.name = "ldo2",
+ .vin_name = "vcc6",
.n_voltages = 47,
.enable_time_us = 420,
},
{
.name = "ldo3",
+ .vin_name = "vcc5",
.n_voltages = 24,
.enable_time_us = 230,
},
{
.name = "ldo4",
+ .vin_name = "vcc5",
.n_voltages = 47,
.enable_time_us = 230,
},
{
.name = "ldo5",
+ .vin_name = "vcc4",
.n_voltages = 24,
.enable_time_us = 230,
},
{
.name = "ldo6",
+ .vin_name = "vcc3",
.n_voltages = 24,
.enable_time_us = 230,
},
{
.name = "ldo7",
+ .vin_name = "vcc3",
.n_voltages = 24,
.enable_time_us = 230,
},
{
.name = "ldo8",
+ .vin_name = "vcc3",
.n_voltages = 24,
.enable_time_us = 230,
},
*tps65910_reg_matches = matches;
for (idx = 0; idx < count; idx++) {
+ struct tps_info *info = matches[idx].driver_data;
+ char in_supply[32]; /* 32 is max size of property name */
+
if (!matches[idx].init_data || !matches[idx].of_node)
continue;
"ti,regulator-ext-sleep-control", &prop);
if (!ret)
pmic_plat_data->regulator_ext_sleep_control[idx] = prop;
+
+ if (info->vin_name) {
+ snprintf(in_supply, 32, "%s-supply", info->vin_name);
+ if (of_find_property(np, in_supply, 0))
+ pmic_plat_data->input_supply[idx] =
+ info->vin_name;
+ }
}
return pmic_plat_data;
pmic->info[i] = info;
pmic->desc[i].name = info->name;
+ pmic->desc[i].supply_name = pmic_plat_data->input_supply[i];
pmic->desc[i].id = i;
pmic->desc[i].n_voltages = info->n_voltages;
pmic->desc[i].enable_time = info->enable_time_us;