mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
[media] v4l2-ctrls: use ptrs for all but the s32 type
Rather than having two unions for all types just keep 'val' and 'cur.val' and use the p_cur and p_new unions to access all others. The only reason for keeping 'val' and 'cur.val' is that it is used all over, so converting this as well would be a huge job. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
9ea1b7a4b6
commit
2a9ec37311
@ -362,7 +362,7 @@ will result in a deadlock since these helpers lock the handler as well.
|
|||||||
You can also take the handler lock yourself:
|
You can also take the handler lock yourself:
|
||||||
|
|
||||||
mutex_lock(&state->ctrl_handler.lock);
|
mutex_lock(&state->ctrl_handler.lock);
|
||||||
printk(KERN_INFO "String value is '%s'\n", ctrl1->cur.string);
|
pr_info("String value is '%s'\n", ctrl1->p_cur.p_char);
|
||||||
printk(KERN_INFO "Integer value is '%s'\n", ctrl2->cur.val);
|
printk(KERN_INFO "Integer value is '%s'\n", ctrl2->cur.val);
|
||||||
mutex_unlock(&state->ctrl_handler.lock);
|
mutex_unlock(&state->ctrl_handler.lock);
|
||||||
|
|
||||||
|
@ -667,7 +667,7 @@ static int mt9v032_s_ctrl(struct v4l2_ctrl *ctrl)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
freq = mt9v032->pdata->link_freqs[mt9v032->link_freq->val];
|
freq = mt9v032->pdata->link_freqs[mt9v032->link_freq->val];
|
||||||
mt9v032->pixel_rate->val64 = freq;
|
*mt9v032->pixel_rate->p_new.p_s64 = freq;
|
||||||
mt9v032->sysclk = freq;
|
mt9v032->sysclk = freq;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -297,8 +297,8 @@ static int smiapp_pll_update(struct smiapp_sensor *sensor)
|
|||||||
if (rval < 0)
|
if (rval < 0)
|
||||||
return rval;
|
return rval;
|
||||||
|
|
||||||
sensor->pixel_rate_parray->cur.val64 = pll->vt_pix_clk_freq_hz;
|
*sensor->pixel_rate_parray->p_cur.p_s64 = pll->vt_pix_clk_freq_hz;
|
||||||
sensor->pixel_rate_csi->cur.val64 = pll->pixel_rate_csi;
|
*sensor->pixel_rate_csi->p_cur.p_s64 = pll->pixel_rate_csi;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -135,8 +135,8 @@ static int ivtv_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
|
|||||||
/* V4L2_CID_MPEG_VIDEO_DEC_PTS and V4L2_CID_MPEG_VIDEO_DEC_FRAME
|
/* V4L2_CID_MPEG_VIDEO_DEC_PTS and V4L2_CID_MPEG_VIDEO_DEC_FRAME
|
||||||
control cluster */
|
control cluster */
|
||||||
case V4L2_CID_MPEG_VIDEO_DEC_PTS:
|
case V4L2_CID_MPEG_VIDEO_DEC_PTS:
|
||||||
return ivtv_g_pts_frame(itv, &itv->ctrl_pts->val64,
|
return ivtv_g_pts_frame(itv, itv->ctrl_pts->p_new.p_s64,
|
||||||
&itv->ctrl_frame->val64);
|
itv->ctrl_frame->p_new.p_s64);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -648,13 +648,13 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf)
|
|||||||
gen_text(dev, vbuf, line++ * 16, 16, str);
|
gen_text(dev, vbuf, line++ * 16, 16, str);
|
||||||
snprintf(str, sizeof(str), " int32 %d, int64 %lld, bitmask %08x ",
|
snprintf(str, sizeof(str), " int32 %d, int64 %lld, bitmask %08x ",
|
||||||
dev->int32->cur.val,
|
dev->int32->cur.val,
|
||||||
dev->int64->cur.val64,
|
*dev->int64->p_cur.p_s64,
|
||||||
dev->bitmask->cur.val);
|
dev->bitmask->cur.val);
|
||||||
gen_text(dev, vbuf, line++ * 16, 16, str);
|
gen_text(dev, vbuf, line++ * 16, 16, str);
|
||||||
snprintf(str, sizeof(str), " boolean %d, menu %s, string \"%s\" ",
|
snprintf(str, sizeof(str), " boolean %d, menu %s, string \"%s\" ",
|
||||||
dev->boolean->cur.val,
|
dev->boolean->cur.val,
|
||||||
dev->menu->qmenu[dev->menu->cur.val],
|
dev->menu->qmenu[dev->menu->cur.val],
|
||||||
dev->string->cur.string);
|
dev->string->p_cur.p_char);
|
||||||
gen_text(dev, vbuf, line++ * 16, 16, str);
|
gen_text(dev, vbuf, line++ * 16, 16, str);
|
||||||
snprintf(str, sizeof(str), " integer_menu %lld, value %d ",
|
snprintf(str, sizeof(str), " integer_menu %lld, value %d ",
|
||||||
dev->int_menu->qmenu_int[dev->int_menu->cur.val],
|
dev->int_menu->qmenu_int[dev->int_menu->cur.val],
|
||||||
|
@ -1098,11 +1098,11 @@ static int si4713_s_ctrl(struct v4l2_ctrl *ctrl)
|
|||||||
|
|
||||||
switch (ctrl->id) {
|
switch (ctrl->id) {
|
||||||
case V4L2_CID_RDS_TX_PS_NAME:
|
case V4L2_CID_RDS_TX_PS_NAME:
|
||||||
ret = si4713_set_rds_ps_name(sdev, ctrl->string);
|
ret = si4713_set_rds_ps_name(sdev, ctrl->p_new.p_char);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case V4L2_CID_RDS_TX_RADIO_TEXT:
|
case V4L2_CID_RDS_TX_RADIO_TEXT:
|
||||||
ret = si4713_set_rds_radio_text(sdev, ctrl->string);
|
ret = si4713_set_rds_radio_text(sdev, ctrl->p_new.p_char);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case V4L2_CID_TUNE_ANTENNA_CAPACITOR:
|
case V4L2_CID_TUNE_ANTENNA_CAPACITOR:
|
||||||
|
@ -1135,7 +1135,7 @@ static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 change
|
|||||||
if (ctrl->is_ptr)
|
if (ctrl->is_ptr)
|
||||||
ev->u.ctrl.value64 = 0;
|
ev->u.ctrl.value64 = 0;
|
||||||
else
|
else
|
||||||
ev->u.ctrl.value64 = ctrl->cur.val64;
|
ev->u.ctrl.value64 = *ctrl->p_cur.p_s64;
|
||||||
ev->u.ctrl.minimum = ctrl->minimum;
|
ev->u.ctrl.minimum = ctrl->minimum;
|
||||||
ev->u.ctrl.maximum = ctrl->maximum;
|
ev->u.ctrl.maximum = ctrl->maximum;
|
||||||
if (ctrl->type == V4L2_CTRL_TYPE_MENU
|
if (ctrl->type == V4L2_CTRL_TYPE_MENU
|
||||||
@ -1801,7 +1801,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
|
|||||||
flags |= V4L2_CTRL_FLAG_WRITE_ONLY;
|
flags |= V4L2_CTRL_FLAG_WRITE_ONLY;
|
||||||
else if (type == V4L2_CTRL_TYPE_CTRL_CLASS)
|
else if (type == V4L2_CTRL_TYPE_CTRL_CLASS)
|
||||||
flags |= V4L2_CTRL_FLAG_READ_ONLY;
|
flags |= V4L2_CTRL_FLAG_READ_ONLY;
|
||||||
else if (type == V4L2_CTRL_TYPE_STRING || type >= V4L2_CTRL_COMPOUND_TYPES)
|
else if (type == V4L2_CTRL_TYPE_INTEGER64 ||
|
||||||
|
type == V4L2_CTRL_TYPE_STRING ||
|
||||||
|
type >= V4L2_CTRL_COMPOUND_TYPES)
|
||||||
sz_extra += 2 * elem_size;
|
sz_extra += 2 * elem_size;
|
||||||
|
|
||||||
ctrl = kzalloc(sizeof(*ctrl) + sz_extra, GFP_KERNEL);
|
ctrl = kzalloc(sizeof(*ctrl) + sz_extra, GFP_KERNEL);
|
||||||
@ -1833,10 +1835,10 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
|
|||||||
ctrl->qmenu_int = qmenu_int;
|
ctrl->qmenu_int = qmenu_int;
|
||||||
ctrl->priv = priv;
|
ctrl->priv = priv;
|
||||||
ctrl->cur.val = ctrl->val = def;
|
ctrl->cur.val = ctrl->val = def;
|
||||||
data = &ctrl->cur + 1;
|
data = &ctrl[1];
|
||||||
|
|
||||||
if (ctrl->is_ptr) {
|
if (!ctrl->is_int) {
|
||||||
ctrl->p = ctrl->p_new.p = data;
|
ctrl->p_new.p = data;
|
||||||
ctrl->p_cur.p = data + elem_size;
|
ctrl->p_cur.p = data + elem_size;
|
||||||
} else {
|
} else {
|
||||||
ctrl->p_new.p = &ctrl->val;
|
ctrl->p_new.p = &ctrl->val;
|
||||||
@ -3103,10 +3105,10 @@ int v4l2_ctrl_modify_range(struct v4l2_ctrl *ctrl,
|
|||||||
ctrl->maximum = max;
|
ctrl->maximum = max;
|
||||||
ctrl->step = step;
|
ctrl->step = step;
|
||||||
ctrl->default_value = def;
|
ctrl->default_value = def;
|
||||||
c.value = ctrl->cur.val;
|
c.value = *ctrl->p_cur.p_s32;
|
||||||
if (validate_new(ctrl, &c))
|
if (validate_new(ctrl, &c))
|
||||||
c.value = def;
|
c.value = def;
|
||||||
if (c.value != ctrl->cur.val)
|
if (c.value != *ctrl->p_cur.p_s32)
|
||||||
ret = set_ctrl(NULL, ctrl, &c, V4L2_EVENT_CTRL_CH_RANGE);
|
ret = set_ctrl(NULL, ctrl, &c, V4L2_EVENT_CTRL_CH_RANGE);
|
||||||
else
|
else
|
||||||
send_event(NULL, ctrl, V4L2_EVENT_CTRL_CH_RANGE);
|
send_event(NULL, ctrl, V4L2_EVENT_CTRL_CH_RANGE);
|
||||||
|
@ -1131,7 +1131,7 @@ static int solo_s_ctrl(struct v4l2_ctrl *ctrl)
|
|||||||
solo_motion_toggle(solo_enc, ctrl->val);
|
solo_motion_toggle(solo_enc, ctrl->val);
|
||||||
return 0;
|
return 0;
|
||||||
case V4L2_CID_OSD_TEXT:
|
case V4L2_CID_OSD_TEXT:
|
||||||
strcpy(solo_enc->osd_text, ctrl->string);
|
strcpy(solo_enc->osd_text, ctrl->p_new.p_char);
|
||||||
err = solo_osd_print(solo_enc);
|
err = solo_osd_print(solo_enc);
|
||||||
return err;
|
return err;
|
||||||
default:
|
default:
|
||||||
|
@ -187,17 +187,9 @@ struct v4l2_ctrl {
|
|||||||
};
|
};
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
void *priv;
|
void *priv;
|
||||||
union {
|
s32 val;
|
||||||
|
struct {
|
||||||
s32 val;
|
s32 val;
|
||||||
s64 val64;
|
|
||||||
char *string;
|
|
||||||
void *p;
|
|
||||||
};
|
|
||||||
union {
|
|
||||||
s32 val;
|
|
||||||
s64 val64;
|
|
||||||
char *string;
|
|
||||||
void *p;
|
|
||||||
} cur;
|
} cur;
|
||||||
|
|
||||||
union v4l2_ctrl_ptr p_new;
|
union v4l2_ctrl_ptr p_new;
|
||||||
|
Loading…
Reference in New Issue
Block a user