static int wm831x_aldo_get_status(struct regulator_dev *rdev) { struct wm831x_ldo *ldo = rdev_get_drvdata(rdev); struct wm831x *wm831x = ldo->wm831x; int mask = 1 << rdev_get_id(rdev); int ret; /* Is the regulator on? */ ret = wm831x_reg_read(wm831x, WM831X_LDO_STATUS); if (ret < 0) return ret; if (!(ret & mask)) return REGULATOR_STATUS_OFF; /* Is it reporting under voltage? */ ret = wm831x_reg_read(wm831x, WM831X_LDO_UV_STATUS); if (ret & mask) return REGULATOR_STATUS_ERROR; ret = wm831x_aldo_get_mode(rdev); if (ret < 0) return ret; else return regulator_mode_to_status(ret); }
static int da9063_ldo_get_status(struct regulator_dev *rdev) { int ret = regulator_is_enabled_regmap(rdev); if (ret == 0) { ret = REGULATOR_STATUS_OFF; } else if (ret > 0) { ret = da9063_ldo_get_mode(rdev); if (ret > 0) ret = regulator_mode_to_status(ret); else if (ret == 0) ret = -EIO; } return ret; }