diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2014-04-27 02:38:13 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-07-17 10:57:17 -0400 |
commit | 2a9ec3731137f973c6289698de6566a25418b96f (patch) | |
tree | eb223ef2c2860dc1dd7bdd6fa06a7fca2210b133 | |
parent | 9ea1b7a4b66fddfab9e65e243b72d18371f8d9a5 (diff) |
[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>
-rw-r--r-- | Documentation/video4linux/v4l2-controls.txt | 2 | ||||
-rw-r--r-- | drivers/media/i2c/mt9v032.c | 2 | ||||
-rw-r--r-- | drivers/media/i2c/smiapp/smiapp-core.c | 4 | ||||
-rw-r--r-- | drivers/media/pci/ivtv/ivtv-controls.c | 4 | ||||
-rw-r--r-- | drivers/media/platform/vivi.c | 4 | ||||
-rw-r--r-- | drivers/media/radio/si4713/si4713.c | 4 | ||||
-rw-r--r-- | drivers/media/v4l2-core/v4l2-ctrls.c | 16 | ||||
-rw-r--r-- | drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c | 2 | ||||
-rw-r--r-- | include/media/v4l2-ctrls.h | 12 |
9 files changed, 22 insertions, 28 deletions
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt index 06cf3ac83631..c9ee9a7e403d 100644 --- a/Documentation/video4linux/v4l2-controls.txt +++ b/Documentation/video4linux/v4l2-controls.txt | |||
@@ -362,7 +362,7 @@ will result in a deadlock since these helpers lock the handler as well. | |||
362 | You can also take the handler lock yourself: | 362 | You can also take the handler lock yourself: |
363 | 363 | ||
364 | mutex_lock(&state->ctrl_handler.lock); | 364 | mutex_lock(&state->ctrl_handler.lock); |
365 | printk(KERN_INFO "String value is '%s'\n", ctrl1->cur.string); | 365 | pr_info("String value is '%s'\n", ctrl1->p_cur.p_char); |
366 | printk(KERN_INFO "Integer value is '%s'\n", ctrl2->cur.val); | 366 | printk(KERN_INFO "Integer value is '%s'\n", ctrl2->cur.val); |
367 | mutex_unlock(&state->ctrl_handler.lock); | 367 | mutex_unlock(&state->ctrl_handler.lock); |
368 | 368 | ||
diff --git a/drivers/media/i2c/mt9v032.c b/drivers/media/i2c/mt9v032.c index 65e6e1a9d104..435e9e661bbb 100644 --- a/drivers/media/i2c/mt9v032.c +++ b/drivers/media/i2c/mt9v032.c | |||
@@ -667,7 +667,7 @@ static int mt9v032_s_ctrl(struct v4l2_ctrl *ctrl) | |||
667 | break; | 667 | break; |
668 | 668 | ||
669 | freq = mt9v032->pdata->link_freqs[mt9v032->link_freq->val]; | 669 | freq = mt9v032->pdata->link_freqs[mt9v032->link_freq->val]; |
670 | mt9v032->pixel_rate->val64 = freq; | 670 | *mt9v032->pixel_rate->p_new.p_s64 = freq; |
671 | mt9v032->sysclk = freq; | 671 | mt9v032->sysclk = freq; |
672 | break; | 672 | break; |
673 | 673 | ||
diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c index 72350f0befc5..13411e9a0e25 100644 --- a/drivers/media/i2c/smiapp/smiapp-core.c +++ b/drivers/media/i2c/smiapp/smiapp-core.c | |||
@@ -297,8 +297,8 @@ static int smiapp_pll_update(struct smiapp_sensor *sensor) | |||
297 | if (rval < 0) | 297 | if (rval < 0) |
298 | return rval; | 298 | return rval; |
299 | 299 | ||
300 | sensor->pixel_rate_parray->cur.val64 = pll->vt_pix_clk_freq_hz; | 300 | *sensor->pixel_rate_parray->p_cur.p_s64 = pll->vt_pix_clk_freq_hz; |
301 | sensor->pixel_rate_csi->cur.val64 = pll->pixel_rate_csi; | 301 | *sensor->pixel_rate_csi->p_cur.p_s64 = pll->pixel_rate_csi; |
302 | 302 | ||
303 | return 0; | 303 | return 0; |
304 | } | 304 | } |
diff --git a/drivers/media/pci/ivtv/ivtv-controls.c b/drivers/media/pci/ivtv/ivtv-controls.c index c60424601cb9..2b0ab26e11e8 100644 --- a/drivers/media/pci/ivtv/ivtv-controls.c +++ b/drivers/media/pci/ivtv/ivtv-controls.c | |||
@@ -135,8 +135,8 @@ static int ivtv_g_volatile_ctrl(struct v4l2_ctrl *ctrl) | |||
135 | /* V4L2_CID_MPEG_VIDEO_DEC_PTS and V4L2_CID_MPEG_VIDEO_DEC_FRAME | 135 | /* V4L2_CID_MPEG_VIDEO_DEC_PTS and V4L2_CID_MPEG_VIDEO_DEC_FRAME |
136 | control cluster */ | 136 | control cluster */ |
137 | case V4L2_CID_MPEG_VIDEO_DEC_PTS: | 137 | case V4L2_CID_MPEG_VIDEO_DEC_PTS: |
138 | return ivtv_g_pts_frame(itv, &itv->ctrl_pts->val64, | 138 | return ivtv_g_pts_frame(itv, itv->ctrl_pts->p_new.p_s64, |
139 | &itv->ctrl_frame->val64); | 139 | itv->ctrl_frame->p_new.p_s64); |
140 | } | 140 | } |
141 | return 0; | 141 | return 0; |
142 | } | 142 | } |
diff --git a/drivers/media/platform/vivi.c b/drivers/media/platform/vivi.c index cd535b38469d..7542b5dd9910 100644 --- a/drivers/media/platform/vivi.c +++ b/drivers/media/platform/vivi.c | |||
@@ -648,13 +648,13 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf) | |||
648 | gen_text(dev, vbuf, line++ * 16, 16, str); | 648 | gen_text(dev, vbuf, line++ * 16, 16, str); |
649 | snprintf(str, sizeof(str), " int32 %d, int64 %lld, bitmask %08x ", | 649 | snprintf(str, sizeof(str), " int32 %d, int64 %lld, bitmask %08x ", |
650 | dev->int32->cur.val, | 650 | dev->int32->cur.val, |
651 | dev->int64->cur.val64, | 651 | *dev->int64->p_cur.p_s64, |
652 | dev->bitmask->cur.val); | 652 | dev->bitmask->cur.val); |
653 | gen_text(dev, vbuf, line++ * 16, 16, str); | 653 | gen_text(dev, vbuf, line++ * 16, 16, str); |
654 | snprintf(str, sizeof(str), " boolean %d, menu %s, string \"%s\" ", | 654 | snprintf(str, sizeof(str), " boolean %d, menu %s, string \"%s\" ", |
655 | dev->boolean->cur.val, | 655 | dev->boolean->cur.val, |
656 | dev->menu->qmenu[dev->menu->cur.val], | 656 | dev->menu->qmenu[dev->menu->cur.val], |
657 | dev->string->cur.string); | 657 | dev->string->p_cur.p_char); |
658 | gen_text(dev, vbuf, line++ * 16, 16, str); | 658 | gen_text(dev, vbuf, line++ * 16, 16, str); |
659 | snprintf(str, sizeof(str), " integer_menu %lld, value %d ", | 659 | snprintf(str, sizeof(str), " integer_menu %lld, value %d ", |
660 | dev->int_menu->qmenu_int[dev->int_menu->cur.val], | 660 | dev->int_menu->qmenu_int[dev->int_menu->cur.val], |
diff --git a/drivers/media/radio/si4713/si4713.c b/drivers/media/radio/si4713/si4713.c index 07d5153811e8..dbe47261b513 100644 --- a/drivers/media/radio/si4713/si4713.c +++ b/drivers/media/radio/si4713/si4713.c | |||
@@ -1098,11 +1098,11 @@ static int si4713_s_ctrl(struct v4l2_ctrl *ctrl) | |||
1098 | 1098 | ||
1099 | switch (ctrl->id) { | 1099 | switch (ctrl->id) { |
1100 | case V4L2_CID_RDS_TX_PS_NAME: | 1100 | case V4L2_CID_RDS_TX_PS_NAME: |
1101 | ret = si4713_set_rds_ps_name(sdev, ctrl->string); | 1101 | ret = si4713_set_rds_ps_name(sdev, ctrl->p_new.p_char); |
1102 | break; | 1102 | break; |
1103 | 1103 | ||
1104 | case V4L2_CID_RDS_TX_RADIO_TEXT: | 1104 | case V4L2_CID_RDS_TX_RADIO_TEXT: |
1105 | ret = si4713_set_rds_radio_text(sdev, ctrl->string); | 1105 | ret = si4713_set_rds_radio_text(sdev, ctrl->p_new.p_char); |
1106 | break; | 1106 | break; |
1107 | 1107 | ||
1108 | case V4L2_CID_TUNE_ANTENNA_CAPACITOR: | 1108 | case V4L2_CID_TUNE_ANTENNA_CAPACITOR: |
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c index 1b4d37ce4afe..4b105713e549 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls.c +++ b/drivers/media/v4l2-core/v4l2-ctrls.c | |||
@@ -1135,7 +1135,7 @@ static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 change | |||
1135 | if (ctrl->is_ptr) | 1135 | if (ctrl->is_ptr) |
1136 | ev->u.ctrl.value64 = 0; | 1136 | ev->u.ctrl.value64 = 0; |
1137 | else | 1137 | else |
1138 | ev->u.ctrl.value64 = ctrl->cur.val64; | 1138 | ev->u.ctrl.value64 = *ctrl->p_cur.p_s64; |
1139 | ev->u.ctrl.minimum = ctrl->minimum; | 1139 | ev->u.ctrl.minimum = ctrl->minimum; |
1140 | ev->u.ctrl.maximum = ctrl->maximum; | 1140 | ev->u.ctrl.maximum = ctrl->maximum; |
1141 | if (ctrl->type == V4L2_CTRL_TYPE_MENU | 1141 | if (ctrl->type == V4L2_CTRL_TYPE_MENU |
@@ -1801,7 +1801,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, | |||
1801 | flags |= V4L2_CTRL_FLAG_WRITE_ONLY; | 1801 | flags |= V4L2_CTRL_FLAG_WRITE_ONLY; |
1802 | else if (type == V4L2_CTRL_TYPE_CTRL_CLASS) | 1802 | else if (type == V4L2_CTRL_TYPE_CTRL_CLASS) |
1803 | flags |= V4L2_CTRL_FLAG_READ_ONLY; | 1803 | flags |= V4L2_CTRL_FLAG_READ_ONLY; |
1804 | else if (type == V4L2_CTRL_TYPE_STRING || type >= V4L2_CTRL_COMPOUND_TYPES) | 1804 | else if (type == V4L2_CTRL_TYPE_INTEGER64 || |
1805 | type == V4L2_CTRL_TYPE_STRING || | ||
1806 | type >= V4L2_CTRL_COMPOUND_TYPES) | ||
1805 | sz_extra += 2 * elem_size; | 1807 | sz_extra += 2 * elem_size; |
1806 | 1808 | ||
1807 | ctrl = kzalloc(sizeof(*ctrl) + sz_extra, GFP_KERNEL); | 1809 | ctrl = kzalloc(sizeof(*ctrl) + sz_extra, GFP_KERNEL); |
@@ -1833,10 +1835,10 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, | |||
1833 | ctrl->qmenu_int = qmenu_int; | 1835 | ctrl->qmenu_int = qmenu_int; |
1834 | ctrl->priv = priv; | 1836 | ctrl->priv = priv; |
1835 | ctrl->cur.val = ctrl->val = def; | 1837 | ctrl->cur.val = ctrl->val = def; |
1836 | data = &ctrl->cur + 1; | 1838 | data = &ctrl[1]; |
1837 | 1839 | ||
1838 | if (ctrl->is_ptr) { | 1840 | if (!ctrl->is_int) { |
1839 | ctrl->p = ctrl->p_new.p = data; | 1841 | ctrl->p_new.p = data; |
1840 | ctrl->p_cur.p = data + elem_size; | 1842 | ctrl->p_cur.p = data + elem_size; |
1841 | } else { | 1843 | } else { |
1842 | ctrl->p_new.p = &ctrl->val; | 1844 | ctrl->p_new.p = &ctrl->val; |
@@ -3103,10 +3105,10 @@ int v4l2_ctrl_modify_range(struct v4l2_ctrl *ctrl, | |||
3103 | ctrl->maximum = max; | 3105 | ctrl->maximum = max; |
3104 | ctrl->step = step; | 3106 | ctrl->step = step; |
3105 | ctrl->default_value = def; | 3107 | ctrl->default_value = def; |
3106 | c.value = ctrl->cur.val; | 3108 | c.value = *ctrl->p_cur.p_s32; |
3107 | if (validate_new(ctrl, &c)) | 3109 | if (validate_new(ctrl, &c)) |
3108 | c.value = def; | 3110 | c.value = def; |
3109 | if (c.value != ctrl->cur.val) | 3111 | if (c.value != *ctrl->p_cur.p_s32) |
3110 | ret = set_ctrl(NULL, ctrl, &c, V4L2_EVENT_CTRL_CH_RANGE); | 3112 | ret = set_ctrl(NULL, ctrl, &c, V4L2_EVENT_CTRL_CH_RANGE); |
3111 | else | 3113 | else |
3112 | send_event(NULL, ctrl, V4L2_EVENT_CTRL_CH_RANGE); | 3114 | send_event(NULL, ctrl, V4L2_EVENT_CTRL_CH_RANGE); |
diff --git a/drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c b/drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c index bb2604ead216..37f7fd090bc2 100644 --- a/drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c +++ b/drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c | |||
@@ -1131,7 +1131,7 @@ static int solo_s_ctrl(struct v4l2_ctrl *ctrl) | |||
1131 | solo_motion_toggle(solo_enc, ctrl->val); | 1131 | solo_motion_toggle(solo_enc, ctrl->val); |
1132 | return 0; | 1132 | return 0; |
1133 | case V4L2_CID_OSD_TEXT: | 1133 | case V4L2_CID_OSD_TEXT: |
1134 | strcpy(solo_enc->osd_text, ctrl->string); | 1134 | strcpy(solo_enc->osd_text, ctrl->p_new.p_char); |
1135 | err = solo_osd_print(solo_enc); | 1135 | err = solo_osd_print(solo_enc); |
1136 | return err; | 1136 | return err; |
1137 | default: | 1137 | default: |
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h index a38bd55909b2..eb69c52e2f64 100644 --- a/include/media/v4l2-ctrls.h +++ b/include/media/v4l2-ctrls.h | |||
@@ -187,17 +187,9 @@ struct v4l2_ctrl { | |||
187 | }; | 187 | }; |
188 | unsigned long flags; | 188 | unsigned long flags; |
189 | void *priv; | 189 | void *priv; |
190 | union { | 190 | s32 val; |
191 | s32 val; | 191 | struct { |
192 | s64 val64; | ||
193 | char *string; | ||
194 | void *p; | ||
195 | }; | ||
196 | union { | ||
197 | s32 val; | 192 | s32 val; |
198 | s64 val64; | ||
199 | char *string; | ||
200 | void *p; | ||
201 | } cur; | 193 | } cur; |
202 | 194 | ||
203 | union v4l2_ctrl_ptr p_new; | 195 | union v4l2_ctrl_ptr p_new; |