Esempio n. 1
0
static int cx25840_audio_s_ctrl(struct v4l2_ctrl *ctrl)
{
	struct v4l2_subdev *sd = to_sd(ctrl);
	struct cx25840_state *state = to_state(sd);
	struct i2c_client *client = v4l2_get_subdevdata(sd);

	switch (ctrl->id) {
	case V4L2_CID_AUDIO_VOLUME:
		if (state->mute->val)
			set_volume(client, 0);
		else
			set_volume(client, state->volume->val);
		break;
	case V4L2_CID_AUDIO_BASS:
		/* PATH1_EQ_BASS_VOL */
		cx25840_and_or(client, 0x8d9, ~0x3f,
					48 - (ctrl->val * 48 / 0xffff));
		break;
	case V4L2_CID_AUDIO_TREBLE:
		/* PATH1_EQ_TREBLE_VOL */
		cx25840_and_or(client, 0x8db, ~0x3f,
					48 - (ctrl->val * 48 / 0xffff));
		break;
	case V4L2_CID_AUDIO_BALANCE:
		set_balance(client, ctrl->val);
		break;
	default:
		return -EINVAL;
	}
	return 0;
}
Esempio n. 2
0
static int cx18_av_audio_s_ctrl(struct v4l2_ctrl *ctrl)
{
	struct v4l2_subdev *sd = to_sd(ctrl);
	struct cx18 *cx = v4l2_get_subdevdata(sd);

	switch (ctrl->id) {
	case V4L2_CID_AUDIO_VOLUME:
		set_volume(cx, ctrl->val);
		break;
	case V4L2_CID_AUDIO_BASS:
		set_bass(cx, ctrl->val);
		break;
	case V4L2_CID_AUDIO_TREBLE:
		set_treble(cx, ctrl->val);
		break;
	case V4L2_CID_AUDIO_BALANCE:
		set_balance(cx, ctrl->val);
		break;
	case V4L2_CID_AUDIO_MUTE:
		set_mute(cx, ctrl->val);
		break;
	default:
		return -EINVAL;
	}
	return 0;
}
static int sensor_s_ctrl(struct v4l2_ctrl *ctrl)
{
	struct v4l2_subdev *sd = to_sd(ctrl);
	u32 cmd = ctrl->id;
	s32 value = ctrl->val;
	int ret = 0;

	switch (cmd) {
	case V4L2_CID_SENSOR_SET_AE_TARGET:
		sensor_dbg("ctrl.id = %x, val=%x", cmd, value);
		ret = sensor_ctrl_ae_target(sd, value);
		break;
	case V4L2_CID_SENSOR_SET_AE_WEIGHT_1x1_2:
	case V4L2_CID_SENSOR_SET_AE_WEIGHT_1x3_4:
	case V4L2_CID_SENSOR_SET_AE_WEIGHT_2x1_2:
	case V4L2_CID_SENSOR_SET_AE_WEIGHT_2x3_4:
	case V4L2_CID_SENSOR_SET_AE_WEIGHT_3x1_2:
	case V4L2_CID_SENSOR_SET_AE_WEIGHT_3x3_4:
	case V4L2_CID_SENSOR_SET_AE_WEIGHT_4x1_2:
	case V4L2_CID_SENSOR_SET_AE_WEIGHT_4x3_4:
		sensor_dbg("ctrl.id = %x, val=%x", cmd, value);
		ret = sensor_ctrl_ae_weight(sd, cmd, value);
		break;
	case V4L2_CID_SENSOR_SET_RG_WEIGHT:
		sensor_dbg("ctrl.id = %x, val=%x", cmd, value);
		ret = sensor_ctrl_rg_weight(sd, value);
		break;
	case V4L2_CID_SENSOR_SET_AE_SPEED:
		sensor_dbg("ctrl.id = %x, val=%x", cmd, value);
		ret = sensor_ctrl_ae_speed(sd, value);
		break;
	case V4L2_CID_SENSOR_SET_SHUTTER:
		sensor_dbg("ctrl.id = %x, val=%x", cmd, value);
		ret = sensor_ctrl_shutter(sd, value);
		break;
	case V4L2_CID_SENSOR_SET_GAIN:
		sensor_dbg("ctrl.id = %x, val=%x", cmd, value);
		ret = sensor_ctrl_gain(sd, value);
		break;
	case V4L2_CID_SENSOR_SET_BIT_CONVERTING:
		sensor_dbg("ctrl.id = %x, val=%x", cmd, value);
		ret = sensor_ctrl_bit_converting(sd, value);
		break;
	case V4L2_CID_SENSOR_SET_AUTO_EXPOSURE:
		sensor_dbg("ctrl.id = %x, val=%x", cmd, value);
		ret = sensor_ctrl_auto_exposure(sd, value);
		break;
	case V4L2_CID_SENSOR_SET_FRAME_RATE:
		sensor_dbg("ctrl.id = %x, val=%x", cmd, value);
		ret = sensor_ctrl_frame_rate(sd, value);
		break;
	default :
		sensor_err("Unknown CID(%x)", cmd);
		ret = -1;
		break;
	}

	return ret;
}
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_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
{
	struct v4l2_subdev *sd = to_sd(ctrl);
	struct m5mols_info *info = to_m5mols(sd);
	int ret = 0;

	switch (ctrl->id) {
	case V4L2_CID_CAM_JPEG_ENCODEDSIZE:
		ctrl->cur.val = info->cap.total;
		break;
	default:
		ret = -EINVAL;
		break;
	}
	return ret;
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
static int subdev_s_ctrl(struct v4l2_ctrl *ctrl)
{
	struct v4l2_subdev *sd = to_sd(ctrl);
	struct ivtv *itv = sd_to_ivtv(sd);
	u16 mask, data;

	switch (ctrl->id) {
	case V4L2_CID_AUDIO_MUTE:
		mask = itv->card->gpio_audio_mute.mask;
		data = ctrl->val ? itv->card->gpio_audio_mute.mute : 0;
		if (mask)
			write_reg((read_reg(IVTV_REG_GPIO_OUT) & ~mask) |
					(data & mask), IVTV_REG_GPIO_OUT);
		return 0;
	}
	return -EINVAL;
}
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);
}