Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/exynos/decon5433: simplify shadow protect code

There is no point in protecting only particular windows during update.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>

authored by

Andrzej Hajda and committed by
Inki Dae
b2adc530 3ba80845

+8 -13
+7 -13
drivers/gpu/drm/exynos/exynos5433_drm_decon.c
··· 313 313 writel(val, ctx->addr + DECON_WINCONx(win)); 314 314 } 315 315 316 - static void decon_shadow_protect_win(struct decon_context *ctx, int win, 317 - bool protect) 316 + static void decon_shadow_protect(struct decon_context *ctx, bool protect) 318 317 { 319 - decon_set_bits(ctx, DECON_SHADOWCON, SHADOWCON_Wx_PROTECT(win), 318 + decon_set_bits(ctx, DECON_SHADOWCON, SHADOWCON_PROTECT_MASK, 320 319 protect ? ~0 : 0); 321 320 } 322 321 323 322 static void decon_atomic_begin(struct exynos_drm_crtc *crtc) 324 323 { 325 324 struct decon_context *ctx = crtc->ctx; 326 - int i; 327 325 328 326 if (test_bit(BIT_SUSPENDED, &ctx->flags)) 329 327 return; 330 328 331 - for (i = ctx->first_win; i < WINDOWS_NR; i++) 332 - decon_shadow_protect_win(ctx, i, true); 329 + decon_shadow_protect(ctx, true); 333 330 } 334 331 335 332 #define BIT_VAL(x, e, s) (((x) & ((1 << ((e) - (s) + 1)) - 1)) << (s)) ··· 409 412 { 410 413 struct decon_context *ctx = crtc->ctx; 411 414 unsigned long flags; 412 - int i; 413 415 414 416 if (test_bit(BIT_SUSPENDED, &ctx->flags)) 415 417 return; 416 418 417 419 spin_lock_irqsave(&ctx->vblank_lock, flags); 418 420 419 - for (i = ctx->first_win; i < WINDOWS_NR; i++) 420 - decon_shadow_protect_win(ctx, i, false); 421 + decon_shadow_protect(ctx, false); 421 422 422 423 decon_set_bits(ctx, DECON_UPDATE, STANDALONE_UPDATE_F, ~0); 423 424 ··· 535 540 goto err; 536 541 } 537 542 538 - for (win = 0; win < WINDOWS_NR; win++) { 539 - decon_shadow_protect_win(ctx, win, true); 543 + decon_shadow_protect(ctx, true); 544 + for (win = 0; win < WINDOWS_NR; win++) 540 545 decon_set_bits(ctx, DECON_WINCONx(win), WINCONx_ENWIN_F, 0); 541 - decon_shadow_protect_win(ctx, win, false); 542 - } 546 + decon_shadow_protect(ctx, false); 543 547 544 548 decon_set_bits(ctx, DECON_UPDATE, STANDALONE_UPDATE_F, ~0); 545 549
+1
include/video/exynos5433_decon.h
··· 118 118 #define WINCONx_ENWIN_F (1 << 0) 119 119 120 120 /* SHADOWCON */ 121 + #define SHADOWCON_PROTECT_MASK GENMASK(14, 10) 121 122 #define SHADOWCON_Wx_PROTECT(n) (1 << (10 + (n))) 122 123 123 124 /* VIDOSDxD */