aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/exynos/exynos_mixer.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index adb5ec1b51ae..1bcbcfd5f8c3 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -44,6 +44,12 @@
44#define MIXER_WIN_NR 3 44#define MIXER_WIN_NR 3
45#define MIXER_DEFAULT_WIN 0 45#define MIXER_DEFAULT_WIN 0
46 46
47/* The pixelformats that are natively supported by the mixer. */
48#define MXR_FORMAT_RGB565 4
49#define MXR_FORMAT_ARGB1555 5
50#define MXR_FORMAT_ARGB4444 6
51#define MXR_FORMAT_ARGB8888 7
52
47struct mixer_resources { 53struct mixer_resources {
48 int irq; 54 int irq;
49 void __iomem *mixer_regs; 55 void __iomem *mixer_regs;
@@ -521,20 +527,27 @@ static void mixer_graph_buffer(struct mixer_context *ctx, int win)
521 527
522 plane = &ctx->planes[win]; 528 plane = &ctx->planes[win];
523 529
524 #define RGB565 4 530 switch (plane->pixel_format) {
525 #define ARGB1555 5 531 case DRM_FORMAT_XRGB4444:
526 #define ARGB4444 6 532 fmt = MXR_FORMAT_ARGB4444;
527 #define ARGB8888 7 533 break;
534
535 case DRM_FORMAT_XRGB1555:
536 fmt = MXR_FORMAT_ARGB1555;
537 break;
528 538
529 switch (plane->bpp) { 539 case DRM_FORMAT_RGB565:
530 case 16: 540 fmt = MXR_FORMAT_RGB565;
531 fmt = ARGB4444;
532 break; 541 break;
533 case 32: 542
534 fmt = ARGB8888; 543 case DRM_FORMAT_XRGB8888:
544 case DRM_FORMAT_ARGB8888:
545 fmt = MXR_FORMAT_ARGB8888;
535 break; 546 break;
547
536 default: 548 default:
537 fmt = ARGB8888; 549 DRM_DEBUG_KMS("pixelformat unsupported by mixer\n");
550 return;
538 } 551 }
539 552
540 /* check if mixer supports requested scaling setup */ 553 /* check if mixer supports requested scaling setup */