summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/dvb-core
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2008-10-04 14:42:43 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-10-04 14:42:43 -0300
commitedd1d19fe9c951f51b87b6a614f3e5abc2a6c12e (patch)
tree90ac437585d333e24fb14cd6a225794e7c8d236f /linux/drivers/media/dvb/dvb-core
parent04e7c9cdf0dcd3290fb18cf3d4c546553a19a053 (diff)
parent497b9fe8337262924cddfabd1dbb48c7ee041bd2 (diff)
downloadmediapointer-dvb-s2-edd1d19fe9c951f51b87b6a614f3e5abc2a6c12e.tar.gz
mediapointer-dvb-s2-edd1d19fe9c951f51b87b6a614f3e5abc2a6c12e.tar.bz2
merge: http://hg.jannau.net/v4l-dvb
From: Mauro Carvalho Chehab <mchehab@redhat.com> Priority: normal Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'linux/drivers/media/dvb/dvb-core')
-rw-r--r--linux/drivers/media/dvb/dvb-core/dvb_frontend.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c
index 5c1193524..6f0dc252f 100644
--- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -45,6 +45,7 @@
#include "dvb_frontend.h"
#include "dvbdev.h"
#include "compat.h"
+#include <linux/dvb/version.h>
static int dvb_frontend_debug;
static int dvb_shutdown_timeout;
@@ -906,6 +907,11 @@ struct dtv_cmds_h dtv_cmds[] = {
.set = 0,
},
#endif
+ [DTV_API_VERSION] = {
+ .name = "DTV_API_VERSION",
+ .cmd = DTV_API_VERSION,
+ .set = 0,
+ },
};
void dtv_property_dump(struct dtv_property *tvp)
@@ -1210,6 +1216,9 @@ int dtv_property_process_get(struct dvb_frontend *fe, struct dtv_property *tvp,
case DTV_TONE:
tvp->u.data = fe->dtv_property_cache.sectone;
break;
+ case DTV_API_VERSION:
+ tvp->u.data = (DVB_API_VERSION << 8) | DVB_API_VERSION_MINOR;
+ break;
default:
r = -1;
}
@@ -1377,8 +1386,10 @@ static int dvb_frontend_ioctl_properties(struct inode *inode, struct file *file,
goto out;
}
- for (i = 0; i < tvps->num; i++)
- err |= dtv_property_process_set(fe, tvp + i, inode, file);
+ for (i = 0; i < tvps->num; i++) {
+ (tvp + i)->result = dtv_property_process_set(fe, tvp + i, inode, file);
+ err |= (tvp + i)->result;
+ }
if(fe->dtv_property_cache.state == DTV_TUNE) {
printk("%s() Property cache is full, tuning\n", __FUNCTION__);
@@ -1410,8 +1421,10 @@ static int dvb_frontend_ioctl_properties(struct inode *inode, struct file *file,
goto out;
}
- for (i = 0; i < tvps->num; i++)
- err |= dtv_property_process_get(fe, tvp + i, inode, file);
+ for (i = 0; i < tvps->num; i++) {
+ (tvp + i)->result = dtv_property_process_get(fe, tvp + i, inode, file);
+ err |= (tvp + i)->result;
+ }
if (copy_to_user(tvps->props, tvp, tvps->num * sizeof(struct dtv_property))) {
err = -EFAULT;