demux: uapi header file rectification. [1/4]

PD#SWPL-103754

Problem:
uapi header file rectification.

Solution:
uapi header file rectification.

Verify:
AH212/S905X4

Signed-off-by: hongyu.chen <hongyu.chen@amlogic.com>
Change-Id: I9856b1424b9ebd25f9fdb6bf478d6304cbaf8ab5
diff --git a/drivers/media/dvb-core/dmxdev.c b/drivers/media/dvb-core/dmxdev.c
index e0b1917..db09405 100644
--- a/drivers/media/dvb-core/dmxdev.c
+++ b/drivers/media/dvb-core/dmxdev.c
@@ -32,6 +32,7 @@
 
 #ifdef CONFIG_AMLOGIC_DVB_COMPAT
 #include <uapi/linux/dvb/aml_dmx_ext.h>
+#include <media/aml_demux_ext.h>
 #endif
 
 static int debug;
@@ -1045,6 +1046,9 @@ static int dvb_demux_do_ioctl(struct file *file,
 {
 	struct dmxdev_filter *dmxdevfilter = file->private_data;
 	struct dmxdev *dmxdev = dmxdevfilter->dev;
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+	struct dmx_demux_ext *dmx_ext = container_of(dmxdev->demux, struct dmx_demux_ext, dmx);
+#endif
 	unsigned long arg = (unsigned long)parg;
 	int ret = 0;
 
@@ -1121,11 +1125,11 @@ static int dvb_demux_do_ioctl(struct file *file,
 
 #ifdef CONFIG_AMLOGIC_DVB_COMPAT
 	case DMX_SET_INPUT:
-		if (!dmxdev->demux->set_input) {
+		if (!dmx_ext->set_input) {
 			ret = -EINVAL;
 			break;
 		}
-		ret = dmxdev->demux->set_input(dmxdev->demux, arg);
+		ret = dmx_ext->set_input(dmxdev->demux, arg);
 		break;
 	case DMX_GET_MEM_INFO:
 		if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
@@ -1140,22 +1144,22 @@ static int dvb_demux_do_ioctl(struct file *file,
 			    dvb_ringbuffer_free(&dmxdevfilter->buffer);
 
 			if (dmxdevfilter->type == DMXDEV_TYPE_SEC) {
-				if (dmxdev->demux->get_sec_mem_info) {
+				if (dmx_ext->get_sec_mem_info) {
 					struct dmx_section_feed *sec_feed =
 					    dmxdevfilter->feed.sec;
 
 					ret =
-					    dmxdev->demux->get_sec_mem_info(dmxdev->demux,
+					    dmx_ext->get_sec_mem_info(dmxdev->demux,
 								sec_feed, info);
 				}
 			} else if (dmxdevfilter->type == DMXDEV_TYPE_PES) {
-				if (dmxdev->demux->get_ts_mem_info) {
+				if (dmx_ext->get_ts_mem_info) {
 					struct dmxdev_feed *feed;
 
 					list_for_each_entry(feed,
 							&dmxdevfilter->feed.ts, next) {
 						ret =
-						    dmxdev->demux->get_ts_mem_info(dmxdev->demux,
+						    dmx_ext->get_ts_mem_info(dmxdev->demux,
 									feed->ts,
 								    info);
 						break;
@@ -1173,53 +1177,53 @@ static int dvb_demux_do_ioctl(struct file *file,
 		{
 			struct dmx_filter_mem_info *info = parg;
 
-			if (dmxdev->demux->get_dmx_mem_info)
+			if (dmx_ext->get_dmx_mem_info)
 				ret =
-					dmxdev->demux->get_dmx_mem_info(dmxdev->demux, info);
+					dmx_ext->get_dmx_mem_info(dmxdev->demux, info);
 		}
 		mutex_unlock(&dmxdevfilter->mutex);
 		break;
 	case DMX_SET_HW_SOURCE:
-		if (!dmxdev->demux->set_hw_source) {
+		if (!dmx_ext->set_hw_source) {
 			ret = -EINVAL;
 			break;
 		}
-		ret = dmxdev->demux->set_hw_source(dmxdev->demux, arg);
+		ret = dmx_ext->set_hw_source(dmxdev->demux, arg);
 		break;
 	case DMX_GET_HW_SOURCE:
-		if (!dmxdev->demux->get_hw_source) {
+		if (!dmx_ext->get_hw_source) {
 			ret = -EINVAL;
 			break;
 		}
-		ret = dmxdev->demux->get_hw_source(dmxdev->demux, parg);
+		ret = dmx_ext->get_hw_source(dmxdev->demux, parg);
 		break;
 	case DMX_SET_SEC_MEM:
-		if (!dmxdev->demux->set_sec_mem) {
+		if (!dmx_ext->set_sec_mem) {
 			ret = -EINVAL;
 			break;
 		}
-		ret = dmxdev->demux->set_sec_mem(dmxdev->demux, parg);
+		ret = dmx_ext->set_sec_mem(dmxdev->demux, parg);
 		break;
 	case DMX_GET_DVR_MEM:
-		if (!dmxdev->demux->get_dvr_mem) {
+		if (!dmx_ext->get_dvr_mem) {
 			ret = -EINVAL;
 			break;
 		}
-		ret = dmxdev->demux->get_dvr_mem(dmxdev->demux, parg);
+		ret = dmx_ext->get_dvr_mem(dmxdev->demux, parg);
 		break;
 	case DMX_REMAP_PID:
-		if (!dmxdev->demux->remap_pid) {
+		if (!dmx_ext->remap_pid) {
 			ret = -EINVAL;
 			break;
 		}
-		ret = dmxdev->demux->remap_pid(dmxdev->demux, parg);
+		ret = dmx_ext->remap_pid(dmxdev->demux, parg);
 		break;
 	case DMX_SET_DECODE_INFO:
-		if (!dmxdev->demux->decode_info) {
+		if (!dmx_ext->decode_info) {
 			ret = -EINVAL;
 			break;
 		}
-		ret = dmxdev->demux->decode_info(dmxdev->demux, parg);
+		ret = dmx_ext->decode_info(dmxdev->demux, parg);
 		break;
 #endif
 
@@ -1403,6 +1407,9 @@ static int dvb_dvr_do_ioctl(struct file *file,
 {
 	struct dvb_device *dvbdev = file->private_data;
 	struct dmxdev *dmxdev = dvbdev->priv;
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+	struct dmx_demux_ext *dmx_ext = container_of(dmxdev->demux, struct dmx_demux_ext, dmx);
+#endif
 	unsigned long arg = (unsigned long)parg;
 	int ret;
 
@@ -1415,18 +1422,18 @@ static int dvb_dvr_do_ioctl(struct file *file,
 		break;
 #ifdef CONFIG_AMLOGIC_DVB_COMPAT
 	case DMX_SET_INPUT:
-		if (!dmxdev->demux->set_input) {
+		if (!dmx_ext->set_input) {
 			ret = -EINVAL;
 			break;
 		}
-		ret = dmxdev->demux->set_input(dmxdev->demux, arg);
+		ret = dmx_ext->set_input(dmxdev->demux, arg);
 		break;
 	case DMX_GET_DVR_MEM:
-		if (!dmxdev->demux->get_dvr_mem) {
+		if (!dmx_ext->get_dvr_mem) {
 			ret = -EINVAL;
 			break;
 		}
-		ret = dmxdev->demux->get_dvr_mem(dmxdev->demux, parg);
+		ret = dmx_ext->get_dvr_mem(dmxdev->demux, parg);
 		break;
 #endif
 #ifdef CONFIG_DVB_MMAP
diff --git a/include/media/aml_demux_ext.h b/include/media/aml_demux_ext.h
new file mode 100644
index 0000000..971d61e
--- /dev/null
+++ b/include/media/aml_demux_ext.h
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+#ifndef AML_DEMUX_EXT_H_
+#define AML_DEMUX_EXT_H_
+
+#include <linux/types.h>
+#include <media/demux.h>
+
+struct dmx_demux_ext {
+	struct dmx_demux dmx;
+	int (*set_input)(struct dmx_demux *demux, int source);
+	int (*get_ts_mem_info)(struct dmx_demux *demux,
+			void *feed,
+			void *info);
+	int (*get_sec_mem_info)(struct dmx_demux *demux,
+			void *feed,
+			void *info);
+	int (*set_hw_source)(struct dmx_demux *demux, int hw_source);
+	int (*get_hw_source)(struct dmx_demux *demux, int *hw_source);
+	int (*get_dmx_mem_info)(struct dmx_demux *demux,
+			void *info);
+	int (*set_sec_mem)(struct dmx_demux *demux,
+			void *sec_mem);
+	int (*get_dvr_mem)(struct dmx_demux *demux,
+			void *info);
+	int (*remap_pid)(struct dmx_demux *demux,
+			u16 pids[2]);
+	int (*decode_info)(struct dmx_demux *demux,
+		void *info);
+};
+
+#endif
diff --git a/include/media/demux.h b/include/media/demux.h
index c6d6dbe..bf00a5a 100644
--- a/include/media/demux.h
+++ b/include/media/demux.h
@@ -595,28 +595,6 @@ struct dmx_demux {
 	 */
 	int (*get_stc)(struct dmx_demux *demux, unsigned int num,
 		       u64 *stc, unsigned int *base);
-
-#ifdef CONFIG_AMLOGIC_DVB_COMPAT
-	int (*set_input)(struct dmx_demux *demux, int source);
-	int (*get_ts_mem_info)(struct dmx_demux *demux,
-			void *feed,
-			void *info);
-	int (*get_sec_mem_info)(struct dmx_demux *demux,
-			void *feed,
-			void *info);
-	int (*set_hw_source)(struct dmx_demux *demux, int hw_source);
-	int (*get_hw_source)(struct dmx_demux *demux, int *hw_source);
-	int (*get_dmx_mem_info)(struct dmx_demux *demux,
-			void *info);
-	int (*set_sec_mem)(struct dmx_demux *demux,
-			void *sec_mem);
-	int (*get_dvr_mem)(struct dmx_demux *demux,
-			void *info);
-	int (*remap_pid)(struct dmx_demux *demux,
-			u16 pids[2]);
-	int (*decode_info)(struct dmx_demux *demux,
-		void *info);
-#endif
 };
 
 #endif /* #ifndef __DEMUX_H */