return PTR_ERR(child);
        }
 
-       if (twl_has_usb() && pdata->usb) {
+       if (twl_has_usb() && pdata->usb && twl_class_is_4030()) {
 
                static struct regulator_consumer_supply usb1v5 = {
                        .supply =       "usb1v5",
                        return PTR_ERR(child);
        }
 
-       if (twl_has_regulator()) {
+       /* twl4030 regulators */
+       if (twl_has_regulator() && twl_class_is_4030()) {
                child = add_regulator(TWL4030_REG_VPLL1, pdata->vpll1);
                if (IS_ERR(child))
                        return PTR_ERR(child);
        }
 
        /* maybe add LDOs that are omitted on cost-reduced parts */
-       if (twl_has_regulator() && !(features & TPS_SUBSET)) {
+       if (twl_has_regulator() && !(features & TPS_SUBSET)
+         && twl_class_is_4030()) {
                child = add_regulator(TWL4030_REG_VPLL2, pdata->vpll2);
                if (IS_ERR(child))
                        return PTR_ERR(child);
                        return PTR_ERR(child);
        }
 
+       /* twl6030 regulators */
+       if (twl_has_regulator() && twl_class_is_6030()) {
+               child = add_regulator(TWL6030_REG_VMMC, pdata->vmmc);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+
+               child = add_regulator(TWL6030_REG_VPP, pdata->vpp);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+
+               child = add_regulator(TWL6030_REG_VUSIM, pdata->vusim);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+
+               child = add_regulator(TWL6030_REG_VANA, pdata->vana);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+
+               child = add_regulator(TWL6030_REG_VCXIO, pdata->vcxio);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+
+               child = add_regulator(TWL6030_REG_VDAC, pdata->vdac);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+
+               child = add_regulator(TWL6030_REG_VUSB, pdata->vusb);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+
+               child = add_regulator(TWL6030_REG_VAUX1_6030, pdata->vaux1);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+
+               child = add_regulator(TWL6030_REG_VAUX2_6030, pdata->vaux2);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+
+               child = add_regulator(TWL6030_REG_VAUX3_6030, pdata->vaux3);
+               if (IS_ERR(child))
+                       return PTR_ERR(child);
+       }
+
        return 0;
 }
 
 
        struct twl4030_power_data               *power;
        struct twl4030_codec_data               *codec;
 
-       /* LDO regulators */
+       /* Common LDO regulators for TWL4030/TWL6030 */
        struct regulator_init_data              *vdac;
+       struct regulator_init_data              *vaux1;
+       struct regulator_init_data              *vaux2;
+       struct regulator_init_data              *vaux3;
+       /* TWL4030 LDO regulators */
        struct regulator_init_data              *vpll1;
        struct regulator_init_data              *vpll2;
        struct regulator_init_data              *vmmc1;
        struct regulator_init_data              *vmmc2;
        struct regulator_init_data              *vsim;
-       struct regulator_init_data              *vaux1;
-       struct regulator_init_data              *vaux2;
-       struct regulator_init_data              *vaux3;
        struct regulator_init_data              *vaux4;
        struct regulator_init_data              *vio;
        struct regulator_init_data              *vdd1;
        struct regulator_init_data              *vintana1;
        struct regulator_init_data              *vintana2;
        struct regulator_init_data              *vintdig;
+       /* TWL6030 LDO regulators */
+       struct regulator_init_data              *vmmc;
+       struct regulator_init_data              *vpp;
+       struct regulator_init_data              *vusim;
+       struct regulator_init_data              *vana;
+       struct regulator_init_data              *vcxio;
+       struct regulator_init_data              *vusb;
 };
 
 /*----------------------------------------------------------------------*/