1 /* 2 * drivers/amlogic/media/stream_input/parser/psparser.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 PSPARSER_H 19 #define PSPARSER_H 20 21 #include "../../frame_provider/decoder/utils/vdec.h" 22 23 extern s32 psparser_init(u32 vid, u32 aid, u32 sid, struct vdec_s *vdec); 24 25 extern void psparser_release(void); 26 27 extern ssize_t psparser_write(struct file *file, 28 struct stream_buf_s *vbuf, 29 struct stream_buf_s *abuf, 30 const char __user *buf, size_t count); 31 32 extern void psparser_change_avid(unsigned int vid, unsigned int aid); 33 34 extern void psparser_change_sid(unsigned int sid); 35 36 extern void psparser_audio_reset(void); 37 38 extern void psparser_sub_reset(void); 39 40 extern u8 psparser_get_sub_found_num(void); 41 42 extern u8 psparser_get_sub_info(struct subtitle_info *sub_infos[]); 43 44 #ifdef CONFIG_AM_DVB 45 extern int tsdemux_set_reset_flag(void); 46 #endif 47 48 /* TODO: move to register headers */ 49 #define ES_PACK_SIZE_BIT 8 50 #define ES_PACK_SIZE_WID 24 51 52 #define ES_CTRL_WID 8 53 #define ES_CTRL_BIT 0 54 #define ES_TYPE_MASK (3 << 6) 55 #define ES_TYPE_VIDEO (0 << 6) 56 #define ES_TYPE_AUDIO (1 << 6) 57 #define ES_TYPE_SUBTITLE (2 << 6) 58 59 #define ES_WRITE (1<<5) 60 #define ES_PASSTHROUGH (1<<4) 61 #define ES_INSERT_BEFORE_ES_WRITE (1<<3) 62 #define ES_DISCARD (1<<2) 63 #define ES_SEARCH (1<<1) 64 #define ES_PARSER_START (1<<0) 65 #define ES_PARSER_BUSY (1<<0) 66 67 #define PARSER_INTSTAT_FETCH_CMD (1<<7) 68 #define PARSER_INTSTAT_PARSE (1<<4) 69 #define PARSER_INTSTAT_DISCARD (1<<3) 70 #define PARSER_INTSTAT_INSZERO (1<<2) 71 #define PARSER_INTSTAT_ACT_NOSSC (1<<1) 72 #define PARSER_INTSTAT_SC_FOUND (1<<0) 73 74 #define FETCH_CIR_BUF (1<<31) 75 #define FETCH_CHK_BUF_STOP (1<<30) 76 #define FETCH_PASSTHROUGH (1<<29) 77 #define FETCH_ENDIAN 27 78 #define FETCH_PASSTHROUGH_TYPE_MASK (0x3<<27) 79 #define FETCH_ENDIAN_MASK (0x7<<27) 80 #define FETCH_BUF_SIZE_MASK (0x7ffffff) 81 #define FETCH_CMD_PTR_MASK 3 82 #define FETCH_CMD_RD_PTR_BIT 5 83 #define FETCH_CMD_WR_PTR_BIT 3 84 #define FETCH_CMD_NUM_MASK 3 85 #define FETCH_CMD_NUM_BIT 0 86 87 #define ES_COUNT_MASK 0xfff 88 #define ES_COUNT_BIT 20 89 #define ES_REQ_PENDING (1<<19) 90 #define ES_PASSTHROUGH_EN (1<<18) 91 #define ES_PASSTHROUGH_TYPE_MASK (3<<16) 92 #define ES_PASSTHROUGH_TYPE_VIDEO (0<<16) 93 #define ES_PASSTHROUGH_TYPE_AUDIO (1<<16) 94 #define ES_PASSTHROUGH_TYPE_SUBTITLE (2<<16) 95 #define ES_WR_ENDIAN_MASK (0x7) 96 #define ES_SUB_WR_ENDIAN_BIT 9 97 #define ES_SUB_MAN_RD_PTR (1<<8) 98 #define ES_AUD_WR_ENDIAN_BIT 5 99 #define ES_AUD_MAN_RD_PTR (1<<4) 100 #define ES_VID_WR_ENDIAN_BIT 1 101 #define ES_VID_MAN_RD_PTR (1<<0) 102 103 #define PS_CFG_FETCH_DMA_URGENT (1<<31) 104 #define PS_CFG_STREAM_DMA_URGENT (1<<30) 105 #define PS_CFG_FORCE_PFIFO_REN (1<<29) 106 #define PS_CFG_PFIFO_PEAK_EN (1<<28) 107 #define PS_CFG_SRC_SEL_BIT 24 108 #define PS_CFG_SRC_SEL_MASK (3<<PS_CFG_SRC_SEL_BIT) 109 #define PS_CFG_SRC_SEL_FETCH (0<<PS_CFG_SRC_SEL_BIT) 110 #define PS_CFG_SRC_SEL_AUX1 (1<<PS_CFG_SRC_SEL_BIT) /* from NDMA */ 111 #define PS_CFG_SRC_SEL_AUX2 (2<<PS_CFG_SRC_SEL_BIT) 112 #define PS_CFG_SRC_SEL_AUX3 (3<<PS_CFG_SRC_SEL_BIT) 113 #define PS_CFG_PFIFO_EMPTY_CNT_BIT 16 114 #define PS_CFG_PFIFO_EMPTY_CNT_MASK 0xff 115 #define PS_CFG_MAX_ES_WR_CYCLE_BIT 12 116 #define PS_CFG_MAX_ES_WR_CYCLE_MASK 0xf 117 #define PS_CFG_STARTCODE_WID_MASK (0x3<<10) 118 #define PS_CFG_STARTCODE_WID_8 (0x0<<10) 119 #define PS_CFG_STARTCODE_WID_16 (0x1<<10) 120 #define PS_CFG_STARTCODE_WID_24 (0x2<<10) 121 #define PS_CFG_STARTCODE_WID_32 (0x3<<10) 122 #define PS_CFG_PFIFO_ACCESS_WID_MASK (0x3<<8) 123 #define PS_CFG_PFIFO_ACCESS_WID_8 (0x0<<8) 124 #define PS_CFG_PFIFO_ACCESS_WID_16 (0x1<<8) 125 #define PS_CFG_PFIFO_ACCESS_WID_24 (0x2<<8) 126 #define PS_CFG_PFIFO_ACCESS_WID_32 (0x3<<8) 127 #define PS_CFG_MAX_FETCH_CYCLE_BIT 0 128 #define PS_CFG_MAX_FETCH_CYCLE_MASK 0xff 129 130 #define PARSER_INT_DISABLE_CNT_MASK 0xffff 131 #define PARSER_INT_DISABLE_CNT_BIT 16 132 #define PARSER_INT_HOST_EN_MASK 0xff 133 #define PARSER_INT_HOST_EN_BIT 8 134 #define PARSER_INT_AMRISC_EN_MASK 0xff 135 #define PARSER_INT_AMRISC_EN_BIT 0 136 #define PARSER_INT_ALL 0xff 137 138 #define RESET_PARSER (1<<8) 139 #define TS_HIU_ENABLE 5 140 #define USE_HI_BSF_INTERFACE 7 141 142 #endif /* PSPARSER_H */ 143