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;