struct regulator_dev *rdev;
        struct palmas_reg_init *reg_init;
        struct palmas_regs_info *rinfo;
+       struct regulator_desc *desc;
 
        for (id = ddata->ldo_begin; id < ddata->max_reg; id++) {
                if (pdata && pdata->reg_init[id])
                 */
 
                /* Register the regulators */
-               pmic->desc[id].name = rinfo->name;
-               pmic->desc[id].id = id;
-               pmic->desc[id].type = REGULATOR_VOLTAGE;
-               pmic->desc[id].owner = THIS_MODULE;
+               desc = &pmic->desc[id];
+               desc->name = rinfo->name;
+               desc->id = id;
+               desc->type = REGULATOR_VOLTAGE;
+               desc->owner = THIS_MODULE;
 
                if (id < PALMAS_REG_REGEN1) {
-                       pmic->desc[id].n_voltages = PALMAS_LDO_NUM_VOLTAGES;
+                       desc->n_voltages = PALMAS_LDO_NUM_VOLTAGES;
                        if (reg_init && reg_init->roof_floor)
-                               pmic->desc[id].ops =
-                                       &palmas_ops_ext_control_ldo;
+                               desc->ops = &palmas_ops_ext_control_ldo;
                        else
-                               pmic->desc[id].ops = &palmas_ops_ldo;
-                       pmic->desc[id].min_uV = 900000;
-                       pmic->desc[id].uV_step = 50000;
-                       pmic->desc[id].linear_min_sel = 1;
-                       pmic->desc[id].enable_time = 500;
-                       pmic->desc[id].vsel_reg =
-                                       PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
-                                                          rinfo->vsel_addr);
-                       pmic->desc[id].vsel_mask =
-                                       PALMAS_LDO1_VOLTAGE_VSEL_MASK;
-                       pmic->desc[id].enable_reg =
-                                       PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
-                                                          rinfo->ctrl_addr);
-                       pmic->desc[id].enable_mask =
-                                       PALMAS_LDO1_CTRL_MODE_ACTIVE;
+                               desc->ops = &palmas_ops_ldo;
+                       desc->min_uV = 900000;
+                       desc->uV_step = 50000;
+                       desc->linear_min_sel = 1;
+                       desc->enable_time = 500;
+                       desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
+                                                           rinfo->vsel_addr);
+                       desc->vsel_mask = PALMAS_LDO1_VOLTAGE_VSEL_MASK;
+                       desc->enable_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
+                                                             rinfo->ctrl_addr);
+                       desc->enable_mask = PALMAS_LDO1_CTRL_MODE_ACTIVE;
 
                        /* Check if LDO8 is in tracking mode or not */
                        if (pdata && (id == PALMAS_REG_LDO8) &&
                            pdata->enable_ldo8_tracking) {
                                palmas_enable_ldo8_track(pmic->palmas);
-                               pmic->desc[id].min_uV = 450000;
-                               pmic->desc[id].uV_step = 25000;
+                               desc->min_uV = 450000;
+                               desc->uV_step = 25000;
                        }
 
                        /* LOD6 in vibrator mode will have enable time 2000us */
                        if (pdata && pdata->ldo6_vibrator &&
                            (id == PALMAS_REG_LDO6))
-                               pmic->desc[id].enable_time = 2000;
+                               desc->enable_time = 2000;
                } else {
-                       pmic->desc[id].n_voltages = 1;
+                       desc->n_voltages = 1;
                        if (reg_init && reg_init->roof_floor)
-                               pmic->desc[id].ops =
-                                       &palmas_ops_ext_control_extreg;
+                               desc->ops = &palmas_ops_ext_control_extreg;
                        else
-                               pmic->desc[id].ops = &palmas_ops_extreg;
-                       pmic->desc[id].enable_reg =
+                               desc->ops = &palmas_ops_extreg;
+                       desc->enable_reg =
                                        PALMAS_BASE_TO_REG(PALMAS_RESOURCE_BASE,
                                                           rinfo->ctrl_addr);
-                       pmic->desc[id].enable_mask =
-                                       PALMAS_REGEN1_CTRL_MODE_ACTIVE;
+                       desc->enable_mask = PALMAS_REGEN1_CTRL_MODE_ACTIVE;
                }
 
                if (pdata)
                else
                        config.init_data = NULL;
 
-               pmic->desc[id].supply_name = rinfo->sname;
+               desc->supply_name = rinfo->sname;
                config.of_node = ddata->palmas_matches[id].of_node;
 
