mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
Merge pull request #4237 from MilhouseVH/linux5.5.7+
linux (Generic/Allwinner): update to linux-5.5.13
This commit is contained in:
commit
f0a61bc4ec
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="kernel-firmware"
|
||||
PKG_VERSION="b791e15d3e0ac2705eaa7965ed9b6d4c85fef2a2"
|
||||
PKG_SHA256="9415d550656974960831fb9a7c96169e67a4bf4b231a444788bc32d17dd2cd63"
|
||||
PKG_VERSION="3b3dd5abf07ab3819a7f28e75a61d921ecc640fd"
|
||||
PKG_SHA256="2fe9537dcf732b0ae3cb467ceeff8f7ee1d24a3e497f744e771b958981d42eaa"
|
||||
PKG_LICENSE="other"
|
||||
PKG_SITE="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/"
|
||||
PKG_URL="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/$PKG_VERSION.tar.gz"
|
||||
|
@ -29,8 +29,8 @@ case "$LINUX" in
|
||||
PKG_SOURCE_NAME="linux-$LINUX-$PKG_VERSION.tar.gz"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="5.5.6"
|
||||
PKG_SHA256="54cc88ab9d7517267d8592905b277424ae441f3d7209c7ad1236533c2be6ee35"
|
||||
PKG_VERSION="5.5.13"
|
||||
PKG_SHA256="1f3b3614a06bffc9c621c82f98d8ca88c60538a8c6dd77f96f2e7fee310a4ee2"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/kernel/v5.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_PATCH_DIRS="default"
|
||||
;;
|
||||
|
@ -1900,503 +1900,6 @@ index c17d30e74bb1..ce497d0197df 100644
|
||||
--
|
||||
2.24.1
|
||||
|
||||
From deda8aa0bedde60a7a8e0b471acad67bce60670b Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 18 Feb 2020 17:52:59 +0100
|
||||
Subject: [PATCH 1/7] drm/sun4i: de2/de3: Remove unsupported VI layer formats
|
||||
|
||||
YUV444 and YVU444 are planar formats, but HW format RGB888 is packed.
|
||||
This means that those two mappings were never correct. Remove them.
|
||||
|
||||
Fixes: 60a3dcf96aa8 ("drm/sun4i: Add DE2 definitions for YUV formats")
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/gpu/drm/sun4i/sun8i_mixer.c | 12 ------------
|
||||
drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 2 --
|
||||
2 files changed, 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||
index 7c24f8f832a5..3a78dbbceb8a 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||
@@ -196,12 +196,6 @@ static const struct de2_fmt_info de2_formats[] = {
|
||||
.rgb = false,
|
||||
.csc = SUN8I_CSC_MODE_YUV2RGB,
|
||||
},
|
||||
- {
|
||||
- .drm_fmt = DRM_FORMAT_YUV444,
|
||||
- .de2_fmt = SUN8I_MIXER_FBFMT_RGB888,
|
||||
- .rgb = true,
|
||||
- .csc = SUN8I_CSC_MODE_YUV2RGB,
|
||||
- },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_YUV422,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_YUV422,
|
||||
@@ -220,12 +214,6 @@ static const struct de2_fmt_info de2_formats[] = {
|
||||
.rgb = false,
|
||||
.csc = SUN8I_CSC_MODE_YUV2RGB,
|
||||
},
|
||||
- {
|
||||
- .drm_fmt = DRM_FORMAT_YVU444,
|
||||
- .de2_fmt = SUN8I_MIXER_FBFMT_RGB888,
|
||||
- .rgb = true,
|
||||
- .csc = SUN8I_CSC_MODE_YVU2RGB,
|
||||
- },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_YVU422,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_YUV422,
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||||
index 42d445d23773..6a244d6fafd9 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||||
@@ -431,11 +431,9 @@ static const u32 sun8i_vi_layer_formats[] = {
|
||||
DRM_FORMAT_YUV411,
|
||||
DRM_FORMAT_YUV420,
|
||||
DRM_FORMAT_YUV422,
|
||||
- DRM_FORMAT_YUV444,
|
||||
DRM_FORMAT_YVU411,
|
||||
DRM_FORMAT_YVU420,
|
||||
DRM_FORMAT_YVU422,
|
||||
- DRM_FORMAT_YVU444,
|
||||
};
|
||||
|
||||
struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm,
|
||||
--
|
||||
2.25.1
|
||||
|
||||
From 3d1e6278957050416a425e0b2f3108c1e070ef4f Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 17 Feb 2020 17:32:10 +0100
|
||||
Subject: [PATCH 2/7] drm/sun4i: Add separate DE3 VI layer formats
|
||||
|
||||
DE3 VI layers support alpha blending, but DE2 VI layers do not.
|
||||
Additionally, DE3 VI layers support 10-bit RGB and YUV formats.
|
||||
|
||||
Make a separate list for DE3.
|
||||
|
||||
Fixes: c50519e6db4d ("drm/sun4i: Add basic support for DE3")
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/gpu/drm/sun4i/sun8i_mixer.c | 36 ++++++++++++++++
|
||||
drivers/gpu/drm/sun4i/sun8i_mixer.h | 11 +++++
|
||||
drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 58 ++++++++++++++++++++++++--
|
||||
3 files changed, 102 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||
index 3a78dbbceb8a..655445bfe64a 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||
@@ -148,6 +148,30 @@ static const struct de2_fmt_info de2_formats[] = {
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
+ {
|
||||
+ .drm_fmt = DRM_FORMAT_ARGB2101010,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_ARGB2101010,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
+ {
|
||||
+ .drm_fmt = DRM_FORMAT_ABGR2101010,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_ABGR2101010,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
+ {
|
||||
+ .drm_fmt = DRM_FORMAT_RGBA1010102,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_RGBA1010102,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
+ {
|
||||
+ .drm_fmt = DRM_FORMAT_BGRA1010102,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_BGRA1010102,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_UYVY,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_UYVY,
|
||||
@@ -232,6 +256,18 @@ static const struct de2_fmt_info de2_formats[] = {
|
||||
.rgb = false,
|
||||
.csc = SUN8I_CSC_MODE_YVU2RGB,
|
||||
},
|
||||
+ {
|
||||
+ .drm_fmt = DRM_FORMAT_P010,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_P010_YUV,
|
||||
+ .rgb = false,
|
||||
+ .csc = SUN8I_CSC_MODE_YUV2RGB,
|
||||
+ },
|
||||
+ {
|
||||
+ .drm_fmt = DRM_FORMAT_P210,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_P210_YUV,
|
||||
+ .rgb = false,
|
||||
+ .csc = SUN8I_CSC_MODE_YUV2RGB,
|
||||
+ },
|
||||
};
|
||||
|
||||
const struct de2_fmt_info *sun8i_mixer_format_info(u32 format)
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h
|
||||
index c6cc94057faf..345b28b0a80a 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_mixer.h
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h
|
||||
@@ -93,6 +93,10 @@
|
||||
#define SUN8I_MIXER_FBFMT_ABGR1555 17
|
||||
#define SUN8I_MIXER_FBFMT_RGBA5551 18
|
||||
#define SUN8I_MIXER_FBFMT_BGRA5551 19
|
||||
+#define SUN8I_MIXER_FBFMT_ARGB2101010 20
|
||||
+#define SUN8I_MIXER_FBFMT_ABGR2101010 21
|
||||
+#define SUN8I_MIXER_FBFMT_RGBA1010102 22
|
||||
+#define SUN8I_MIXER_FBFMT_BGRA1010102 23
|
||||
|
||||
#define SUN8I_MIXER_FBFMT_YUYV 0
|
||||
#define SUN8I_MIXER_FBFMT_UYVY 1
|
||||
@@ -109,6 +113,13 @@
|
||||
/* format 12 is semi-planar YUV411 UVUV */
|
||||
/* format 13 is semi-planar YUV411 VUVU */
|
||||
#define SUN8I_MIXER_FBFMT_YUV411 14
|
||||
+/* format 15 doesn't exist */
|
||||
+/* format 16 is P010 YVU */
|
||||
+#define SUN8I_MIXER_FBFMT_P010_YUV 17
|
||||
+/* format 18 is P210 YVU */
|
||||
+#define SUN8I_MIXER_FBFMT_P210_YUV 19
|
||||
+/* format 20 is packed YVU444 10-bit */
|
||||
+/* format 21 is packed YUV444 10-bit */
|
||||
|
||||
/*
|
||||
* Sub-engines listed bellow are unused for now. The EN registers are here only
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||||
index 6a244d6fafd9..6c0084a3c3d7 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||||
@@ -436,24 +436,76 @@ static const u32 sun8i_vi_layer_formats[] = {
|
||||
DRM_FORMAT_YVU422,
|
||||
};
|
||||
|
||||
+static const u32 sun8i_vi_layer_de3_formats[] = {
|
||||
+ DRM_FORMAT_ABGR1555,
|
||||
+ DRM_FORMAT_ABGR2101010,
|
||||
+ DRM_FORMAT_ABGR4444,
|
||||
+ DRM_FORMAT_ABGR8888,
|
||||
+ DRM_FORMAT_ARGB1555,
|
||||
+ DRM_FORMAT_ARGB2101010,
|
||||
+ DRM_FORMAT_ARGB4444,
|
||||
+ DRM_FORMAT_ARGB8888,
|
||||
+ DRM_FORMAT_BGR565,
|
||||
+ DRM_FORMAT_BGR888,
|
||||
+ DRM_FORMAT_BGRA1010102,
|
||||
+ DRM_FORMAT_BGRA5551,
|
||||
+ DRM_FORMAT_BGRA4444,
|
||||
+ DRM_FORMAT_BGRA8888,
|
||||
+ DRM_FORMAT_BGRX8888,
|
||||
+ DRM_FORMAT_RGB565,
|
||||
+ DRM_FORMAT_RGB888,
|
||||
+ DRM_FORMAT_RGBA1010102,
|
||||
+ DRM_FORMAT_RGBA4444,
|
||||
+ DRM_FORMAT_RGBA5551,
|
||||
+ DRM_FORMAT_RGBA8888,
|
||||
+ DRM_FORMAT_RGBX8888,
|
||||
+ DRM_FORMAT_XBGR8888,
|
||||
+ DRM_FORMAT_XRGB8888,
|
||||
+
|
||||
+ DRM_FORMAT_NV16,
|
||||
+ DRM_FORMAT_NV12,
|
||||
+ DRM_FORMAT_NV21,
|
||||
+ DRM_FORMAT_NV61,
|
||||
+ DRM_FORMAT_P010,
|
||||
+ DRM_FORMAT_P210,
|
||||
+ DRM_FORMAT_UYVY,
|
||||
+ DRM_FORMAT_VYUY,
|
||||
+ DRM_FORMAT_YUYV,
|
||||
+ DRM_FORMAT_YVYU,
|
||||
+ DRM_FORMAT_YUV411,
|
||||
+ DRM_FORMAT_YUV420,
|
||||
+ DRM_FORMAT_YUV422,
|
||||
+ DRM_FORMAT_YVU411,
|
||||
+ DRM_FORMAT_YVU420,
|
||||
+ DRM_FORMAT_YVU422,
|
||||
+};
|
||||
+
|
||||
struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm,
|
||||
struct sun8i_mixer *mixer,
|
||||
int index)
|
||||
{
|
||||
u32 supported_encodings, supported_ranges;
|
||||
+ unsigned int plane_cnt, format_count;
|
||||
struct sun8i_vi_layer *layer;
|
||||
- unsigned int plane_cnt;
|
||||
+ const u32 *formats;
|
||||
int ret;
|
||||
|
||||
layer = devm_kzalloc(drm->dev, sizeof(*layer), GFP_KERNEL);
|
||||
if (!layer)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
+ if (mixer->cfg->is_de3) {
|
||||
+ formats = sun8i_vi_layer_de3_formats;
|
||||
+ format_count = ARRAY_SIZE(sun8i_vi_layer_de3_formats);
|
||||
+ } else {
|
||||
+ formats = sun8i_vi_layer_formats;
|
||||
+ format_count = ARRAY_SIZE(sun8i_vi_layer_formats);
|
||||
+ }
|
||||
+
|
||||
/* possible crtcs are set later */
|
||||
ret = drm_universal_plane_init(drm, &layer->plane, 0,
|
||||
&sun8i_vi_layer_funcs,
|
||||
- sun8i_vi_layer_formats,
|
||||
- ARRAY_SIZE(sun8i_vi_layer_formats),
|
||||
+ formats, format_count,
|
||||
NULL, DRM_PLANE_TYPE_OVERLAY, NULL);
|
||||
if (ret) {
|
||||
dev_err(drm->dev, "Couldn't initialize layer\n");
|
||||
--
|
||||
2.25.1
|
||||
|
||||
From 9cdf885761bd5fc00ad3a34249b083999e4a0b8c Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 17 Feb 2020 18:02:46 +0100
|
||||
Subject: [PATCH 3/7] drm/sun4i: Fix DE2 VI layer format support
|
||||
|
||||
DE2 VI layer doesn't support blending which means alpha channel is
|
||||
ignored. Replace all formats with alpha with "don't care" (X) channel.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/gpu/drm/sun4i/sun8i_mixer.c | 56 ++++++++++++++++++++++++++
|
||||
drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 22 +++++-----
|
||||
2 files changed, 67 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||
index 655445bfe64a..4a64f7ae437a 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||||
@@ -106,48 +106,104 @@ static const struct de2_fmt_info de2_formats[] = {
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
+ {
|
||||
+ /* for DE2 VI layer which ignores alpha */
|
||||
+ .drm_fmt = DRM_FORMAT_XRGB4444,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_ARGB4444,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_ABGR4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ABGR4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
+ {
|
||||
+ /* for DE2 VI layer which ignores alpha */
|
||||
+ .drm_fmt = DRM_FORMAT_XBGR4444,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_ABGR4444,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_RGBA4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_RGBA4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
+ {
|
||||
+ /* for DE2 VI layer which ignores alpha */
|
||||
+ .drm_fmt = DRM_FORMAT_RGBX4444,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_RGBA4444,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_BGRA4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_BGRA4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
+ {
|
||||
+ /* for DE2 VI layer which ignores alpha */
|
||||
+ .drm_fmt = DRM_FORMAT_BGRX4444,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_BGRA4444,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_ARGB1555,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ARGB1555,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
+ {
|
||||
+ /* for DE2 VI layer which ignores alpha */
|
||||
+ .drm_fmt = DRM_FORMAT_XRGB1555,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_ARGB1555,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_ABGR1555,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ABGR1555,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
+ {
|
||||
+ /* for DE2 VI layer which ignores alpha */
|
||||
+ .drm_fmt = DRM_FORMAT_XBGR1555,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_ABGR1555,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_RGBA5551,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_RGBA5551,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
+ {
|
||||
+ /* for DE2 VI layer which ignores alpha */
|
||||
+ .drm_fmt = DRM_FORMAT_RGBX5551,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_RGBA5551,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_BGRA5551,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_BGRA5551,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
+ {
|
||||
+ /* for DE2 VI layer which ignores alpha */
|
||||
+ .drm_fmt = DRM_FORMAT_BGRX5551,
|
||||
+ .de2_fmt = SUN8I_MIXER_FBFMT_BGRA5551,
|
||||
+ .rgb = true,
|
||||
+ .csc = SUN8I_CSC_MODE_OFF,
|
||||
+ },
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_ARGB2101010,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ARGB2101010,
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||||
index 6c0084a3c3d7..b8398ca18b0f 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||||
@@ -398,26 +398,26 @@ static const struct drm_plane_funcs sun8i_vi_layer_funcs = {
|
||||
};
|
||||
|
||||
/*
|
||||
- * While all RGB formats are supported, VI planes don't support
|
||||
- * alpha blending, so there is no point having formats with alpha
|
||||
- * channel if their opaque analog exist.
|
||||
+ * While DE2 VI layer supports same RGB formats as UI layer, alpha
|
||||
+ * channel is ignored. This structure lists all unique variants
|
||||
+ * where alpha channel is replaced with "don't care" (X) channel.
|
||||
*/
|
||||
static const u32 sun8i_vi_layer_formats[] = {
|
||||
- DRM_FORMAT_ABGR1555,
|
||||
- DRM_FORMAT_ABGR4444,
|
||||
- DRM_FORMAT_ARGB1555,
|
||||
- DRM_FORMAT_ARGB4444,
|
||||
DRM_FORMAT_BGR565,
|
||||
DRM_FORMAT_BGR888,
|
||||
- DRM_FORMAT_BGRA5551,
|
||||
- DRM_FORMAT_BGRA4444,
|
||||
+ DRM_FORMAT_BGRX4444,
|
||||
+ DRM_FORMAT_BGRX5551,
|
||||
DRM_FORMAT_BGRX8888,
|
||||
DRM_FORMAT_RGB565,
|
||||
DRM_FORMAT_RGB888,
|
||||
- DRM_FORMAT_RGBA4444,
|
||||
- DRM_FORMAT_RGBA5551,
|
||||
+ DRM_FORMAT_RGBX4444,
|
||||
+ DRM_FORMAT_RGBX5551,
|
||||
DRM_FORMAT_RGBX8888,
|
||||
+ DRM_FORMAT_XBGR1555,
|
||||
+ DRM_FORMAT_XBGR4444,
|
||||
DRM_FORMAT_XBGR8888,
|
||||
+ DRM_FORMAT_XRGB1555,
|
||||
+ DRM_FORMAT_XRGB4444,
|
||||
DRM_FORMAT_XRGB8888,
|
||||
|
||||
DRM_FORMAT_NV16,
|
||||
--
|
||||
2.25.1
|
||||
|
||||
From ad659ce8a20e12b2508c977818e8c21487f67793 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 29 Feb 2020 09:49:49 +0100
|
||||
Subject: [PATCH v2 1/4] drm/bridge: dw-hdmi: fix AVI frame colorimetry
|
||||
|
||||
CTA-861-F explicitly states that for RGB colorspace colorimetry should
|
||||
be set to "none". Fix that.
|
||||
|
||||
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
Fixes: def23aa7e982 ("drm: bridge: dw-hdmi: Switch to V4L bus format and encodings")
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 46 +++++++++++++----------
|
||||
1 file changed, 26 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index 67fca439bbfb..24965e53d351 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -1624,28 +1624,34 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
||||
frame.colorspace = HDMI_COLORSPACE_RGB;
|
||||
|
||||
/* Set up colorimetry */
|
||||
- switch (hdmi->hdmi_data.enc_out_encoding) {
|
||||
- case V4L2_YCBCR_ENC_601:
|
||||
- if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV601)
|
||||
- frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
|
||||
- else
|
||||
+ if (!hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format)) {
|
||||
+ switch (hdmi->hdmi_data.enc_out_encoding) {
|
||||
+ case V4L2_YCBCR_ENC_601:
|
||||
+ if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV601)
|
||||
+ frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
|
||||
+ else
|
||||
+ frame.colorimetry = HDMI_COLORIMETRY_ITU_601;
|
||||
+ frame.extended_colorimetry =
|
||||
+ HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
||||
+ break;
|
||||
+ case V4L2_YCBCR_ENC_709:
|
||||
+ if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV709)
|
||||
+ frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
|
||||
+ else
|
||||
+ frame.colorimetry = HDMI_COLORIMETRY_ITU_709;
|
||||
+ frame.extended_colorimetry =
|
||||
+ HDMI_EXTENDED_COLORIMETRY_XV_YCC_709;
|
||||
+ break;
|
||||
+ default: /* Carries no data */
|
||||
frame.colorimetry = HDMI_COLORIMETRY_ITU_601;
|
||||
+ frame.extended_colorimetry =
|
||||
+ HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
||||
+ break;
|
||||
+ }
|
||||
+ } else {
|
||||
+ frame.colorimetry = HDMI_COLORIMETRY_NONE;
|
||||
frame.extended_colorimetry =
|
||||
- HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
||||
- break;
|
||||
- case V4L2_YCBCR_ENC_709:
|
||||
- if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV709)
|
||||
- frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
|
||||
- else
|
||||
- frame.colorimetry = HDMI_COLORIMETRY_ITU_709;
|
||||
- frame.extended_colorimetry =
|
||||
- HDMI_EXTENDED_COLORIMETRY_XV_YCC_709;
|
||||
- break;
|
||||
- default: /* Carries no data */
|
||||
- frame.colorimetry = HDMI_COLORIMETRY_ITU_601;
|
||||
- frame.extended_colorimetry =
|
||||
- HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
||||
- break;
|
||||
+ HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
||||
}
|
||||
|
||||
frame.scan_mode = HDMI_SCAN_MODE_NONE;
|
||||
--
|
||||
2.25.1
|
||||
|
||||
From 9ad42557109a9db9ca16964352c3c045a775b018 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Jirman <megous@megous.com>
|
||||
Date: Thu, 19 Dec 2019 09:28:21 -0800
|
||||
|
Loading…
x
Reference in New Issue
Block a user