|
5 | 5 | * This code is based on drivers/gpu/drm/mxsfb/mxsfb*
|
6 | 6 | */
|
7 | 7 |
|
| 8 | +#include <linux/bitfield.h> |
8 | 9 | #include <linux/clk.h>
|
9 | 10 | #include <linux/io.h>
|
10 | 11 | #include <linux/iopoll.h>
|
@@ -332,6 +333,18 @@ static void lcdif_enable_controller(struct lcdif_drm_private *lcdif)
|
332 | 333 | {
|
333 | 334 | u32 reg;
|
334 | 335 |
|
| 336 | + /* Set FIFO Panic watermarks, low 1/3, high 2/3 . */ |
| 337 | + writel(FIELD_PREP(PANIC0_THRES_LOW_MASK, 1 * PANIC0_THRES_MAX / 3) | |
| 338 | + FIELD_PREP(PANIC0_THRES_HIGH_MASK, 2 * PANIC0_THRES_MAX / 3), |
| 339 | + lcdif->base + LCDC_V8_PANIC0_THRES); |
| 340 | + |
| 341 | + /* |
| 342 | + * Enable FIFO Panic, this does not generate interrupt, but |
| 343 | + * boosts NoC priority based on FIFO Panic watermarks. |
| 344 | + */ |
| 345 | + writel(INT_ENABLE_D1_PLANE_PANIC_EN, |
| 346 | + lcdif->base + LCDC_V8_INT_ENABLE_D1); |
| 347 | + |
335 | 348 | reg = readl(lcdif->base + LCDC_V8_DISP_PARA);
|
336 | 349 | reg |= DISP_PARA_DISP_ON;
|
337 | 350 | writel(reg, lcdif->base + LCDC_V8_DISP_PARA);
|
@@ -359,6 +372,9 @@ static void lcdif_disable_controller(struct lcdif_drm_private *lcdif)
|
359 | 372 | reg = readl(lcdif->base + LCDC_V8_DISP_PARA);
|
360 | 373 | reg &= ~DISP_PARA_DISP_ON;
|
361 | 374 | writel(reg, lcdif->base + LCDC_V8_DISP_PARA);
|
| 375 | + |
| 376 | + /* Disable FIFO Panic NoC priority booster. */ |
| 377 | + writel(0, lcdif->base + LCDC_V8_INT_ENABLE_D1); |
362 | 378 | }
|
363 | 379 |
|
364 | 380 | static void lcdif_reset_block(struct lcdif_drm_private *lcdif)
|
|
0 commit comments