blob: ddb5448b9c893c8c8c51aa5f38b5b2c79ed728d3 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef _UAPI_AML_DVBDMX_EXT_H_
#define _UAPI_AML_DVBDMX_EXT_H_
#ifdef __KERNEL__
#include <linux/dvb/dmx.h>
#else
#include "dmx.h"
#endif
/* amlogic define */
#define DMX_USE_SWFILTER 0x100
/*bit 8~15 for mem sec_level*/
#define DMX_MEM_SEC_LEVEL1 (1 << 10)
#define DMX_MEM_SEC_LEVEL2 (2 << 10)
#define DMX_MEM_SEC_LEVEL3 (3 << 10)
#define DMX_MEM_SEC_LEVEL4 (4 << 10)
#define DMX_MEM_SEC_LEVEL5 (5 << 10)
#define DMX_MEM_SEC_LEVEL6 (6 << 10)
#define DMX_MEM_SEC_LEVEL7 (7 << 10)
/* amlogic define end */
/*amlogic define*/
enum dmx_input_source {
INPUT_DEMOD,
INPUT_LOCAL,
INPUT_LOCAL_SEC
};
/**
* struct dmx_non_sec_es_header - non-sec Elementary Stream (ES) Header
*
* @pts_dts_flag:[1:0], 10:pts valid, 01:dts valid
* @pts_dts_flag:[3:2], 10:scb is scrambled, 01:pscp invalid
* @pts: pts value
* @dts: dts value
* @len: data len
*/
struct dmx_non_sec_es_header {
__u8 pts_dts_flag;
__u64 pts;
__u64 dts;
__u32 len;
};
/**
* struct dmx_sec_es_data - sec Elementary Stream (ES)
*
* @pts_dts_flag:[1:0], 10:pts valid, 01:dts valid
* @pts_dts_flag:[3:2], 10:scb is scrambled, 01:pscp invalid
* @pts: pts value
* @dts: dts value
* @buf_start: buf start addr
* @buf_end: buf end addr
* @data_start: data start addr
* @data_end: data end addr
*/
struct dmx_sec_es_data {
__u8 pts_dts_flag;
__u64 pts;
__u64 dts;
__u32 buf_start;
__u32 buf_end;
__u32 data_start;
__u32 data_end;
};
struct dmx_sec_ts_data {
__u32 buf_start;
__u32 buf_end;
__u32 data_start;
__u32 data_end;
};
struct dmx_temi_data {
__u8 pts_dts_flag;
__u64 pts;
__u64 dts;
__u8 temi[188];
};
enum dmx_audio_format {
AUDIO_UNKNOWN = 0, /* unknown media */
AUDIO_MPX = 1, /* mpeg audio MP2/MP3 */
AUDIO_AC3 = 2, /* Dolby AC3/EAC3 */
AUDIO_AAC_ADTS = 3, /* AAC-ADTS */
AUDIO_AAC_LOAS = 4, /* AAC-LOAS */
AUDIO_DTS = 5, /* DTS */
AUDIO_MAX
};
struct dmx_mem_info {
__u32 dmx_total_size;
__u32 dmx_buf_phy_start;
__u32 dmx_free_size;
__u32 dvb_core_total_size;
__u32 dvb_core_free_size;
__u32 wp_offset;
__u64 newest_pts;
};
struct dmx_sec_mem {
__u32 buff;
__u32 size;
};
/* amlogic define end */
/*amlogic define*/
/*bit 8~15 for mem sec_level*/
#define DMX_MEM_SEC_LEVEL1 (1 << 10)
#define DMX_MEM_SEC_LEVEL2 (2 << 10)
#define DMX_MEM_SEC_LEVEL3 (3 << 10)
#define DMX_MEM_SEC_LEVEL4 (4 << 10)
#define DMX_MEM_SEC_LEVEL5 (5 << 10)
#define DMX_MEM_SEC_LEVEL6 (6 << 10)
#define DMX_MEM_SEC_LEVEL7 (7 << 10)
/*bit 16~23 for output */
#define DMX_ES_OUTPUT (1 << 16)
/*set raw mode, it will send the struct dmx_sec_es_data, not es data*/
#define DMX_OUTPUT_RAW_MODE (1 << 17)
#define DMX_TEMI_FLAGS (1 << 18)
/*24~31 one byte for audio type, dmx_audio_format_t*/
#define DMX_AUDIO_FORMAT_BIT 24
/* amlogic define end */
/* amlogic define */
enum {
DMA_0 = 0,
DMA_1,
DMA_2,
DMA_3,
DMA_4,
DMA_5,
DMA_6,
DMA_7,
FRONTEND_TS0 = 32,
FRONTEND_TS1,
FRONTEND_TS2,
FRONTEND_TS3,
FRONTEND_TS4,
FRONTEND_TS5,
FRONTEND_TS6,
FRONTEND_TS7,
DMA_0_1 = 64,
DMA_1_1,
DMA_2_1,
DMA_3_1,
DMA_4_1,
DMA_5_1,
DMA_6_1,
DMA_7_1,
FRONTEND_TS0_1 = 96,
FRONTEND_TS1_1,
FRONTEND_TS2_1,
FRONTEND_TS3_1,
FRONTEND_TS4_1,
FRONTEND_TS5_1,
FRONTEND_TS6_1,
FRONTEND_TS7_1,
};
/*define filter mem_info type*/
enum {
DMX_VIDEO_TYPE = 0,
DMX_AUDIO_TYPE,
DMX_SUBTITLE_TYPE,
DMX_TELETEXT_TYPE,
DMX_SECTION_TYPE,
};
struct filter_mem_info {
__u32 type;
__u32 pid;
struct dmx_mem_info filter_info;
};
struct dmx_filter_mem_info {
__u32 filter_num;
struct filter_mem_info info[40];
};
struct dvr_mem_info {
__u32 wp_offset;
};
struct decoder_mem_info {
__u32 rp_phy;
};
/* amlogic define end */
/* amlogic define */
#define DMX_SET_INPUT _IO('o', 80)
#define DMX_GET_MEM_INFO _IOR('o', 81, struct dmx_mem_info)
#define DMX_SET_HW_SOURCE _IO('o', 82)
#define DMX_GET_HW_SOURCE _IOR('o', 83, int)
#define DMX_GET_FILTER_MEM_INFO _IOR('o', 84, struct dmx_filter_mem_info)
/*just for dvr sec mem, please call before DMX_SET_PES_FILTER*/
#define DMX_SET_SEC_MEM _IOW('o', 85, struct dmx_sec_mem)
#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)
/* amlogic define end */
#endif