From 50a212ec906f7524620675f0c57357691c26c81f Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 16 Oct 2024 01:20:19 +0000
Subject: [PATCH] 修改GPIO导出默认初始值
---
kernel/drivers/gpu/drm/rockchip/rk628/rk628_hdmi.c | 23 +++++++++++++++--------
1 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/kernel/drivers/gpu/drm/rockchip/rk628/rk628_hdmi.c b/kernel/drivers/gpu/drm/rockchip/rk628/rk628_hdmi.c
index 3295086..29b5fcb 100644
--- a/kernel/drivers/gpu/drm/rockchip/rk628/rk628_hdmi.c
+++ b/kernel/drivers/gpu/drm/rockchip/rk628/rk628_hdmi.c
@@ -20,9 +20,8 @@
#include <linux/regmap.h>
#include <drm/drm_of.h>
-#include <drm/drmP.h>
#include <drm/drm_atomic_helper.h>
-#include <drm/drm_crtc_helper.h>
+#include <drm/drm_probe_helper.h>
#include <drm/drm_edid.h>
#include <sound/hdmi-codec.h>
@@ -676,7 +675,8 @@
union hdmi_infoframe frame;
int rc;
- rc = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi, mode, false);
+ rc = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
+ &hdmi->connector, mode);
if (hdmi->hdmi_data.enc_out_format == HDMI_COLORSPACE_YUV444)
frame.avi.colorspace = HDMI_COLORSPACE_YUV444;
@@ -1023,8 +1023,8 @@
};
static void rk628_hdmi_bridge_mode_set(struct drm_bridge *bridge,
- struct drm_display_mode *mode,
- struct drm_display_mode *adj_mode)
+ const struct drm_display_mode *mode,
+ const struct drm_display_mode *adj_mode)
{
struct rk628_hdmi *hdmi = bridge_to_hdmi(bridge);
@@ -1047,12 +1047,16 @@
rk628_hdmi_set_pwr_mode(hdmi, LOWER_PWR);
}
-static int rk628_hdmi_bridge_attach(struct drm_bridge *bridge)
+static int rk628_hdmi_bridge_attach(struct drm_bridge *bridge,
+ enum drm_bridge_attach_flags flags)
{
struct rk628_hdmi *hdmi = bridge_to_hdmi(bridge);
struct drm_connector *connector = &hdmi->connector;
struct drm_device *drm = bridge->dev;
int ret;
+
+ if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)
+ return 0;
connector->polled = DRM_CONNECTOR_POLL_HPD;
@@ -1193,7 +1197,8 @@
/* do nothing */
}
-static int rk628_hdmi_audio_digital_mute(struct device *dev, void *d, bool mute)
+static int rk628_hdmi_audio_mute(struct device *dev, void *d, bool mute,
+ int direction)
{
struct rk628_hdmi *hdmi = dev_get_drvdata(dev);
@@ -1238,8 +1243,9 @@
static const struct hdmi_codec_ops audio_codec_ops = {
.hw_params = rk628_hdmi_audio_hw_params,
.audio_shutdown = rk628_hdmi_audio_shutdown,
- .digital_mute = rk628_hdmi_audio_digital_mute,
+ .mute_stream = rk628_hdmi_audio_mute,
.get_eld = rk628_hdmi_audio_get_eld,
+ .no_capture_mute = 1,
};
static int rk628_hdmi_audio_codec_init(struct rk628_hdmi *hdmi,
@@ -1558,6 +1564,7 @@
hdmi->extcon = devm_extcon_dev_allocate(hdmi->dev, rk628_hdmi_cable);
if (IS_ERR(hdmi->extcon)) {
dev_err(hdmi->dev, "allocate extcon failed\n");
+ ret = PTR_ERR(hdmi->extcon);
goto fail;
}
--
Gitblit v1.6.2