#define DCS_GET_ID2            0xdb
 #define DCS_GET_ID3            0xdc
 
+#define DCS_REGULATOR_SUPPLY_NUM 2
+
 struct panel_drv_data {
        struct mipi_dsi_device *dsi;
 
        struct gpio_desc *reset_gpio;
        struct gpio_desc *ext_te_gpio;
 
-       struct regulator *vpnl;
-       struct regulator *vddi;
+       struct regulator_bulk_data supplies[DCS_REGULATOR_SUPPLY_NUM];
 
        bool use_dsi_backlight;
 
                .lp_clk_max = 10000000,
        };
 
-       if (ddata->vpnl) {
-               r = regulator_enable(ddata->vpnl);
-               if (r) {
-                       dev_err(&ddata->dsi->dev,
-                               "failed to enable VPNL: %d\n", r);
-                       return r;
-               }
-       }
-
-       if (ddata->vddi) {
-               r = regulator_enable(ddata->vddi);
-               if (r) {
-                       dev_err(&ddata->dsi->dev,
-                               "failed to enable VDDI: %d\n", r);
-                       goto err_vpnl;
-               }
+       r = regulator_bulk_enable(ARRAY_SIZE(ddata->supplies), ddata->supplies);
+       if (r) {
+               dev_err(&ddata->dsi->dev, "failed to enable supplies: %d\n", r);
+               return r;
        }
 
        r = src->ops->dsi.set_config(src, &dsi_config);
        if (r) {
                dev_err(&ddata->dsi->dev, "failed to configure DSI\n");
-               goto err_vddi;
+               goto err_regulators;
        }
 
        src->ops->enable(src);
        dsicm_hw_reset(ddata);
 
        src->ops->dsi.disable(src, true, false);
-err_vddi:
-       if (ddata->vddi)
-               regulator_disable(ddata->vddi);
-err_vpnl:
-       if (ddata->vpnl)
-               regulator_disable(ddata->vpnl);
+err_regulators:
+       r = regulator_bulk_disable(ARRAY_SIZE(ddata->supplies), ddata->supplies);
+       if (r)
+               dev_err(&ddata->dsi->dev, "failed to disable supplies: %d\n", r);
 
        return r;
 }
 
        src->ops->dsi.disable(src, true, false);
 
-       if (ddata->vddi)
-               regulator_disable(ddata->vddi);
-       if (ddata->vpnl)
-               regulator_disable(ddata->vpnl);
+       r = regulator_bulk_disable(ARRAY_SIZE(ddata->supplies), ddata->supplies);
+       if (r)
+               dev_err(&ddata->dsi->dev, "failed to disable supplies: %d\n", r);
 
        ddata->enabled = false;
 }
        ddata->height_mm = 0;
        of_property_read_u32(node, "height-mm", &ddata->height_mm);
 
-       ddata->vpnl = devm_regulator_get_optional(&dsi->dev, "vpnl");
-       if (IS_ERR(ddata->vpnl)) {
-               err = PTR_ERR(ddata->vpnl);
-               if (err == -EPROBE_DEFER)
-                       return err;
-               ddata->vpnl = NULL;
-       }
-
-       ddata->vddi = devm_regulator_get_optional(&dsi->dev, "vddi");
-       if (IS_ERR(ddata->vddi)) {
-               err = PTR_ERR(ddata->vddi);
-               if (err == -EPROBE_DEFER)
-                       return err;
-               ddata->vddi = NULL;
-       }
+       ddata->supplies[0].supply = "vpnl";
+       ddata->supplies[1].supply = "vddi";
+       err = devm_regulator_bulk_get(&dsi->dev, ARRAY_SIZE(ddata->supplies),
+                                     ddata->supplies);
+       if (err)
+               return err;
 
        backlight = devm_of_find_backlight(&dsi->dev);
        if (IS_ERR(backlight))