4
4
* Author: Ping-Hsun Wu <[email protected] >
5
5
*/
6
6
7
+ #include "mtk-mdp3-cfg.h"
7
8
#include "mtk-mdp3-core.h"
9
+ #include "mtk-mdp3-comp.h"
10
+
11
+ enum mt8183_mdp_comp_id {
12
+ /* ISP */
13
+ MT8183_MDP_COMP_WPEI = 0 ,
14
+ MT8183_MDP_COMP_WPEO , /* 1 */
15
+ MT8183_MDP_COMP_WPEI2 , /* 2 */
16
+ MT8183_MDP_COMP_WPEO2 , /* 3 */
17
+ MT8183_MDP_COMP_ISP_IMGI , /* 4 */
18
+ MT8183_MDP_COMP_ISP_IMGO , /* 5 */
19
+ MT8183_MDP_COMP_ISP_IMG2O , /* 6 */
20
+
21
+ /* IPU */
22
+ MT8183_MDP_COMP_IPUI , /* 7 */
23
+ MT8183_MDP_COMP_IPUO , /* 8 */
24
+
25
+ /* MDP */
26
+ MT8183_MDP_COMP_CAMIN , /* 9 */
27
+ MT8183_MDP_COMP_CAMIN2 , /* 10 */
28
+ MT8183_MDP_COMP_RDMA0 , /* 11 */
29
+ MT8183_MDP_COMP_AAL0 , /* 12 */
30
+ MT8183_MDP_COMP_CCORR0 , /* 13 */
31
+ MT8183_MDP_COMP_RSZ0 , /* 14 */
32
+ MT8183_MDP_COMP_RSZ1 , /* 15 */
33
+ MT8183_MDP_COMP_TDSHP0 , /* 16 */
34
+ MT8183_MDP_COMP_COLOR0 , /* 17 */
35
+ MT8183_MDP_COMP_PATH0_SOUT , /* 18 */
36
+ MT8183_MDP_COMP_PATH1_SOUT , /* 19 */
37
+ MT8183_MDP_COMP_WROT0 , /* 20 */
38
+ MT8183_MDP_COMP_WDMA , /* 21 */
39
+
40
+ /* Dummy Engine */
41
+ MT8183_MDP_COMP_RDMA1 , /* 22 */
42
+ MT8183_MDP_COMP_RSZ2 , /* 23 */
43
+ MT8183_MDP_COMP_TDSHP1 , /* 24 */
44
+ MT8183_MDP_COMP_WROT1 , /* 25 */
45
+ };
8
46
9
47
static const struct of_device_id mt8183_mdp_probe_infra [MDP_INFRA_MAX ] = {
10
48
[MDP_INFRA_MMSYS ] = { .compatible = "mediatek,mt8183-mmsys" },
@@ -31,8 +69,114 @@ static const u32 mt8183_mutex_idx[MDP_MAX_COMP_COUNT] = {
31
69
[MDP_COMP_CCORR0 ] = MUTEX_MOD_IDX_MDP_CCORR0 ,
32
70
};
33
71
72
+ static const struct mdp_comp_data mt8183_mdp_comp_data [MDP_MAX_COMP_COUNT ] = {
73
+ [MDP_COMP_WPEI ] = {
74
+ {MDP_COMP_TYPE_WPEI , 0 , MT8183_MDP_COMP_WPEI },
75
+ {0 , 0 , 0 }
76
+ },
77
+ [MDP_COMP_WPEO ] = {
78
+ {MDP_COMP_TYPE_EXTO , 2 , MT8183_MDP_COMP_WPEO },
79
+ {0 , 0 , 0 }
80
+ },
81
+ [MDP_COMP_WPEI2 ] = {
82
+ {MDP_COMP_TYPE_WPEI , 1 , MT8183_MDP_COMP_WPEI2 },
83
+ {0 , 0 , 0 }
84
+ },
85
+ [MDP_COMP_WPEO2 ] = {
86
+ {MDP_COMP_TYPE_EXTO , 3 , MT8183_MDP_COMP_WPEO2 },
87
+ {0 , 0 , 0 }
88
+ },
89
+ [MDP_COMP_ISP_IMGI ] = {
90
+ {MDP_COMP_TYPE_IMGI , 0 , MT8183_MDP_COMP_ISP_IMGI },
91
+ {0 , 0 , 4 }
92
+ },
93
+ [MDP_COMP_ISP_IMGO ] = {
94
+ {MDP_COMP_TYPE_EXTO , 0 , MT8183_MDP_COMP_ISP_IMGO },
95
+ {0 , 0 , 4 }
96
+ },
97
+ [MDP_COMP_ISP_IMG2O ] = {
98
+ {MDP_COMP_TYPE_EXTO , 1 , MT8183_MDP_COMP_ISP_IMG2O },
99
+ {0 , 0 , 0 }
100
+ },
101
+ [MDP_COMP_CAMIN ] = {
102
+ {MDP_COMP_TYPE_DL_PATH , 0 , MT8183_MDP_COMP_CAMIN },
103
+ {2 , 2 , 1 }
104
+ },
105
+ [MDP_COMP_CAMIN2 ] = {
106
+ {MDP_COMP_TYPE_DL_PATH , 1 , MT8183_MDP_COMP_CAMIN2 },
107
+ {2 , 4 , 1 }
108
+ },
109
+ [MDP_COMP_RDMA0 ] = {
110
+ {MDP_COMP_TYPE_RDMA , 0 , MT8183_MDP_COMP_RDMA0 },
111
+ {2 , 0 , 0 }
112
+ },
113
+ [MDP_COMP_CCORR0 ] = {
114
+ {MDP_COMP_TYPE_CCORR , 0 , MT8183_MDP_COMP_CCORR0 },
115
+ {1 , 0 , 0 }
116
+ },
117
+ [MDP_COMP_RSZ0 ] = {
118
+ {MDP_COMP_TYPE_RSZ , 0 , MT8183_MDP_COMP_RSZ0 },
119
+ {1 , 0 , 0 }
120
+ },
121
+ [MDP_COMP_RSZ1 ] = {
122
+ {MDP_COMP_TYPE_RSZ , 1 , MT8183_MDP_COMP_RSZ1 },
123
+ {1 , 0 , 0 }
124
+ },
125
+ [MDP_COMP_TDSHP0 ] = {
126
+ {MDP_COMP_TYPE_TDSHP , 0 , MT8183_MDP_COMP_TDSHP0 },
127
+ {0 , 0 , 0 }
128
+ },
129
+ [MDP_COMP_PATH0_SOUT ] = {
130
+ {MDP_COMP_TYPE_PATH , 0 , MT8183_MDP_COMP_PATH0_SOUT },
131
+ {0 , 0 , 0 }
132
+ },
133
+ [MDP_COMP_PATH1_SOUT ] = {
134
+ {MDP_COMP_TYPE_PATH , 1 , MT8183_MDP_COMP_PATH1_SOUT },
135
+ {0 , 0 , 0 }
136
+ },
137
+ [MDP_COMP_WROT0 ] = {
138
+ {MDP_COMP_TYPE_WROT , 0 , MT8183_MDP_COMP_WROT0 },
139
+ {1 , 0 , 0 }
140
+ },
141
+ [MDP_COMP_WDMA ] = {
142
+ {MDP_COMP_TYPE_WDMA , 0 , MT8183_MDP_COMP_WDMA },
143
+ {1 , 0 , 0 }
144
+ },
145
+ };
146
+
34
147
const struct mtk_mdp_driver_data mt8183_mdp_driver_data = {
35
148
.mdp_probe_infra = mt8183_mdp_probe_infra ,
36
149
.mdp_cfg = & mt8183_plat_cfg ,
37
150
.mdp_mutex_table_idx = mt8183_mutex_idx ,
151
+ .comp_data = mt8183_mdp_comp_data ,
152
+ .comp_data_len = ARRAY_SIZE (mt8183_mdp_comp_data ),
38
153
};
154
+
155
+ s32 mdp_cfg_get_id_inner (struct mdp_dev * mdp_dev , enum mtk_mdp_comp_id id )
156
+ {
157
+ if (!mdp_dev )
158
+ return MDP_COMP_NONE ;
159
+ if (id <= MDP_COMP_NONE || id >= MDP_MAX_COMP_COUNT )
160
+ return MDP_COMP_NONE ;
161
+
162
+ return mdp_dev -> mdp_data -> comp_data [id ].match .inner_id ;
163
+ }
164
+
165
+ enum mtk_mdp_comp_id mdp_cfg_get_id_public (struct mdp_dev * mdp_dev , s32 inner_id )
166
+ {
167
+ enum mtk_mdp_comp_id public_id = MDP_COMP_NONE ;
168
+ u32 i ;
169
+
170
+ if (IS_ERR (mdp_dev ) || !inner_id )
171
+ goto err_public_id ;
172
+
173
+ for (i = 0 ; i < MDP_MAX_COMP_COUNT ; i ++ ) {
174
+ if (mdp_dev -> mdp_data -> comp_data [i ].match .inner_id == inner_id ) {
175
+ public_id = i ;
176
+ return public_id ;
177
+ }
178
+ }
179
+
180
+ err_public_id :
181
+ return public_id ;
182
+ }
0 commit comments