aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2014-04-27 02:38:13 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-07-17 10:57:17 -0400
commit2a9ec3731137f973c6289698de6566a25418b96f (patch)
treeeb223ef2c2860dc1dd7bdd6fa06a7fca2210b133
parent9ea1b7a4b66fddfab9e65e243b72d18371f8d9a5 (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.txt2
-rw-r--r--drivers/media/i2c/mt9v032.c2
-rw-r--r--drivers/media/i2c/smiapp/smiapp-core.c4
-rw-r--r--drivers/media/pci/ivtv/ivtv-controls.c4
-rw-r--r--drivers/media/platform/vivi.c4
-rw-r--r--drivers/media/radio/si4713/si4713.c4
-rw-r--r--drivers/media/v4l2-core/v4l2-ctrls.c16
-rw-r--r--drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c2
-rw-r--r--include/media/v4l2-ctrls.h12
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.
362You can also take the handler lock yourself: 362You 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;