
From: Andreas Oberritter <obi@linuxtv.org>

Glue code for DMX_GET_CAPS and DMX_SET_SOURCE ioctls.

Signed-off-by: Andreas Oberritter <obi@linuxtv.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/media/dvb/dvb-core/demux.h  |    5 +++++
 drivers/media/dvb/dvb-core/dmxdev.c |   16 ++++++++++++++++
 2 files changed, 21 insertions(+)

diff -puN drivers/media/dvb/dvb-core/demux.h~dvb-core-glue-code-for-dmx_get_caps-and-dmx_set_source drivers/media/dvb/dvb-core/demux.h
--- devel/drivers/media/dvb/dvb-core/demux.h~dvb-core-glue-code-for-dmx_get_caps-and-dmx_set_source	2005-09-04 16:50:50.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-core/demux.h	2005-09-04 16:50:50.000000000 -0700
@@ -30,6 +30,7 @@
 #include <linux/errno.h>
 #include <linux/list.h>
 #include <linux/time.h>
+#include <linux/dvb/dmx.h>
 
 /*--------------------------------------------------------------------------*/
 /* Common definitions */
@@ -282,6 +283,10 @@ struct dmx_demux {
 
         int (*get_pes_pids) (struct dmx_demux* demux, u16 *pids);
 
+	int (*get_caps) (struct dmx_demux* demux, struct dmx_caps *caps);
+
+	int (*set_source) (struct dmx_demux* demux, const dmx_source_t *src);
+
         int (*get_stc) (struct dmx_demux* demux, unsigned int num,
 			u64 *stc, unsigned int *base);
 };
diff -puN drivers/media/dvb/dvb-core/dmxdev.c~dvb-core-glue-code-for-dmx_get_caps-and-dmx_set_source drivers/media/dvb/dvb-core/dmxdev.c
--- devel/drivers/media/dvb/dvb-core/dmxdev.c~dvb-core-glue-code-for-dmx_get_caps-and-dmx_set_source	2005-09-04 16:50:50.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-core/dmxdev.c	2005-09-04 16:50:50.000000000 -0700
@@ -929,6 +929,22 @@ static int dvb_demux_do_ioctl(struct ino
 		dmxdev->demux->get_pes_pids(dmxdev->demux, (u16 *)parg);
 		break;
 
+	case DMX_GET_CAPS:
+		if (!dmxdev->demux->get_caps) {
+			ret = -EINVAL;
+			break;
+		}
+		ret = dmxdev->demux->get_caps(dmxdev->demux, parg);
+		break;
+
+	case DMX_SET_SOURCE:
+		if (!dmxdev->demux->set_source) {
+			ret = -EINVAL;
+			break;
+		}
+		ret = dmxdev->demux->set_source(dmxdev->demux, parg);
+		break;
+
 	case DMX_GET_STC:
 		if (!dmxdev->demux->get_stc) {
 		        ret=-EINVAL;
_
