Backport upstream kernel fixes for sun4i-drm and drm_atomic_helper_connector_hdmi_check()

Firstly, the upstream patch for sun4i-drm ensures the HDMI output is initialized successfully.
Secondly, patching drm_atomic_helper_connector_hdmi_check() avoids a null pointer dereference at shutdown or reboot
This commit is contained in:
Ryan L
2025-06-24 21:20:57 +01:00
committed by Igor
parent 91574fac14
commit b31358752c
3 changed files with 97 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ryzer58 <ryestar101@gmail.com>
Date: Mon, 23 Jun 2025 18:19:15 +0100
Subject: Backport null pointer check to drm HDMI atomic helper function
Backport fix from upstream kernel to address null pointer dereference in drm_atomic_helper_connector_hdmi_check().
If these checks are not in place, then drm_default_rgb_quant_range(), called by drm_atomic_helper_connector_hdmi_check()
would dereference the NULL pointer to_match in drm_match_cea_mode().
Signed-off-by: Ryzer58 <ryestar101@gmail.com>
---
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
index 936a8f95d80f..15661712d722 100644
--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
@@ -500,10 +500,13 @@ int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector,
drm_atomic_get_new_connector_state(state, connector);
const struct drm_display_mode *mode =
connector_state_get_mode(new_conn_state);
int ret;
+ if (!new_conn_state->crtc || !new_conn_state->best_encoder)
+ return 0;
+
new_conn_state->hdmi.is_limited_range = hdmi_is_limited_range(connector, new_conn_state);
ret = hdmi_compute_config(connector, new_conn_state, mode);
if (ret)
return ret;
--
Created with Armbian build tools https://github.com/armbian/build

View File

@@ -0,0 +1,60 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ryzer58 <ryestar101@gmail.com>
Date: Sun, 8 Jun 2025 22:19:27 +0100
Subject: Backport DRM atomic check function change from upstream kernel to restore HDMI
output functionality
Signed-off-by: Ryzer58 <ryestar101@gmail.com>
---
drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 20 +---------
1 file changed, 1 insertion(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
index 6c3862f39c55..5d10b1c54cf9 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
@@ -197,28 +197,10 @@ sun4i_hdmi_connector_clock_valid(const struct drm_connector *connector,
return MODE_OK;
return MODE_NOCLOCK;
}
-static int sun4i_hdmi_connector_atomic_check(struct drm_connector *connector,
- struct drm_atomic_state *state)
-{
- struct drm_connector_state *conn_state =
- drm_atomic_get_new_connector_state(state, connector);
- struct drm_crtc *crtc = conn_state->crtc;
- struct drm_crtc_state *crtc_state = crtc->state;
- struct drm_display_mode *mode = &crtc_state->adjusted_mode;
- enum drm_mode_status status;
-
- status = sun4i_hdmi_connector_clock_valid(connector, mode,
- conn_state->hdmi.tmds_char_rate);
- if (status != MODE_OK)
- return -EINVAL;
-
- return 0;
-}
-
static enum drm_mode_status
sun4i_hdmi_connector_mode_valid(struct drm_connector *connector,
struct drm_display_mode *mode)
{
unsigned long long rate = drm_hdmi_compute_mode_clock(mode, 8,
@@ -278,11 +260,11 @@ static const struct drm_connector_hdmi_funcs sun4i_hdmi_hdmi_connector_funcs = {
.tmds_char_rate_valid = sun4i_hdmi_connector_clock_valid,
.write_infoframe = sun4i_hdmi_write_infoframe,
};
static const struct drm_connector_helper_funcs sun4i_hdmi_connector_helper_funcs = {
- .atomic_check = sun4i_hdmi_connector_atomic_check,
+ .atomic_check = drm_atomic_helper_connector_hdmi_check,
.mode_valid = sun4i_hdmi_connector_mode_valid,
.get_modes = sun4i_hdmi_get_modes,
};
static enum drm_connector_status
--
Created with Armbian build tools https://github.com/armbian/build

View File

@@ -319,6 +319,8 @@
patches.armbian/drv-mmc-host-sunxi-mmc-add-h5-emmc-compatible.patch
patches.armbian/drv-pinctrl-sunxi-pinctrl-sun50i-h6.c-GPIO-disable_strict_mode.patch
patches.armbian/drv-gpu-drm-sun4i-sun8i_mixer.c-add-h3-mixer1.patch
patches.armbian/drv-drm-sun4i-hdmi-atomic-fix.patch
patches.armbian/drv-drm-atomic-helper-null-pointer-fix.patch
patches.armbian/drv-mtd-nand-raw-nand_ids.c-add-H27UBG8T2BTR-BC-nand.patch
patches.armbian/drv-mfd-axp20x-add-sysfs-interface.patch
patches.armbian/drv-spi-spidev-Add-armbian-spi-dev-compatible.patch