return val > MAX_DELAY ? 0 : val * time_step_us;
 }
 
-static void lp872x_set_dvs(struct lp872x *lp, int gpio)
+static void lp872x_set_dvs(struct lp872x *lp, enum lp872x_dvs_sel dvs_sel,
+                       int gpio)
 {
-       enum lp872x_dvs_sel dvs_sel = lp->pdata->dvs->vsel;
        enum lp872x_dvs_state state;
 
        state = dvs_sel == SEL_V1 ? DVS_HIGH : DVS_LOW;
        struct lp872x *lp = rdev_get_drvdata(rdev);
        enum lp872x_regulator_id buck = rdev_get_id(rdev);
        u8 addr, mask = LP872X_VOUT_M;
-       struct lp872x_dvs *dvs = lp->pdata->dvs;
+       struct lp872x_dvs *dvs = lp->pdata ? lp->pdata->dvs : NULL;
 
        if (dvs && gpio_is_valid(dvs->gpio))
-               lp872x_set_dvs(lp, dvs->gpio);
+               lp872x_set_dvs(lp, dvs->vsel, dvs->gpio);
 
        addr = lp872x_select_buck_vout_addr(lp, buck);
        if (!lp872x_is_valid_buck_addr(addr))