diff options
-rw-r--r-- | drivers/media/video/cx25840/cx25840-core.c | 4 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-video.c | 2 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-hdw.c | 6 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-hdw.h | 2 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-v4l2.c | 14 | ||||
-rw-r--r-- | drivers/media/video/saa7115.c | 4 | ||||
-rw-r--r-- | drivers/media/video/saa7127.c | 4 | ||||
-rw-r--r-- | drivers/media/video/tvp5150.c | 4 | ||||
-rw-r--r-- | drivers/media/video/upd64031a.c | 4 | ||||
-rw-r--r-- | drivers/media/video/upd64083.c | 4 | ||||
-rw-r--r-- | drivers/media/video/usbvision/usbvision-video.c | 12 | ||||
-rw-r--r-- | drivers/media/video/v4l2-common.c | 11 | ||||
-rw-r--r-- | drivers/media/video/videodev.c | 8 | ||||
-rw-r--r-- | include/linux/videodev2.h | 14 | ||||
-rw-r--r-- | include/media/v4l2-common.h | 11 | ||||
-rw-r--r-- | include/media/v4l2-dev.h | 3 |
16 files changed, 57 insertions, 50 deletions
diff --git a/drivers/media/video/cx25840/cx25840-core.c b/drivers/media/video/cx25840/cx25840-core.c index 7bb7589a07c3..6515b2a78417 100644 --- a/drivers/media/video/cx25840/cx25840-core.c +++ b/drivers/media/video/cx25840/cx25840-core.c | |||
@@ -628,7 +628,7 @@ static int cx25840_command(struct i2c_client *client, unsigned int cmd, | |||
628 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 628 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
629 | /* ioctls to allow direct access to the | 629 | /* ioctls to allow direct access to the |
630 | * cx25840 registers for testing */ | 630 | * cx25840 registers for testing */ |
631 | case VIDIOC_INT_G_REGISTER: | 631 | case VIDIOC_DBG_G_REGISTER: |
632 | { | 632 | { |
633 | struct v4l2_register *reg = arg; | 633 | struct v4l2_register *reg = arg; |
634 | 634 | ||
@@ -638,7 +638,7 @@ static int cx25840_command(struct i2c_client *client, unsigned int cmd, | |||
638 | break; | 638 | break; |
639 | } | 639 | } |
640 | 640 | ||
641 | case VIDIOC_INT_S_REGISTER: | 641 | case VIDIOC_DBG_S_REGISTER: |
642 | { | 642 | { |
643 | struct v4l2_register *reg = arg; | 643 | struct v4l2_register *reg = arg; |
644 | 644 | ||
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c index ee8cbd33cfc1..f6736eb786bc 100644 --- a/drivers/media/video/cx88/cx88-video.c +++ b/drivers/media/video/cx88/cx88-video.c | |||
@@ -1405,8 +1405,6 @@ static int vidioc_s_register (struct file *file, void *fh, | |||
1405 | 1405 | ||
1406 | if (reg->i2c_id != 0) | 1406 | if (reg->i2c_id != 0) |
1407 | return -EINVAL; | 1407 | return -EINVAL; |
1408 | if (!capable(CAP_SYS_ADMIN)) | ||
1409 | return -EPERM; | ||
1410 | cx_write(reg->reg&0xffffff, reg->val); | 1408 | cx_write(reg->reg&0xffffff, reg->val); |
1411 | return 0; | 1409 | return 0; |
1412 | } | 1410 | } |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c index 5e166ed19fc5..2a350755bd30 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c +++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c | |||
@@ -3277,7 +3277,7 @@ static int pvr2_hdw_get_eeprom_addr(struct pvr2_hdw *hdw) | |||
3277 | 3277 | ||
3278 | 3278 | ||
3279 | int pvr2_hdw_register_access(struct pvr2_hdw *hdw, | 3279 | int pvr2_hdw_register_access(struct pvr2_hdw *hdw, |
3280 | u32 chip_id,unsigned long reg_id, | 3280 | u32 chip_id, u32 reg_id, |
3281 | int setFl,u32 *val_ptr) | 3281 | int setFl,u32 *val_ptr) |
3282 | { | 3282 | { |
3283 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 3283 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
@@ -3295,8 +3295,8 @@ int pvr2_hdw_register_access(struct pvr2_hdw *hdw, | |||
3295 | cp = list_entry(item,struct pvr2_i2c_client,list); | 3295 | cp = list_entry(item,struct pvr2_i2c_client,list); |
3296 | if (cp->client->driver->id != chip_id) continue; | 3296 | if (cp->client->driver->id != chip_id) continue; |
3297 | stat = pvr2_i2c_client_cmd( | 3297 | stat = pvr2_i2c_client_cmd( |
3298 | cp,(setFl ? VIDIOC_INT_S_REGISTER : | 3298 | cp,(setFl ? VIDIOC_DBG_S_REGISTER : |
3299 | VIDIOC_INT_G_REGISTER),&req); | 3299 | VIDIOC_DBG_G_REGISTER),&req); |
3300 | if (!setFl) *val_ptr = req.val; | 3300 | if (!setFl) *val_ptr = req.val; |
3301 | okFl = !0; | 3301 | okFl = !0; |
3302 | break; | 3302 | break; |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.h b/drivers/media/video/pvrusb2/pvrusb2-hdw.h index dc7a3ba8dd18..e6df8e4a7fe0 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw.h +++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.h | |||
@@ -222,7 +222,7 @@ void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *, | |||
222 | setFl - true to set the register, false to read it | 222 | setFl - true to set the register, false to read it |
223 | val_ptr - storage location for source / result. */ | 223 | val_ptr - storage location for source / result. */ |
224 | int pvr2_hdw_register_access(struct pvr2_hdw *, | 224 | int pvr2_hdw_register_access(struct pvr2_hdw *, |
225 | u32 chip_id,unsigned long reg_id, | 225 | u32 chip_id,u32 reg_id, |
226 | int setFl,u32 *val_ptr); | 226 | int setFl,u32 *val_ptr); |
227 | 227 | ||
228 | /* The following entry points are all lower level things you normally don't | 228 | /* The following entry points are all lower level things you normally don't |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c index 49f5d3c3614c..cde5f5f3e8f2 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c +++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c | |||
@@ -738,16 +738,20 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct file *file, | |||
738 | break; | 738 | break; |
739 | } | 739 | } |
740 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 740 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
741 | case VIDIOC_INT_G_REGISTER: | 741 | case VIDIOC_DBG_S_REGISTER: |
742 | case VIDIOC_INT_S_REGISTER: | 742 | if (!capable(CAP_SYS_ADMIN)) { |
743 | ret = -EPERM; | ||
744 | break; | ||
745 | } /* fall through */ | ||
746 | case VIDIOC_DBG_G_REGISTER: | ||
743 | { | 747 | { |
744 | u32 val; | 748 | u32 val; |
745 | struct v4l2_register *req = (struct v4l2_register *)arg; | 749 | struct v4l2_register *req = (struct v4l2_register *)arg; |
746 | if (cmd == VIDIOC_INT_S_REGISTER) val = req->val; | 750 | if (cmd == VIDIOC_DBG_S_REGISTER) val = req->val; |
747 | ret = pvr2_hdw_register_access( | 751 | ret = pvr2_hdw_register_access( |
748 | hdw,req->i2c_id,req->reg, | 752 | hdw,req->i2c_id,req->reg, |
749 | cmd == VIDIOC_INT_S_REGISTER,&val); | 753 | cmd == VIDIOC_DBG_S_REGISTER,&val); |
750 | if (cmd == VIDIOC_INT_G_REGISTER) req->val = val; | 754 | if (cmd == VIDIOC_DBG_G_REGISTER) req->val = val; |
751 | break; | 755 | break; |
752 | } | 756 | } |
753 | #endif | 757 | #endif |
diff --git a/drivers/media/video/saa7115.c b/drivers/media/video/saa7115.c index 389e518bc3e5..bb6aa135002a 100644 --- a/drivers/media/video/saa7115.c +++ b/drivers/media/video/saa7115.c | |||
@@ -1417,7 +1417,7 @@ static int saa711x_command(struct i2c_client *client, unsigned int cmd, void *ar | |||
1417 | } | 1417 | } |
1418 | 1418 | ||
1419 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 1419 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
1420 | case VIDIOC_INT_G_REGISTER: | 1420 | case VIDIOC_DBG_G_REGISTER: |
1421 | { | 1421 | { |
1422 | struct v4l2_register *reg = arg; | 1422 | struct v4l2_register *reg = arg; |
1423 | 1423 | ||
@@ -1427,7 +1427,7 @@ static int saa711x_command(struct i2c_client *client, unsigned int cmd, void *ar | |||
1427 | break; | 1427 | break; |
1428 | } | 1428 | } |
1429 | 1429 | ||
1430 | case VIDIOC_INT_S_REGISTER: | 1430 | case VIDIOC_DBG_S_REGISTER: |
1431 | { | 1431 | { |
1432 | struct v4l2_register *reg = arg; | 1432 | struct v4l2_register *reg = arg; |
1433 | 1433 | ||
diff --git a/drivers/media/video/saa7127.c b/drivers/media/video/saa7127.c index ad401bdefeaf..304375ade4a9 100644 --- a/drivers/media/video/saa7127.c +++ b/drivers/media/video/saa7127.c | |||
@@ -614,7 +614,7 @@ static int saa7127_command(struct i2c_client *client, | |||
614 | break; | 614 | break; |
615 | 615 | ||
616 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 616 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
617 | case VIDIOC_INT_G_REGISTER: | 617 | case VIDIOC_DBG_G_REGISTER: |
618 | { | 618 | { |
619 | struct v4l2_register *reg = arg; | 619 | struct v4l2_register *reg = arg; |
620 | 620 | ||
@@ -624,7 +624,7 @@ static int saa7127_command(struct i2c_client *client, | |||
624 | break; | 624 | break; |
625 | } | 625 | } |
626 | 626 | ||
627 | case VIDIOC_INT_S_REGISTER: | 627 | case VIDIOC_DBG_S_REGISTER: |
628 | { | 628 | { |
629 | struct v4l2_register *reg = arg; | 629 | struct v4l2_register *reg = arg; |
630 | 630 | ||
diff --git a/drivers/media/video/tvp5150.c b/drivers/media/video/tvp5150.c index bc0a4fc27b24..65d4389690a0 100644 --- a/drivers/media/video/tvp5150.c +++ b/drivers/media/video/tvp5150.c | |||
@@ -950,7 +950,7 @@ static int tvp5150_command(struct i2c_client *c, | |||
950 | } | 950 | } |
951 | 951 | ||
952 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 952 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
953 | case VIDIOC_INT_G_REGISTER: | 953 | case VIDIOC_DBG_G_REGISTER: |
954 | { | 954 | { |
955 | struct v4l2_register *reg = arg; | 955 | struct v4l2_register *reg = arg; |
956 | 956 | ||
@@ -960,7 +960,7 @@ static int tvp5150_command(struct i2c_client *c, | |||
960 | break; | 960 | break; |
961 | } | 961 | } |
962 | 962 | ||
963 | case VIDIOC_INT_S_REGISTER: | 963 | case VIDIOC_DBG_S_REGISTER: |
964 | { | 964 | { |
965 | struct v4l2_register *reg = arg; | 965 | struct v4l2_register *reg = arg; |
966 | 966 | ||
diff --git a/drivers/media/video/upd64031a.c b/drivers/media/video/upd64031a.c index fc52201d607e..0eee82ba52bc 100644 --- a/drivers/media/video/upd64031a.c +++ b/drivers/media/video/upd64031a.c | |||
@@ -162,7 +162,7 @@ static int upd64031a_command(struct i2c_client *client, unsigned int cmd, void * | |||
162 | break; | 162 | break; |
163 | 163 | ||
164 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 164 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
165 | case VIDIOC_INT_G_REGISTER: | 165 | case VIDIOC_DBG_G_REGISTER: |
166 | { | 166 | { |
167 | struct v4l2_register *reg = arg; | 167 | struct v4l2_register *reg = arg; |
168 | 168 | ||
@@ -172,7 +172,7 @@ static int upd64031a_command(struct i2c_client *client, unsigned int cmd, void * | |||
172 | break; | 172 | break; |
173 | } | 173 | } |
174 | 174 | ||
175 | case VIDIOC_INT_S_REGISTER: | 175 | case VIDIOC_DBG_S_REGISTER: |
176 | { | 176 | { |
177 | struct v4l2_register *reg = arg; | 177 | struct v4l2_register *reg = arg; |
178 | u8 addr = reg->reg & 0xff; | 178 | u8 addr = reg->reg & 0xff; |
diff --git a/drivers/media/video/upd64083.c b/drivers/media/video/upd64083.c index c3a7ffe5c267..3f0eec0cdb45 100644 --- a/drivers/media/video/upd64083.c +++ b/drivers/media/video/upd64083.c | |||
@@ -139,7 +139,7 @@ static int upd64083_command(struct i2c_client *client, unsigned int cmd, void *a | |||
139 | break; | 139 | break; |
140 | 140 | ||
141 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 141 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
142 | case VIDIOC_INT_G_REGISTER: | 142 | case VIDIOC_DBG_G_REGISTER: |
143 | { | 143 | { |
144 | struct v4l2_register *reg = arg; | 144 | struct v4l2_register *reg = arg; |
145 | 145 | ||
@@ -149,7 +149,7 @@ static int upd64083_command(struct i2c_client *client, unsigned int cmd, void *a | |||
149 | break; | 149 | break; |
150 | } | 150 | } |
151 | 151 | ||
152 | case VIDIOC_INT_S_REGISTER: | 152 | case VIDIOC_DBG_S_REGISTER: |
153 | { | 153 | { |
154 | struct v4l2_register *reg = arg; | 154 | struct v4l2_register *reg = arg; |
155 | u8 addr = reg->reg & 0xff; | 155 | u8 addr = reg->reg & 0xff; |
diff --git a/drivers/media/video/usbvision/usbvision-video.c b/drivers/media/video/usbvision/usbvision-video.c index 82c39767ba34..b6fabeeb8ab8 100644 --- a/drivers/media/video/usbvision/usbvision-video.c +++ b/drivers/media/video/usbvision/usbvision-video.c | |||
@@ -519,7 +519,7 @@ static int usbvision_v4l2_do_ioctl(struct inode *inode, struct file *file, | |||
519 | 519 | ||
520 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 520 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
521 | /* ioctls to allow direct acces to the NT100x registers */ | 521 | /* ioctls to allow direct acces to the NT100x registers */ |
522 | case VIDIOC_INT_G_REGISTER: | 522 | case VIDIOC_DBG_G_REGISTER: |
523 | { | 523 | { |
524 | struct v4l2_register *reg = arg; | 524 | struct v4l2_register *reg = arg; |
525 | int errCode; | 525 | int errCode; |
@@ -529,17 +529,17 @@ static int usbvision_v4l2_do_ioctl(struct inode *inode, struct file *file, | |||
529 | /* NT100x has a 8-bit register space */ | 529 | /* NT100x has a 8-bit register space */ |
530 | errCode = usbvision_read_reg(usbvision, reg->reg&0xff); | 530 | errCode = usbvision_read_reg(usbvision, reg->reg&0xff); |
531 | if (errCode < 0) { | 531 | if (errCode < 0) { |
532 | err("%s: VIDIOC_INT_G_REGISTER failed: error %d", __FUNCTION__, errCode); | 532 | err("%s: VIDIOC_DBG_G_REGISTER failed: error %d", __FUNCTION__, errCode); |
533 | } | 533 | } |
534 | else { | 534 | else { |
535 | reg->val=(unsigned char)errCode; | 535 | reg->val=(unsigned char)errCode; |
536 | PDEBUG(DBG_IOCTL, "VIDIOC_INT_G_REGISTER reg=0x%02X, value=0x%02X", | 536 | PDEBUG(DBG_IOCTL, "VIDIOC_DBG_G_REGISTER reg=0x%02X, value=0x%02X", |
537 | (unsigned int)reg->reg, reg->val); | 537 | (unsigned int)reg->reg, reg->val); |
538 | errCode = 0; // No error | 538 | errCode = 0; // No error |
539 | } | 539 | } |
540 | return errCode; | 540 | return errCode; |
541 | } | 541 | } |
542 | case VIDIOC_INT_S_REGISTER: | 542 | case VIDIOC_DBG_S_REGISTER: |
543 | { | 543 | { |
544 | struct v4l2_register *reg = arg; | 544 | struct v4l2_register *reg = arg; |
545 | int errCode; | 545 | int errCode; |
@@ -550,10 +550,10 @@ static int usbvision_v4l2_do_ioctl(struct inode *inode, struct file *file, | |||
550 | return -EPERM; | 550 | return -EPERM; |
551 | errCode = usbvision_write_reg(usbvision, reg->reg&0xff, reg->val); | 551 | errCode = usbvision_write_reg(usbvision, reg->reg&0xff, reg->val); |
552 | if (errCode < 0) { | 552 | if (errCode < 0) { |
553 | err("%s: VIDIOC_INT_S_REGISTER failed: error %d", __FUNCTION__, errCode); | 553 | err("%s: VIDIOC_DBG_S_REGISTER failed: error %d", __FUNCTION__, errCode); |
554 | } | 554 | } |
555 | else { | 555 | else { |
556 | PDEBUG(DBG_IOCTL, "VIDIOC_INT_S_REGISTER reg=0x%02X, value=0x%02X", | 556 | PDEBUG(DBG_IOCTL, "VIDIOC_DBG_S_REGISTER reg=0x%02X, value=0x%02X", |
557 | (unsigned int)reg->reg, reg->val); | 557 | (unsigned int)reg->reg, reg->val); |
558 | errCode = 0; | 558 | errCode = 0; |
559 | } | 559 | } |
diff --git a/drivers/media/video/v4l2-common.c b/drivers/media/video/v4l2-common.c index dab87512b9bd..d20d4ca5d8a3 100644 --- a/drivers/media/video/v4l2-common.c +++ b/drivers/media/video/v4l2-common.c | |||
@@ -400,9 +400,10 @@ static const char *v4l2_int_ioctls[] = { | |||
400 | [_IOC_NR(TUNER_SET_STANDBY)] = "TUNER_SET_STANDBY", | 400 | [_IOC_NR(TUNER_SET_STANDBY)] = "TUNER_SET_STANDBY", |
401 | [_IOC_NR(TDA9887_SET_CONFIG)] = "TDA9887_SET_CONFIG", | 401 | [_IOC_NR(TDA9887_SET_CONFIG)] = "TDA9887_SET_CONFIG", |
402 | 402 | ||
403 | [_IOC_NR(VIDIOC_DBG_S_REGISTER)] = "VIDIOC_DBG_S_REGISTER", | ||
404 | [_IOC_NR(VIDIOC_DBG_G_REGISTER)] = "VIDIOC_DBG_G_REGISTER", | ||
405 | |||
403 | [_IOC_NR(VIDIOC_INT_S_TUNER_MODE)] = "VIDIOC_INT_S_TUNER_MODE", | 406 | [_IOC_NR(VIDIOC_INT_S_TUNER_MODE)] = "VIDIOC_INT_S_TUNER_MODE", |
404 | [_IOC_NR(VIDIOC_INT_S_REGISTER)] = "VIDIOC_INT_S_REGISTER", | ||
405 | [_IOC_NR(VIDIOC_INT_G_REGISTER)] = "VIDIOC_INT_G_REGISTER", | ||
406 | [_IOC_NR(VIDIOC_INT_RESET)] = "VIDIOC_INT_RESET", | 407 | [_IOC_NR(VIDIOC_INT_RESET)] = "VIDIOC_INT_RESET", |
407 | [_IOC_NR(VIDIOC_INT_AUDIO_CLOCK_FREQ)] = "VIDIOC_INT_AUDIO_CLOCK_FREQ", | 408 | [_IOC_NR(VIDIOC_INT_AUDIO_CLOCK_FREQ)] = "VIDIOC_INT_AUDIO_CLOCK_FREQ", |
408 | [_IOC_NR(VIDIOC_INT_DECODE_VBI_LINE)] = "VIDIOC_INT_DECODE_VBI_LINE", | 409 | [_IOC_NR(VIDIOC_INT_DECODE_VBI_LINE)] = "VIDIOC_INT_DECODE_VBI_LINE", |
@@ -753,11 +754,11 @@ void v4l_printk_ioctl_arg(char *s,unsigned int cmd, void *arg) | |||
753 | p->id,p->index,p->name); | 754 | p->id,p->index,p->name); |
754 | break; | 755 | break; |
755 | } | 756 | } |
756 | case VIDIOC_INT_G_REGISTER: | 757 | case VIDIOC_DBG_G_REGISTER: |
757 | case VIDIOC_INT_S_REGISTER: | 758 | case VIDIOC_DBG_S_REGISTER: |
758 | { | 759 | { |
759 | struct v4l2_register *p=arg; | 760 | struct v4l2_register *p=arg; |
760 | printk ("%s: i2c_id=%d, reg=%lu, val=%d\n", s, | 761 | printk ("%s: i2c_id=%d, reg=%d, val=%d\n", s, |
761 | p->i2c_id,p->reg,p->val); | 762 | p->i2c_id,p->reg,p->val); |
762 | 763 | ||
763 | break; | 764 | break; |
diff --git a/drivers/media/video/videodev.c b/drivers/media/video/videodev.c index 4b5d5f771e4c..764a53b70db2 100644 --- a/drivers/media/video/videodev.c +++ b/drivers/media/video/videodev.c | |||
@@ -1454,17 +1454,19 @@ static int __video_do_ioctl(struct inode *inode, struct file *file, | |||
1454 | break; | 1454 | break; |
1455 | } | 1455 | } |
1456 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 1456 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
1457 | case VIDIOC_INT_G_REGISTER: | 1457 | case VIDIOC_DBG_G_REGISTER: |
1458 | { | 1458 | { |
1459 | struct v4l2_register *p=arg; | 1459 | struct v4l2_register *p=arg; |
1460 | if (vfd->vidioc_g_register) | 1460 | if (vfd->vidioc_g_register) |
1461 | ret=vfd->vidioc_g_register(file, fh, p); | 1461 | ret=vfd->vidioc_g_register(file, fh, p); |
1462 | break; | 1462 | break; |
1463 | } | 1463 | } |
1464 | case VIDIOC_INT_S_REGISTER: | 1464 | case VIDIOC_DBG_S_REGISTER: |
1465 | { | 1465 | { |
1466 | struct v4l2_register *p=arg; | 1466 | struct v4l2_register *p=arg; |
1467 | if (vfd->vidioc_s_register) | 1467 | if (!capable(CAP_SYS_ADMIN)) |
1468 | ret=-EPERM; | ||
1469 | else if (vfd->vidioc_s_register) | ||
1468 | ret=vfd->vidioc_s_register(file, fh, p); | 1470 | ret=vfd->vidioc_s_register(file, fh, p); |
1469 | break; | 1471 | break; |
1470 | } | 1472 | } |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 112b28c1f63a..fe6ccdfa9d48 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
@@ -1271,6 +1271,17 @@ struct v4l2_streamparm | |||
1271 | }; | 1271 | }; |
1272 | 1272 | ||
1273 | /* | 1273 | /* |
1274 | * A D V A N C E D D E B U G G I N G | ||
1275 | */ | ||
1276 | |||
1277 | /* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */ | ||
1278 | struct v4l2_register { | ||
1279 | __u32 i2c_id; /* I2C driver ID of the I2C chip, or 0 for the host */ | ||
1280 | __u32 reg; | ||
1281 | __u32 val; | ||
1282 | }; | ||
1283 | |||
1284 | /* | ||
1274 | * I O C T L C O D E S F O R V I D E O D E V I C E S | 1285 | * I O C T L C O D E S F O R V I D E O D E V I C E S |
1275 | * | 1286 | * |
1276 | */ | 1287 | */ |
@@ -1339,6 +1350,9 @@ struct v4l2_streamparm | |||
1339 | #define VIDIOC_ENUM_FRAMESIZES _IOWR ('V', 74, struct v4l2_frmsizeenum) | 1350 | #define VIDIOC_ENUM_FRAMESIZES _IOWR ('V', 74, struct v4l2_frmsizeenum) |
1340 | #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR ('V', 75, struct v4l2_frmivalenum) | 1351 | #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR ('V', 75, struct v4l2_frmivalenum) |
1341 | #endif | 1352 | #endif |
1353 | /* only implemented if CONFIG_VIDEO_ADV_DEBUG is defined */ | ||
1354 | #define VIDIOC_DBG_S_REGISTER _IOW ('d', 100, struct v4l2_register) | ||
1355 | #define VIDIOC_DBG_G_REGISTER _IOWR('d', 101, struct v4l2_register) | ||
1342 | 1356 | ||
1343 | #ifdef __OLD_VIDIOC_ | 1357 | #ifdef __OLD_VIDIOC_ |
1344 | /* for compatibility, will go away some day */ | 1358 | /* for compatibility, will go away some day */ |
diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h index 91b19921f958..959e6f6a4eff 100644 --- a/include/media/v4l2-common.h +++ b/include/media/v4l2-common.h | |||
@@ -99,13 +99,6 @@ u32 v4l2_ctrl_next(const u32 * const *ctrl_classes, u32 id); | |||
99 | 99 | ||
100 | /* Internal ioctls */ | 100 | /* Internal ioctls */ |
101 | 101 | ||
102 | /* VIDIOC_INT_G_REGISTER and VIDIOC_INT_S_REGISTER */ | ||
103 | struct v4l2_register { | ||
104 | u32 i2c_id; /* I2C driver ID of the I2C chip. 0 for the I2C adapter. */ | ||
105 | unsigned long reg; | ||
106 | u32 val; | ||
107 | }; | ||
108 | |||
109 | /* VIDIOC_INT_DECODE_VBI_LINE */ | 102 | /* VIDIOC_INT_DECODE_VBI_LINE */ |
110 | struct v4l2_decode_vbi_line { | 103 | struct v4l2_decode_vbi_line { |
111 | u32 is_second_field; /* Set to 0 for the first (odd) field, | 104 | u32 is_second_field; /* Set to 0 for the first (odd) field, |
@@ -175,9 +168,7 @@ enum v4l2_chip_ident { | |||
175 | Replacement of TUNER_SET_STANDBY. */ | 168 | Replacement of TUNER_SET_STANDBY. */ |
176 | #define VIDIOC_INT_S_STANDBY _IOW('d', 94, u32) | 169 | #define VIDIOC_INT_S_STANDBY _IOW('d', 94, u32) |
177 | 170 | ||
178 | /* only implemented if CONFIG_VIDEO_ADV_DEBUG is defined */ | 171 | /* 100, 101 used by VIDIOC_DBG_[SG]_REGISTER */ |
179 | #define VIDIOC_INT_S_REGISTER _IOW ('d', 100, struct v4l2_register) | ||
180 | #define VIDIOC_INT_G_REGISTER _IOWR('d', 101, struct v4l2_register) | ||
181 | 172 | ||
182 | /* Generic reset command. The argument selects which subsystems to reset. | 173 | /* Generic reset command. The argument selects which subsystems to reset. |
183 | Passing 0 will always reset the whole chip. */ | 174 | Passing 0 will always reset the whole chip. */ |
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h index 46eb71f5653c..aeec56992ef5 100644 --- a/include/media/v4l2-dev.h +++ b/include/media/v4l2-dev.h | |||
@@ -77,9 +77,6 @@ int v4l_compat_translate_ioctl(struct inode *inode, struct file *file, | |||
77 | extern long v4l_compat_ioctl32(struct file *file, unsigned int cmd, | 77 | extern long v4l_compat_ioctl32(struct file *file, unsigned int cmd, |
78 | unsigned long arg); | 78 | unsigned long arg); |
79 | 79 | ||
80 | /* Forward definition of v4l2-common.h defined structure */ | ||
81 | struct v4l2_register; | ||
82 | |||
83 | /* | 80 | /* |
84 | * Newer version of video_device, handled by videodev2.c | 81 | * Newer version of video_device, handled by videodev2.c |
85 | * This version moves redundant code from video device code to | 82 | * This version moves redundant code from video device code to |