mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user