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