Skip to content

Commit

Permalink
[media] v4l2-ctrls: use ptrs for all but the s32 type
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
  • Loading branch information
Hans Verkuil authored and mchehab committed Jul 17, 2014
1 parent 9ea1b7a commit 2a9ec37
Show file tree
Hide file tree
Showing 9 changed files with 22 additions and 28 deletions.
2 changes: 1 addition & 1 deletion Documentation/video4linux/v4l2-controls.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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:

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);
mutex_unlock(&state->ctrl_handler.lock);

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/i2c/mt9v032.c
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,7 @@ static int mt9v032_s_ctrl(struct v4l2_ctrl *ctrl)
break;

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;
break;

Expand Down
4 changes: 2 additions & 2 deletions drivers/media/i2c/smiapp/smiapp-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -297,8 +297,8 @@ static int smiapp_pll_update(struct smiapp_sensor *sensor)
if (rval < 0)
return rval;

sensor->pixel_rate_parray->cur.val64 = pll->vt_pix_clk_freq_hz;
sensor->pixel_rate_csi->cur.val64 = pll->pixel_rate_csi;
*sensor->pixel_rate_parray->p_cur.p_s64 = pll->vt_pix_clk_freq_hz;
*sensor->pixel_rate_csi->p_cur.p_s64 = pll->pixel_rate_csi;

return 0;
}
Expand Down
4 changes: 2 additions & 2 deletions drivers/media/pci/ivtv/ivtv-controls.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
control cluster */
case V4L2_CID_MPEG_VIDEO_DEC_PTS:
return ivtv_g_pts_frame(itv, &itv->ctrl_pts->val64,
&itv->ctrl_frame->val64);
return ivtv_g_pts_frame(itv, itv->ctrl_pts->p_new.p_s64,
itv->ctrl_frame->p_new.p_s64);
}
return 0;
}
Expand Down
4 changes: 2 additions & 2 deletions drivers/media/platform/vivi.c
Original file line number Diff line number Diff line change
Expand Up @@ -648,13 +648,13 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf)
gen_text(dev, vbuf, line++ * 16, 16, str);
snprintf(str, sizeof(str), " int32 %d, int64 %lld, bitmask %08x ",
dev->int32->cur.val,
dev->int64->cur.val64,
*dev->int64->p_cur.p_s64,
dev->bitmask->cur.val);
gen_text(dev, vbuf, line++ * 16, 16, str);
snprintf(str, sizeof(str), " boolean %d, menu %s, string \"%s\" ",
dev->boolean->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);
snprintf(str, sizeof(str), " integer_menu %lld, value %d ",
dev->int_menu->qmenu_int[dev->int_menu->cur.val],
Expand Down
4 changes: 2 additions & 2 deletions drivers/media/radio/si4713/si4713.c
Original file line number Diff line number Diff line change
Expand Up @@ -1098,11 +1098,11 @@ static int si4713_s_ctrl(struct v4l2_ctrl *ctrl)

switch (ctrl->id) {
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;

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;

case V4L2_CID_TUNE_ANTENNA_CAPACITOR:
Expand Down
16 changes: 9 additions & 7 deletions drivers/media/v4l2-core/v4l2-ctrls.c
Original file line number Diff line number Diff line change
Expand Up @@ -1135,7 +1135,7 @@ static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 change
if (ctrl->is_ptr)
ev->u.ctrl.value64 = 0;
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.maximum = ctrl->maximum;
if (ctrl->type == V4L2_CTRL_TYPE_MENU
Expand Down Expand Up @@ -1801,7 +1801,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
flags |= V4L2_CTRL_FLAG_WRITE_ONLY;
else if (type == V4L2_CTRL_TYPE_CTRL_CLASS)
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;

ctrl = kzalloc(sizeof(*ctrl) + sz_extra, GFP_KERNEL);
Expand Down Expand Up @@ -1833,10 +1835,10 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
ctrl->qmenu_int = qmenu_int;
ctrl->priv = priv;
ctrl->cur.val = ctrl->val = def;
data = &ctrl->cur + 1;
data = &ctrl[1];

if (ctrl->is_ptr) {
ctrl->p = ctrl->p_new.p = data;
if (!ctrl->is_int) {
ctrl->p_new.p = data;
ctrl->p_cur.p = data + elem_size;
} else {
ctrl->p_new.p = &ctrl->val;
Expand Down Expand Up @@ -3103,10 +3105,10 @@ int v4l2_ctrl_modify_range(struct v4l2_ctrl *ctrl,
ctrl->maximum = max;
ctrl->step = step;
ctrl->default_value = def;
c.value = ctrl->cur.val;
c.value = *ctrl->p_cur.p_s32;
if (validate_new(ctrl, &c))
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);
else
send_event(NULL, ctrl, V4L2_EVENT_CTRL_CH_RANGE);
Expand Down
2 changes: 1 addition & 1 deletion drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1131,7 +1131,7 @@ static int solo_s_ctrl(struct v4l2_ctrl *ctrl)
solo_motion_toggle(solo_enc, ctrl->val);
return 0;
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);
return err;
default:
Expand Down
12 changes: 2 additions & 10 deletions include/media/v4l2-ctrls.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,17 +187,9 @@ struct v4l2_ctrl {
};
unsigned long flags;
void *priv;
union {
s32 val;
s64 val64;
char *string;
void *p;
};
union {
s32 val;
struct {
s32 val;
s64 val64;
char *string;
void *p;
} cur;

union v4l2_ctrl_ptr p_new;
Expand Down

0 comments on commit 2a9ec37

Please sign in to comment.