|
13 | 13 | #include "mtk_drm_ddp.h"
|
14 | 14 | #include "mtk_drm_ddp_comp.h"
|
15 | 15 |
|
16 |
| -#define DISP_REG_CONFIG_DISP_OVL0_MOUT_EN 0x040 |
17 |
| -#define DISP_REG_CONFIG_DISP_OVL1_MOUT_EN 0x044 |
18 |
| -#define DISP_REG_CONFIG_DISP_OD_MOUT_EN 0x048 |
19 |
| -#define DISP_REG_CONFIG_DISP_GAMMA_MOUT_EN 0x04c |
20 |
| -#define DISP_REG_CONFIG_DISP_UFOE_MOUT_EN 0x050 |
21 |
| -#define DISP_REG_CONFIG_DISP_COLOR0_SEL_IN 0x084 |
22 |
| -#define DISP_REG_CONFIG_DISP_COLOR1_SEL_IN 0x088 |
23 |
| -#define DISP_REG_CONFIG_DSIE_SEL_IN 0x0a4 |
24 |
| -#define DISP_REG_CONFIG_DSIO_SEL_IN 0x0a8 |
25 |
| -#define DISP_REG_CONFIG_DPI_SEL_IN 0x0ac |
26 |
| -#define DISP_REG_CONFIG_DISP_RDMA2_SOUT 0x0b8 |
27 |
| -#define DISP_REG_CONFIG_DISP_RDMA0_SOUT_EN 0x0c4 |
28 |
| -#define DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN 0x0c8 |
29 |
| -#define DISP_REG_CONFIG_MMSYS_CG_CON0 0x100 |
30 |
| - |
31 |
| -#define DISP_REG_CONFIG_DISP_OVL_MOUT_EN 0x030 |
32 |
| -#define DISP_REG_CONFIG_OUT_SEL 0x04c |
33 |
| -#define DISP_REG_CONFIG_DSI_SEL 0x050 |
34 |
| -#define DISP_REG_CONFIG_DPI_SEL 0x064 |
35 |
| - |
36 | 16 | #define MT2701_DISP_MUTEX0_MOD0 0x2c
|
37 | 17 | #define MT2701_DISP_MUTEX0_SOF0 0x30
|
38 | 18 |
|
|
94 | 74 | #define MUTEX_SOF_DSI2 5
|
95 | 75 | #define MUTEX_SOF_DSI3 6
|
96 | 76 |
|
97 |
| -#define OVL0_MOUT_EN_COLOR0 0x1 |
98 |
| -#define OD_MOUT_EN_RDMA0 0x1 |
99 |
| -#define OD1_MOUT_EN_RDMA1 BIT(16) |
100 |
| -#define UFOE_MOUT_EN_DSI0 0x1 |
101 |
| -#define COLOR0_SEL_IN_OVL0 0x1 |
102 |
| -#define OVL1_MOUT_EN_COLOR1 0x1 |
103 |
| -#define GAMMA_MOUT_EN_RDMA1 0x1 |
104 |
| -#define RDMA0_SOUT_DPI0 0x2 |
105 |
| -#define RDMA0_SOUT_DPI1 0x3 |
106 |
| -#define RDMA0_SOUT_DSI1 0x1 |
107 |
| -#define RDMA0_SOUT_DSI2 0x4 |
108 |
| -#define RDMA0_SOUT_DSI3 0x5 |
109 |
| -#define RDMA1_SOUT_DPI0 0x2 |
110 |
| -#define RDMA1_SOUT_DPI1 0x3 |
111 |
| -#define RDMA1_SOUT_DSI1 0x1 |
112 |
| -#define RDMA1_SOUT_DSI2 0x4 |
113 |
| -#define RDMA1_SOUT_DSI3 0x5 |
114 |
| -#define RDMA2_SOUT_DPI0 0x2 |
115 |
| -#define RDMA2_SOUT_DPI1 0x3 |
116 |
| -#define RDMA2_SOUT_DSI1 0x1 |
117 |
| -#define RDMA2_SOUT_DSI2 0x4 |
118 |
| -#define RDMA2_SOUT_DSI3 0x5 |
119 |
| -#define DPI0_SEL_IN_RDMA1 0x1 |
120 |
| -#define DPI0_SEL_IN_RDMA2 0x3 |
121 |
| -#define DPI1_SEL_IN_RDMA1 (0x1 << 8) |
122 |
| -#define DPI1_SEL_IN_RDMA2 (0x3 << 8) |
123 |
| -#define DSI0_SEL_IN_RDMA1 0x1 |
124 |
| -#define DSI0_SEL_IN_RDMA2 0x4 |
125 |
| -#define DSI1_SEL_IN_RDMA1 0x1 |
126 |
| -#define DSI1_SEL_IN_RDMA2 0x4 |
127 |
| -#define DSI2_SEL_IN_RDMA1 (0x1 << 16) |
128 |
| -#define DSI2_SEL_IN_RDMA2 (0x4 << 16) |
129 |
| -#define DSI3_SEL_IN_RDMA1 (0x1 << 16) |
130 |
| -#define DSI3_SEL_IN_RDMA2 (0x4 << 16) |
131 |
| -#define COLOR1_SEL_IN_OVL1 0x1 |
132 |
| - |
133 |
| -#define OVL_MOUT_EN_RDMA 0x1 |
134 |
| -#define BLS_TO_DSI_RDMA1_TO_DPI1 0x8 |
135 |
| -#define BLS_TO_DPI_RDMA1_TO_DSI 0x2 |
136 |
| -#define DSI_SEL_IN_BLS 0x0 |
137 |
| -#define DPI_SEL_IN_BLS 0x0 |
138 |
| -#define DSI_SEL_IN_RDMA 0x1 |
139 | 77 |
|
140 | 78 | struct mtk_disp_mutex {
|
141 | 79 | int id;
|
@@ -246,200 +184,6 @@ static const struct mtk_ddp_data mt8173_ddp_driver_data = {
|
246 | 184 | .mutex_sof_reg = MT2701_DISP_MUTEX0_SOF0,
|
247 | 185 | };
|
248 | 186 |
|
249 |
| -static unsigned int mtk_ddp_mout_en(enum mtk_ddp_comp_id cur, |
250 |
| - enum mtk_ddp_comp_id next, |
251 |
| - unsigned int *addr) |
252 |
| -{ |
253 |
| - unsigned int value; |
254 |
| - |
255 |
| - if (cur == DDP_COMPONENT_OVL0 && next == DDP_COMPONENT_COLOR0) { |
256 |
| - *addr = DISP_REG_CONFIG_DISP_OVL0_MOUT_EN; |
257 |
| - value = OVL0_MOUT_EN_COLOR0; |
258 |
| - } else if (cur == DDP_COMPONENT_OVL0 && next == DDP_COMPONENT_RDMA0) { |
259 |
| - *addr = DISP_REG_CONFIG_DISP_OVL_MOUT_EN; |
260 |
| - value = OVL_MOUT_EN_RDMA; |
261 |
| - } else if (cur == DDP_COMPONENT_OD0 && next == DDP_COMPONENT_RDMA0) { |
262 |
| - *addr = DISP_REG_CONFIG_DISP_OD_MOUT_EN; |
263 |
| - value = OD_MOUT_EN_RDMA0; |
264 |
| - } else if (cur == DDP_COMPONENT_UFOE && next == DDP_COMPONENT_DSI0) { |
265 |
| - *addr = DISP_REG_CONFIG_DISP_UFOE_MOUT_EN; |
266 |
| - value = UFOE_MOUT_EN_DSI0; |
267 |
| - } else if (cur == DDP_COMPONENT_OVL1 && next == DDP_COMPONENT_COLOR1) { |
268 |
| - *addr = DISP_REG_CONFIG_DISP_OVL1_MOUT_EN; |
269 |
| - value = OVL1_MOUT_EN_COLOR1; |
270 |
| - } else if (cur == DDP_COMPONENT_GAMMA && next == DDP_COMPONENT_RDMA1) { |
271 |
| - *addr = DISP_REG_CONFIG_DISP_GAMMA_MOUT_EN; |
272 |
| - value = GAMMA_MOUT_EN_RDMA1; |
273 |
| - } else if (cur == DDP_COMPONENT_OD1 && next == DDP_COMPONENT_RDMA1) { |
274 |
| - *addr = DISP_REG_CONFIG_DISP_OD_MOUT_EN; |
275 |
| - value = OD1_MOUT_EN_RDMA1; |
276 |
| - } else if (cur == DDP_COMPONENT_RDMA0 && next == DDP_COMPONENT_DPI0) { |
277 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA0_SOUT_EN; |
278 |
| - value = RDMA0_SOUT_DPI0; |
279 |
| - } else if (cur == DDP_COMPONENT_RDMA0 && next == DDP_COMPONENT_DPI1) { |
280 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA0_SOUT_EN; |
281 |
| - value = RDMA0_SOUT_DPI1; |
282 |
| - } else if (cur == DDP_COMPONENT_RDMA0 && next == DDP_COMPONENT_DSI1) { |
283 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA0_SOUT_EN; |
284 |
| - value = RDMA0_SOUT_DSI1; |
285 |
| - } else if (cur == DDP_COMPONENT_RDMA0 && next == DDP_COMPONENT_DSI2) { |
286 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA0_SOUT_EN; |
287 |
| - value = RDMA0_SOUT_DSI2; |
288 |
| - } else if (cur == DDP_COMPONENT_RDMA0 && next == DDP_COMPONENT_DSI3) { |
289 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA0_SOUT_EN; |
290 |
| - value = RDMA0_SOUT_DSI3; |
291 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI1) { |
292 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN; |
293 |
| - value = RDMA1_SOUT_DSI1; |
294 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI2) { |
295 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN; |
296 |
| - value = RDMA1_SOUT_DSI2; |
297 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI3) { |
298 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN; |
299 |
| - value = RDMA1_SOUT_DSI3; |
300 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DPI0) { |
301 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN; |
302 |
| - value = RDMA1_SOUT_DPI0; |
303 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DPI1) { |
304 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN; |
305 |
| - value = RDMA1_SOUT_DPI1; |
306 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DPI0) { |
307 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA2_SOUT; |
308 |
| - value = RDMA2_SOUT_DPI0; |
309 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DPI1) { |
310 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA2_SOUT; |
311 |
| - value = RDMA2_SOUT_DPI1; |
312 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DSI1) { |
313 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA2_SOUT; |
314 |
| - value = RDMA2_SOUT_DSI1; |
315 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DSI2) { |
316 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA2_SOUT; |
317 |
| - value = RDMA2_SOUT_DSI2; |
318 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DSI3) { |
319 |
| - *addr = DISP_REG_CONFIG_DISP_RDMA2_SOUT; |
320 |
| - value = RDMA2_SOUT_DSI3; |
321 |
| - } else { |
322 |
| - value = 0; |
323 |
| - } |
324 |
| - |
325 |
| - return value; |
326 |
| -} |
327 |
| - |
328 |
| -static unsigned int mtk_ddp_sel_in(enum mtk_ddp_comp_id cur, |
329 |
| - enum mtk_ddp_comp_id next, |
330 |
| - unsigned int *addr) |
331 |
| -{ |
332 |
| - unsigned int value; |
333 |
| - |
334 |
| - if (cur == DDP_COMPONENT_OVL0 && next == DDP_COMPONENT_COLOR0) { |
335 |
| - *addr = DISP_REG_CONFIG_DISP_COLOR0_SEL_IN; |
336 |
| - value = COLOR0_SEL_IN_OVL0; |
337 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DPI0) { |
338 |
| - *addr = DISP_REG_CONFIG_DPI_SEL_IN; |
339 |
| - value = DPI0_SEL_IN_RDMA1; |
340 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DPI1) { |
341 |
| - *addr = DISP_REG_CONFIG_DPI_SEL_IN; |
342 |
| - value = DPI1_SEL_IN_RDMA1; |
343 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI0) { |
344 |
| - *addr = DISP_REG_CONFIG_DSIE_SEL_IN; |
345 |
| - value = DSI0_SEL_IN_RDMA1; |
346 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI1) { |
347 |
| - *addr = DISP_REG_CONFIG_DSIO_SEL_IN; |
348 |
| - value = DSI1_SEL_IN_RDMA1; |
349 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI2) { |
350 |
| - *addr = DISP_REG_CONFIG_DSIE_SEL_IN; |
351 |
| - value = DSI2_SEL_IN_RDMA1; |
352 |
| - } else if (cur == DDP_COMPONENT_RDMA1 && next == DDP_COMPONENT_DSI3) { |
353 |
| - *addr = DISP_REG_CONFIG_DSIO_SEL_IN; |
354 |
| - value = DSI3_SEL_IN_RDMA1; |
355 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DPI0) { |
356 |
| - *addr = DISP_REG_CONFIG_DPI_SEL_IN; |
357 |
| - value = DPI0_SEL_IN_RDMA2; |
358 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DPI1) { |
359 |
| - *addr = DISP_REG_CONFIG_DPI_SEL_IN; |
360 |
| - value = DPI1_SEL_IN_RDMA2; |
361 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DSI0) { |
362 |
| - *addr = DISP_REG_CONFIG_DSIE_SEL_IN; |
363 |
| - value = DSI0_SEL_IN_RDMA2; |
364 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DSI1) { |
365 |
| - *addr = DISP_REG_CONFIG_DSIO_SEL_IN; |
366 |
| - value = DSI1_SEL_IN_RDMA2; |
367 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DSI2) { |
368 |
| - *addr = DISP_REG_CONFIG_DSIE_SEL_IN; |
369 |
| - value = DSI2_SEL_IN_RDMA2; |
370 |
| - } else if (cur == DDP_COMPONENT_RDMA2 && next == DDP_COMPONENT_DSI3) { |
371 |
| - *addr = DISP_REG_CONFIG_DSIE_SEL_IN; |
372 |
| - value = DSI3_SEL_IN_RDMA2; |
373 |
| - } else if (cur == DDP_COMPONENT_OVL1 && next == DDP_COMPONENT_COLOR1) { |
374 |
| - *addr = DISP_REG_CONFIG_DISP_COLOR1_SEL_IN; |
375 |
| - value = COLOR1_SEL_IN_OVL1; |
376 |
| - } else if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DSI0) { |
377 |
| - *addr = DISP_REG_CONFIG_DSI_SEL; |
378 |
| - value = DSI_SEL_IN_BLS; |
379 |
| - } else { |
380 |
| - value = 0; |
381 |
| - } |
382 |
| - |
383 |
| - return value; |
384 |
| -} |
385 |
| - |
386 |
| -static void mtk_ddp_sout_sel(void __iomem *config_regs, |
387 |
| - enum mtk_ddp_comp_id cur, |
388 |
| - enum mtk_ddp_comp_id next) |
389 |
| -{ |
390 |
| - if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DSI0) { |
391 |
| - writel_relaxed(BLS_TO_DSI_RDMA1_TO_DPI1, |
392 |
| - config_regs + DISP_REG_CONFIG_OUT_SEL); |
393 |
| - } else if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DPI0) { |
394 |
| - writel_relaxed(BLS_TO_DPI_RDMA1_TO_DSI, |
395 |
| - config_regs + DISP_REG_CONFIG_OUT_SEL); |
396 |
| - writel_relaxed(DSI_SEL_IN_RDMA, |
397 |
| - config_regs + DISP_REG_CONFIG_DSI_SEL); |
398 |
| - writel_relaxed(DPI_SEL_IN_BLS, |
399 |
| - config_regs + DISP_REG_CONFIG_DPI_SEL); |
400 |
| - } |
401 |
| -} |
402 |
| - |
403 |
| -void mtk_ddp_add_comp_to_path(void __iomem *config_regs, |
404 |
| - enum mtk_ddp_comp_id cur, |
405 |
| - enum mtk_ddp_comp_id next) |
406 |
| -{ |
407 |
| - unsigned int addr, value, reg; |
408 |
| - |
409 |
| - value = mtk_ddp_mout_en(cur, next, &addr); |
410 |
| - if (value) { |
411 |
| - reg = readl_relaxed(config_regs + addr) | value; |
412 |
| - writel_relaxed(reg, config_regs + addr); |
413 |
| - } |
414 |
| - |
415 |
| - mtk_ddp_sout_sel(config_regs, cur, next); |
416 |
| - |
417 |
| - value = mtk_ddp_sel_in(cur, next, &addr); |
418 |
| - if (value) { |
419 |
| - reg = readl_relaxed(config_regs + addr) | value; |
420 |
| - writel_relaxed(reg, config_regs + addr); |
421 |
| - } |
422 |
| -} |
423 |
| - |
424 |
| -void mtk_ddp_remove_comp_from_path(void __iomem *config_regs, |
425 |
| - enum mtk_ddp_comp_id cur, |
426 |
| - enum mtk_ddp_comp_id next) |
427 |
| -{ |
428 |
| - unsigned int addr, value, reg; |
429 |
| - |
430 |
| - value = mtk_ddp_mout_en(cur, next, &addr); |
431 |
| - if (value) { |
432 |
| - reg = readl_relaxed(config_regs + addr) & ~value; |
433 |
| - writel_relaxed(reg, config_regs + addr); |
434 |
| - } |
435 |
| - |
436 |
| - value = mtk_ddp_sel_in(cur, next, &addr); |
437 |
| - if (value) { |
438 |
| - reg = readl_relaxed(config_regs + addr) & ~value; |
439 |
| - writel_relaxed(reg, config_regs + addr); |
440 |
| - } |
441 |
| -} |
442 |
| - |
443 | 187 | struct mtk_disp_mutex *mtk_disp_mutex_get(struct device *dev, unsigned int id)
|
444 | 188 | {
|
445 | 189 | struct mtk_ddp *ddp = dev_get_drvdata(dev);
|
|
0 commit comments