mirror of
https://github.com/armbian/build.git
synced 2025-08-15 23:56:57 +02:00
65 lines
2.3 KiB
Diff
65 lines
2.3 KiB
Diff
From 000c586a34ad82e4673e6dfda5457147b0d85606 Mon Sep 17 00:00:00 2001
|
|
From: Jernej Skrabec <jernej.skrabec@gmail.com>
|
|
Date: Sun, 29 Sep 2024 22:04:35 +1300
|
|
Subject: drm: sun4i: de2/de3: call csc setup also for UI layer
|
|
|
|
Currently, only VI layer calls CSC setup function. This comes from DE2
|
|
limitation, which doesn't have CSC unit for UI layers. However, DE3 has
|
|
separate CSC units for each layer. This allows display pipeline to make
|
|
output signal in different color spaces. To support both use cases, add
|
|
a call to CSC setup function also in UI layer code. For DE2, this will
|
|
be a no-op, but it will allow DE3 to output signal in multiple formats.
|
|
|
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
|
Signed-off-by: Ryan Walklin <ryan@testtoast.com>
|
|
---
|
|
drivers/gpu/drm/sun4i/sun8i_csc.c | 8 +++++---
|
|
drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 6 ++++++
|
|
2 files changed, 11 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/sun8i_csc.c
|
|
index 0dcbc0866ae8..68d955c63b05 100644
|
|
--- a/drivers/gpu/drm/sun4i/sun8i_csc.c
|
|
+++ b/drivers/gpu/drm/sun4i/sun8i_csc.c
|
|
@@ -209,8 +209,10 @@ void sun8i_csc_set_ccsc(struct sun8i_mixer *mixer, int layer,
|
|
return;
|
|
}
|
|
|
|
- base = ccsc_base[mixer->cfg->ccsc][layer];
|
|
+ if (layer < mixer->cfg->vi_num) {
|
|
+ base = ccsc_base[mixer->cfg->ccsc][layer];
|
|
|
|
- sun8i_csc_setup(mixer->engine.regs, base,
|
|
- fmt_type, encoding, range);
|
|
+ sun8i_csc_setup(mixer->engine.regs, base,
|
|
+ fmt_type, encoding, range);
|
|
+ }
|
|
}
|
|
diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
|
|
index b90e5edef4e8..aa987bca1dbb 100644
|
|
--- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
|
|
+++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
|
|
@@ -20,6 +20,7 @@
|
|
#include <drm/drm_gem_dma_helper.h>
|
|
#include <drm/drm_probe_helper.h>
|
|
|
|
+#include "sun8i_csc.h"
|
|
#include "sun8i_mixer.h"
|
|
#include "sun8i_ui_layer.h"
|
|
#include "sun8i_ui_scaler.h"
|
|
@@ -135,6 +136,11 @@ static int sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int channel,
|
|
SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay),
|
|
SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_MASK, val);
|
|
|
|
+ /* Note: encoding and range arguments are ignored for RGB */
|
|
+ sun8i_csc_set_ccsc(mixer, channel, FORMAT_TYPE_RGB,
|
|
+ DRM_COLOR_YCBCR_BT601,
|
|
+ DRM_COLOR_YCBCR_FULL_RANGE);
|
|
+
|
|
return 0;
|
|
}
|
|
|
|
--
|
|
2.35.3
|
|
|