static int m5mols_s_ctrl(struct v4l2_ctrl *ctrl) { struct v4l2_subdev *sd = to_sd(ctrl); int ret; ret = m5mols_set_mode_backup(sd, MODE_PARMSET); if (!ret) ret = m5mols_set_ctrl(ctrl); if (!ret) ret = m5mols_set_mode_restore(sd); return ret; }
static int m5mols_s_ctrl(struct v4l2_ctrl *ctrl) { struct v4l2_subdev *sd = to_sd(ctrl); struct m5mols_info *info = to_m5mols(sd); int ret; info->mode_save = info->mode; ret = m5mols_mode(info, REG_PARAMETER); if (!ret) ret = m5mols_set_ctrl(ctrl); if (!ret) ret = m5mols_mode(info, info->mode_save); return ret; }
static int m5mols_s_ctrl(struct v4l2_ctrl *ctrl) { struct v4l2_subdev *sd = to_sd(ctrl); struct m5mols_info *info = to_m5mols(sd); int ispstate = info->mode; int ret; /* * If needed, defer restoring the controls until * the device is fully initialized. */ if (!info->isp_ready) { info->ctrl_sync = 0; return 0; } ret = m5mols_mode(info, REG_PARAMETER); if (ret < 0) return ret; ret = m5mols_set_ctrl(ctrl); if (ret < 0) return ret; return m5mols_mode(info, ispstate); }