aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2012-05-06 08:28:21 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-05-14 08:27:57 -0400
commitcc7b6f257d42eb9829b38e3a8807943426a89a87 (patch)
tree1b19378610c8817b3103a77ccf1925ff4e4bc527 /drivers/media
parentd57fb9f8a69deb521ffabac02d2fea484141e59c (diff)
[media] gspca: Fix querycap and incorrect return codes
Add V4L2_CAP_DEVICE_CAPS support to querycap and replace -EINVAL by -ENOTTY whenever an ioctl is not supported. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/gspca/gspca.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c
index 9fe723c6acb..7669f27238c 100644
--- a/drivers/media/video/gspca/gspca.c
+++ b/drivers/media/video/gspca/gspca.c
@@ -1066,10 +1066,10 @@ static int vidioc_g_register(struct file *file, void *priv,
1066 struct gspca_dev *gspca_dev = video_drvdata(file); 1066 struct gspca_dev *gspca_dev = video_drvdata(file);
1067 1067
1068 if (!gspca_dev->sd_desc->get_chip_ident) 1068 if (!gspca_dev->sd_desc->get_chip_ident)
1069 return -EINVAL; 1069 return -ENOTTY;
1070 1070
1071 if (!gspca_dev->sd_desc->get_register) 1071 if (!gspca_dev->sd_desc->get_register)
1072 return -EINVAL; 1072 return -ENOTTY;
1073 1073
1074 if (mutex_lock_interruptible(&gspca_dev->usb_lock)) 1074 if (mutex_lock_interruptible(&gspca_dev->usb_lock))
1075 return -ERESTARTSYS; 1075 return -ERESTARTSYS;
@@ -1090,10 +1090,10 @@ static int vidioc_s_register(struct file *file, void *priv,
1090 struct gspca_dev *gspca_dev = video_drvdata(file); 1090 struct gspca_dev *gspca_dev = video_drvdata(file);
1091 1091
1092 if (!gspca_dev->sd_desc->get_chip_ident) 1092 if (!gspca_dev->sd_desc->get_chip_ident)
1093 return -EINVAL; 1093 return -ENOTTY;
1094 1094
1095 if (!gspca_dev->sd_desc->set_register) 1095 if (!gspca_dev->sd_desc->set_register)
1096 return -EINVAL; 1096 return -ENOTTY;
1097 1097
1098 if (mutex_lock_interruptible(&gspca_dev->usb_lock)) 1098 if (mutex_lock_interruptible(&gspca_dev->usb_lock))
1099 return -ERESTARTSYS; 1099 return -ERESTARTSYS;
@@ -1115,7 +1115,7 @@ static int vidioc_g_chip_ident(struct file *file, void *priv,
1115 struct gspca_dev *gspca_dev = video_drvdata(file); 1115 struct gspca_dev *gspca_dev = video_drvdata(file);
1116 1116
1117 if (!gspca_dev->sd_desc->get_chip_ident) 1117 if (!gspca_dev->sd_desc->get_chip_ident)
1118 return -EINVAL; 1118 return -ENOTTY;
1119 1119
1120 if (mutex_lock_interruptible(&gspca_dev->usb_lock)) 1120 if (mutex_lock_interruptible(&gspca_dev->usb_lock))
1121 return -ERESTARTSYS; 1121 return -ERESTARTSYS;
@@ -1410,9 +1410,10 @@ static int vidioc_querycap(struct file *file, void *priv,
1410 } 1410 }
1411 usb_make_path(gspca_dev->dev, (char *) cap->bus_info, 1411 usb_make_path(gspca_dev->dev, (char *) cap->bus_info,
1412 sizeof(cap->bus_info)); 1412 sizeof(cap->bus_info));
1413 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE 1413 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE
1414 | V4L2_CAP_STREAMING 1414 | V4L2_CAP_STREAMING
1415 | V4L2_CAP_READWRITE; 1415 | V4L2_CAP_READWRITE;
1416 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
1416 ret = 0; 1417 ret = 0;
1417out: 1418out:
1418 mutex_unlock(&gspca_dev->usb_lock); 1419 mutex_unlock(&gspca_dev->usb_lock);
@@ -1565,7 +1566,7 @@ static int vidioc_querymenu(struct file *file, void *priv,
1565 struct gspca_dev *gspca_dev = video_drvdata(file); 1566 struct gspca_dev *gspca_dev = video_drvdata(file);
1566 1567
1567 if (!gspca_dev->sd_desc->querymenu) 1568 if (!gspca_dev->sd_desc->querymenu)
1568 return -EINVAL; 1569 return -ENOTTY;
1569 return gspca_dev->sd_desc->querymenu(gspca_dev, qmenu); 1570 return gspca_dev->sd_desc->querymenu(gspca_dev, qmenu);
1570} 1571}
1571 1572
@@ -1774,7 +1775,7 @@ static int vidioc_g_jpegcomp(struct file *file, void *priv,
1774 int ret; 1775 int ret;
1775 1776
1776 if (!gspca_dev->sd_desc->get_jcomp) 1777 if (!gspca_dev->sd_desc->get_jcomp)
1777 return -EINVAL; 1778 return -ENOTTY;
1778 if (mutex_lock_interruptible(&gspca_dev->usb_lock)) 1779 if (mutex_lock_interruptible(&gspca_dev->usb_lock))
1779 return -ERESTARTSYS; 1780 return -ERESTARTSYS;
1780 gspca_dev->usb_err = 0; 1781 gspca_dev->usb_err = 0;
@@ -1793,7 +1794,7 @@ static int vidioc_s_jpegcomp(struct file *file, void *priv,
1793 int ret; 1794 int ret;
1794 1795
1795 if (!gspca_dev->sd_desc->set_jcomp) 1796 if (!gspca_dev->sd_desc->set_jcomp)
1796 return -EINVAL; 1797 return -ENOTTY;
1797 if (mutex_lock_interruptible(&gspca_dev->usb_lock)) 1798 if (mutex_lock_interruptible(&gspca_dev->usb_lock))
1798 return -ERESTARTSYS; 1799 return -ERESTARTSYS;
1799 gspca_dev->usb_err = 0; 1800 gspca_dev->usb_err = 0;