static int twl4030ldo_get_voltage(struct regulator_dev *rdev) { struct twlreg_info *info = rdev_get_drvdata(rdev); int vsel = twl4030reg_read(info, VREG_DEDICATED); if (vsel < 0) return vsel; vsel &= info->table_len - 1; return LDO_MV(info->table[vsel]) * 1000; }
static int twl4030reg_disable(struct regulator_dev *rdev) { struct twlreg_info *info = rdev_get_drvdata(rdev); int grp; grp = twl4030reg_read(info, VREG_GRP); if (grp < 0) return grp; grp &= ~P1_GRP; return twl4030reg_write(info, VREG_GRP, grp); }
static int twl4030reg_enable(struct regulator_dev *rdev) { struct twlreg_info *info = rdev_get_drvdata(rdev); int grp, status; unsigned message; grp = twl4030reg_read(info, VREG_GRP); if (grp < 0) return grp; grp |= P1_GRP; status = twl4030reg_write(info, VREG_GRP, grp); if (status < 0) return status; message = MSG_SINGULAR(DEV_GRP_P1, info->id, RES_STATE_ACTIVE); return twl4030_send_pb_msg(message); }
static int twl4030reg_grp(struct regulator_dev *rdev) { return twl4030reg_read(rdev_get_drvdata(rdev), VREG_GRP); }