-               rdev = devm_regulator_register(pmic->dev, &pmic->desc[id],
-                                              &config);
+               rdev = devm_regulator_register(pmic->dev, desc, &config);
                if (IS_ERR(rdev)) {
                        dev_err(pmic->dev,
                                "failed to register %s regulator\n",
        struct regulator_dev *rdev;
        struct palmas_reg_init *reg_init;
        struct palmas_regs_info *rinfo;
+       struct regulator_desc *desc;
 
        for (id = ddata->ldo_begin; id < ddata->max_reg; id++) {
                if (pdata && pdata->reg_init[id])
                rinfo = &ddata->palmas_regs_info[id];
 
                /* Register the regulators */
-               pmic->desc[id].name = rinfo->name;
-               pmic->desc[id].id = id;
-               pmic->desc[id].type = REGULATOR_VOLTAGE;
-               pmic->desc[id].owner = THIS_MODULE;
+               desc = &pmic->desc[id];
+               desc->name = rinfo->name;
+               desc->id = id;
+               desc->type = REGULATOR_VOLTAGE;
+               desc->owner = THIS_MODULE;
 
                if (id < TPS65917_REG_REGEN1) {
-                       pmic->desc[id].n_voltages = PALMAS_LDO_NUM_VOLTAGES;
+                       desc->n_voltages = PALMAS_LDO_NUM_VOLTAGES;
                        if (reg_init && reg_init->roof_floor)
-                               pmic->desc[id].ops =
-                                       &palmas_ops_ext_control_ldo;
+                               desc->ops = &palmas_ops_ext_control_ldo;
                        else
-                               pmic->desc[id].ops = &tps65917_ops_ldo;
-                       pmic->desc[id].min_uV = 900000;
-                       pmic->desc[id].uV_step = 50000;
-                       pmic->desc[id].linear_min_sel = 1;
-                       pmic->desc[id].enable_time = 500;
-                       pmic->desc[id].vsel_reg =
-                                       PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
-                                                          rinfo->vsel_addr);
-                       pmic->desc[id].vsel_mask =
-                                       PALMAS_LDO1_VOLTAGE_VSEL_MASK;
-                       pmic->desc[id].enable_reg =
-                                       PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
-                                                          rinfo->ctrl_addr);
-                       pmic->desc[id].enable_mask =
-                                       PALMAS_LDO1_CTRL_MODE_ACTIVE;
+                               desc->ops = &tps65917_ops_ldo;
+                       desc->min_uV = 900000;
+                       desc->uV_step = 50000;
+                       desc->linear_min_sel = 1;
+                       desc->enable_time = 500;
+                       desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
+                                                           rinfo->vsel_addr);
+                       desc->vsel_mask = PALMAS_LDO1_VOLTAGE_VSEL_MASK;
+                       desc->enable_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
+                                                             rinfo->ctrl_addr);
+                       desc->enable_mask = PALMAS_LDO1_CTRL_MODE_ACTIVE;
                        /*
                         * To be confirmed. Discussion on going with PMIC Team.
                         * It is of the order of ~60mV/uS.
                         */
-                       pmic->desc[id].ramp_delay = 2500;
+                       desc->ramp_delay = 2500;
                } else {
-                       pmic->desc[id].n_voltages = 1;
+                       desc->n_voltages = 1;
                        if (reg_init && reg_init->roof_floor)
-                               pmic->desc[id].ops =
-                                       &palmas_ops_ext_control_extreg;
+                               desc->ops = &palmas_ops_ext_control_extreg;
                        else
-                               pmic->desc[id].ops = &palmas_ops_extreg;
-                       pmic->desc[id].enable_reg =
+                               desc->ops = &palmas_ops_extreg;
+                       desc->enable_reg =
                                        PALMAS_BASE_TO_REG(PALMAS_RESOURCE_BASE,
                                                           rinfo->ctrl_addr);
-                       pmic->desc[id].enable_mask =
-                                       PALMAS_REGEN1_CTRL_MODE_ACTIVE;
+                       desc->enable_mask = PALMAS_REGEN1_CTRL_MODE_ACTIVE;
                }
 
                if (pdata)
                else
                        config.init_data = NULL;
 
-               pmic->desc[id].supply_name = rinfo->sname;
+               desc->supply_name = rinfo->sname;
                config.of_node = ddata->palmas_matches[id].of_node;
 
-               rdev = devm_regulator_register(pmic->dev, &pmic->desc[id],
-                                              &config);
+               rdev = devm_regulator_register(pmic->dev, desc, &config);
                if (IS_ERR(rdev)) {
                        dev_err(pmic->dev,
                                "failed to register %s regulator\n",
        struct regulator_dev *rdev;
        struct palmas_reg_init *reg_init;
        struct palmas_regs_info *rinfo;
+       struct regulator_desc *desc;
 
        for (id = ddata->smps_start; id <= ddata->smps_end; id++) {
                bool ramp_delay_support = false;
                                continue;
                }
                rinfo = &ddata->palmas_regs_info[id];
+               desc = &pmic->desc[id];
 
                if ((id == PALMAS_REG_SMPS6) || (id == PALMAS_REG_SMPS8))
                        ramp_delay_support = true;
                                        "reading TSTEP reg failed: %d\n", ret);
                                return ret;
                        }
