• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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