demux: provide ioctl to clear dmx cache [2/2]

PD#SWPL-169716

Problem:
provide ioctl to clear dmx cache

Solution:
provide ioctl to clear dmx cache

Verify:
verified at T5W

Change-Id: I3968204db100248664c2944ed893c959bef4618a
Signed-off-by: chuangcheng.peng <chuangcheng.peng@amlogic.com>
diff --git a/drivers/media/dvb-core/dmxdev.c b/drivers/media/dvb-core/dmxdev.c
index db09405..8b09fba 100644
--- a/drivers/media/dvb-core/dmxdev.c
+++ b/drivers/media/dvb-core/dmxdev.c
@@ -1225,6 +1225,13 @@ static int dvb_demux_do_ioctl(struct file *file,
 		}
 		ret = dmx_ext->decode_info(dmxdev->demux, parg);
 		break;
+	case DMX_SET_COMMAND:
+		if (!dmx_ext->dmx_set_command) {
+			ret = -EINVAL;
+			break;
+		}
+		ret = dmx_ext->dmx_set_command(dmxdev->demux, parg);
+		break;
 #endif
 
 	case DMX_ADD_PID:
diff --git a/include/media/aml_demux_ext.h b/include/media/aml_demux_ext.h
index 971d61e..85c7bd8 100644
--- a/include/media/aml_demux_ext.h
+++ b/include/media/aml_demux_ext.h
@@ -30,6 +30,8 @@ struct dmx_demux_ext {
 			u16 pids[2]);
 	int (*decode_info)(struct dmx_demux *demux,
 		void *info);
+	int (*dmx_set_command)(struct dmx_demux *demux,
+		void *info);
 };
 
 #endif
diff --git a/include/uapi/linux/dvb/aml_dmx_ext.h b/include/uapi/linux/dvb/aml_dmx_ext.h
index 9f32428..f78e1ca 100644
--- a/include/uapi/linux/dvb/aml_dmx_ext.h
+++ b/include/uapi/linux/dvb/aml_dmx_ext.h
@@ -197,6 +197,14 @@ struct decoder_mem_info {
 	__u32 rp_phy;
 };
 
+/*for set command to dmx*/
+#define DMX_CLEAR_CACHE		0
+
+struct dmx_set_command_info {
+	__u32 command;
+	__u32 reserved0;
+	__u32 reserved1;
+};
 /* amlogic define end */
 
 /* amlogic define */
@@ -210,6 +218,7 @@ struct decoder_mem_info {
 #define DMX_GET_DVR_MEM			_IOR('o', 86, struct dvr_mem_info)
 #define DMX_REMAP_PID			_IOR('o', 87, __u16[2])
 #define DMX_SET_DECODE_INFO     _IOW('o', 88, struct decoder_mem_info)
+#define DMX_SET_COMMAND			_IOW('o', 89, struct dmx_set_command_info)
 /* amlogic define end */
 
 #endif