-                       pmic->desc[id].ramp_delay =
-                                       palmas_smps_ramp_delay[reg & 0x3];
-                       pmic->ramp_delay[id] = pmic->desc[id].ramp_delay;
+                       desc->ramp_delay = palmas_smps_ramp_delay[reg & 0x3];
+                       pmic->ramp_delay[id] = desc->ramp_delay;
                }
 
                /* Initialise sleep/init values from platform data */
                }
 
                /* Register the regulators */
-               pmic->desc[id].name = rinfo->name;
-               pmic->desc[id].id = id;
+               desc->name = rinfo->name;
+               desc->id = id;
 
                switch (id) {
                case PALMAS_REG_SMPS10_OUT1:
                case PALMAS_REG_SMPS10_OUT2:
-                       pmic->desc[id].n_voltages = PALMAS_SMPS10_NUM_VOLTAGES;
-                       pmic->desc[id].ops = &palmas_ops_smps10;
-                       pmic->desc[id].vsel_reg =
-                                       PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
-                                                       PALMAS_SMPS10_CTRL);
-                       pmic->desc[id].vsel_mask = SMPS10_VSEL;
-                       pmic->desc[id].enable_reg =
-                                       PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
-                                                       PALMAS_SMPS10_CTRL);
+                       desc->n_voltages = PALMAS_SMPS10_NUM_VOLTAGES;
+                       desc->ops = &palmas_ops_smps10;
+                       desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
+                                                           PALMAS_SMPS10_CTRL);
+                       desc->vsel_mask = SMPS10_VSEL;
+                       desc->enable_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
+                                                           PALMAS_SMPS10_CTRL);
                        if (id == PALMAS_REG_SMPS10_OUT1)
-                               pmic->desc[id].enable_mask = SMPS10_SWITCH_EN;
+                               desc->enable_mask = SMPS10_SWITCH_EN;
                        else
-                               pmic->desc[id].enable_mask = SMPS10_BOOST_EN;
-                       pmic->desc[id].bypass_reg =
-                                       PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
-                                                       PALMAS_SMPS10_CTRL);
-                       pmic->desc[id].bypass_mask = SMPS10_BYPASS_EN;
-                       pmic->desc[id].min_uV = 3750000;
-                       pmic->desc[id].uV_step = 1250000;
+                               desc->enable_mask = SMPS10_BOOST_EN;
+                       desc->bypass_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
+                                                           PALMAS_SMPS10_CTRL);
+                       desc->bypass_mask = SMPS10_BYPASS_EN;
+                       desc->min_uV = 3750000;
+                       desc->uV_step = 1250000;
                        break;
                default:
                        /*
                         * ranges. Read the current smps mode for later use.
                         */
                        addr = rinfo->vsel_addr;
-                       pmic->desc[id].n_linear_ranges = 3;
+                       desc->n_linear_ranges = 3;
 
                        ret = palmas_smps_read(pmic->palmas, addr, ®);
                        if (ret)
                        if (reg & PALMAS_SMPS12_VOLTAGE_RANGE)
                                pmic->range[id] = 1;
                        if (pmic->range[id])
-                               pmic->desc[id].linear_ranges = smps_high_ranges;
+                               desc->linear_ranges = smps_high_ranges;
                        else
-                               pmic->desc[id].linear_ranges = smps_low_ranges;
+                               desc->linear_ranges = smps_low_ranges;
 
                        if (reg_init && reg_init->roof_floor)
-                               pmic->desc[id].ops =
-                                               &palmas_ops_ext_control_smps;
+                               desc->ops = &palmas_ops_ext_control_smps;
                        else
-                               pmic->desc[id].ops = &palmas_ops_smps;
-                       pmic->desc[id].n_voltages = PALMAS_SMPS_NUM_VOLTAGES;
-                       pmic->desc[id].vsel_reg =
-                                       PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
-                                                          rinfo->vsel_addr);
-                       pmic->desc[id].vsel_mask =
-                                       PALMAS_SMPS12_VOLTAGE_VSEL_MASK;
+                               desc->ops = &palmas_ops_smps;
+                       desc->n_voltages = PALMAS_SMPS_NUM_VOLTAGES;
+                       desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
+                                                           rinfo->vsel_addr);
+                       desc->vsel_mask = PALMAS_SMPS12_VOLTAGE_VSEL_MASK;
 
                        /* Read the smps mode for later use. */
                        addr = rinfo->ctrl_addr;
                        pmic->current_reg_mode[id] = reg &
                                        PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
 
