1 /* 2 * drivers/amlogic/media/stream_input/parser/esparser.h 3 * 4 * Copyright (C) 2016 Amlogic, Inc. All rights reserved. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 14 * more details. 15 * 16 */ 17 18 #ifndef ESPARSER_H 19 #define ESPARSER_H 20 21 #include "../../frame_provider/decoder/utils/vdec.h" 22 23 extern ssize_t drm_write(struct file *file, 24 struct stream_buf_s *stbuf, 25 const char __user *buf, size_t count); 26 27 extern s32 esparser_init(struct stream_buf_s *buf, struct vdec_s *vdec); 28 extern s32 esparser_init_s(struct stream_buf_s *buf); 29 extern void esparser_release(struct stream_buf_s *buf); 30 extern ssize_t esparser_write(struct file *file, 31 struct stream_buf_s *stbuf, 32 const char __user *buf, size_t count); 33 extern ssize_t esparser_write_ex(struct file *file, 34 struct stream_buf_s *stbuf, 35 const char __user *buf, size_t count, 36 int is_phy); 37 38 extern s32 es_vpts_checkin_us64(struct stream_buf_s *buf, u64 us64); 39 40 extern s32 es_apts_checkin_us64(struct stream_buf_s *buf, u64 us64); 41 42 extern int es_vpts_checkin(struct stream_buf_s *buf, u32 pts); 43 44 extern int es_apts_checkin(struct stream_buf_s *buf, u32 pts); 45 46 extern void esparser_audio_reset(struct stream_buf_s *buf); 47 extern void esparser_audio_reset_s(struct stream_buf_s *buf); 48 49 extern void esparser_sub_reset(void); 50 51 #ifdef CONFIG_AM_DVB 52 extern int tsdemux_set_reset_flag(void); 53 #endif 54 55 /* TODO: move to register headers */ 56 #define ES_PACK_SIZE_BIT 8 57 #define ES_PACK_SIZE_WID 24 58 59 #define ES_CTRL_WID 8 60 #define ES_CTRL_BIT 0 61 #define ES_TYPE_MASK (3 << 6) 62 #define ES_TYPE_VIDEO (0 << 6) 63 #define ES_TYPE_AUDIO (1 << 6) 64 #define ES_TYPE_SUBTITLE (2 << 6) 65 66 #define ES_WRITE (1<<5) 67 #define ES_PASSTHROUGH (1<<4) 68 #define ES_INSERT_BEFORE_ES_WRITE (1<<3) 69 #define ES_DISCARD (1<<2) 70 #define ES_SEARCH (1<<1) 71 #define ES_PARSER_START (1<<0) 72 #define ES_PARSER_BUSY (1<<0) 73 74 #define PARSER_INTSTAT_FETCH_CMD (1<<7) 75 #define PARSER_INTSTAT_PARSE (1<<4) 76 #define PARSER_INTSTAT_DISCARD (1<<3) 77 #define PARSER_INTSTAT_INSZERO (1<<2) 78 #define PARSER_INTSTAT_ACT_NOSSC (1<<1) 79 #define PARSER_INTSTAT_SC_FOUND (1<<0) 80 81 #define FETCH_CIR_BUF (1<<31) 82 #define FETCH_CHK_BUF_STOP (1<<30) 83 #define FETCH_PASSTHROUGH (1<<29) 84 #define FETCH_ENDIAN 27 85 #define FETCH_PASSTHROUGH_TYPE_MASK (0x3<<27) 86 #define FETCH_ENDIAN_MASK (0x7<<27) 87 #define FETCH_BUF_SIZE_MASK (0x7ffffff) 88 #define FETCH_CMD_PTR_MASK 3 89 #define FETCH_CMD_RD_PTR_BIT 5 90 #define FETCH_CMD_WR_PTR_BIT 3 91 #define FETCH_CMD_NUM_MASK 3 92 #define FETCH_CMD_NUM_BIT 0 93 94 #define ES_COUNT_MASK 0xfff 95 #define ES_COUNT_BIT 20 96 #define ES_REQ_PENDING (1<<19) 97 #define ES_PASSTHROUGH_EN (1<<18) 98 #define ES_PASSTHROUGH_TYPE_MASK (3<<16) 99 #define ES_PASSTHROUGH_TYPE_VIDEO (0<<16) 100 #define ES_PASSTHROUGH_TYPE_AUDIO (1<<16) 101 #define ES_PASSTHROUGH_TYPE_SUBTITLE (2<<16) 102 #define ES_WR_ENDIAN_MASK (0x7) 103 #define ES_SUB_WR_ENDIAN_BIT 9 104 #define ES_SUB_MAN_RD_PTR (1<<8) 105 #define ES_AUD_WR_ENDIAN_BIT 5 106 #define ES_AUD_MAN_RD_PTR (1<<4) 107 #define ES_VID_WR_ENDIAN_BIT 1 108 #define ES_VID_MAN_RD_PTR (1<<0) 109 110 #define PS_CFG_FETCH_DMA_URGENT (1<<31) 111 #define PS_CFG_STREAM_DMA_URGENT (1<<30) 112 #define PS_CFG_FORCE_PFIFO_REN (1<<29) 113 #define PS_CFG_PFIFO_PEAK_EN (1<<28) 114 #define PS_CFG_SRC_SEL_BIT 24 115 #define PS_CFG_SRC_SEL_MASK (3<<PS_CFG_SRC_SEL_BIT) 116 #define PS_CFG_SRC_SEL_FETCH (0<<PS_CFG_SRC_SEL_BIT) 117 #define PS_CFG_SRC_SEL_AUX1 (1<<PS_CFG_SRC_SEL_BIT) /*from NDMA */ 118 #define PS_CFG_SRC_SEL_AUX2 (2<<PS_CFG_SRC_SEL_BIT) 119 #define PS_CFG_SRC_SEL_AUX3 (3<<PS_CFG_SRC_SEL_BIT) 120 #define PS_CFG_PFIFO_EMPTY_CNT_BIT 16 121 #define PS_CFG_PFIFO_EMPTY_CNT_MASK 0xff 122 #define PS_CFG_MAX_ES_WR_CYCLE_BIT 12 123 #define PS_CFG_MAX_ES_WR_CYCLE_MASK 0xf 124 #define PS_CFG_STARTCODE_WID_MASK (0x3<<10) 125 #define PS_CFG_STARTCODE_WID_8 (0x0<<10) 126 #define PS_CFG_STARTCODE_WID_16 (0x1<<10) 127 #define PS_CFG_STARTCODE_WID_24 (0x2<<10) 128 #define PS_CFG_STARTCODE_WID_32 (0x3<<10) 129 #define PS_CFG_PFIFO_ACCESS_WID_MASK (0x3<<8) 130 #define PS_CFG_PFIFO_ACCESS_WID_8 (0x0<<8) 131 #define PS_CFG_PFIFO_ACCESS_WID_16 (0x1<<8) 132 #define PS_CFG_PFIFO_ACCESS_WID_24 (0x2<<8) 133 #define PS_CFG_PFIFO_ACCESS_WID_32 (0x3<<8) 134 #define PS_CFG_MAX_FETCH_CYCLE_BIT 0 135 #define PS_CFG_MAX_FETCH_CYCLE_MASK 0xff 136 137 #define PARSER_INT_DISABLE_CNT_MASK 0xffff 138 #define PARSER_INT_DISABLE_CNT_BIT 16 139 #define PARSER_INT_HOST_EN_MASK 0xff 140 #define PARSER_INT_HOST_EN_BIT 8 141 #define PARSER_INT_AMRISC_EN_MASK 0xff 142 #define PARSER_INT_AMRISC_EN_BIT 0 143 #define PARSER_INT_ALL 0xff 144 145 #define RESET_PARSER (1<<8) 146 #define TS_HIU_ENABLE 5 147 #define USE_HI_BSF_INTERFACE 7 148 149 #define DRM_PRNT(fmt, args...) 150 #define TRACE() pr_info("drm--[%s::%d]\n", __func__, __LINE__) 151 152 #endif /* ESPARSER_H */ 153