static int twl4030reg_set_mode(struct regulator_dev *rdev, unsigned mode) { struct twlreg_info *info = rdev_get_drvdata(rdev); unsigned message; int status; /* We can only set the mode through state machine commands... */ switch (mode) { case REGULATOR_MODE_NORMAL: message = MSG_SINGULAR(DEV_GRP_P1, info->id, RES_STATE_ACTIVE); break; case REGULATOR_MODE_STANDBY: message = MSG_SINGULAR(DEV_GRP_P1, info->id, RES_STATE_SLEEP); break; default: return -EINVAL; } /* Ensure the resource is associated with some group */ status = twl4030reg_grp(rdev); if (status < 0) return status; if (!(status & (P3_GRP | P2_GRP | P1_GRP))) return -EACCES; return twl4030_send_pb_msg(message); }
static int twl4030reg_set_mode(struct regulator_dev *rdev, unsigned mode) { struct twlreg_info *info = rdev_get_drvdata(rdev); unsigned message; /* We can only set the mode through state machine commands... */ switch (mode) { case REGULATOR_MODE_NORMAL: message = MSG_SINGULAR(DEV_GRP_P1, info->id, RES_STATE_ACTIVE); break; case REGULATOR_MODE_STANDBY: message = MSG_SINGULAR(DEV_GRP_P1, info->id, RES_STATE_SLEEP); break; default: return -EINVAL; } return twl4030_send_pb_msg(message); }
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); }