-                       pmic->desc[id].enable_reg =
-                                       PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
-                                                          rinfo->ctrl_addr);
-                       pmic->desc[id].enable_mask =
-                                       PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
+                       desc->enable_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
+                                                             rinfo->ctrl_addr);
+                       desc->enable_mask = PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
                        /* set_mode overrides this value */
-                       pmic->desc[id].enable_val = SMPS_CTRL_MODE_ON;
+                       desc->enable_val = SMPS_CTRL_MODE_ON;
                }
 
-               pmic->desc[id].type = REGULATOR_VOLTAGE;
-               pmic->desc[id].owner = THIS_MODULE;
+               desc->type = REGULATOR_VOLTAGE;
+               desc->owner = THIS_MODULE;
 
                if (pdata)
                        config.init_data = pdata->reg_data[id];
                else
                        config.init_data = NULL;
 
-               pmic->desc[id].supply_name = rinfo->sname;
+               desc->supply_name = rinfo->sname;
                config.of_node = ddata->palmas_matches[id].of_node;
 
-               rdev = devm_regulator_register(pmic->dev, &pmic->desc[id],
-                                              &config);
+               rdev = devm_regulator_register(pmic->dev, desc, &config);
                if (IS_ERR(rdev)) {
                        dev_err(pmic->dev,
                                "failed to register %s regulator\n",
        struct regulator_dev *rdev;
        struct palmas_reg_init *reg_init;
        struct palmas_regs_info *rinfo;
+       struct regulator_desc *desc;
 
        for (id = ddata->smps_start; id <= ddata->smps_end; id++) {
                /*
                 * Miss out regulators which are not available due
                 * to slaving configurations.
                 */
-               pmic->desc[id].n_linear_ranges = 3;
+               desc = &pmic->desc[id];
+               desc->n_linear_ranges = 3;
                if ((id == TPS65917_REG_SMPS2) && pmic->smps12)
                        continue;
 
                rinfo = &ddata->palmas_regs_info[id];
 
                /* Register the regulators */
-               pmic->desc[id].name = rinfo->name;
-               pmic->desc[id].id = id;
+               desc->name = rinfo->name;
+               desc->id = id;
 
                /*
                 * Read and store the RANGE bit for later use
                        pmic->range[id] = 1;
 
                if (pmic->range[id])
-                               pmic->desc[id].linear_ranges = smps_high_ranges;
-                       else
-                               pmic->desc[id].linear_ranges = smps_low_ranges;
-
+                       desc->linear_ranges = smps_high_ranges;
+               else
+                       desc->linear_ranges = smps_low_ranges;
 
                if (reg_init && reg_init->roof_floor)
-                       pmic->desc[id].ops =
-                                       &tps65917_ops_ext_control_smps;
+                       desc->ops = &tps65917_ops_ext_control_smps;
                else
-                       pmic->desc[id].ops = &tps65917_ops_smps;
-               pmic->desc[id].n_voltages = PALMAS_SMPS_NUM_VOLTAGES;
-               pmic->desc[id].vsel_reg =
-                               PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
-                                                  rinfo->vsel_addr);
-               pmic->desc[id].vsel_mask =
-                               PALMAS_SMPS12_VOLTAGE_VSEL_MASK;
-
-               pmic->desc[id].ramp_delay = 2500;
+                       desc->ops = &tps65917_ops_smps;
+               desc->n_voltages = PALMAS_SMPS_NUM_VOLTAGES;
+               desc->vsel_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
+                                                   rinfo->vsel_addr);
+               desc->vsel_mask = PALMAS_SMPS12_VOLTAGE_VSEL_MASK;
+               desc->ramp_delay = 2500;
 
                /* Read the smps mode for later use. */
                addr = rinfo->ctrl_addr;
                pmic->current_reg_mode[id] = reg &
                                PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
 
-               pmic->desc[id].type = REGULATOR_VOLTAGE;
-               pmic->desc[id].owner = THIS_MODULE;
+               desc->type = REGULATOR_VOLTAGE;
+               desc->owner = THIS_MODULE;
 
                if (pdata)
                        config.init_data = pdata->reg_data[id];
                else
                        config.init_data = NULL;
 
-               pmic->desc[id].supply_name = rinfo->sname;
+               desc->supply_name = rinfo->sname;
                config.of_node = ddata->palmas_matches[id].of_node;
 
-               rdev = devm_regulator_register(pmic->dev, &pmic->desc[id],
-                                              &config);
+               rdev = devm_regulator_register(pmic->dev, desc, &config);
                if (IS_ERR(rdev)) {
                        dev_err(pmic->dev,
                                "failed to register %s regulator\n",