| From b0f323863f6bd66f907dc5e902178ce8ecc9a22f Mon Sep 17 00:00:00 2001 |
| From: "hongyu.chen" <hongyu.chen@amlogic.com> |
| Date: Thu, 1 Dec 2022 11:25:53 +0800 |
| Subject: [PATCH 08/11] 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 |
| --- |
| drivers/media/dvb-core/dmxdev.c | 55 +++++++++++++++++++-------------- |
| include/media/aml_demux_ext.h | 35 +++++++++++++++++++++ |
| include/media/demux.h | 22 ------------- |
| 3 files changed, 66 insertions(+), 46 deletions(-) |
| create mode 100644 include/media/aml_demux_ext.h |
| |
| diff --git a/drivers/media/dvb-core/dmxdev.c b/drivers/media/dvb-core/dmxdev.c |
| index 9dcbb9a828db..1d138e8d08f2 100644 |
| --- a/drivers/media/dvb-core/dmxdev.c |
| +++ b/drivers/media/dvb-core/dmxdev.c |
| @@ -22,6 +22,7 @@ |
| |
| #ifdef CONFIG_AMLOGIC_DVB_COMPAT |
| #include <uapi/linux/dvb/aml_dmx_ext.h> |
| +#include <media/aml_demux_ext.h> |
| #endif |
| |
| static int debug; |
| @@ -1035,6 +1036,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; |
| |
| @@ -1111,11 +1115,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)) { |
| @@ -1130,22 +1134,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; |
| @@ -1163,53 +1167,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 |
| |
| @@ -1393,6 +1397,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; |
| |
| @@ -1405,18 +1412,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 000000000000..971d61e11324 |
| --- /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 c6d6dbe3a497..bf00a5a41a90 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 */ |
| -- |
| 2.41.0 |
| |