* [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
@ 2023-01-24 9:41 ` Jani Nikula
0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2023-01-24 9:41 UTC (permalink / raw)
To: dri-devel
Cc: Emma Anholt, amd-gfx, Andrzej Hajda, Kyungmin Park,
Jernej Skrabec, Alain Volmat, Pan, Chun-Kuang Hu, Jonas Karlman,
jani.nikula, linux-arm-msm, intel-gfx, Abhinav Kumar,
Alex Deucher, linux-mediatek, Sean Paul, Neil Armstrong, Xinhui,
Seung-Woo Kim, Robert Foss, Dmitry Baryshkov, freedreno,
Christian König, Laurent Pinchart
Information parsed from the display EDID should be stored in display
info. We can stop clearing ELD separately.
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Pan, Xinhui <Xinhui.Pan@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Robert Foss <robert.foss@linaro.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: linux-mediatek@lists.infradead.org
Cc: Rob Clark <robdclark@gmail.com>
Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Sean Paul <sean@poorly.run>
Cc: linux-arm-msm@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Cc: Alain Volmat <alain.volmat@foss.st.com>
Cc: Emma Anholt <emma@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Sorry about the crazy Cc list, but this touches a lot of drivers, and I
didn't want to blind side anyone.
---
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 6 +--
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 6 +--
drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 6 +--
drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 12 ++---
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 ++---
drivers/gpu/drm/bridge/analogix/anx7625.c | 4 +-
drivers/gpu/drm/bridge/ite-it66121.c | 4 +-
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +-
drivers/gpu/drm/drm_edid.c | 45 +++++++------------
drivers/gpu/drm/exynos/exynos_hdmi.c | 2 +-
drivers/gpu/drm/i915/display/intel_audio.c | 22 ++++-----
drivers/gpu/drm/i915/display/intel_sdvo.c | 2 +-
drivers/gpu/drm/mediatek/mtk_dp.c | 2 +-
drivers/gpu/drm/mediatek/mtk_hdmi.c | 3 +-
drivers/gpu/drm/msm/dp/dp_audio.c | 4 +-
drivers/gpu/drm/radeon/dce6_afmt.c | 12 ++---
drivers/gpu/drm/radeon/evergreen_hdmi.c | 12 ++---
drivers/gpu/drm/radeon/radeon_audio.c | 4 +-
drivers/gpu/drm/sti/sti_hdmi.c | 2 +-
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
include/drm/drm_connector.h | 39 +++++++++-------
21 files changed, 99 insertions(+), 102 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
index 9a24ed463abd..0c05838032c5 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
@@ -1257,11 +1257,11 @@ static void dce_v10_0_audio_write_latency_fields(struct drm_encoder *encoder,
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
interlace = 1;
- if (connector->latency_present[interlace]) {
+ if (connector->display_info.latency_present[interlace]) {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- VIDEO_LIPSYNC, connector->video_latency[interlace]);
+ VIDEO_LIPSYNC, connector->display_info.video_latency[interlace]);
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- AUDIO_LIPSYNC, connector->audio_latency[interlace]);
+ AUDIO_LIPSYNC, connector->display_info.audio_latency[interlace]);
} else {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
VIDEO_LIPSYNC, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index c14b70350a51..896f0416b69f 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -1283,11 +1283,11 @@ static void dce_v11_0_audio_write_latency_fields(struct drm_encoder *encoder,
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
interlace = 1;
- if (connector->latency_present[interlace]) {
+ if (connector->display_info.latency_present[interlace]) {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- VIDEO_LIPSYNC, connector->video_latency[interlace]);
+ VIDEO_LIPSYNC, connector->display_info.video_latency[interlace]);
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- AUDIO_LIPSYNC, connector->audio_latency[interlace]);
+ AUDIO_LIPSYNC, connector->display_info.audio_latency[interlace]);
} else {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
VIDEO_LIPSYNC, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
index 7f85ba5b726f..4aa797726bca 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
@@ -1158,11 +1158,11 @@ static void dce_v6_0_audio_write_latency_fields(struct drm_encoder *encoder,
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
interlace = 1;
- if (connector->latency_present[interlace]) {
+ if (connector->display_info.latency_present[interlace]) {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- VIDEO_LIPSYNC, connector->video_latency[interlace]);
+ VIDEO_LIPSYNC, connector->display_info.video_latency[interlace]);
tmp = REG_SET_FIELD(tmp, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- AUDIO_LIPSYNC, connector->audio_latency[interlace]);
+ AUDIO_LIPSYNC, connector->display_info.audio_latency[interlace]);
} else {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
VIDEO_LIPSYNC, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
index d421a268c9ff..c84421510a46 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
@@ -1195,11 +1195,11 @@ static void dce_v8_0_audio_write_latency_fields(struct drm_encoder *encoder,
}
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
- if (connector->latency_present[1])
+ if (connector->display_info.latency_present[1])
tmp =
- (connector->video_latency[1] <<
+ (connector->display_info.video_latency[1] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__VIDEO_LIPSYNC__SHIFT) |
- (connector->audio_latency[1] <<
+ (connector->display_info.audio_latency[1] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__AUDIO_LIPSYNC__SHIFT);
else
tmp =
@@ -1208,11 +1208,11 @@ static void dce_v8_0_audio_write_latency_fields(struct drm_encoder *encoder,
(0 <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__AUDIO_LIPSYNC__SHIFT);
} else {
- if (connector->latency_present[0])
+ if (connector->display_info.latency_present[0])
tmp =
- (connector->video_latency[0] <<
+ (connector->display_info.video_latency[0] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__VIDEO_LIPSYNC__SHIFT) |
- (connector->audio_latency[0] <<
+ (connector->display_info.audio_latency[0] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__AUDIO_LIPSYNC__SHIFT);
else
tmp =
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index c61c388bddf2..4db61c346280 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -894,8 +894,8 @@ static int amdgpu_dm_audio_component_get_eld(struct device *kdev, int port,
continue;
*enabled = true;
- ret = drm_eld_size(connector->eld);
- memcpy(buf, connector->eld, min(max_bytes, ret));
+ ret = drm_eld_size(connector->display_info.eld);
+ memcpy(buf, connector->display_info.eld, min(max_bytes, ret));
break;
}
@@ -5386,9 +5386,9 @@ static void fill_audio_info(struct audio_info *audio_info,
audio_info->flags.all = edid_caps->speaker_flags;
/* TODO: We only check for the progressive mode, check for interlace mode too */
- if (drm_connector->latency_present[0]) {
- audio_info->video_latency = drm_connector->video_latency[0];
- audio_info->audio_latency = drm_connector->audio_latency[0];
+ if (drm_connector->display_info.latency_present[0]) {
+ audio_info->video_latency = drm_connector->display_info.video_latency[0];
+ audio_info->audio_latency = drm_connector->display_info.audio_latency[0];
}
/* TODO: For DP, video and audio latency should be calculated from DPCD caps */
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 6846199a2ee1..04a29950228c 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -1982,8 +1982,8 @@ static int anx7625_audio_get_eld(struct device *dev, void *data,
memset(buf, 0, len);
} else {
dev_dbg(dev, "audio copy eld\n");
- memcpy(buf, ctx->connector->eld,
- min(sizeof(ctx->connector->eld), len));
+ memcpy(buf, ctx->connector->display_info.eld,
+ min(sizeof(ctx->connector->display_info.eld), len));
}
return 0;
diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c
index a2d723d6a4be..1a5e0741d33b 100644
--- a/drivers/gpu/drm/bridge/ite-it66121.c
+++ b/drivers/gpu/drm/bridge/ite-it66121.c
@@ -1448,8 +1448,8 @@ static int it66121_audio_get_eld(struct device *dev, void *data,
mutex_lock(&ctx->lock);
- memcpy(buf, ctx->connector->eld,
- min(sizeof(ctx->connector->eld), len));
+ memcpy(buf, ctx->connector->display_info.eld,
+ min(sizeof(ctx->connector->display_info.eld), len));
mutex_unlock(&ctx->lock);
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index aa51c61a78c7..1f235960fd33 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -789,7 +789,7 @@ static u8 *hdmi_audio_get_eld(struct dw_hdmi *hdmi)
if (!hdmi->curr_conn)
return NULL;
- return hdmi->curr_conn->eld;
+ return hdmi->curr_conn->display_info.eld;
}
static void dw_hdmi_gp_audio_enable(struct dw_hdmi *hdmi)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 1ce3f153868d..a1b06b374af8 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -5369,29 +5369,30 @@ drm_parse_hdr_metadata_block(struct drm_connector *connector, const u8 *db)
static void
drm_parse_hdmi_vsdb_audio(struct drm_connector *connector, const u8 *db)
{
+ struct drm_display_info *info = &connector->display_info;
u8 len = cea_db_payload_len(db);
if (len >= 6 && (db[6] & (1 << 7)))
- connector->eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_SUPPORTS_AI;
+ info->eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_SUPPORTS_AI;
if (len >= 10 && hdmi_vsdb_latency_present(db)) {
- connector->latency_present[0] = true;
- connector->video_latency[0] = db[9];
- connector->audio_latency[0] = db[10];
+ info->latency_present[0] = true;
+ info->video_latency[0] = db[9];
+ info->audio_latency[0] = db[10];
}
if (len >= 12 && hdmi_vsdb_i_latency_present(db)) {
- connector->latency_present[1] = true;
- connector->video_latency[1] = db[11];
- connector->audio_latency[1] = db[12];
+ info->latency_present[1] = true;
+ info->video_latency[1] = db[11];
+ info->audio_latency[1] = db[12];
}
drm_dbg_kms(connector->dev,
"[CONNECTOR:%d:%s] HDMI: latency present %d %d, video latency %d %d, audio latency %d %d\n",
connector->base.id, connector->name,
- connector->latency_present[0], connector->latency_present[1],
- connector->video_latency[0], connector->video_latency[1],
- connector->audio_latency[0], connector->audio_latency[1]);
+ info->latency_present[0], info->latency_present[1],
+ info->video_latency[0], info->video_latency[1],
+ info->audio_latency[0], info->audio_latency[1]);
}
static void
@@ -5453,18 +5454,6 @@ void drm_edid_get_monitor_name(const struct edid *edid, char *name, int bufsize)
}
EXPORT_SYMBOL(drm_edid_get_monitor_name);
-static void clear_eld(struct drm_connector *connector)
-{
- memset(connector->eld, 0, sizeof(connector->eld));
-
- connector->latency_present[0] = false;
- connector->latency_present[1] = false;
- connector->video_latency[0] = 0;
- connector->audio_latency[0] = 0;
- connector->video_latency[1] = 0;
- connector->audio_latency[1] = 0;
-}
-
/*
* drm_edid_to_eld - build ELD from EDID
* @connector: connector corresponding to the HDMI/DP sink
@@ -5479,7 +5468,7 @@ static void drm_edid_to_eld(struct drm_connector *connector,
const struct drm_display_info *info = &connector->display_info;
const struct cea_db *db;
struct cea_db_iter iter;
- uint8_t *eld = connector->eld;
+ u8 *eld = connector->display_info.eld;
int total_sad_count = 0;
int mnl;
@@ -5659,16 +5648,17 @@ EXPORT_SYMBOL(drm_edid_to_speaker_allocation);
int drm_av_sync_delay(struct drm_connector *connector,
const struct drm_display_mode *mode)
{
+ const struct drm_display_info *info = &connector->display_info;
int i = !!(mode->flags & DRM_MODE_FLAG_INTERLACE);
int a, v;
- if (!connector->latency_present[0])
+ if (!info->latency_present[0])
return 0;
- if (!connector->latency_present[1])
+ if (!info->latency_present[1])
i = 0;
- a = connector->audio_latency[i];
- v = connector->video_latency[i];
+ a = info->audio_latency[i];
+ v = info->video_latency[i];
/*
* HDMI/DP sink doesn't support audio or video?
@@ -6437,7 +6427,6 @@ static void update_display_info(struct drm_connector *connector,
const struct edid *edid;
drm_reset_display_info(connector);
- clear_eld(connector);
if (!drm_edid)
return;
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index b7c11bdce2c8..22a0160977d7 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -1640,7 +1640,7 @@ static int hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf,
struct hdmi_context *hdata = dev_get_drvdata(dev);
struct drm_connector *connector = &hdata->connector;
- memcpy(buf, connector->eld, min(sizeof(connector->eld), len));
+ memcpy(buf, connector->display_info.eld, min(sizeof(connector->display_info.eld), len));
return 0;
}
diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
index 626c47e96a6d..f4241d46ba65 100644
--- a/drivers/gpu/drm/i915/display/intel_audio.c
+++ b/drivers/gpu/drm/i915/display/intel_audio.c
@@ -336,7 +336,7 @@ static void g4x_audio_codec_enable(struct intel_encoder *encoder,
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_connector *connector = conn_state->connector;
- const u32 *eld = (const u32 *)connector->eld;
+ const u32 *eld = (const u32 *)connector->display_info.eld;
int eld_buffer_size, len, i;
intel_crtc_wait_for_next_vblank(crtc);
@@ -345,7 +345,7 @@ static void g4x_audio_codec_enable(struct intel_encoder *encoder,
G4X_ELD_VALID | G4X_ELD_ADDRESS_MASK, 0);
eld_buffer_size = g4x_eld_buffer_size(i915);
- len = min(drm_eld_size(connector->eld) / 4, eld_buffer_size);
+ len = min(drm_eld_size(connector->display_info.eld) / 4, eld_buffer_size);
for (i = 0; i < len; i++)
intel_de_write(i915, G4X_HDMIW_HDMIEDID, eld[i]);
@@ -620,7 +620,7 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_connector *connector = conn_state->connector;
enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
- const u32 *eld = (const u32 *)connector->eld;
+ const u32 *eld = (const u32 *)connector->display_info.eld;
int eld_buffer_size, len, i;
mutex_lock(&i915->display.audio.mutex);
@@ -644,7 +644,7 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
IBX_ELD_ADDRESS_MASK, 0);
eld_buffer_size = hsw_eld_buffer_size(i915, cpu_transcoder);
- len = min(drm_eld_size(connector->eld) / 4, eld_buffer_size);
+ len = min(drm_eld_size(connector->display_info.eld) / 4, eld_buffer_size);
for (i = 0; i < len; i++)
intel_de_write(i915, HSW_AUD_EDID_DATA(cpu_transcoder), eld[i]);
@@ -748,7 +748,7 @@ static void ilk_audio_codec_enable(struct intel_encoder *encoder,
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_connector *connector = conn_state->connector;
- const u32 *eld = (const u32 *)connector->eld;
+ const u32 *eld = (const u32 *)connector->display_info.eld;
enum port port = encoder->port;
enum pipe pipe = crtc->pipe;
int eld_buffer_size, len, i;
@@ -772,7 +772,7 @@ static void ilk_audio_codec_enable(struct intel_encoder *encoder,
IBX_ELD_ADDRESS_MASK, 0);
eld_buffer_size = ilk_eld_buffer_size(i915, pipe);
- len = min(drm_eld_size(connector->eld) / 4, eld_buffer_size);
+ len = min(drm_eld_size(connector->display_info.eld) / 4, eld_buffer_size);
for (i = 0; i < len; i++)
intel_de_write(i915, regs.hdmiw_hdmiedid, eld[i]);
@@ -837,15 +837,15 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s][ENCODER:%d:%s] Enable audio codec on pipe %c, %u bytes ELD\n",
connector->base.id, connector->name,
encoder->base.base.id, encoder->base.name,
- pipe_name(pipe), drm_eld_size(connector->eld));
+ pipe_name(pipe), drm_eld_size(connector->display_info.eld));
/* FIXME precompute the ELD in .compute_config() */
- if (!connector->eld[0])
+ if (!connector->display_info.eld[0])
drm_dbg_kms(&i915->drm,
"Bogus ELD on [CONNECTOR:%d:%s]\n",
connector->base.id, connector->name);
- connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
+ connector->display_info.eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
if (i915->display.funcs.audio)
i915->display.funcs.audio->audio_codec_enable(encoder,
@@ -868,7 +868,7 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
(int)port, (int)pipe);
}
- intel_lpe_audio_notify(i915, pipe, port, connector->eld,
+ intel_lpe_audio_notify(i915, pipe, port, connector->display_info.eld,
crtc_state->port_clock,
intel_crtc_has_dp_encoder(crtc_state));
}
@@ -1236,7 +1236,7 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
ret = 0;
*enabled = intel_encoder->audio_connector != NULL;
if (*enabled) {
- eld = intel_encoder->audio_connector->eld;
+ eld = intel_encoder->audio_connector->display_info.eld;
ret = drm_eld_size(eld);
memcpy(buf, eld, min(max_bytes, ret));
}
diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
index 21805c15d5eb..582bbc194305 100644
--- a/drivers/gpu/drm/i915/display/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
@@ -1756,7 +1756,7 @@ static void intel_sdvo_enable_audio(struct intel_sdvo *intel_sdvo,
const struct drm_display_mode *adjusted_mode =
&crtc_state->hw.adjusted_mode;
struct drm_connector *connector = conn_state->connector;
- u8 *eld = connector->eld;
+ u8 *eld = connector->display_info.eld;
eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/mtk_dp.c
index b4feaabdb6a7..3fd448a6d8d1 100644
--- a/drivers/gpu/drm/mediatek/mtk_dp.c
+++ b/drivers/gpu/drm/mediatek/mtk_dp.c
@@ -2432,7 +2432,7 @@ static int mtk_dp_audio_get_eld(struct device *dev, void *data, uint8_t *buf,
struct mtk_dp *mtk_dp = dev_get_drvdata(dev);
if (mtk_dp->enabled)
- memcpy(buf, mtk_dp->conn->eld, len);
+ memcpy(buf, mtk_dp->conn->display_info.eld, len);
else
memset(buf, 0, len);
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index 0a8e0a13f516..edc96b32cf4c 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -1634,7 +1634,8 @@ static int mtk_hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf,
struct mtk_hdmi *hdmi = dev_get_drvdata(dev);
if (hdmi->enabled)
- memcpy(buf, hdmi->curr_conn->eld, min(sizeof(hdmi->curr_conn->eld), len));
+ memcpy(buf, hdmi->curr_conn->display_info.eld,
+ min(sizeof(hdmi->curr_conn->display_info.eld), len));
else
memset(buf, 0, len);
return 0;
diff --git a/drivers/gpu/drm/msm/dp/dp_audio.c b/drivers/gpu/drm/msm/dp/dp_audio.c
index 6666783e1468..993b248fd9e9 100644
--- a/drivers/gpu/drm/msm/dp/dp_audio.c
+++ b/drivers/gpu/drm/msm/dp/dp_audio.c
@@ -499,8 +499,8 @@ static int dp_audio_get_eld(struct device *dev,
return -ENODEV;
}
- memcpy(buf, dp_display->connector->eld,
- min(sizeof(dp_display->connector->eld), len));
+ memcpy(buf, dp_display->connector->display_info.eld,
+ min(sizeof(dp_display->connector->display_info.eld), len));
return 0;
}
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c
index 4a1d5447eac1..cf92c108e377 100644
--- a/drivers/gpu/drm/radeon/dce6_afmt.c
+++ b/drivers/gpu/drm/radeon/dce6_afmt.c
@@ -134,15 +134,15 @@ void dce6_afmt_write_latency_fields(struct drm_encoder *encoder,
return;
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
- if (connector->latency_present[1])
- tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
- AUDIO_LIPSYNC(connector->audio_latency[1]);
+ if (connector->display_info.latency_present[1])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[1]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[1]);
else
tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0);
} else {
- if (connector->latency_present[0])
- tmp = VIDEO_LIPSYNC(connector->video_latency[0]) |
- AUDIO_LIPSYNC(connector->audio_latency[0]);
+ if (connector->display_info.latency_present[0])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[0]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[0]);
else
tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0);
}
diff --git a/drivers/gpu/drm/radeon/evergreen_hdmi.c b/drivers/gpu/drm/radeon/evergreen_hdmi.c
index 5f3078f8ab95..ef6e0f3003a3 100644
--- a/drivers/gpu/drm/radeon/evergreen_hdmi.c
+++ b/drivers/gpu/drm/radeon/evergreen_hdmi.c
@@ -102,15 +102,15 @@ void dce4_afmt_write_latency_fields(struct drm_encoder *encoder,
u32 tmp = 0;
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
- if (connector->latency_present[1])
- tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
- AUDIO_LIPSYNC(connector->audio_latency[1]);
+ if (connector->display_info.latency_present[1])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[1]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[1]);
else
tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
} else {
- if (connector->latency_present[0])
- tmp = VIDEO_LIPSYNC(connector->video_latency[0]) |
- AUDIO_LIPSYNC(connector->audio_latency[0]);
+ if (connector->display_info.latency_present[0])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[0]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[0]);
else
tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
}
diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c
index d6ccaf24ee0c..8e075e18f8e8 100644
--- a/drivers/gpu/drm/radeon/radeon_audio.c
+++ b/drivers/gpu/drm/radeon/radeon_audio.c
@@ -769,8 +769,8 @@ static int radeon_audio_component_get_eld(struct device *kdev, int port,
if (!connector)
continue;
*enabled = true;
- ret = drm_eld_size(connector->eld);
- memcpy(buf, connector->eld, min(max_bytes, ret));
+ ret = drm_eld_size(connector->display_info.eld);
+ memcpy(buf, connector->display_info.eld, min(max_bytes, ret));
break;
}
diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
index 8539fe1fedc4..bbffe0b379f5 100644
--- a/drivers/gpu/drm/sti/sti_hdmi.c
+++ b/drivers/gpu/drm/sti/sti_hdmi.c
@@ -1220,7 +1220,7 @@ static int hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf, size
struct drm_connector *connector = hdmi->drm_connector;
DRM_DEBUG_DRIVER("\n");
- memcpy(buf, connector->eld, min(sizeof(connector->eld), len));
+ memcpy(buf, connector->display_info.eld, min(sizeof(connector->display_info.eld), len));
return 0;
}
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 14628864487a..05181e152168 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -2411,7 +2411,7 @@ static int vc4_hdmi_audio_get_eld(struct device *dev, void *data,
struct drm_connector *connector = &vc4_hdmi->connector;
mutex_lock(&vc4_hdmi->mutex);
- memcpy(buf, connector->eld, min(sizeof(connector->eld), len));
+ memcpy(buf, connector->display_info.eld, min(sizeof(connector->display_info.eld), len));
mutex_unlock(&vc4_hdmi->mutex);
return 0;
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 627bedc47511..30f51e8a7985 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -738,6 +738,29 @@ struct drm_display_info {
* @quirks: EDID based quirks. Internal to EDID parsing.
*/
u32 quirks;
+
+#define MAX_ELD_BYTES 128
+ /**
+ * @eld: EDID-like data, if present
+ */
+ u8 eld[MAX_ELD_BYTES];
+
+ /**
+ * @latency_present: AV delay info from ELD, if found
+ */
+ bool latency_present[2];
+
+ /**
+ * @video_latency: Video latency info from ELD, if found.
+ * [0]: progressive, [1]: interlaced
+ */
+ int video_latency[2];
+
+ /**
+ * @audio_latency: audio latency info from ELD, if found
+ * [0]: progressive, [1]: interlaced
+ */
+ int audio_latency[2];
};
int drm_display_info_set_bus_formats(struct drm_display_info *info,
@@ -1685,22 +1708,6 @@ struct drm_connector {
*/
struct drm_encoder *encoder;
-#define MAX_ELD_BYTES 128
- /** @eld: EDID-like data, if present */
- uint8_t eld[MAX_ELD_BYTES];
- /** @latency_present: AV delay info from ELD, if found */
- bool latency_present[2];
- /**
- * @video_latency: Video latency info from ELD, if found.
- * [0]: progressive, [1]: interlaced
- */
- int video_latency[2];
- /**
- * @audio_latency: audio latency info from ELD, if found
- * [0]: progressive, [1]: interlaced
- */
- int audio_latency[2];
-
/**
* @ddc: associated ddc adapter.
* A connector usually has its associated ddc adapter. If a driver uses
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
@ 2023-01-24 9:41 ` Jani Nikula
0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2023-01-24 9:41 UTC (permalink / raw)
To: dri-devel
Cc: intel-gfx, jani.nikula, Alex Deucher, Christian König, Pan,
Xinhui, amd-gfx, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Inki Dae,
Seung-Woo Kim, Kyungmin Park, Chun-Kuang Hu, Philipp Zabel,
linux-mediatek, Rob Clark, Abhinav Kumar, Dmitry Baryshkov,
Sean Paul, linux-arm-msm, freedreno, Alain Volmat, Emma Anholt,
Maxime Ripard
Information parsed from the display EDID should be stored in display
info. We can stop clearing ELD separately.
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Pan, Xinhui <Xinhui.Pan@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Robert Foss <robert.foss@linaro.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: linux-mediatek@lists.infradead.org
Cc: Rob Clark <robdclark@gmail.com>
Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Sean Paul <sean@poorly.run>
Cc: linux-arm-msm@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Cc: Alain Volmat <alain.volmat@foss.st.com>
Cc: Emma Anholt <emma@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Sorry about the crazy Cc list, but this touches a lot of drivers, and I
didn't want to blind side anyone.
---
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 6 +--
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 6 +--
drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 6 +--
drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 12 ++---
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 ++---
drivers/gpu/drm/bridge/analogix/anx7625.c | 4 +-
drivers/gpu/drm/bridge/ite-it66121.c | 4 +-
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +-
drivers/gpu/drm/drm_edid.c | 45 +++++++------------
drivers/gpu/drm/exynos/exynos_hdmi.c | 2 +-
drivers/gpu/drm/i915/display/intel_audio.c | 22 ++++-----
drivers/gpu/drm/i915/display/intel_sdvo.c | 2 +-
drivers/gpu/drm/mediatek/mtk_dp.c | 2 +-
drivers/gpu/drm/mediatek/mtk_hdmi.c | 3 +-
drivers/gpu/drm/msm/dp/dp_audio.c | 4 +-
drivers/gpu/drm/radeon/dce6_afmt.c | 12 ++---
drivers/gpu/drm/radeon/evergreen_hdmi.c | 12 ++---
drivers/gpu/drm/radeon/radeon_audio.c | 4 +-
drivers/gpu/drm/sti/sti_hdmi.c | 2 +-
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
include/drm/drm_connector.h | 39 +++++++++-------
21 files changed, 99 insertions(+), 102 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
index 9a24ed463abd..0c05838032c5 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
@@ -1257,11 +1257,11 @@ static void dce_v10_0_audio_write_latency_fields(struct drm_encoder *encoder,
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
interlace = 1;
- if (connector->latency_present[interlace]) {
+ if (connector->display_info.latency_present[interlace]) {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- VIDEO_LIPSYNC, connector->video_latency[interlace]);
+ VIDEO_LIPSYNC, connector->display_info.video_latency[interlace]);
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- AUDIO_LIPSYNC, connector->audio_latency[interlace]);
+ AUDIO_LIPSYNC, connector->display_info.audio_latency[interlace]);
} else {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
VIDEO_LIPSYNC, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index c14b70350a51..896f0416b69f 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -1283,11 +1283,11 @@ static void dce_v11_0_audio_write_latency_fields(struct drm_encoder *encoder,
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
interlace = 1;
- if (connector->latency_present[interlace]) {
+ if (connector->display_info.latency_present[interlace]) {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- VIDEO_LIPSYNC, connector->video_latency[interlace]);
+ VIDEO_LIPSYNC, connector->display_info.video_latency[interlace]);
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- AUDIO_LIPSYNC, connector->audio_latency[interlace]);
+ AUDIO_LIPSYNC, connector->display_info.audio_latency[interlace]);
} else {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
VIDEO_LIPSYNC, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
index 7f85ba5b726f..4aa797726bca 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
@@ -1158,11 +1158,11 @@ static void dce_v6_0_audio_write_latency_fields(struct drm_encoder *encoder,
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
interlace = 1;
- if (connector->latency_present[interlace]) {
+ if (connector->display_info.latency_present[interlace]) {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- VIDEO_LIPSYNC, connector->video_latency[interlace]);
+ VIDEO_LIPSYNC, connector->display_info.video_latency[interlace]);
tmp = REG_SET_FIELD(tmp, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- AUDIO_LIPSYNC, connector->audio_latency[interlace]);
+ AUDIO_LIPSYNC, connector->display_info.audio_latency[interlace]);
} else {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
VIDEO_LIPSYNC, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
index d421a268c9ff..c84421510a46 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
@@ -1195,11 +1195,11 @@ static void dce_v8_0_audio_write_latency_fields(struct drm_encoder *encoder,
}
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
- if (connector->latency_present[1])
+ if (connector->display_info.latency_present[1])
tmp =
- (connector->video_latency[1] <<
+ (connector->display_info.video_latency[1] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__VIDEO_LIPSYNC__SHIFT) |
- (connector->audio_latency[1] <<
+ (connector->display_info.audio_latency[1] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__AUDIO_LIPSYNC__SHIFT);
else
tmp =
@@ -1208,11 +1208,11 @@ static void dce_v8_0_audio_write_latency_fields(struct drm_encoder *encoder,
(0 <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__AUDIO_LIPSYNC__SHIFT);
} else {
- if (connector->latency_present[0])
+ if (connector->display_info.latency_present[0])
tmp =
- (connector->video_latency[0] <<
+ (connector->display_info.video_latency[0] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__VIDEO_LIPSYNC__SHIFT) |
- (connector->audio_latency[0] <<
+ (connector->display_info.audio_latency[0] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__AUDIO_LIPSYNC__SHIFT);
else
tmp =
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index c61c388bddf2..4db61c346280 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -894,8 +894,8 @@ static int amdgpu_dm_audio_component_get_eld(struct device *kdev, int port,
continue;
*enabled = true;
- ret = drm_eld_size(connector->eld);
- memcpy(buf, connector->eld, min(max_bytes, ret));
+ ret = drm_eld_size(connector->display_info.eld);
+ memcpy(buf, connector->display_info.eld, min(max_bytes, ret));
break;
}
@@ -5386,9 +5386,9 @@ static void fill_audio_info(struct audio_info *audio_info,
audio_info->flags.all = edid_caps->speaker_flags;
/* TODO: We only check for the progressive mode, check for interlace mode too */
- if (drm_connector->latency_present[0]) {
- audio_info->video_latency = drm_connector->video_latency[0];
- audio_info->audio_latency = drm_connector->audio_latency[0];
+ if (drm_connector->display_info.latency_present[0]) {
+ audio_info->video_latency = drm_connector->display_info.video_latency[0];
+ audio_info->audio_latency = drm_connector->display_info.audio_latency[0];
}
/* TODO: For DP, video and audio latency should be calculated from DPCD caps */
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 6846199a2ee1..04a29950228c 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -1982,8 +1982,8 @@ static int anx7625_audio_get_eld(struct device *dev, void *data,
memset(buf, 0, len);
} else {
dev_dbg(dev, "audio copy eld\n");
- memcpy(buf, ctx->connector->eld,
- min(sizeof(ctx->connector->eld), len));
+ memcpy(buf, ctx->connector->display_info.eld,
+ min(sizeof(ctx->connector->display_info.eld), len));
}
return 0;
diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c
index a2d723d6a4be..1a5e0741d33b 100644
--- a/drivers/gpu/drm/bridge/ite-it66121.c
+++ b/drivers/gpu/drm/bridge/ite-it66121.c
@@ -1448,8 +1448,8 @@ static int it66121_audio_get_eld(struct device *dev, void *data,
mutex_lock(&ctx->lock);
- memcpy(buf, ctx->connector->eld,
- min(sizeof(ctx->connector->eld), len));
+ memcpy(buf, ctx->connector->display_info.eld,
+ min(sizeof(ctx->connector->display_info.eld), len));
mutex_unlock(&ctx->lock);
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index aa51c61a78c7..1f235960fd33 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -789,7 +789,7 @@ static u8 *hdmi_audio_get_eld(struct dw_hdmi *hdmi)
if (!hdmi->curr_conn)
return NULL;
- return hdmi->curr_conn->eld;
+ return hdmi->curr_conn->display_info.eld;
}
static void dw_hdmi_gp_audio_enable(struct dw_hdmi *hdmi)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 1ce3f153868d..a1b06b374af8 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -5369,29 +5369,30 @@ drm_parse_hdr_metadata_block(struct drm_connector *connector, const u8 *db)
static void
drm_parse_hdmi_vsdb_audio(struct drm_connector *connector, const u8 *db)
{
+ struct drm_display_info *info = &connector->display_info;
u8 len = cea_db_payload_len(db);
if (len >= 6 && (db[6] & (1 << 7)))
- connector->eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_SUPPORTS_AI;
+ info->eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_SUPPORTS_AI;
if (len >= 10 && hdmi_vsdb_latency_present(db)) {
- connector->latency_present[0] = true;
- connector->video_latency[0] = db[9];
- connector->audio_latency[0] = db[10];
+ info->latency_present[0] = true;
+ info->video_latency[0] = db[9];
+ info->audio_latency[0] = db[10];
}
if (len >= 12 && hdmi_vsdb_i_latency_present(db)) {
- connector->latency_present[1] = true;
- connector->video_latency[1] = db[11];
- connector->audio_latency[1] = db[12];
+ info->latency_present[1] = true;
+ info->video_latency[1] = db[11];
+ info->audio_latency[1] = db[12];
}
drm_dbg_kms(connector->dev,
"[CONNECTOR:%d:%s] HDMI: latency present %d %d, video latency %d %d, audio latency %d %d\n",
connector->base.id, connector->name,
- connector->latency_present[0], connector->latency_present[1],
- connector->video_latency[0], connector->video_latency[1],
- connector->audio_latency[0], connector->audio_latency[1]);
+ info->latency_present[0], info->latency_present[1],
+ info->video_latency[0], info->video_latency[1],
+ info->audio_latency[0], info->audio_latency[1]);
}
static void
@@ -5453,18 +5454,6 @@ void drm_edid_get_monitor_name(const struct edid *edid, char *name, int bufsize)
}
EXPORT_SYMBOL(drm_edid_get_monitor_name);
-static void clear_eld(struct drm_connector *connector)
-{
- memset(connector->eld, 0, sizeof(connector->eld));
-
- connector->latency_present[0] = false;
- connector->latency_present[1] = false;
- connector->video_latency[0] = 0;
- connector->audio_latency[0] = 0;
- connector->video_latency[1] = 0;
- connector->audio_latency[1] = 0;
-}
-
/*
* drm_edid_to_eld - build ELD from EDID
* @connector: connector corresponding to the HDMI/DP sink
@@ -5479,7 +5468,7 @@ static void drm_edid_to_eld(struct drm_connector *connector,
const struct drm_display_info *info = &connector->display_info;
const struct cea_db *db;
struct cea_db_iter iter;
- uint8_t *eld = connector->eld;
+ u8 *eld = connector->display_info.eld;
int total_sad_count = 0;
int mnl;
@@ -5659,16 +5648,17 @@ EXPORT_SYMBOL(drm_edid_to_speaker_allocation);
int drm_av_sync_delay(struct drm_connector *connector,
const struct drm_display_mode *mode)
{
+ const struct drm_display_info *info = &connector->display_info;
int i = !!(mode->flags & DRM_MODE_FLAG_INTERLACE);
int a, v;
- if (!connector->latency_present[0])
+ if (!info->latency_present[0])
return 0;
- if (!connector->latency_present[1])
+ if (!info->latency_present[1])
i = 0;
- a = connector->audio_latency[i];
- v = connector->video_latency[i];
+ a = info->audio_latency[i];
+ v = info->video_latency[i];
/*
* HDMI/DP sink doesn't support audio or video?
@@ -6437,7 +6427,6 @@ static void update_display_info(struct drm_connector *connector,
const struct edid *edid;
drm_reset_display_info(connector);
- clear_eld(connector);
if (!drm_edid)
return;
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index b7c11bdce2c8..22a0160977d7 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -1640,7 +1640,7 @@ static int hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf,
struct hdmi_context *hdata = dev_get_drvdata(dev);
struct drm_connector *connector = &hdata->connector;
- memcpy(buf, connector->eld, min(sizeof(connector->eld), len));
+ memcpy(buf, connector->display_info.eld, min(sizeof(connector->display_info.eld), len));
return 0;
}
diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
index 626c47e96a6d..f4241d46ba65 100644
--- a/drivers/gpu/drm/i915/display/intel_audio.c
+++ b/drivers/gpu/drm/i915/display/intel_audio.c
@@ -336,7 +336,7 @@ static void g4x_audio_codec_enable(struct intel_encoder *encoder,
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_connector *connector = conn_state->connector;
- const u32 *eld = (const u32 *)connector->eld;
+ const u32 *eld = (const u32 *)connector->display_info.eld;
int eld_buffer_size, len, i;
intel_crtc_wait_for_next_vblank(crtc);
@@ -345,7 +345,7 @@ static void g4x_audio_codec_enable(struct intel_encoder *encoder,
G4X_ELD_VALID | G4X_ELD_ADDRESS_MASK, 0);
eld_buffer_size = g4x_eld_buffer_size(i915);
- len = min(drm_eld_size(connector->eld) / 4, eld_buffer_size);
+ len = min(drm_eld_size(connector->display_info.eld) / 4, eld_buffer_size);
for (i = 0; i < len; i++)
intel_de_write(i915, G4X_HDMIW_HDMIEDID, eld[i]);
@@ -620,7 +620,7 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_connector *connector = conn_state->connector;
enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
- const u32 *eld = (const u32 *)connector->eld;
+ const u32 *eld = (const u32 *)connector->display_info.eld;
int eld_buffer_size, len, i;
mutex_lock(&i915->display.audio.mutex);
@@ -644,7 +644,7 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
IBX_ELD_ADDRESS_MASK, 0);
eld_buffer_size = hsw_eld_buffer_size(i915, cpu_transcoder);
- len = min(drm_eld_size(connector->eld) / 4, eld_buffer_size);
+ len = min(drm_eld_size(connector->display_info.eld) / 4, eld_buffer_size);
for (i = 0; i < len; i++)
intel_de_write(i915, HSW_AUD_EDID_DATA(cpu_transcoder), eld[i]);
@@ -748,7 +748,7 @@ static void ilk_audio_codec_enable(struct intel_encoder *encoder,
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_connector *connector = conn_state->connector;
- const u32 *eld = (const u32 *)connector->eld;
+ const u32 *eld = (const u32 *)connector->display_info.eld;
enum port port = encoder->port;
enum pipe pipe = crtc->pipe;
int eld_buffer_size, len, i;
@@ -772,7 +772,7 @@ static void ilk_audio_codec_enable(struct intel_encoder *encoder,
IBX_ELD_ADDRESS_MASK, 0);
eld_buffer_size = ilk_eld_buffer_size(i915, pipe);
- len = min(drm_eld_size(connector->eld) / 4, eld_buffer_size);
+ len = min(drm_eld_size(connector->display_info.eld) / 4, eld_buffer_size);
for (i = 0; i < len; i++)
intel_de_write(i915, regs.hdmiw_hdmiedid, eld[i]);
@@ -837,15 +837,15 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s][ENCODER:%d:%s] Enable audio codec on pipe %c, %u bytes ELD\n",
connector->base.id, connector->name,
encoder->base.base.id, encoder->base.name,
- pipe_name(pipe), drm_eld_size(connector->eld));
+ pipe_name(pipe), drm_eld_size(connector->display_info.eld));
/* FIXME precompute the ELD in .compute_config() */
- if (!connector->eld[0])
+ if (!connector->display_info.eld[0])
drm_dbg_kms(&i915->drm,
"Bogus ELD on [CONNECTOR:%d:%s]\n",
connector->base.id, connector->name);
- connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
+ connector->display_info.eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
if (i915->display.funcs.audio)
i915->display.funcs.audio->audio_codec_enable(encoder,
@@ -868,7 +868,7 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
(int)port, (int)pipe);
}
- intel_lpe_audio_notify(i915, pipe, port, connector->eld,
+ intel_lpe_audio_notify(i915, pipe, port, connector->display_info.eld,
crtc_state->port_clock,
intel_crtc_has_dp_encoder(crtc_state));
}
@@ -1236,7 +1236,7 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
ret = 0;
*enabled = intel_encoder->audio_connector != NULL;
if (*enabled) {
- eld = intel_encoder->audio_connector->eld;
+ eld = intel_encoder->audio_connector->display_info.eld;
ret = drm_eld_size(eld);
memcpy(buf, eld, min(max_bytes, ret));
}
diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
index 21805c15d5eb..582bbc194305 100644
--- a/drivers/gpu/drm/i915/display/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
@@ -1756,7 +1756,7 @@ static void intel_sdvo_enable_audio(struct intel_sdvo *intel_sdvo,
const struct drm_display_mode *adjusted_mode =
&crtc_state->hw.adjusted_mode;
struct drm_connector *connector = conn_state->connector;
- u8 *eld = connector->eld;
+ u8 *eld = connector->display_info.eld;
eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/mtk_dp.c
index b4feaabdb6a7..3fd448a6d8d1 100644
--- a/drivers/gpu/drm/mediatek/mtk_dp.c
+++ b/drivers/gpu/drm/mediatek/mtk_dp.c
@@ -2432,7 +2432,7 @@ static int mtk_dp_audio_get_eld(struct device *dev, void *data, uint8_t *buf,
struct mtk_dp *mtk_dp = dev_get_drvdata(dev);
if (mtk_dp->enabled)
- memcpy(buf, mtk_dp->conn->eld, len);
+ memcpy(buf, mtk_dp->conn->display_info.eld, len);
else
memset(buf, 0, len);
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index 0a8e0a13f516..edc96b32cf4c 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -1634,7 +1634,8 @@ static int mtk_hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf,
struct mtk_hdmi *hdmi = dev_get_drvdata(dev);
if (hdmi->enabled)
- memcpy(buf, hdmi->curr_conn->eld, min(sizeof(hdmi->curr_conn->eld), len));
+ memcpy(buf, hdmi->curr_conn->display_info.eld,
+ min(sizeof(hdmi->curr_conn->display_info.eld), len));
else
memset(buf, 0, len);
return 0;
diff --git a/drivers/gpu/drm/msm/dp/dp_audio.c b/drivers/gpu/drm/msm/dp/dp_audio.c
index 6666783e1468..993b248fd9e9 100644
--- a/drivers/gpu/drm/msm/dp/dp_audio.c
+++ b/drivers/gpu/drm/msm/dp/dp_audio.c
@@ -499,8 +499,8 @@ static int dp_audio_get_eld(struct device *dev,
return -ENODEV;
}
- memcpy(buf, dp_display->connector->eld,
- min(sizeof(dp_display->connector->eld), len));
+ memcpy(buf, dp_display->connector->display_info.eld,
+ min(sizeof(dp_display->connector->display_info.eld), len));
return 0;
}
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c
index 4a1d5447eac1..cf92c108e377 100644
--- a/drivers/gpu/drm/radeon/dce6_afmt.c
+++ b/drivers/gpu/drm/radeon/dce6_afmt.c
@@ -134,15 +134,15 @@ void dce6_afmt_write_latency_fields(struct drm_encoder *encoder,
return;
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
- if (connector->latency_present[1])
- tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
- AUDIO_LIPSYNC(connector->audio_latency[1]);
+ if (connector->display_info.latency_present[1])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[1]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[1]);
else
tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0);
} else {
- if (connector->latency_present[0])
- tmp = VIDEO_LIPSYNC(connector->video_latency[0]) |
- AUDIO_LIPSYNC(connector->audio_latency[0]);
+ if (connector->display_info.latency_present[0])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[0]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[0]);
else
tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0);
}
diff --git a/drivers/gpu/drm/radeon/evergreen_hdmi.c b/drivers/gpu/drm/radeon/evergreen_hdmi.c
index 5f3078f8ab95..ef6e0f3003a3 100644
--- a/drivers/gpu/drm/radeon/evergreen_hdmi.c
+++ b/drivers/gpu/drm/radeon/evergreen_hdmi.c
@@ -102,15 +102,15 @@ void dce4_afmt_write_latency_fields(struct drm_encoder *encoder,
u32 tmp = 0;
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
- if (connector->latency_present[1])
- tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
- AUDIO_LIPSYNC(connector->audio_latency[1]);
+ if (connector->display_info.latency_present[1])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[1]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[1]);
else
tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
} else {
- if (connector->latency_present[0])
- tmp = VIDEO_LIPSYNC(connector->video_latency[0]) |
- AUDIO_LIPSYNC(connector->audio_latency[0]);
+ if (connector->display_info.latency_present[0])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[0]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[0]);
else
tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
}
diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c
index d6ccaf24ee0c..8e075e18f8e8 100644
--- a/drivers/gpu/drm/radeon/radeon_audio.c
+++ b/drivers/gpu/drm/radeon/radeon_audio.c
@@ -769,8 +769,8 @@ static int radeon_audio_component_get_eld(struct device *kdev, int port,
if (!connector)
continue;
*enabled = true;
- ret = drm_eld_size(connector->eld);
- memcpy(buf, connector->eld, min(max_bytes, ret));
+ ret = drm_eld_size(connector->display_info.eld);
+ memcpy(buf, connector->display_info.eld, min(max_bytes, ret));
break;
}
diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
index 8539fe1fedc4..bbffe0b379f5 100644
--- a/drivers/gpu/drm/sti/sti_hdmi.c
+++ b/drivers/gpu/drm/sti/sti_hdmi.c
@@ -1220,7 +1220,7 @@ static int hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf, size
struct drm_connector *connector = hdmi->drm_connector;
DRM_DEBUG_DRIVER("\n");
- memcpy(buf, connector->eld, min(sizeof(connector->eld), len));
+ memcpy(buf, connector->display_info.eld, min(sizeof(connector->display_info.eld), len));
return 0;
}
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 14628864487a..05181e152168 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -2411,7 +2411,7 @@ static int vc4_hdmi_audio_get_eld(struct device *dev, void *data,
struct drm_connector *connector = &vc4_hdmi->connector;
mutex_lock(&vc4_hdmi->mutex);
- memcpy(buf, connector->eld, min(sizeof(connector->eld), len));
+ memcpy(buf, connector->display_info.eld, min(sizeof(connector->display_info.eld), len));
mutex_unlock(&vc4_hdmi->mutex);
return 0;
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 627bedc47511..30f51e8a7985 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -738,6 +738,29 @@ struct drm_display_info {
* @quirks: EDID based quirks. Internal to EDID parsing.
*/
u32 quirks;
+
+#define MAX_ELD_BYTES 128
+ /**
+ * @eld: EDID-like data, if present
+ */
+ u8 eld[MAX_ELD_BYTES];
+
+ /**
+ * @latency_present: AV delay info from ELD, if found
+ */
+ bool latency_present[2];
+
+ /**
+ * @video_latency: Video latency info from ELD, if found.
+ * [0]: progressive, [1]: interlaced
+ */
+ int video_latency[2];
+
+ /**
+ * @audio_latency: audio latency info from ELD, if found
+ * [0]: progressive, [1]: interlaced
+ */
+ int audio_latency[2];
};
int drm_display_info_set_bus_formats(struct drm_display_info *info,
@@ -1685,22 +1708,6 @@ struct drm_connector {
*/
struct drm_encoder *encoder;
-#define MAX_ELD_BYTES 128
- /** @eld: EDID-like data, if present */
- uint8_t eld[MAX_ELD_BYTES];
- /** @latency_present: AV delay info from ELD, if found */
- bool latency_present[2];
- /**
- * @video_latency: Video latency info from ELD, if found.
- * [0]: progressive, [1]: interlaced
- */
- int video_latency[2];
- /**
- * @audio_latency: audio latency info from ELD, if found
- * [0]: progressive, [1]: interlaced
- */
- int audio_latency[2];
-
/**
* @ddc: associated ddc adapter.
* A connector usually has its associated ddc adapter. If a driver uses
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
@ 2023-01-24 9:41 ` Jani Nikula
0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2023-01-24 9:41 UTC (permalink / raw)
To: dri-devel
Cc: Emma Anholt, amd-gfx, Andrzej Hajda, Kyungmin Park,
Jernej Skrabec, Alain Volmat, Pan, Chun-Kuang Hu, Jonas Karlman,
jani.nikula, linux-arm-msm, intel-gfx, Abhinav Kumar,
Maxime Ripard, Inki Dae, Alex Deucher, linux-mediatek,
Neil Armstrong, Xinhui, Seung-Woo Kim, Robert Foss, Philipp Zabel,
Dmitry Baryshkov, freedreno, Christian König,
Laurent Pinchart
Information parsed from the display EDID should be stored in display
info. We can stop clearing ELD separately.
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Pan, Xinhui <Xinhui.Pan@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Robert Foss <robert.foss@linaro.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: linux-mediatek@lists.infradead.org
Cc: Rob Clark <robdclark@gmail.com>
Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Sean Paul <sean@poorly.run>
Cc: linux-arm-msm@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Cc: Alain Volmat <alain.volmat@foss.st.com>
Cc: Emma Anholt <emma@anholt.net>
Cc: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Sorry about the crazy Cc list, but this touches a lot of drivers, and I
didn't want to blind side anyone.
---
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 6 +--
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 6 +--
drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 6 +--
drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 12 ++---
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 ++---
drivers/gpu/drm/bridge/analogix/anx7625.c | 4 +-
drivers/gpu/drm/bridge/ite-it66121.c | 4 +-
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +-
drivers/gpu/drm/drm_edid.c | 45 +++++++------------
drivers/gpu/drm/exynos/exynos_hdmi.c | 2 +-
drivers/gpu/drm/i915/display/intel_audio.c | 22 ++++-----
drivers/gpu/drm/i915/display/intel_sdvo.c | 2 +-
drivers/gpu/drm/mediatek/mtk_dp.c | 2 +-
drivers/gpu/drm/mediatek/mtk_hdmi.c | 3 +-
drivers/gpu/drm/msm/dp/dp_audio.c | 4 +-
drivers/gpu/drm/radeon/dce6_afmt.c | 12 ++---
drivers/gpu/drm/radeon/evergreen_hdmi.c | 12 ++---
drivers/gpu/drm/radeon/radeon_audio.c | 4 +-
drivers/gpu/drm/sti/sti_hdmi.c | 2 +-
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
include/drm/drm_connector.h | 39 +++++++++-------
21 files changed, 99 insertions(+), 102 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
index 9a24ed463abd..0c05838032c5 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
@@ -1257,11 +1257,11 @@ static void dce_v10_0_audio_write_latency_fields(struct drm_encoder *encoder,
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
interlace = 1;
- if (connector->latency_present[interlace]) {
+ if (connector->display_info.latency_present[interlace]) {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- VIDEO_LIPSYNC, connector->video_latency[interlace]);
+ VIDEO_LIPSYNC, connector->display_info.video_latency[interlace]);
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- AUDIO_LIPSYNC, connector->audio_latency[interlace]);
+ AUDIO_LIPSYNC, connector->display_info.audio_latency[interlace]);
} else {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
VIDEO_LIPSYNC, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index c14b70350a51..896f0416b69f 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -1283,11 +1283,11 @@ static void dce_v11_0_audio_write_latency_fields(struct drm_encoder *encoder,
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
interlace = 1;
- if (connector->latency_present[interlace]) {
+ if (connector->display_info.latency_present[interlace]) {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- VIDEO_LIPSYNC, connector->video_latency[interlace]);
+ VIDEO_LIPSYNC, connector->display_info.video_latency[interlace]);
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- AUDIO_LIPSYNC, connector->audio_latency[interlace]);
+ AUDIO_LIPSYNC, connector->display_info.audio_latency[interlace]);
} else {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
VIDEO_LIPSYNC, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
index 7f85ba5b726f..4aa797726bca 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
@@ -1158,11 +1158,11 @@ static void dce_v6_0_audio_write_latency_fields(struct drm_encoder *encoder,
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
interlace = 1;
- if (connector->latency_present[interlace]) {
+ if (connector->display_info.latency_present[interlace]) {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- VIDEO_LIPSYNC, connector->video_latency[interlace]);
+ VIDEO_LIPSYNC, connector->display_info.video_latency[interlace]);
tmp = REG_SET_FIELD(tmp, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
- AUDIO_LIPSYNC, connector->audio_latency[interlace]);
+ AUDIO_LIPSYNC, connector->display_info.audio_latency[interlace]);
} else {
tmp = REG_SET_FIELD(0, AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC,
VIDEO_LIPSYNC, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
index d421a268c9ff..c84421510a46 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
@@ -1195,11 +1195,11 @@ static void dce_v8_0_audio_write_latency_fields(struct drm_encoder *encoder,
}
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
- if (connector->latency_present[1])
+ if (connector->display_info.latency_present[1])
tmp =
- (connector->video_latency[1] <<
+ (connector->display_info.video_latency[1] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__VIDEO_LIPSYNC__SHIFT) |
- (connector->audio_latency[1] <<
+ (connector->display_info.audio_latency[1] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__AUDIO_LIPSYNC__SHIFT);
else
tmp =
@@ -1208,11 +1208,11 @@ static void dce_v8_0_audio_write_latency_fields(struct drm_encoder *encoder,
(0 <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__AUDIO_LIPSYNC__SHIFT);
} else {
- if (connector->latency_present[0])
+ if (connector->display_info.latency_present[0])
tmp =
- (connector->video_latency[0] <<
+ (connector->display_info.video_latency[0] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__VIDEO_LIPSYNC__SHIFT) |
- (connector->audio_latency[0] <<
+ (connector->display_info.audio_latency[0] <<
AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_LIPSYNC__AUDIO_LIPSYNC__SHIFT);
else
tmp =
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index c61c388bddf2..4db61c346280 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -894,8 +894,8 @@ static int amdgpu_dm_audio_component_get_eld(struct device *kdev, int port,
continue;
*enabled = true;
- ret = drm_eld_size(connector->eld);
- memcpy(buf, connector->eld, min(max_bytes, ret));
+ ret = drm_eld_size(connector->display_info.eld);
+ memcpy(buf, connector->display_info.eld, min(max_bytes, ret));
break;
}
@@ -5386,9 +5386,9 @@ static void fill_audio_info(struct audio_info *audio_info,
audio_info->flags.all = edid_caps->speaker_flags;
/* TODO: We only check for the progressive mode, check for interlace mode too */
- if (drm_connector->latency_present[0]) {
- audio_info->video_latency = drm_connector->video_latency[0];
- audio_info->audio_latency = drm_connector->audio_latency[0];
+ if (drm_connector->display_info.latency_present[0]) {
+ audio_info->video_latency = drm_connector->display_info.video_latency[0];
+ audio_info->audio_latency = drm_connector->display_info.audio_latency[0];
}
/* TODO: For DP, video and audio latency should be calculated from DPCD caps */
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 6846199a2ee1..04a29950228c 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -1982,8 +1982,8 @@ static int anx7625_audio_get_eld(struct device *dev, void *data,
memset(buf, 0, len);
} else {
dev_dbg(dev, "audio copy eld\n");
- memcpy(buf, ctx->connector->eld,
- min(sizeof(ctx->connector->eld), len));
+ memcpy(buf, ctx->connector->display_info.eld,
+ min(sizeof(ctx->connector->display_info.eld), len));
}
return 0;
diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c
index a2d723d6a4be..1a5e0741d33b 100644
--- a/drivers/gpu/drm/bridge/ite-it66121.c
+++ b/drivers/gpu/drm/bridge/ite-it66121.c
@@ -1448,8 +1448,8 @@ static int it66121_audio_get_eld(struct device *dev, void *data,
mutex_lock(&ctx->lock);
- memcpy(buf, ctx->connector->eld,
- min(sizeof(ctx->connector->eld), len));
+ memcpy(buf, ctx->connector->display_info.eld,
+ min(sizeof(ctx->connector->display_info.eld), len));
mutex_unlock(&ctx->lock);
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index aa51c61a78c7..1f235960fd33 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -789,7 +789,7 @@ static u8 *hdmi_audio_get_eld(struct dw_hdmi *hdmi)
if (!hdmi->curr_conn)
return NULL;
- return hdmi->curr_conn->eld;
+ return hdmi->curr_conn->display_info.eld;
}
static void dw_hdmi_gp_audio_enable(struct dw_hdmi *hdmi)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 1ce3f153868d..a1b06b374af8 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -5369,29 +5369,30 @@ drm_parse_hdr_metadata_block(struct drm_connector *connector, const u8 *db)
static void
drm_parse_hdmi_vsdb_audio(struct drm_connector *connector, const u8 *db)
{
+ struct drm_display_info *info = &connector->display_info;
u8 len = cea_db_payload_len(db);
if (len >= 6 && (db[6] & (1 << 7)))
- connector->eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_SUPPORTS_AI;
+ info->eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_SUPPORTS_AI;
if (len >= 10 && hdmi_vsdb_latency_present(db)) {
- connector->latency_present[0] = true;
- connector->video_latency[0] = db[9];
- connector->audio_latency[0] = db[10];
+ info->latency_present[0] = true;
+ info->video_latency[0] = db[9];
+ info->audio_latency[0] = db[10];
}
if (len >= 12 && hdmi_vsdb_i_latency_present(db)) {
- connector->latency_present[1] = true;
- connector->video_latency[1] = db[11];
- connector->audio_latency[1] = db[12];
+ info->latency_present[1] = true;
+ info->video_latency[1] = db[11];
+ info->audio_latency[1] = db[12];
}
drm_dbg_kms(connector->dev,
"[CONNECTOR:%d:%s] HDMI: latency present %d %d, video latency %d %d, audio latency %d %d\n",
connector->base.id, connector->name,
- connector->latency_present[0], connector->latency_present[1],
- connector->video_latency[0], connector->video_latency[1],
- connector->audio_latency[0], connector->audio_latency[1]);
+ info->latency_present[0], info->latency_present[1],
+ info->video_latency[0], info->video_latency[1],
+ info->audio_latency[0], info->audio_latency[1]);
}
static void
@@ -5453,18 +5454,6 @@ void drm_edid_get_monitor_name(const struct edid *edid, char *name, int bufsize)
}
EXPORT_SYMBOL(drm_edid_get_monitor_name);
-static void clear_eld(struct drm_connector *connector)
-{
- memset(connector->eld, 0, sizeof(connector->eld));
-
- connector->latency_present[0] = false;
- connector->latency_present[1] = false;
- connector->video_latency[0] = 0;
- connector->audio_latency[0] = 0;
- connector->video_latency[1] = 0;
- connector->audio_latency[1] = 0;
-}
-
/*
* drm_edid_to_eld - build ELD from EDID
* @connector: connector corresponding to the HDMI/DP sink
@@ -5479,7 +5468,7 @@ static void drm_edid_to_eld(struct drm_connector *connector,
const struct drm_display_info *info = &connector->display_info;
const struct cea_db *db;
struct cea_db_iter iter;
- uint8_t *eld = connector->eld;
+ u8 *eld = connector->display_info.eld;
int total_sad_count = 0;
int mnl;
@@ -5659,16 +5648,17 @@ EXPORT_SYMBOL(drm_edid_to_speaker_allocation);
int drm_av_sync_delay(struct drm_connector *connector,
const struct drm_display_mode *mode)
{
+ const struct drm_display_info *info = &connector->display_info;
int i = !!(mode->flags & DRM_MODE_FLAG_INTERLACE);
int a, v;
- if (!connector->latency_present[0])
+ if (!info->latency_present[0])
return 0;
- if (!connector->latency_present[1])
+ if (!info->latency_present[1])
i = 0;
- a = connector->audio_latency[i];
- v = connector->video_latency[i];
+ a = info->audio_latency[i];
+ v = info->video_latency[i];
/*
* HDMI/DP sink doesn't support audio or video?
@@ -6437,7 +6427,6 @@ static void update_display_info(struct drm_connector *connector,
const struct edid *edid;
drm_reset_display_info(connector);
- clear_eld(connector);
if (!drm_edid)
return;
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index b7c11bdce2c8..22a0160977d7 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -1640,7 +1640,7 @@ static int hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf,
struct hdmi_context *hdata = dev_get_drvdata(dev);
struct drm_connector *connector = &hdata->connector;
- memcpy(buf, connector->eld, min(sizeof(connector->eld), len));
+ memcpy(buf, connector->display_info.eld, min(sizeof(connector->display_info.eld), len));
return 0;
}
diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
index 626c47e96a6d..f4241d46ba65 100644
--- a/drivers/gpu/drm/i915/display/intel_audio.c
+++ b/drivers/gpu/drm/i915/display/intel_audio.c
@@ -336,7 +336,7 @@ static void g4x_audio_codec_enable(struct intel_encoder *encoder,
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_connector *connector = conn_state->connector;
- const u32 *eld = (const u32 *)connector->eld;
+ const u32 *eld = (const u32 *)connector->display_info.eld;
int eld_buffer_size, len, i;
intel_crtc_wait_for_next_vblank(crtc);
@@ -345,7 +345,7 @@ static void g4x_audio_codec_enable(struct intel_encoder *encoder,
G4X_ELD_VALID | G4X_ELD_ADDRESS_MASK, 0);
eld_buffer_size = g4x_eld_buffer_size(i915);
- len = min(drm_eld_size(connector->eld) / 4, eld_buffer_size);
+ len = min(drm_eld_size(connector->display_info.eld) / 4, eld_buffer_size);
for (i = 0; i < len; i++)
intel_de_write(i915, G4X_HDMIW_HDMIEDID, eld[i]);
@@ -620,7 +620,7 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_connector *connector = conn_state->connector;
enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
- const u32 *eld = (const u32 *)connector->eld;
+ const u32 *eld = (const u32 *)connector->display_info.eld;
int eld_buffer_size, len, i;
mutex_lock(&i915->display.audio.mutex);
@@ -644,7 +644,7 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
IBX_ELD_ADDRESS_MASK, 0);
eld_buffer_size = hsw_eld_buffer_size(i915, cpu_transcoder);
- len = min(drm_eld_size(connector->eld) / 4, eld_buffer_size);
+ len = min(drm_eld_size(connector->display_info.eld) / 4, eld_buffer_size);
for (i = 0; i < len; i++)
intel_de_write(i915, HSW_AUD_EDID_DATA(cpu_transcoder), eld[i]);
@@ -748,7 +748,7 @@ static void ilk_audio_codec_enable(struct intel_encoder *encoder,
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_connector *connector = conn_state->connector;
- const u32 *eld = (const u32 *)connector->eld;
+ const u32 *eld = (const u32 *)connector->display_info.eld;
enum port port = encoder->port;
enum pipe pipe = crtc->pipe;
int eld_buffer_size, len, i;
@@ -772,7 +772,7 @@ static void ilk_audio_codec_enable(struct intel_encoder *encoder,
IBX_ELD_ADDRESS_MASK, 0);
eld_buffer_size = ilk_eld_buffer_size(i915, pipe);
- len = min(drm_eld_size(connector->eld) / 4, eld_buffer_size);
+ len = min(drm_eld_size(connector->display_info.eld) / 4, eld_buffer_size);
for (i = 0; i < len; i++)
intel_de_write(i915, regs.hdmiw_hdmiedid, eld[i]);
@@ -837,15 +837,15 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s][ENCODER:%d:%s] Enable audio codec on pipe %c, %u bytes ELD\n",
connector->base.id, connector->name,
encoder->base.base.id, encoder->base.name,
- pipe_name(pipe), drm_eld_size(connector->eld));
+ pipe_name(pipe), drm_eld_size(connector->display_info.eld));
/* FIXME precompute the ELD in .compute_config() */
- if (!connector->eld[0])
+ if (!connector->display_info.eld[0])
drm_dbg_kms(&i915->drm,
"Bogus ELD on [CONNECTOR:%d:%s]\n",
connector->base.id, connector->name);
- connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
+ connector->display_info.eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
if (i915->display.funcs.audio)
i915->display.funcs.audio->audio_codec_enable(encoder,
@@ -868,7 +868,7 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
(int)port, (int)pipe);
}
- intel_lpe_audio_notify(i915, pipe, port, connector->eld,
+ intel_lpe_audio_notify(i915, pipe, port, connector->display_info.eld,
crtc_state->port_clock,
intel_crtc_has_dp_encoder(crtc_state));
}
@@ -1236,7 +1236,7 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
ret = 0;
*enabled = intel_encoder->audio_connector != NULL;
if (*enabled) {
- eld = intel_encoder->audio_connector->eld;
+ eld = intel_encoder->audio_connector->display_info.eld;
ret = drm_eld_size(eld);
memcpy(buf, eld, min(max_bytes, ret));
}
diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
index 21805c15d5eb..582bbc194305 100644
--- a/drivers/gpu/drm/i915/display/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
@@ -1756,7 +1756,7 @@ static void intel_sdvo_enable_audio(struct intel_sdvo *intel_sdvo,
const struct drm_display_mode *adjusted_mode =
&crtc_state->hw.adjusted_mode;
struct drm_connector *connector = conn_state->connector;
- u8 *eld = connector->eld;
+ u8 *eld = connector->display_info.eld;
eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/mtk_dp.c
index b4feaabdb6a7..3fd448a6d8d1 100644
--- a/drivers/gpu/drm/mediatek/mtk_dp.c
+++ b/drivers/gpu/drm/mediatek/mtk_dp.c
@@ -2432,7 +2432,7 @@ static int mtk_dp_audio_get_eld(struct device *dev, void *data, uint8_t *buf,
struct mtk_dp *mtk_dp = dev_get_drvdata(dev);
if (mtk_dp->enabled)
- memcpy(buf, mtk_dp->conn->eld, len);
+ memcpy(buf, mtk_dp->conn->display_info.eld, len);
else
memset(buf, 0, len);
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index 0a8e0a13f516..edc96b32cf4c 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -1634,7 +1634,8 @@ static int mtk_hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf,
struct mtk_hdmi *hdmi = dev_get_drvdata(dev);
if (hdmi->enabled)
- memcpy(buf, hdmi->curr_conn->eld, min(sizeof(hdmi->curr_conn->eld), len));
+ memcpy(buf, hdmi->curr_conn->display_info.eld,
+ min(sizeof(hdmi->curr_conn->display_info.eld), len));
else
memset(buf, 0, len);
return 0;
diff --git a/drivers/gpu/drm/msm/dp/dp_audio.c b/drivers/gpu/drm/msm/dp/dp_audio.c
index 6666783e1468..993b248fd9e9 100644
--- a/drivers/gpu/drm/msm/dp/dp_audio.c
+++ b/drivers/gpu/drm/msm/dp/dp_audio.c
@@ -499,8 +499,8 @@ static int dp_audio_get_eld(struct device *dev,
return -ENODEV;
}
- memcpy(buf, dp_display->connector->eld,
- min(sizeof(dp_display->connector->eld), len));
+ memcpy(buf, dp_display->connector->display_info.eld,
+ min(sizeof(dp_display->connector->display_info.eld), len));
return 0;
}
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c
index 4a1d5447eac1..cf92c108e377 100644
--- a/drivers/gpu/drm/radeon/dce6_afmt.c
+++ b/drivers/gpu/drm/radeon/dce6_afmt.c
@@ -134,15 +134,15 @@ void dce6_afmt_write_latency_fields(struct drm_encoder *encoder,
return;
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
- if (connector->latency_present[1])
- tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
- AUDIO_LIPSYNC(connector->audio_latency[1]);
+ if (connector->display_info.latency_present[1])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[1]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[1]);
else
tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0);
} else {
- if (connector->latency_present[0])
- tmp = VIDEO_LIPSYNC(connector->video_latency[0]) |
- AUDIO_LIPSYNC(connector->audio_latency[0]);
+ if (connector->display_info.latency_present[0])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[0]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[0]);
else
tmp = VIDEO_LIPSYNC(0) | AUDIO_LIPSYNC(0);
}
diff --git a/drivers/gpu/drm/radeon/evergreen_hdmi.c b/drivers/gpu/drm/radeon/evergreen_hdmi.c
index 5f3078f8ab95..ef6e0f3003a3 100644
--- a/drivers/gpu/drm/radeon/evergreen_hdmi.c
+++ b/drivers/gpu/drm/radeon/evergreen_hdmi.c
@@ -102,15 +102,15 @@ void dce4_afmt_write_latency_fields(struct drm_encoder *encoder,
u32 tmp = 0;
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
- if (connector->latency_present[1])
- tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
- AUDIO_LIPSYNC(connector->audio_latency[1]);
+ if (connector->display_info.latency_present[1])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[1]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[1]);
else
tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
} else {
- if (connector->latency_present[0])
- tmp = VIDEO_LIPSYNC(connector->video_latency[0]) |
- AUDIO_LIPSYNC(connector->audio_latency[0]);
+ if (connector->display_info.latency_present[0])
+ tmp = VIDEO_LIPSYNC(connector->display_info.video_latency[0]) |
+ AUDIO_LIPSYNC(connector->display_info.audio_latency[0]);
else
tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
}
diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c
index d6ccaf24ee0c..8e075e18f8e8 100644
--- a/drivers/gpu/drm/radeon/radeon_audio.c
+++ b/drivers/gpu/drm/radeon/radeon_audio.c
@@ -769,8 +769,8 @@ static int radeon_audio_component_get_eld(struct device *kdev, int port,
if (!connector)
continue;
*enabled = true;
- ret = drm_eld_size(connector->eld);
- memcpy(buf, connector->eld, min(max_bytes, ret));
+ ret = drm_eld_size(connector->display_info.eld);
+ memcpy(buf, connector->display_info.eld, min(max_bytes, ret));
break;
}
diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
index 8539fe1fedc4..bbffe0b379f5 100644
--- a/drivers/gpu/drm/sti/sti_hdmi.c
+++ b/drivers/gpu/drm/sti/sti_hdmi.c
@@ -1220,7 +1220,7 @@ static int hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf, size
struct drm_connector *connector = hdmi->drm_connector;
DRM_DEBUG_DRIVER("\n");
- memcpy(buf, connector->eld, min(sizeof(connector->eld), len));
+ memcpy(buf, connector->display_info.eld, min(sizeof(connector->display_info.eld), len));
return 0;
}
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 14628864487a..05181e152168 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -2411,7 +2411,7 @@ static int vc4_hdmi_audio_get_eld(struct device *dev, void *data,
struct drm_connector *connector = &vc4_hdmi->connector;
mutex_lock(&vc4_hdmi->mutex);
- memcpy(buf, connector->eld, min(sizeof(connector->eld), len));
+ memcpy(buf, connector->display_info.eld, min(sizeof(connector->display_info.eld), len));
mutex_unlock(&vc4_hdmi->mutex);
return 0;
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 627bedc47511..30f51e8a7985 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -738,6 +738,29 @@ struct drm_display_info {
* @quirks: EDID based quirks. Internal to EDID parsing.
*/
u32 quirks;
+
+#define MAX_ELD_BYTES 128
+ /**
+ * @eld: EDID-like data, if present
+ */
+ u8 eld[MAX_ELD_BYTES];
+
+ /**
+ * @latency_present: AV delay info from ELD, if found
+ */
+ bool latency_present[2];
+
+ /**
+ * @video_latency: Video latency info from ELD, if found.
+ * [0]: progressive, [1]: interlaced
+ */
+ int video_latency[2];
+
+ /**
+ * @audio_latency: audio latency info from ELD, if found
+ * [0]: progressive, [1]: interlaced
+ */
+ int audio_latency[2];
};
int drm_display_info_set_bus_formats(struct drm_display_info *info,
@@ -1685,22 +1708,6 @@ struct drm_connector {
*/
struct drm_encoder *encoder;
-#define MAX_ELD_BYTES 128
- /** @eld: EDID-like data, if present */
- uint8_t eld[MAX_ELD_BYTES];
- /** @latency_present: AV delay info from ELD, if found */
- bool latency_present[2];
- /**
- * @video_latency: Video latency info from ELD, if found.
- * [0]: progressive, [1]: interlaced
- */
- int video_latency[2];
- /**
- * @audio_latency: audio latency info from ELD, if found
- * [0]: progressive, [1]: interlaced
- */
- int audio_latency[2];
-
/**
* @ddc: associated ddc adapter.
* A connector usually has its associated ddc adapter. If a driver uses
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
2023-01-24 9:41 ` [Intel-gfx] " Jani Nikula
(?)
@ 2023-01-24 12:26 ` kernel test robot
-1 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2023-01-24 12:26 UTC (permalink / raw)
To: Jani Nikula, dri-devel
Cc: Pan, Emma Anholt, amd-gfx, Andrzej Hajda, Jernej Skrabec,
Alain Volmat, Chun-Kuang Hu, Jonas Karlman, jani.nikula,
linux-arm-msm, intel-gfx, Abhinav Kumar, Maxime Ripard, Inki Dae,
Dmitry Baryshkov, linux-mediatek, oe-kbuild-all, Neil Armstrong,
Xinhui, Seung-Woo Kim, Robert Foss, Kyungmin Park, Philipp Zabel,
Alex Deucher, freedreno, Christian König, Laurent Pinchart
Hi Jani,
I love your patch! Yet something to improve:
[auto build test ERROR on drm-tip/drm-tip]
url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link: https://lore.kernel.org/r/20230124094154.2282778-3-jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
config: arm-defconfig (https://download.01.org/0day-ci/archive/20230124/202301242049.eKzx7RzZ-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/1e92b5478cfc1b0df66153652111117e9548b0d5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
git checkout 1e92b5478cfc1b0df66153652111117e9548b0d5
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/gpu/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/gpu/drm/tegra/hdmi.c: In function 'tegra_hdmi_write_eld':
>> drivers/gpu/drm/tegra/hdmi.c:620:60: error: 'struct drm_connector' has no member named 'eld'
620 | size_t length = drm_eld_size(hdmi->output.connector.eld), i;
| ^
drivers/gpu/drm/tegra/hdmi.c:624:72: error: 'struct drm_connector' has no member named 'eld'
624 | tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
| ^
--
drivers/gpu/drm/tegra/sor.c: In function 'tegra_sor_write_eld':
>> drivers/gpu/drm/tegra/sor.c:1951:59: error: 'struct drm_connector' has no member named 'eld'
1951 | size_t length = drm_eld_size(sor->output.connector.eld), i;
| ^
drivers/gpu/drm/tegra/sor.c:1954:69: error: 'struct drm_connector' has no member named 'eld'
1954 | tegra_sor_writel(sor, i << 8 | sor->output.connector.eld[i],
| ^
vim +620 drivers/gpu/drm/tegra/hdmi.c
edec4af4c3d6d2 Thierry Reding 2012-11-15 617
5234549b93aa2a Thierry Reding 2015-08-07 618 static void tegra_hdmi_write_eld(struct tegra_hdmi *hdmi)
5234549b93aa2a Thierry Reding 2015-08-07 619 {
5234549b93aa2a Thierry Reding 2015-08-07 @620 size_t length = drm_eld_size(hdmi->output.connector.eld), i;
5234549b93aa2a Thierry Reding 2015-08-07 621 u32 value;
edec4af4c3d6d2 Thierry Reding 2012-11-15 622
5234549b93aa2a Thierry Reding 2015-08-07 623 for (i = 0; i < length; i++)
5234549b93aa2a Thierry Reding 2015-08-07 624 tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
5234549b93aa2a Thierry Reding 2015-08-07 625 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
edec4af4c3d6d2 Thierry Reding 2012-11-15 626
5234549b93aa2a Thierry Reding 2015-08-07 627 /*
5234549b93aa2a Thierry Reding 2015-08-07 628 * The HDA codec will always report an ELD buffer size of 96 bytes and
5234549b93aa2a Thierry Reding 2015-08-07 629 * the HDA codec driver will check that each byte read from the buffer
5234549b93aa2a Thierry Reding 2015-08-07 630 * is valid. Therefore every byte must be written, even if no 96 bytes
5234549b93aa2a Thierry Reding 2015-08-07 631 * were parsed from EDID.
5234549b93aa2a Thierry Reding 2015-08-07 632 */
5234549b93aa2a Thierry Reding 2015-08-07 633 for (i = length; i < HDMI_ELD_BUFFER_SIZE; i++)
5234549b93aa2a Thierry Reding 2015-08-07 634 tegra_hdmi_writel(hdmi, i << 8 | 0,
5234549b93aa2a Thierry Reding 2015-08-07 635 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
5234549b93aa2a Thierry Reding 2015-08-07 636
5234549b93aa2a Thierry Reding 2015-08-07 637 value = SOR_AUDIO_HDA_PRESENSE_VALID | SOR_AUDIO_HDA_PRESENSE_PRESENT;
5234549b93aa2a Thierry Reding 2015-08-07 638 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_AUDIO_HDA_PRESENSE);
edec4af4c3d6d2 Thierry Reding 2012-11-15 639 }
edec4af4c3d6d2 Thierry Reding 2012-11-15 640
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
@ 2023-01-24 12:26 ` kernel test robot
0 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2023-01-24 12:26 UTC (permalink / raw)
To: Jani Nikula, dri-devel
Cc: Pan, Emma Anholt, amd-gfx, Andrzej Hajda, Jernej Skrabec,
Alain Volmat, Chun-Kuang Hu, Jonas Karlman, jani.nikula,
linux-arm-msm, intel-gfx, Abhinav Kumar, Dmitry Baryshkov,
linux-mediatek, oe-kbuild-all, Neil Armstrong, Xinhui,
Seung-Woo Kim, Robert Foss, Kyungmin Park, Alex Deucher,
freedreno, Christian König, Laurent Pinchart
Hi Jani,
I love your patch! Yet something to improve:
[auto build test ERROR on drm-tip/drm-tip]
url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link: https://lore.kernel.org/r/20230124094154.2282778-3-jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
config: arm-defconfig (https://download.01.org/0day-ci/archive/20230124/202301242049.eKzx7RzZ-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/1e92b5478cfc1b0df66153652111117e9548b0d5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
git checkout 1e92b5478cfc1b0df66153652111117e9548b0d5
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/gpu/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/gpu/drm/tegra/hdmi.c: In function 'tegra_hdmi_write_eld':
>> drivers/gpu/drm/tegra/hdmi.c:620:60: error: 'struct drm_connector' has no member named 'eld'
620 | size_t length = drm_eld_size(hdmi->output.connector.eld), i;
| ^
drivers/gpu/drm/tegra/hdmi.c:624:72: error: 'struct drm_connector' has no member named 'eld'
624 | tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
| ^
--
drivers/gpu/drm/tegra/sor.c: In function 'tegra_sor_write_eld':
>> drivers/gpu/drm/tegra/sor.c:1951:59: error: 'struct drm_connector' has no member named 'eld'
1951 | size_t length = drm_eld_size(sor->output.connector.eld), i;
| ^
drivers/gpu/drm/tegra/sor.c:1954:69: error: 'struct drm_connector' has no member named 'eld'
1954 | tegra_sor_writel(sor, i << 8 | sor->output.connector.eld[i],
| ^
vim +620 drivers/gpu/drm/tegra/hdmi.c
edec4af4c3d6d2 Thierry Reding 2012-11-15 617
5234549b93aa2a Thierry Reding 2015-08-07 618 static void tegra_hdmi_write_eld(struct tegra_hdmi *hdmi)
5234549b93aa2a Thierry Reding 2015-08-07 619 {
5234549b93aa2a Thierry Reding 2015-08-07 @620 size_t length = drm_eld_size(hdmi->output.connector.eld), i;
5234549b93aa2a Thierry Reding 2015-08-07 621 u32 value;
edec4af4c3d6d2 Thierry Reding 2012-11-15 622
5234549b93aa2a Thierry Reding 2015-08-07 623 for (i = 0; i < length; i++)
5234549b93aa2a Thierry Reding 2015-08-07 624 tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
5234549b93aa2a Thierry Reding 2015-08-07 625 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
edec4af4c3d6d2 Thierry Reding 2012-11-15 626
5234549b93aa2a Thierry Reding 2015-08-07 627 /*
5234549b93aa2a Thierry Reding 2015-08-07 628 * The HDA codec will always report an ELD buffer size of 96 bytes and
5234549b93aa2a Thierry Reding 2015-08-07 629 * the HDA codec driver will check that each byte read from the buffer
5234549b93aa2a Thierry Reding 2015-08-07 630 * is valid. Therefore every byte must be written, even if no 96 bytes
5234549b93aa2a Thierry Reding 2015-08-07 631 * were parsed from EDID.
5234549b93aa2a Thierry Reding 2015-08-07 632 */
5234549b93aa2a Thierry Reding 2015-08-07 633 for (i = length; i < HDMI_ELD_BUFFER_SIZE; i++)
5234549b93aa2a Thierry Reding 2015-08-07 634 tegra_hdmi_writel(hdmi, i << 8 | 0,
5234549b93aa2a Thierry Reding 2015-08-07 635 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
5234549b93aa2a Thierry Reding 2015-08-07 636
5234549b93aa2a Thierry Reding 2015-08-07 637 value = SOR_AUDIO_HDA_PRESENSE_VALID | SOR_AUDIO_HDA_PRESENSE_PRESENT;
5234549b93aa2a Thierry Reding 2015-08-07 638 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_AUDIO_HDA_PRESENSE);
edec4af4c3d6d2 Thierry Reding 2012-11-15 639 }
edec4af4c3d6d2 Thierry Reding 2012-11-15 640
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
@ 2023-01-24 12:26 ` kernel test robot
0 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2023-01-24 12:26 UTC (permalink / raw)
To: Jani Nikula, dri-devel
Cc: oe-kbuild-all, Emma Anholt, amd-gfx, Andrzej Hajda, Kyungmin Park,
Jernej Skrabec, Alain Volmat, Pan, Chun-Kuang Hu, Jonas Karlman,
jani.nikula, linux-arm-msm, intel-gfx, Abhinav Kumar,
Maxime Ripard, Inki Dae, Alex Deucher, linux-mediatek,
Neil Armstrong, Xinhui, Seung-Woo Kim, Robert Foss, Philipp Zabel,
Dmitry Baryshkov, freedreno, Christian König,
Laurent Pinchart
Hi Jani,
I love your patch! Yet something to improve:
[auto build test ERROR on drm-tip/drm-tip]
url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link: https://lore.kernel.org/r/20230124094154.2282778-3-jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
config: arm-defconfig (https://download.01.org/0day-ci/archive/20230124/202301242049.eKzx7RzZ-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/1e92b5478cfc1b0df66153652111117e9548b0d5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
git checkout 1e92b5478cfc1b0df66153652111117e9548b0d5
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/gpu/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/gpu/drm/tegra/hdmi.c: In function 'tegra_hdmi_write_eld':
>> drivers/gpu/drm/tegra/hdmi.c:620:60: error: 'struct drm_connector' has no member named 'eld'
620 | size_t length = drm_eld_size(hdmi->output.connector.eld), i;
| ^
drivers/gpu/drm/tegra/hdmi.c:624:72: error: 'struct drm_connector' has no member named 'eld'
624 | tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
| ^
--
drivers/gpu/drm/tegra/sor.c: In function 'tegra_sor_write_eld':
>> drivers/gpu/drm/tegra/sor.c:1951:59: error: 'struct drm_connector' has no member named 'eld'
1951 | size_t length = drm_eld_size(sor->output.connector.eld), i;
| ^
drivers/gpu/drm/tegra/sor.c:1954:69: error: 'struct drm_connector' has no member named 'eld'
1954 | tegra_sor_writel(sor, i << 8 | sor->output.connector.eld[i],
| ^
vim +620 drivers/gpu/drm/tegra/hdmi.c
edec4af4c3d6d2 Thierry Reding 2012-11-15 617
5234549b93aa2a Thierry Reding 2015-08-07 618 static void tegra_hdmi_write_eld(struct tegra_hdmi *hdmi)
5234549b93aa2a Thierry Reding 2015-08-07 619 {
5234549b93aa2a Thierry Reding 2015-08-07 @620 size_t length = drm_eld_size(hdmi->output.connector.eld), i;
5234549b93aa2a Thierry Reding 2015-08-07 621 u32 value;
edec4af4c3d6d2 Thierry Reding 2012-11-15 622
5234549b93aa2a Thierry Reding 2015-08-07 623 for (i = 0; i < length; i++)
5234549b93aa2a Thierry Reding 2015-08-07 624 tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
5234549b93aa2a Thierry Reding 2015-08-07 625 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
edec4af4c3d6d2 Thierry Reding 2012-11-15 626
5234549b93aa2a Thierry Reding 2015-08-07 627 /*
5234549b93aa2a Thierry Reding 2015-08-07 628 * The HDA codec will always report an ELD buffer size of 96 bytes and
5234549b93aa2a Thierry Reding 2015-08-07 629 * the HDA codec driver will check that each byte read from the buffer
5234549b93aa2a Thierry Reding 2015-08-07 630 * is valid. Therefore every byte must be written, even if no 96 bytes
5234549b93aa2a Thierry Reding 2015-08-07 631 * were parsed from EDID.
5234549b93aa2a Thierry Reding 2015-08-07 632 */
5234549b93aa2a Thierry Reding 2015-08-07 633 for (i = length; i < HDMI_ELD_BUFFER_SIZE; i++)
5234549b93aa2a Thierry Reding 2015-08-07 634 tegra_hdmi_writel(hdmi, i << 8 | 0,
5234549b93aa2a Thierry Reding 2015-08-07 635 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
5234549b93aa2a Thierry Reding 2015-08-07 636
5234549b93aa2a Thierry Reding 2015-08-07 637 value = SOR_AUDIO_HDA_PRESENSE_VALID | SOR_AUDIO_HDA_PRESENSE_PRESENT;
5234549b93aa2a Thierry Reding 2015-08-07 638 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_AUDIO_HDA_PRESENSE);
edec4af4c3d6d2 Thierry Reding 2012-11-15 639 }
edec4af4c3d6d2 Thierry Reding 2012-11-15 640
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
2023-01-24 12:26 ` kernel test robot
(?)
@ 2023-01-24 14:51 ` Jani Nikula
-1 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2023-01-24 14:51 UTC (permalink / raw)
To: kernel test robot, dri-devel
Cc: Pan, Emma Anholt, amd-gfx, Andrzej Hajda, Jernej Skrabec,
Alain Volmat, Chun-Kuang Hu, Jonas Karlman, linux-arm-msm,
intel-gfx, Abhinav Kumar, Maxime Ripard, Inki Dae,
Dmitry Baryshkov, linux-mediatek, oe-kbuild-all, Neil Armstrong,
Xinhui, Seung-Woo Kim, Robert Foss, Kyungmin Park, Philipp Zabel,
Alex Deucher, freedreno, Christian König, Laurent Pinchart
Obviously, I need to still work on this. *looks for brown paper bag*
On Tue, 24 Jan 2023, kernel test robot <lkp@intel.com> wrote:
> Hi Jani,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on drm-tip/drm-tip]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
> base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
> patch link: https://lore.kernel.org/r/20230124094154.2282778-3-jani.nikula%40intel.com
> patch subject: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
> config: arm-defconfig (https://download.01.org/0day-ci/archive/20230124/202301242049.eKzx7RzZ-lkp@intel.com/config)
> compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/intel-lab-lkp/linux/commit/1e92b5478cfc1b0df66153652111117e9548b0d5
> git remote add linux-review https://github.com/intel-lab-lkp/linux
> git fetch --no-tags linux-review Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
> git checkout 1e92b5478cfc1b0df66153652111117e9548b0d5
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm olddefconfig
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/gpu/
>
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> drivers/gpu/drm/tegra/hdmi.c: In function 'tegra_hdmi_write_eld':
>>> drivers/gpu/drm/tegra/hdmi.c:620:60: error: 'struct drm_connector' has no member named 'eld'
> 620 | size_t length = drm_eld_size(hdmi->output.connector.eld), i;
> | ^
> drivers/gpu/drm/tegra/hdmi.c:624:72: error: 'struct drm_connector' has no member named 'eld'
> 624 | tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
> | ^
> --
> drivers/gpu/drm/tegra/sor.c: In function 'tegra_sor_write_eld':
>>> drivers/gpu/drm/tegra/sor.c:1951:59: error: 'struct drm_connector' has no member named 'eld'
> 1951 | size_t length = drm_eld_size(sor->output.connector.eld), i;
> | ^
> drivers/gpu/drm/tegra/sor.c:1954:69: error: 'struct drm_connector' has no member named 'eld'
> 1954 | tegra_sor_writel(sor, i << 8 | sor->output.connector.eld[i],
> | ^
>
>
> vim +620 drivers/gpu/drm/tegra/hdmi.c
>
> edec4af4c3d6d2 Thierry Reding 2012-11-15 617
> 5234549b93aa2a Thierry Reding 2015-08-07 618 static void tegra_hdmi_write_eld(struct tegra_hdmi *hdmi)
> 5234549b93aa2a Thierry Reding 2015-08-07 619 {
> 5234549b93aa2a Thierry Reding 2015-08-07 @620 size_t length = drm_eld_size(hdmi->output.connector.eld), i;
> 5234549b93aa2a Thierry Reding 2015-08-07 621 u32 value;
> edec4af4c3d6d2 Thierry Reding 2012-11-15 622
> 5234549b93aa2a Thierry Reding 2015-08-07 623 for (i = 0; i < length; i++)
> 5234549b93aa2a Thierry Reding 2015-08-07 624 tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
> 5234549b93aa2a Thierry Reding 2015-08-07 625 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
> edec4af4c3d6d2 Thierry Reding 2012-11-15 626
> 5234549b93aa2a Thierry Reding 2015-08-07 627 /*
> 5234549b93aa2a Thierry Reding 2015-08-07 628 * The HDA codec will always report an ELD buffer size of 96 bytes and
> 5234549b93aa2a Thierry Reding 2015-08-07 629 * the HDA codec driver will check that each byte read from the buffer
> 5234549b93aa2a Thierry Reding 2015-08-07 630 * is valid. Therefore every byte must be written, even if no 96 bytes
> 5234549b93aa2a Thierry Reding 2015-08-07 631 * were parsed from EDID.
> 5234549b93aa2a Thierry Reding 2015-08-07 632 */
> 5234549b93aa2a Thierry Reding 2015-08-07 633 for (i = length; i < HDMI_ELD_BUFFER_SIZE; i++)
> 5234549b93aa2a Thierry Reding 2015-08-07 634 tegra_hdmi_writel(hdmi, i << 8 | 0,
> 5234549b93aa2a Thierry Reding 2015-08-07 635 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
> 5234549b93aa2a Thierry Reding 2015-08-07 636
> 5234549b93aa2a Thierry Reding 2015-08-07 637 value = SOR_AUDIO_HDA_PRESENSE_VALID | SOR_AUDIO_HDA_PRESENSE_PRESENT;
> 5234549b93aa2a Thierry Reding 2015-08-07 638 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_AUDIO_HDA_PRESENSE);
> edec4af4c3d6d2 Thierry Reding 2012-11-15 639 }
> edec4af4c3d6d2 Thierry Reding 2012-11-15 640
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
@ 2023-01-24 14:51 ` Jani Nikula
0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2023-01-24 14:51 UTC (permalink / raw)
To: kernel test robot, dri-devel
Cc: Pan, Emma Anholt, amd-gfx, Andrzej Hajda, Jernej Skrabec,
Alain Volmat, Chun-Kuang Hu, Jonas Karlman, linux-arm-msm,
intel-gfx, Abhinav Kumar, Dmitry Baryshkov, linux-mediatek,
oe-kbuild-all, Neil Armstrong, Xinhui, Seung-Woo Kim, Robert Foss,
Kyungmin Park, Alex Deucher, freedreno, Christian König,
Laurent Pinchart
Obviously, I need to still work on this. *looks for brown paper bag*
On Tue, 24 Jan 2023, kernel test robot <lkp@intel.com> wrote:
> Hi Jani,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on drm-tip/drm-tip]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
> base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
> patch link: https://lore.kernel.org/r/20230124094154.2282778-3-jani.nikula%40intel.com
> patch subject: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
> config: arm-defconfig (https://download.01.org/0day-ci/archive/20230124/202301242049.eKzx7RzZ-lkp@intel.com/config)
> compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/intel-lab-lkp/linux/commit/1e92b5478cfc1b0df66153652111117e9548b0d5
> git remote add linux-review https://github.com/intel-lab-lkp/linux
> git fetch --no-tags linux-review Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
> git checkout 1e92b5478cfc1b0df66153652111117e9548b0d5
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm olddefconfig
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/gpu/
>
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> drivers/gpu/drm/tegra/hdmi.c: In function 'tegra_hdmi_write_eld':
>>> drivers/gpu/drm/tegra/hdmi.c:620:60: error: 'struct drm_connector' has no member named 'eld'
> 620 | size_t length = drm_eld_size(hdmi->output.connector.eld), i;
> | ^
> drivers/gpu/drm/tegra/hdmi.c:624:72: error: 'struct drm_connector' has no member named 'eld'
> 624 | tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
> | ^
> --
> drivers/gpu/drm/tegra/sor.c: In function 'tegra_sor_write_eld':
>>> drivers/gpu/drm/tegra/sor.c:1951:59: error: 'struct drm_connector' has no member named 'eld'
> 1951 | size_t length = drm_eld_size(sor->output.connector.eld), i;
> | ^
> drivers/gpu/drm/tegra/sor.c:1954:69: error: 'struct drm_connector' has no member named 'eld'
> 1954 | tegra_sor_writel(sor, i << 8 | sor->output.connector.eld[i],
> | ^
>
>
> vim +620 drivers/gpu/drm/tegra/hdmi.c
>
> edec4af4c3d6d2 Thierry Reding 2012-11-15 617
> 5234549b93aa2a Thierry Reding 2015-08-07 618 static void tegra_hdmi_write_eld(struct tegra_hdmi *hdmi)
> 5234549b93aa2a Thierry Reding 2015-08-07 619 {
> 5234549b93aa2a Thierry Reding 2015-08-07 @620 size_t length = drm_eld_size(hdmi->output.connector.eld), i;
> 5234549b93aa2a Thierry Reding 2015-08-07 621 u32 value;
> edec4af4c3d6d2 Thierry Reding 2012-11-15 622
> 5234549b93aa2a Thierry Reding 2015-08-07 623 for (i = 0; i < length; i++)
> 5234549b93aa2a Thierry Reding 2015-08-07 624 tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
> 5234549b93aa2a Thierry Reding 2015-08-07 625 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
> edec4af4c3d6d2 Thierry Reding 2012-11-15 626
> 5234549b93aa2a Thierry Reding 2015-08-07 627 /*
> 5234549b93aa2a Thierry Reding 2015-08-07 628 * The HDA codec will always report an ELD buffer size of 96 bytes and
> 5234549b93aa2a Thierry Reding 2015-08-07 629 * the HDA codec driver will check that each byte read from the buffer
> 5234549b93aa2a Thierry Reding 2015-08-07 630 * is valid. Therefore every byte must be written, even if no 96 bytes
> 5234549b93aa2a Thierry Reding 2015-08-07 631 * were parsed from EDID.
> 5234549b93aa2a Thierry Reding 2015-08-07 632 */
> 5234549b93aa2a Thierry Reding 2015-08-07 633 for (i = length; i < HDMI_ELD_BUFFER_SIZE; i++)
> 5234549b93aa2a Thierry Reding 2015-08-07 634 tegra_hdmi_writel(hdmi, i << 8 | 0,
> 5234549b93aa2a Thierry Reding 2015-08-07 635 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
> 5234549b93aa2a Thierry Reding 2015-08-07 636
> 5234549b93aa2a Thierry Reding 2015-08-07 637 value = SOR_AUDIO_HDA_PRESENSE_VALID | SOR_AUDIO_HDA_PRESENSE_PRESENT;
> 5234549b93aa2a Thierry Reding 2015-08-07 638 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_AUDIO_HDA_PRESENSE);
> edec4af4c3d6d2 Thierry Reding 2012-11-15 639 }
> edec4af4c3d6d2 Thierry Reding 2012-11-15 640
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
@ 2023-01-24 14:51 ` Jani Nikula
0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2023-01-24 14:51 UTC (permalink / raw)
To: kernel test robot, dri-devel
Cc: oe-kbuild-all, Emma Anholt, amd-gfx, Andrzej Hajda, Kyungmin Park,
Jernej Skrabec, Alain Volmat, Pan, Chun-Kuang Hu, Jonas Karlman,
linux-arm-msm, intel-gfx, Abhinav Kumar, Maxime Ripard, Inki Dae,
Alex Deucher, linux-mediatek, Neil Armstrong, Xinhui,
Seung-Woo Kim, Robert Foss, Philipp Zabel, Dmitry Baryshkov,
freedreno, Christian König, Laurent Pinchart
Obviously, I need to still work on this. *looks for brown paper bag*
On Tue, 24 Jan 2023, kernel test robot <lkp@intel.com> wrote:
> Hi Jani,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on drm-tip/drm-tip]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
> base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
> patch link: https://lore.kernel.org/r/20230124094154.2282778-3-jani.nikula%40intel.com
> patch subject: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
> config: arm-defconfig (https://download.01.org/0day-ci/archive/20230124/202301242049.eKzx7RzZ-lkp@intel.com/config)
> compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/intel-lab-lkp/linux/commit/1e92b5478cfc1b0df66153652111117e9548b0d5
> git remote add linux-review https://github.com/intel-lab-lkp/linux
> git fetch --no-tags linux-review Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
> git checkout 1e92b5478cfc1b0df66153652111117e9548b0d5
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm olddefconfig
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/gpu/
>
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> drivers/gpu/drm/tegra/hdmi.c: In function 'tegra_hdmi_write_eld':
>>> drivers/gpu/drm/tegra/hdmi.c:620:60: error: 'struct drm_connector' has no member named 'eld'
> 620 | size_t length = drm_eld_size(hdmi->output.connector.eld), i;
> | ^
> drivers/gpu/drm/tegra/hdmi.c:624:72: error: 'struct drm_connector' has no member named 'eld'
> 624 | tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
> | ^
> --
> drivers/gpu/drm/tegra/sor.c: In function 'tegra_sor_write_eld':
>>> drivers/gpu/drm/tegra/sor.c:1951:59: error: 'struct drm_connector' has no member named 'eld'
> 1951 | size_t length = drm_eld_size(sor->output.connector.eld), i;
> | ^
> drivers/gpu/drm/tegra/sor.c:1954:69: error: 'struct drm_connector' has no member named 'eld'
> 1954 | tegra_sor_writel(sor, i << 8 | sor->output.connector.eld[i],
> | ^
>
>
> vim +620 drivers/gpu/drm/tegra/hdmi.c
>
> edec4af4c3d6d2 Thierry Reding 2012-11-15 617
> 5234549b93aa2a Thierry Reding 2015-08-07 618 static void tegra_hdmi_write_eld(struct tegra_hdmi *hdmi)
> 5234549b93aa2a Thierry Reding 2015-08-07 619 {
> 5234549b93aa2a Thierry Reding 2015-08-07 @620 size_t length = drm_eld_size(hdmi->output.connector.eld), i;
> 5234549b93aa2a Thierry Reding 2015-08-07 621 u32 value;
> edec4af4c3d6d2 Thierry Reding 2012-11-15 622
> 5234549b93aa2a Thierry Reding 2015-08-07 623 for (i = 0; i < length; i++)
> 5234549b93aa2a Thierry Reding 2015-08-07 624 tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i],
> 5234549b93aa2a Thierry Reding 2015-08-07 625 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
> edec4af4c3d6d2 Thierry Reding 2012-11-15 626
> 5234549b93aa2a Thierry Reding 2015-08-07 627 /*
> 5234549b93aa2a Thierry Reding 2015-08-07 628 * The HDA codec will always report an ELD buffer size of 96 bytes and
> 5234549b93aa2a Thierry Reding 2015-08-07 629 * the HDA codec driver will check that each byte read from the buffer
> 5234549b93aa2a Thierry Reding 2015-08-07 630 * is valid. Therefore every byte must be written, even if no 96 bytes
> 5234549b93aa2a Thierry Reding 2015-08-07 631 * were parsed from EDID.
> 5234549b93aa2a Thierry Reding 2015-08-07 632 */
> 5234549b93aa2a Thierry Reding 2015-08-07 633 for (i = length; i < HDMI_ELD_BUFFER_SIZE; i++)
> 5234549b93aa2a Thierry Reding 2015-08-07 634 tegra_hdmi_writel(hdmi, i << 8 | 0,
> 5234549b93aa2a Thierry Reding 2015-08-07 635 HDMI_NV_PDISP_SOR_AUDIO_HDA_ELD_BUFWR);
> 5234549b93aa2a Thierry Reding 2015-08-07 636
> 5234549b93aa2a Thierry Reding 2015-08-07 637 value = SOR_AUDIO_HDA_PRESENSE_VALID | SOR_AUDIO_HDA_PRESENSE_PRESENT;
> 5234549b93aa2a Thierry Reding 2015-08-07 638 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_AUDIO_HDA_PRESENSE);
> edec4af4c3d6d2 Thierry Reding 2012-11-15 639 }
> edec4af4c3d6d2 Thierry Reding 2012-11-15 640
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
2023-01-24 9:41 ` [Intel-gfx] " Jani Nikula
(?)
@ 2023-01-24 12:57 ` kernel test robot
-1 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2023-01-24 12:57 UTC (permalink / raw)
To: Jani Nikula, dri-devel
Cc: Pan, Emma Anholt, llvm, Jernej Skrabec, Andrzej Hajda, amd-gfx,
Alain Volmat, Chun-Kuang Hu, Jonas Karlman, jani.nikula,
linux-arm-msm, intel-gfx, Abhinav Kumar, Maxime Ripard, Inki Dae,
Dmitry Baryshkov, linux-mediatek, oe-kbuild-all, Neil Armstrong,
Xinhui, Seung-Woo Kim, Robert Foss, Kyungmin Park, Philipp Zabel,
Alex Deucher, freedreno, Christian König, Laurent Pinchart
Hi Jani,
I love your patch! Yet something to improve:
[auto build test ERROR on drm-tip/drm-tip]
url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link: https://lore.kernel.org/r/20230124094154.2282778-3-jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
config: hexagon-randconfig-r045-20230123 (https://download.01.org/0day-ci/archive/20230124/202301242053.vCYJQIUE-lkp@intel.com/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/1e92b5478cfc1b0df66153652111117e9548b0d5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
git checkout 1e92b5478cfc1b0df66153652111117e9548b0d5
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/gpu/drm/bridge/ drivers/gpu/drm/i2c/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/bridge/sii902x.c:17:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from drivers/gpu/drm/bridge/sii902x.c:17:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from drivers/gpu/drm/bridge/sii902x.c:17:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
>> drivers/gpu/drm/bridge/sii902x.c:736:33: error: no member named 'eld' in 'struct drm_connector'
memcpy(buf, sii902x->connector.eld,
~~~~~~~~~~~~~~~~~~ ^
drivers/gpu/drm/bridge/sii902x.c:737:39: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(sii902x->connector.eld), len));
~~~~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:16: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:20:21: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
drivers/gpu/drm/bridge/sii902x.c:737:39: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(sii902x->connector.eld), len));
~~~~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:43: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:23:19: note: expanded from macro '__no_side_effects'
(__is_constexpr(x) && __is_constexpr(y))
^
include/linux/const.h:12:48: note: expanded from macro '__is_constexpr'
(sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8)))
^
6 warnings and 3 errors generated.
--
In file included from drivers/gpu/drm/i2c/tda998x_drv.c:10:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from drivers/gpu/drm/i2c/tda998x_drv.c:10:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from drivers/gpu/drm/i2c/tda998x_drv.c:10:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
>> drivers/gpu/drm/i2c/tda998x_drv.c:1156:30: error: no member named 'eld' in 'struct drm_connector'
memcpy(buf, priv->connector.eld,
~~~~~~~~~~~~~~~ ^
drivers/gpu/drm/i2c/tda998x_drv.c:1157:36: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(priv->connector.eld), len));
~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:16: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:20:21: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
drivers/gpu/drm/i2c/tda998x_drv.c:1157:36: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(priv->connector.eld), len));
~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:43: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:23:19: note: expanded from macro '__no_side_effects'
(__is_constexpr(x) && __is_constexpr(y))
^
include/linux/const.h:12:48: note: expanded from macro '__is_constexpr'
(sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8)))
^
6 warnings and 3 errors generated.
vim +736 drivers/gpu/drm/bridge/sii902x.c
ff5781634c4116 Jyri Sarha 2019-05-27 728
ff5781634c4116 Jyri Sarha 2019-05-27 729 static int sii902x_audio_get_eld(struct device *dev, void *data,
ff5781634c4116 Jyri Sarha 2019-05-27 730 uint8_t *buf, size_t len)
ff5781634c4116 Jyri Sarha 2019-05-27 731 {
ff5781634c4116 Jyri Sarha 2019-05-27 732 struct sii902x *sii902x = dev_get_drvdata(dev);
ff5781634c4116 Jyri Sarha 2019-05-27 733
ff5781634c4116 Jyri Sarha 2019-05-27 734 mutex_lock(&sii902x->mutex);
ff5781634c4116 Jyri Sarha 2019-05-27 735
ff5781634c4116 Jyri Sarha 2019-05-27 @736 memcpy(buf, sii902x->connector.eld,
ff5781634c4116 Jyri Sarha 2019-05-27 737 min(sizeof(sii902x->connector.eld), len));
ff5781634c4116 Jyri Sarha 2019-05-27 738
ff5781634c4116 Jyri Sarha 2019-05-27 739 mutex_unlock(&sii902x->mutex);
ff5781634c4116 Jyri Sarha 2019-05-27 740
ff5781634c4116 Jyri Sarha 2019-05-27 741 return 0;
ff5781634c4116 Jyri Sarha 2019-05-27 742 }
ff5781634c4116 Jyri Sarha 2019-05-27 743
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
@ 2023-01-24 12:57 ` kernel test robot
0 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2023-01-24 12:57 UTC (permalink / raw)
To: Jani Nikula, dri-devel
Cc: Pan, Emma Anholt, llvm, Jernej Skrabec, Andrzej Hajda, amd-gfx,
Alain Volmat, Chun-Kuang Hu, Jonas Karlman, jani.nikula,
linux-arm-msm, intel-gfx, Abhinav Kumar, Dmitry Baryshkov,
linux-mediatek, oe-kbuild-all, Neil Armstrong, Xinhui,
Seung-Woo Kim, Robert Foss, Kyungmin Park, Alex Deucher,
freedreno, Christian König, Laurent Pinchart
Hi Jani,
I love your patch! Yet something to improve:
[auto build test ERROR on drm-tip/drm-tip]
url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link: https://lore.kernel.org/r/20230124094154.2282778-3-jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
config: hexagon-randconfig-r045-20230123 (https://download.01.org/0day-ci/archive/20230124/202301242053.vCYJQIUE-lkp@intel.com/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/1e92b5478cfc1b0df66153652111117e9548b0d5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
git checkout 1e92b5478cfc1b0df66153652111117e9548b0d5
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/gpu/drm/bridge/ drivers/gpu/drm/i2c/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/bridge/sii902x.c:17:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from drivers/gpu/drm/bridge/sii902x.c:17:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from drivers/gpu/drm/bridge/sii902x.c:17:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
>> drivers/gpu/drm/bridge/sii902x.c:736:33: error: no member named 'eld' in 'struct drm_connector'
memcpy(buf, sii902x->connector.eld,
~~~~~~~~~~~~~~~~~~ ^
drivers/gpu/drm/bridge/sii902x.c:737:39: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(sii902x->connector.eld), len));
~~~~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:16: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:20:21: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
drivers/gpu/drm/bridge/sii902x.c:737:39: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(sii902x->connector.eld), len));
~~~~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:43: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:23:19: note: expanded from macro '__no_side_effects'
(__is_constexpr(x) && __is_constexpr(y))
^
include/linux/const.h:12:48: note: expanded from macro '__is_constexpr'
(sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8)))
^
6 warnings and 3 errors generated.
--
In file included from drivers/gpu/drm/i2c/tda998x_drv.c:10:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from drivers/gpu/drm/i2c/tda998x_drv.c:10:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from drivers/gpu/drm/i2c/tda998x_drv.c:10:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
>> drivers/gpu/drm/i2c/tda998x_drv.c:1156:30: error: no member named 'eld' in 'struct drm_connector'
memcpy(buf, priv->connector.eld,
~~~~~~~~~~~~~~~ ^
drivers/gpu/drm/i2c/tda998x_drv.c:1157:36: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(priv->connector.eld), len));
~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:16: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:20:21: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
drivers/gpu/drm/i2c/tda998x_drv.c:1157:36: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(priv->connector.eld), len));
~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:43: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:23:19: note: expanded from macro '__no_side_effects'
(__is_constexpr(x) && __is_constexpr(y))
^
include/linux/const.h:12:48: note: expanded from macro '__is_constexpr'
(sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8)))
^
6 warnings and 3 errors generated.
vim +736 drivers/gpu/drm/bridge/sii902x.c
ff5781634c4116 Jyri Sarha 2019-05-27 728
ff5781634c4116 Jyri Sarha 2019-05-27 729 static int sii902x_audio_get_eld(struct device *dev, void *data,
ff5781634c4116 Jyri Sarha 2019-05-27 730 uint8_t *buf, size_t len)
ff5781634c4116 Jyri Sarha 2019-05-27 731 {
ff5781634c4116 Jyri Sarha 2019-05-27 732 struct sii902x *sii902x = dev_get_drvdata(dev);
ff5781634c4116 Jyri Sarha 2019-05-27 733
ff5781634c4116 Jyri Sarha 2019-05-27 734 mutex_lock(&sii902x->mutex);
ff5781634c4116 Jyri Sarha 2019-05-27 735
ff5781634c4116 Jyri Sarha 2019-05-27 @736 memcpy(buf, sii902x->connector.eld,
ff5781634c4116 Jyri Sarha 2019-05-27 737 min(sizeof(sii902x->connector.eld), len));
ff5781634c4116 Jyri Sarha 2019-05-27 738
ff5781634c4116 Jyri Sarha 2019-05-27 739 mutex_unlock(&sii902x->mutex);
ff5781634c4116 Jyri Sarha 2019-05-27 740
ff5781634c4116 Jyri Sarha 2019-05-27 741 return 0;
ff5781634c4116 Jyri Sarha 2019-05-27 742 }
ff5781634c4116 Jyri Sarha 2019-05-27 743
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
@ 2023-01-24 12:57 ` kernel test robot
0 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2023-01-24 12:57 UTC (permalink / raw)
To: Jani Nikula, dri-devel
Cc: llvm, oe-kbuild-all, Emma Anholt, amd-gfx, Andrzej Hajda,
Kyungmin Park, Jernej Skrabec, Alain Volmat, Pan, Chun-Kuang Hu,
Jonas Karlman, jani.nikula, linux-arm-msm, intel-gfx,
Abhinav Kumar, Maxime Ripard, Inki Dae, Alex Deucher,
linux-mediatek, Neil Armstrong, Xinhui, Seung-Woo Kim,
Robert Foss, Philipp Zabel, Dmitry Baryshkov, freedreno,
Christian König, Laurent Pinchart
Hi Jani,
I love your patch! Yet something to improve:
[auto build test ERROR on drm-tip/drm-tip]
url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
patch link: https://lore.kernel.org/r/20230124094154.2282778-3-jani.nikula%40intel.com
patch subject: [Intel-gfx] [PATCH 3/3] drm/connector: move ELD and video/audio latencies to display info
config: hexagon-randconfig-r045-20230123 (https://download.01.org/0day-ci/archive/20230124/202301242053.vCYJQIUE-lkp@intel.com/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/1e92b5478cfc1b0df66153652111117e9548b0d5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jani-Nikula/drm-connector-move-HDR-sink-metadata-to-display-info/20230124-174322
git checkout 1e92b5478cfc1b0df66153652111117e9548b0d5
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/gpu/drm/bridge/ drivers/gpu/drm/i2c/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/bridge/sii902x.c:17:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from drivers/gpu/drm/bridge/sii902x.c:17:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from drivers/gpu/drm/bridge/sii902x.c:17:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
>> drivers/gpu/drm/bridge/sii902x.c:736:33: error: no member named 'eld' in 'struct drm_connector'
memcpy(buf, sii902x->connector.eld,
~~~~~~~~~~~~~~~~~~ ^
drivers/gpu/drm/bridge/sii902x.c:737:39: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(sii902x->connector.eld), len));
~~~~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:16: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:20:21: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
drivers/gpu/drm/bridge/sii902x.c:737:39: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(sii902x->connector.eld), len));
~~~~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:43: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:23:19: note: expanded from macro '__no_side_effects'
(__is_constexpr(x) && __is_constexpr(y))
^
include/linux/const.h:12:48: note: expanded from macro '__is_constexpr'
(sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8)))
^
6 warnings and 3 errors generated.
--
In file included from drivers/gpu/drm/i2c/tda998x_drv.c:10:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from drivers/gpu/drm/i2c/tda998x_drv.c:10:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from drivers/gpu/drm/i2c/tda998x_drv.c:10:
In file included from include/linux/i2c.h:19:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:334:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
>> drivers/gpu/drm/i2c/tda998x_drv.c:1156:30: error: no member named 'eld' in 'struct drm_connector'
memcpy(buf, priv->connector.eld,
~~~~~~~~~~~~~~~ ^
drivers/gpu/drm/i2c/tda998x_drv.c:1157:36: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(priv->connector.eld), len));
~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:16: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:20:21: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
drivers/gpu/drm/i2c/tda998x_drv.c:1157:36: error: no member named 'eld' in 'struct drm_connector'
min(sizeof(priv->connector.eld), len));
~~~~~~~~~~~~~~~ ^
include/linux/minmax.h:67:33: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:36:35: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/minmax.h:26:43: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^
include/linux/minmax.h:23:19: note: expanded from macro '__no_side_effects'
(__is_constexpr(x) && __is_constexpr(y))
^
include/linux/const.h:12:48: note: expanded from macro '__is_constexpr'
(sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8)))
^
6 warnings and 3 errors generated.
vim +736 drivers/gpu/drm/bridge/sii902x.c
ff5781634c4116 Jyri Sarha 2019-05-27 728
ff5781634c4116 Jyri Sarha 2019-05-27 729 static int sii902x_audio_get_eld(struct device *dev, void *data,
ff5781634c4116 Jyri Sarha 2019-05-27 730 uint8_t *buf, size_t len)
ff5781634c4116 Jyri Sarha 2019-05-27 731 {
ff5781634c4116 Jyri Sarha 2019-05-27 732 struct sii902x *sii902x = dev_get_drvdata(dev);
ff5781634c4116 Jyri Sarha 2019-05-27 733
ff5781634c4116 Jyri Sarha 2019-05-27 734 mutex_lock(&sii902x->mutex);
ff5781634c4116 Jyri Sarha 2019-05-27 735
ff5781634c4116 Jyri Sarha 2019-05-27 @736 memcpy(buf, sii902x->connector.eld,
ff5781634c4116 Jyri Sarha 2019-05-27 737 min(sizeof(sii902x->connector.eld), len));
ff5781634c4116 Jyri Sarha 2019-05-27 738
ff5781634c4116 Jyri Sarha 2019-05-27 739 mutex_unlock(&sii902x->mutex);
ff5781634c4116 Jyri Sarha 2019-05-27 740
ff5781634c4116 Jyri Sarha 2019-05-27 741 return 0;
ff5781634c4116 Jyri Sarha 2019-05-27 742 }
ff5781634c4116 Jyri Sarha 2019-05-27 743
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 20+ messages in thread