* [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels
@ 2023-08-17 12:50 Mitul Golani
2023-08-18 15:24 ` Kai Vehmanen
0 siblings, 1 reply; 15+ messages in thread
From: Mitul Golani @ 2023-08-17 12:50 UTC (permalink / raw)
To: intel-gfx; +Cc: jyri.sarha
Currently we do not check if there is enough bandwidth for
audio, and what channels and freq it can really support.
Also sometimes there can be HW constraints e.g. GLK where audio
channels supported are only 2.
https://patchwork.freedesktop.org/series/107647/
Obtain the optimal audio rate and channel based on available display
timing constraints.
This can be achieved by:
- Retrieve the supported channel and rate information from SADs
- Adding audio-related config parameters in the CRTC state, such
as audio support, rate, and channel.
- Initializing the audio config parameters with the maximum supported
rate and channel by the audio source.
- Computing the SADs based on the audio source's capabilities.
Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
Mitul Golani (3):
drm/i915: Add has_audio to separate audio parameter in crtc_state
drm/i915/display: Configure and initialize HDMI audio capabilities
drm/i915/display: Add wrapper to Compute SAD
drivers/gpu/drm/i915/display/g4x_dp.c | 4 +-
drivers/gpu/drm/i915/display/g4x_hdmi.c | 16 +-
drivers/gpu/drm/i915/display/intel_audio.c | 149 +++++++++++++++++-
drivers/gpu/drm/i915/display/intel_cdclk.c | 6 +-
.../drm/i915/display/intel_crtc_state_dump.c | 4 +-
drivers/gpu/drm/i915/display/intel_ddi.c | 2 +-
drivers/gpu/drm/i915/display/intel_display.c | 4 +-
.../drm/i915/display/intel_display_types.h | 12 +-
drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
drivers/gpu/drm/i915/display/intel_hdmi.c | 2 +-
drivers/gpu/drm/i915/display/intel_sdvo.c | 10 +-
12 files changed, 181 insertions(+), 32 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels
2023-08-17 12:50 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
@ 2023-08-18 15:24 ` Kai Vehmanen
0 siblings, 0 replies; 15+ messages in thread
From: Kai Vehmanen @ 2023-08-18 15:24 UTC (permalink / raw)
To: Mitul Golani; +Cc: intel-gfx, jyri.sarha
Hi,
On Thu, 17 Aug 2023, Mitul Golani wrote:
> Currently we do not check if there is enough bandwidth for
> audio, and what channels and freq it can really support.
> Also sometimes there can be HW constraints e.g. GLK where audio
> channels supported are only 2.
[...]
> Mitul Golani (3):
> drm/i915: Add has_audio to separate audio parameter in crtc_state
> drm/i915/display: Configure and initialize HDMI audio capabilities
> drm/i915/display: Add wrapper to Compute SAD
thanks, looks good now. The adjusted logic to balance between
channels and rates seems to hit a fair balance. For the series:
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Br, Kai
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels
@ 2023-08-21 16:00 Mitul Golani
2023-08-21 16:00 ` [Intel-gfx] [PATCH 1/3] drm/i915: Add has_audio to separate audio parameter in crtc_state Mitul Golani
` (6 more replies)
0 siblings, 7 replies; 15+ messages in thread
From: Mitul Golani @ 2023-08-21 16:00 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Currently we do not check if there is enough bandwidth for
audio, and what channels and freq it can really support.
Also sometimes there can be HW constraints e.g. GLK where audio
channels supported are only 2.
https://patchwork.freedesktop.org/series/107647/
Obtain the optimal audio rate and channel based on available display
timing constraints.
This can be achieved by:
- Retrieve the supported channel and rate information from SADs
- Adding audio-related config parameters in the CRTC state, such
as audio support, rate, and channel.
- Initializing the audio config parameters with the maximum supported
rate and channel by the audio source.
- Computing the SADs based on the audio source's capabilities.
Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
Mitul Golani (3):
drm/i915: Add has_audio to separate audio parameter in crtc_state
drm: Add Wrapper Functions for ELD SAD Extraction
drm/i915/display: Configure and initialize HDMI audio capabilities
drivers/gpu/drm/i915/display/g4x_dp.c | 4 +-
drivers/gpu/drm/i915/display/g4x_hdmi.c | 16 +--
drivers/gpu/drm/i915/display/intel_audio.c | 133 +++++++++++++++++-
drivers/gpu/drm/i915/display/intel_cdclk.c | 6 +-
.../drm/i915/display/intel_crtc_state_dump.c | 4 +-
drivers/gpu/drm/i915/display/intel_ddi.c | 2 +-
drivers/gpu/drm/i915/display/intel_display.c | 4 +-
.../drm/i915/display/intel_display_types.h | 12 +-
drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
drivers/gpu/drm/i915/display/intel_hdmi.c | 2 +-
drivers/gpu/drm/i915/display/intel_sdvo.c | 10 +-
include/drm/drm_edid.h | 15 +-
13 files changed, 175 insertions(+), 37 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Intel-gfx] [PATCH 1/3] drm/i915: Add has_audio to separate audio parameter in crtc_state
2023-08-21 16:00 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
@ 2023-08-21 16:00 ` Mitul Golani
2023-08-21 16:00 ` [Intel-gfx] [PATCH 2/3] drm: Add Wrapper Functions for ELD SAD Extraction Mitul Golani
` (5 subsequent siblings)
6 siblings, 0 replies; 15+ messages in thread
From: Mitul Golani @ 2023-08-21 16:00 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
To enhance the relationship between the has_audio and the source
audio parameter, create a separate crtc_state audio property and
add the has_audio parameter into it. Additionally, update the
access of the has_audio parameter from the crtc_state pointer as
it is wrapped under the audio. These modifications establish
a more cohesive structure and improve the accessibility and
organization of the audio-related parameters within the codebase.
--v1:
- add audio instead of audio_config in crtc_state
- add only has_audio then update related parameter access
- refactor other member to different commit where it is being used
- update commit message and header
Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/g4x_dp.c | 4 ++--
drivers/gpu/drm/i915/display/g4x_hdmi.c | 16 ++++++++--------
drivers/gpu/drm/i915/display/intel_audio.c | 6 +++---
drivers/gpu/drm/i915/display/intel_cdclk.c | 6 +++---
.../gpu/drm/i915/display/intel_crtc_state_dump.c | 4 ++--
drivers/gpu/drm/i915/display/intel_ddi.c | 2 +-
drivers/gpu/drm/i915/display/intel_display.c | 4 ++--
.../gpu/drm/i915/display/intel_display_types.h | 6 +++---
drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
drivers/gpu/drm/i915/display/intel_hdmi.c | 2 +-
drivers/gpu/drm/i915/display/intel_sdvo.c | 10 +++++-----
12 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/g4x_dp.c b/drivers/gpu/drm/i915/display/g4x_dp.c
index 4c7187f7913e..59e66cdc4553 100644
--- a/drivers/gpu/drm/i915/display/g4x_dp.c
+++ b/drivers/gpu/drm/i915/display/g4x_dp.c
@@ -345,7 +345,7 @@ static void intel_dp_get_config(struct intel_encoder *encoder,
tmp = intel_de_read(dev_priv, intel_dp->output_reg);
- pipe_config->has_audio = tmp & DP_AUDIO_OUTPUT_ENABLE && port != PORT_A;
+ pipe_config->audio.has_audio = tmp & DP_AUDIO_OUTPUT_ENABLE && port != PORT_A;
if (HAS_PCH_CPT(dev_priv) && port != PORT_A) {
u32 trans_dp = intel_de_read(dev_priv,
@@ -625,7 +625,7 @@ static void intel_dp_enable_port(struct intel_dp *intel_dp,
* fail when the power sequencer is freshly used for this port.
*/
intel_dp->DP |= DP_PORT_EN;
- if (crtc_state->has_audio)
+ if (crtc_state->audio.has_audio)
intel_dp->DP |= DP_AUDIO_OUTPUT_ENABLE;
intel_de_write(dev_priv, intel_dp->output_reg, intel_dp->DP);
diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c b/drivers/gpu/drm/i915/display/g4x_hdmi.c
index 634b14116d9d..8a3b50a59ea8 100644
--- a/drivers/gpu/drm/i915/display/g4x_hdmi.c
+++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c
@@ -178,7 +178,7 @@ static void intel_hdmi_get_config(struct intel_encoder *encoder,
pipe_config->has_infoframe = true;
if (tmp & HDMI_AUDIO_ENABLE)
- pipe_config->has_audio = true;
+ pipe_config->audio.has_audio = true;
if (!HAS_PCH_SPLIT(dev_priv) &&
tmp & HDMI_COLOR_RANGE_16_235)
@@ -224,7 +224,7 @@ static void g4x_hdmi_enable_port(struct intel_encoder *encoder,
temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg);
temp |= SDVO_ENABLE;
- if (pipe_config->has_audio)
+ if (pipe_config->audio.has_audio)
temp |= HDMI_AUDIO_ENABLE;
intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp);
@@ -240,7 +240,7 @@ static void g4x_enable_hdmi(struct intel_atomic_state *state,
g4x_hdmi_enable_port(encoder, pipe_config);
- drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
+ drm_WARN_ON(&dev_priv->drm, pipe_config->audio.has_audio &&
!pipe_config->has_hdmi_sink);
intel_audio_codec_enable(encoder, pipe_config, conn_state);
}
@@ -258,7 +258,7 @@ static void ibx_enable_hdmi(struct intel_atomic_state *state,
temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg);
temp |= SDVO_ENABLE;
- if (pipe_config->has_audio)
+ if (pipe_config->audio.has_audio)
temp |= HDMI_AUDIO_ENABLE;
/*
@@ -293,7 +293,7 @@ static void ibx_enable_hdmi(struct intel_atomic_state *state,
intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg);
}
- drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
+ drm_WARN_ON(&dev_priv->drm, pipe_config->audio.has_audio &&
!pipe_config->has_hdmi_sink);
intel_audio_codec_enable(encoder, pipe_config, conn_state);
}
@@ -313,7 +313,7 @@ static void cpt_enable_hdmi(struct intel_atomic_state *state,
temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg);
temp |= SDVO_ENABLE;
- if (pipe_config->has_audio)
+ if (pipe_config->audio.has_audio)
temp |= HDMI_AUDIO_ENABLE;
/*
@@ -348,7 +348,7 @@ static void cpt_enable_hdmi(struct intel_atomic_state *state,
TRANS_CHICKEN1_HDMIUNIT_GC_DISABLE, 0);
}
- drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
+ drm_WARN_ON(&dev_priv->drm, pipe_config->audio.has_audio &&
!pipe_config->has_hdmi_sink);
intel_audio_codec_enable(encoder, pipe_config, conn_state);
}
@@ -360,7 +360,7 @@ static void vlv_enable_hdmi(struct intel_atomic_state *state,
{
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
- drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
+ drm_WARN_ON(&dev_priv->drm, pipe_config->audio.has_audio &&
!pipe_config->has_hdmi_sink);
intel_audio_codec_enable(encoder, pipe_config, conn_state);
}
diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
index 3d9c9b4f27f8..e20ffc8e9654 100644
--- a/drivers/gpu/drm/i915/display/intel_audio.c
+++ b/drivers/gpu/drm/i915/display/intel_audio.c
@@ -815,7 +815,7 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
struct intel_audio_state *audio_state;
enum port port = encoder->port;
- if (!crtc_state->has_audio)
+ if (!crtc_state->audio.has_audio)
return;
drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s][ENCODER:%d:%s] Enable audio codec on [CRTC:%d:%s], %u bytes ELD\n",
@@ -874,7 +874,7 @@ void intel_audio_codec_disable(struct intel_encoder *encoder,
struct intel_audio_state *audio_state;
enum port port = encoder->port;
- if (!old_crtc_state->has_audio)
+ if (!old_crtc_state->audio.has_audio)
return;
drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s][ENCODER:%d:%s] Disable audio codec on [CRTC:%d:%s]\n",
@@ -930,7 +930,7 @@ void intel_audio_codec_get_config(struct intel_encoder *encoder,
{
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
- if (!crtc_state->has_audio)
+ if (!crtc_state->audio.has_audio)
return;
if (i915->display.funcs.audio)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index de04a6fe54f3..62e6a993e5c2 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -2597,7 +2597,7 @@ int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_state)
* restriction for GLK is 316.8 MHz.
*/
if (intel_crtc_has_dp_encoder(crtc_state) &&
- crtc_state->has_audio &&
+ crtc_state->audio.has_audio &&
crtc_state->port_clock >= 540000 &&
crtc_state->lane_count == 4) {
if (DISPLAY_VER(dev_priv) == 10) {
@@ -2613,7 +2613,7 @@ int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_state)
* According to BSpec, "The CD clock frequency must be at least twice
* the frequency of the Azalia BCLK." and BCLK is 96 MHz by default.
*/
- if (crtc_state->has_audio && DISPLAY_VER(dev_priv) >= 9)
+ if (crtc_state->audio.has_audio && DISPLAY_VER(dev_priv) >= 9)
min_cdclk = max(2 * 96000, min_cdclk);
/*
@@ -2624,7 +2624,7 @@ int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_state)
* 162 | 200 or higher"
*/
if ((IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) &&
- intel_crtc_has_dp_encoder(crtc_state) && crtc_state->has_audio)
+ intel_crtc_has_dp_encoder(crtc_state) && crtc_state->audio.has_audio)
min_cdclk = max(crtc_state->port_clock, min_cdclk);
/*
diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
index 8d4640d0fd34..b7d1be42bf0f 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
@@ -265,7 +265,7 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
drm_dbg_kms(&i915->drm,
"audio: %i, infoframes: %i, infoframes enabled: 0x%x\n",
- pipe_config->has_audio, pipe_config->has_infoframe,
+ pipe_config->audio.has_audio, pipe_config->has_infoframe,
pipe_config->infoframes.enable);
if (pipe_config->infoframes.enable &
@@ -291,7 +291,7 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
intel_hdmi_infoframe_enable(DP_SDP_VSC))
intel_dump_dp_vsc_sdp(i915, &pipe_config->infoframes.vsc);
- if (pipe_config->has_audio)
+ if (pipe_config->audio.has_audio)
intel_dump_buffer(i915, "ELD: ", pipe_config->eld,
drm_eld_size(pipe_config->eld));
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 84bbf854337a..36d843fe2fd5 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3784,7 +3784,7 @@ static void intel_ddi_get_config(struct intel_encoder *encoder,
intel_ddi_mso_get_config(encoder, pipe_config);
- pipe_config->has_audio =
+ pipe_config->audio.has_audio =
intel_ddi_is_audio_enabled(dev_priv, cpu_transcoder);
if (encoder->type == INTEL_OUTPUT_EDP)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 8c81206ce90d..f8ebaacf6a12 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1857,7 +1857,7 @@ static void get_crtc_power_domains(struct intel_crtc_state *crtc_state,
set_bit(intel_encoder->power_domain, mask->bits);
}
- if (HAS_DDI(dev_priv) && crtc_state->has_audio)
+ if (HAS_DDI(dev_priv) && crtc_state->audio.has_audio)
set_bit(POWER_DOMAIN_AUDIO_MMIO, mask->bits);
if (crtc_state->shared_dpll)
@@ -5257,7 +5257,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
PIPE_CONF_CHECK_BOOL(has_infoframe);
PIPE_CONF_CHECK_BOOL(fec_enable);
- PIPE_CONF_CHECK_BOOL_INCOMPLETE(has_audio);
+ PIPE_CONF_CHECK_BOOL_INCOMPLETE(audio.has_audio);
PIPE_CONF_CHECK_BUFFER(eld, MAX_ELD_BYTES);
PIPE_CONF_CHECK_X(gmch_pfit.control);
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 731f2ec04d5c..ebd147180a6e 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1129,9 +1129,9 @@ struct intel_crtc_state {
/* Whether we should send NULL infoframes. Required for audio. */
bool has_hdmi_sink;
- /* Audio enabled on this pipe. Only valid if either has_hdmi_sink or
- * has_dp_encoder is set. */
- bool has_audio;
+ struct {
+ bool has_audio;
+ } audio;
/*
* Enable dithering, used when the selected pipe bpp doesn't match the
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 5b48bfe09d0e..d2ce01bd5f49 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2655,7 +2655,7 @@ intel_dp_compute_config(struct intel_encoder *encoder,
if (HAS_PCH_SPLIT(dev_priv) && !HAS_DDI(dev_priv) && encoder->port != PORT_A)
pipe_config->has_pch_encoder = true;
- pipe_config->has_audio =
+ pipe_config->audio.has_audio =
intel_dp_has_audio(encoder, conn_state) &&
intel_audio_compute_config(encoder, pipe_config, conn_state);
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 3eb085fbc7c8..4f574db6fe6c 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -325,7 +325,7 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
pipe_config->has_pch_encoder = false;
- pipe_config->has_audio =
+ pipe_config->audio.has_audio =
intel_dp_mst_has_audio(conn_state) &&
intel_audio_compute_config(encoder, pipe_config, conn_state);
diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 9442bf43550e..2ff232d9f68a 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -2302,7 +2302,7 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK)
pipe_config->pixel_multiplier = 2;
- pipe_config->has_audio =
+ pipe_config->audio.has_audio =
intel_hdmi_has_audio(encoder, pipe_config, conn_state) &&
intel_audio_compute_config(encoder, pipe_config, conn_state);
diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
index 7d25a64698e2..73321b54cf60 100644
--- a/drivers/gpu/drm/i915/display/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
@@ -1191,7 +1191,7 @@ static void intel_sdvo_get_eld(struct intel_sdvo *intel_sdvo,
ssize_t len;
u8 val;
- if (!crtc_state->has_audio)
+ if (!crtc_state->audio.has_audio)
return;
if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_AUDIO_STAT, &val, 1))
@@ -1406,7 +1406,7 @@ static int intel_sdvo_compute_config(struct intel_encoder *encoder,
pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo_connector, conn_state);
- pipe_config->has_audio =
+ pipe_config->audio.has_audio =
intel_sdvo_has_audio(encoder, pipe_config, conn_state) &&
intel_audio_compute_config(encoder, pipe_config, conn_state);
@@ -1760,7 +1760,7 @@ static void intel_sdvo_get_config(struct intel_encoder *encoder,
if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_AUDIO_STAT,
&val, 1)) {
if (val & SDVO_AUDIO_PRESENCE_DETECT)
- pipe_config->has_audio = true;
+ pipe_config->audio.has_audio = true;
}
if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_ENCODE,
@@ -1805,7 +1805,7 @@ static void intel_disable_sdvo(struct intel_atomic_state *state,
struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc);
u32 temp;
- if (old_crtc_state->has_audio)
+ if (old_crtc_state->audio.has_audio)
intel_sdvo_disable_audio(intel_sdvo);
intel_sdvo_set_active_outputs(intel_sdvo, 0);
@@ -1898,7 +1898,7 @@ static void intel_enable_sdvo(struct intel_atomic_state *state,
DRM_MODE_DPMS_ON);
intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output);
- if (pipe_config->has_audio)
+ if (pipe_config->audio.has_audio)
intel_sdvo_enable_audio(intel_sdvo, pipe_config, conn_state);
}
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Intel-gfx] [PATCH 2/3] drm: Add Wrapper Functions for ELD SAD Extraction
2023-08-21 16:00 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
2023-08-21 16:00 ` [Intel-gfx] [PATCH 1/3] drm/i915: Add has_audio to separate audio parameter in crtc_state Mitul Golani
@ 2023-08-21 16:00 ` Mitul Golani
2023-09-05 6:26 ` Kandpal, Suraj
2023-09-07 9:35 ` Jani Nikula
2023-08-21 16:00 ` [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize HDMI audio capabilities Mitul Golani
` (4 subsequent siblings)
6 siblings, 2 replies; 15+ messages in thread
From: Mitul Golani @ 2023-08-21 16:00 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Add wrapper functions to facilitate extracting Short Audio
Descriptor (SAD) information from EDID-Like Data (ELD) pointers
with different constness requirements.
1. `drm_eld_sad`: This function returns a constant `uint8_t`
pointer and wraps the main extraction function, allowing access
to SAD information while maintaining const correctness.
2. `drm_extract_sad_from_eld`: This function returns a mutable
`uint8_t` pointer and implements the core logic for extracting
SAD from the provided ELD pointer. It performs version and
maximum channel checks to ensure proper extraction.
These wrapper functions provide flexibility to the codebase,
allowing users to access SAD information while adhering to
const correctness when needed and modifying the pointer when
required.
Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
include/drm/drm_edid.h | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
index 48e93f909ef6..626bc0d542eb 100644
--- a/include/drm/drm_edid.h
+++ b/include/drm/drm_edid.h
@@ -418,11 +418,7 @@ static inline int drm_eld_mnl(const uint8_t *eld)
return (eld[DRM_ELD_CEA_EDID_VER_MNL] & DRM_ELD_MNL_MASK) >> DRM_ELD_MNL_SHIFT;
}
-/**
- * drm_eld_sad - Get ELD SAD structures.
- * @eld: pointer to an eld memory structure with sad_count set
- */
-static inline const uint8_t *drm_eld_sad(const uint8_t *eld)
+static uint8_t *drm_extract_sad_from_eld(uint8_t *eld)
{
unsigned int ver, mnl;
@@ -437,6 +433,15 @@ static inline const uint8_t *drm_eld_sad(const uint8_t *eld)
return eld + DRM_ELD_CEA_SAD(mnl, 0);
}
+/**
+ * drm_eld_sad - Get ELD SAD structures.
+ * @eld: pointer to an eld memory structure with sad_count set
+ */
+static inline const uint8_t *drm_eld_sad(const uint8_t *eld)
+{
+ return drm_extract_sad_from_eld((uint8_t *)eld);
+}
+
/**
* drm_eld_sad_count - Get ELD SAD count.
* @eld: pointer to an eld memory structure with sad_count set
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize HDMI audio capabilities
2023-08-21 16:00 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
2023-08-21 16:00 ` [Intel-gfx] [PATCH 1/3] drm/i915: Add has_audio to separate audio parameter in crtc_state Mitul Golani
2023-08-21 16:00 ` [Intel-gfx] [PATCH 2/3] drm: Add Wrapper Functions for ELD SAD Extraction Mitul Golani
@ 2023-08-21 16:00 ` Mitul Golani
2023-09-05 9:17 ` Kandpal, Suraj
2023-08-21 21:58 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Get optimal audio frequency and channels (rev10) Patchwork
` (3 subsequent siblings)
6 siblings, 1 reply; 15+ messages in thread
From: Mitul Golani @ 2023-08-21 16:00 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Initialize the source audio capabilities in the crtc_state property,
setting them to their maximum supported values for max_channel and
max_rate. This initialization enables the calculation of audio source
capabilities concerning the available mode bandwidth. These
capabilities encompass parameters such as supported rate and
channel configurations.
Additionally, introduces a wrapper function for computing
Short Audio Descriptors (SADs). The wrapper function incorporates
logic for determining supported rates and channels according to the
capabilities of the audio source. It returns a set of SADs that are
compatible with the audio source's capabilities.
--v1:
- Refactor max_channel and max_rate to this commit as it is being
initialised here
- Remove call for intel_audio_compute_eld to avoid any regression while
merge. instead call it in different commit when it is defined.
- Use int instead of unsigned int for max_channel and max_frequecy
- Update commit message and header
--v2:
- Use signed instead of unsigned variables.
- Avoid using magic numbers and give them proper name.
--v3:
- Move defines to intel_audio.c.
- use consistent naming convention for rate and channel.
- declare num_of_channel and aud_rate separately.
- Declare index value outside of for loop.
- Move Bandwidth calculation to intel_Audio.c as it is common for both
DP and HDMI. Also use static.
--v10:
- Merged patch 2 and 3 to deduplicate function calls.
- Instead using Calibrate and calculated functions separately,
removed code duplication and merged functions.[Nikula, Jani]
- Remove magic value for SAD Channel mask. [Nikula, Jani]
- Corrected rate values based on HDMI Spec [Nikula, Jani]
- Update drm function to extract SAD from ELD [Nikula, Jani]
Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
drivers/gpu/drm/i915/display/intel_audio.c | 127 ++++++++++++++++++
.../drm/i915/display/intel_display_types.h | 6 +
2 files changed, 133 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
index e20ffc8e9654..2584096d80a4 100644
--- a/drivers/gpu/drm/i915/display/intel_audio.c
+++ b/drivers/gpu/drm/i915/display/intel_audio.c
@@ -64,6 +64,10 @@
* struct &i915_audio_component_audio_ops @audio_ops is called from i915 driver.
*/
+#define AUDIO_SAMPLE_CONTAINER_SIZE 32
+#define MAX_CHANNEL_COUNT 8
+#define ELD_SAD_CHANNELS_MASK 0x7
+
struct intel_audio_funcs {
void (*audio_codec_enable)(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
@@ -770,6 +774,127 @@ void intel_audio_sdp_split_update(struct intel_encoder *encoder,
crtc_state->sdp_split_enable ? AUD_ENABLE_SDP_SPLIT : 0);
}
+static int sad_to_channels(const u8 *sad)
+{
+ return 1 + (sad[0] & 0x7);
+}
+
+static int calc_audio_bw(int channel_count, int rate)
+{
+ int bandwidth = channel_count * rate * AUDIO_SAMPLE_CONTAINER_SIZE;
+ return bandwidth;
+}
+
+static void calc_and_calibrate_audio_config_params(struct intel_crtc_state *pipe_config,
+ int channel, bool calibration_required)
+{
+ struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode;
+ int channel_count;
+ int index, rate[] = { 192000, 176400, 96000, 88200, 48000, 44100, 32000 };
+ int audio_req_bandwidth, available_blank_bandwidth, vblank, hblank;
+
+ hblank = adjusted_mode->htotal - adjusted_mode->hdisplay;
+ vblank = adjusted_mode->vtotal - adjusted_mode->vdisplay;
+ available_blank_bandwidth = hblank * vblank *
+ drm_mode_vrefresh(adjusted_mode) * pipe_config->pipe_bpp;
+
+ /*
+ * Expected calibration of channels and respective rates,
+ * based on MAX_CHANNEL_COUNT. First calculate channel and
+ * rate based on Maximum that source can compute, letter
+ * with respect to sink's maximum channel capacity, calibrate
+ * supportive rates.
+ */
+ if (calibration_required) {
+ channel_count = channel;
+ for (index = 0; index < ARRAY_SIZE(rate); index++) {
+ audio_req_bandwidth = calc_audio_bw(channel_count,
+ rate[index]);
+ if (audio_req_bandwidth < available_blank_bandwidth) {
+ pipe_config->audio.max_rate = rate[index];
+ pipe_config->audio.max_channel_count = channel_count;
+ return;
+ }
+ }
+ } else {
+ for (channel_count = channel; channel_count > 0; channel_count--) {
+ for (index = 0; index < ARRAY_SIZE(rate); index++) {
+ audio_req_bandwidth = calc_audio_bw(channel_count, rate[index]);
+ if (audio_req_bandwidth < available_blank_bandwidth) {
+ pipe_config->audio.max_rate = rate[index];
+ pipe_config->audio.max_channel_count = channel_count;
+ return;
+ }
+ }
+ }
+ }
+
+ pipe_config->audio.max_rate = 0;
+ pipe_config->audio.max_channel_count = 0;
+}
+
+static int get_supported_freq_mask(struct intel_crtc_state *crtc_state)
+{
+ int rate[] = { 32000, 44100, 48000, 88200, 96000, 176400, 192000 };
+ int mask = 0, index;
+
+ for (index = 0; index < ARRAY_SIZE(rate); index++) {
+ if (rate[index] > crtc_state->audio.max_rate)
+ break;
+
+ mask |= 1 << index;
+
+ if (crtc_state->audio.max_rate != rate[index])
+ continue;
+ }
+
+ return mask;
+}
+
+static void intel_audio_compute_eld(struct intel_crtc_state *crtc_state)
+{
+ struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
+ u8 *eld, *sad;
+ int index, mask = 0;
+
+ eld = crtc_state->eld;
+ if (!eld)
+ return;
+
+ sad = drm_extract_sad_from_eld(eld);
+ if (!sad)
+ return;
+
+ calc_and_calibrate_audio_config_params(crtc_state, MAX_CHANNEL_COUNT,
+ false);
+
+ mask = get_supported_freq_mask(crtc_state);
+ for (index = 0; index < drm_eld_sad_count(eld); index++, sad += 3) {
+ /*
+ * Respect source restricitions. Limit capabilities to a subset that is
+ * supported both by the source and the sink.
+ */
+ if (sad_to_channels(sad) >= crtc_state->audio.max_channel_count) {
+ sad[0] &= ~ELD_SAD_CHANNELS_MASK;
+ sad[0] |= crtc_state->audio.max_channel_count - 1;
+ drm_dbg_kms(&i915->drm, "Channel count is limited to %d\n",
+ crtc_state->audio.max_channel_count - 1);
+ } else {
+ /*
+ * calibrate rate when, sink supported channel
+ * count is slight less than max supported
+ * channel count.
+ */
+ calc_and_calibrate_audio_config_params(crtc_state,
+ sad_to_channels(sad),
+ true);
+ mask = get_supported_freq_mask(crtc_state);
+ }
+
+ sad[1] &= mask;
+ }
+}
+
bool intel_audio_compute_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state,
struct drm_connector_state *conn_state)
@@ -791,6 +916,8 @@ bool intel_audio_compute_config(struct intel_encoder *encoder,
crtc_state->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
+ intel_audio_compute_eld(crtc_state);
+
return true;
}
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index ebd147180a6e..8815837a95a6 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1131,6 +1131,12 @@ struct intel_crtc_state {
struct {
bool has_audio;
+
+ /* Audio rate in Hz */
+ int max_rate;
+
+ /* Number of audio channels */
+ int max_channel_count;
} audio;
/*
--
2.25.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Get optimal audio frequency and channels (rev10)
2023-08-21 16:00 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
` (2 preceding siblings ...)
2023-08-21 16:00 ` [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize HDMI audio capabilities Mitul Golani
@ 2023-08-21 21:58 ` Patchwork
2023-08-21 21:58 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
` (2 subsequent siblings)
6 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-08-21 21:58 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar; +Cc: intel-gfx
== Series Details ==
Series: Get optimal audio frequency and channels (rev10)
URL : https://patchwork.freedesktop.org/series/119121/
State : warning
== Summary ==
Error: dim checkpatch failed
/home/kbuild2/linux/maintainer-tools/dim: line 50: /home/kbuild2/.dimrc: No such file or directory
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Get optimal audio frequency and channels (rev10)
2023-08-21 16:00 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
` (3 preceding siblings ...)
2023-08-21 21:58 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Get optimal audio frequency and channels (rev10) Patchwork
@ 2023-08-21 21:58 ` Patchwork
2023-08-21 22:13 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-08-22 1:05 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
6 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-08-21 21:58 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar; +Cc: intel-gfx
== Series Details ==
Series: Get optimal audio frequency and channels (rev10)
URL : https://patchwork.freedesktop.org/series/119121/
State : warning
== Summary ==
Error: dim sparse failed
/home/kbuild2/linux/maintainer-tools/dim: line 50: /home/kbuild2/.dimrc: No such file or directory
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for Get optimal audio frequency and channels (rev10)
2023-08-21 16:00 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
` (4 preceding siblings ...)
2023-08-21 21:58 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
@ 2023-08-21 22:13 ` Patchwork
2023-08-22 1:05 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
6 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-08-21 22:13 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 10625 bytes --]
== Series Details ==
Series: Get optimal audio frequency and channels (rev10)
URL : https://patchwork.freedesktop.org/series/119121/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_13541 -> Patchwork_119121v10
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/index.html
Participating hosts (39 -> 38)
------------------------------
Additional (1): bat-mtlp-6
Missing (2): bat-dg2-9 fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_119121v10 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@debugfs_test@basic-hwmon:
- bat-mtlp-6: NOTRUN -> [SKIP][1] ([i915#7456])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@debugfs_test@basic-hwmon.html
* igt@fbdev@info:
- bat-mtlp-6: NOTRUN -> [SKIP][2] ([i915#1849] / [i915#2582])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@fbdev@info.html
* igt@fbdev@write:
- bat-mtlp-6: NOTRUN -> [SKIP][3] ([i915#2582]) +3 similar issues
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@fbdev@write.html
* igt@gem_lmem_swapping@verify-random:
- bat-mtlp-6: NOTRUN -> [SKIP][4] ([i915#4613]) +3 similar issues
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@gem_lmem_swapping@verify-random.html
* igt@gem_mmap@basic:
- bat-mtlp-6: NOTRUN -> [SKIP][5] ([i915#4083])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@gem_mmap@basic.html
* igt@gem_tiled_blits@basic:
- bat-mtlp-6: NOTRUN -> [SKIP][6] ([i915#4077]) +2 similar issues
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@gem_tiled_blits@basic.html
* igt@gem_tiled_pread_basic:
- bat-mtlp-6: NOTRUN -> [SKIP][7] ([i915#4079]) +1 similar issue
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@gem_tiled_pread_basic.html
* igt@i915_pm_backlight@basic-brightness:
- bat-mtlp-6: NOTRUN -> [SKIP][8] ([i915#3546])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@i915_pm_backlight@basic-brightness.html
* igt@i915_pm_rps@basic-api:
- bat-mtlp-6: NOTRUN -> [SKIP][9] ([i915#6621])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@i915_pm_rps@basic-api.html
* igt@i915_selftest@live@mman:
- bat-rpls-2: [PASS][10] -> [TIMEOUT][11] ([i915#6794] / [i915#7392])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/bat-rpls-2/igt@i915_selftest@live@mman.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-rpls-2/igt@i915_selftest@live@mman.html
* igt@i915_selftest@live@workarounds:
- bat-dg1-5: [PASS][12] -> [ABORT][13] ([i915#4983])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/bat-dg1-5/igt@i915_selftest@live@workarounds.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-dg1-5/igt@i915_selftest@live@workarounds.html
* igt@i915_suspend@basic-s2idle-without-i915:
- bat-rpls-2: [PASS][14] -> [WARN][15] ([i915#8747])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/bat-rpls-2/igt@i915_suspend@basic-s2idle-without-i915.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-rpls-2/igt@i915_suspend@basic-s2idle-without-i915.html
* igt@i915_suspend@basic-s3-without-i915:
- bat-mtlp-6: NOTRUN -> [SKIP][16] ([i915#6645])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@i915_suspend@basic-s3-without-i915.html
* igt@kms_addfb_basic@addfb25-x-tiled-legacy:
- bat-mtlp-6: NOTRUN -> [SKIP][17] ([i915#4212]) +8 similar issues
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-mtlp-6: NOTRUN -> [SKIP][18] ([i915#5190])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- bat-mtlp-6: NOTRUN -> [SKIP][19] ([i915#1845]) +11 similar issues
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
* igt@kms_flip@basic-flip-vs-dpms:
- bat-mtlp-6: NOTRUN -> [SKIP][20] ([i915#3637]) +3 similar issues
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_flip@basic-flip-vs-dpms.html
* igt@kms_force_connector_basic@force-load-detect:
- bat-mtlp-6: NOTRUN -> [SKIP][21] ([fdo#109285])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_force_connector_basic@prune-stale-modes:
- bat-mtlp-6: NOTRUN -> [SKIP][22] ([i915#5274])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_force_connector_basic@prune-stale-modes.html
* igt@kms_frontbuffer_tracking@basic:
- bat-mtlp-6: NOTRUN -> [SKIP][23] ([i915#4342])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_frontbuffer_tracking@basic.html
* igt@kms_pipe_crc_basic@suspend-read-crc:
- bat-mtlp-6: NOTRUN -> [SKIP][24] ([i915#1845] / [i915#4078]) +4 similar issues
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_pipe_crc_basic@suspend-read-crc.html
* igt@kms_psr@cursor_plane_move:
- bat-mtlp-6: NOTRUN -> [SKIP][25] ([i915#1072]) +3 similar issues
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_psr@cursor_plane_move.html
* igt@kms_setmode@basic-clone-single-crtc:
- bat-mtlp-6: NOTRUN -> [SKIP][26] ([i915#8809])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@kms_setmode@basic-clone-single-crtc.html
* igt@prime_vgem@basic-fence-flip:
- bat-mtlp-6: NOTRUN -> [SKIP][27] ([i915#1845] / [i915#3708])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@prime_vgem@basic-fence-flip.html
* igt@prime_vgem@basic-fence-mmap:
- bat-mtlp-6: NOTRUN -> [SKIP][28] ([i915#3708] / [i915#4077]) +1 similar issue
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@prime_vgem@basic-fence-mmap.html
* igt@prime_vgem@basic-write:
- bat-mtlp-6: NOTRUN -> [SKIP][29] ([i915#3708]) +2 similar issues
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-mtlp-6/igt@prime_vgem@basic-write.html
#### Warnings ####
* igt@core_auth@basic-auth:
- bat-adlp-11: [ABORT][30] ([i915#4423] / [i915#9164]) -> [ABORT][31] ([i915#9164])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/bat-adlp-11/igt@core_auth@basic-auth.html
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-adlp-11/igt@core_auth@basic-auth.html
* igt@kms_psr@primary_page_flip:
- bat-rplp-1: [SKIP][32] ([i915#1072]) -> [ABORT][33] ([i915#8442] / [i915#8668] / [i915#8860])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/bat-rplp-1/igt@kms_psr@primary_page_flip.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/bat-rplp-1/igt@kms_psr@primary_page_flip.html
[fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
[i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
[i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
[i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
[i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
[i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
[i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
[i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
[i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
[i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
[i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
[i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
[i915#4342]: https://gitlab.freedesktop.org/drm/intel/issues/4342
[i915#4423]: https://gitlab.freedesktop.org/drm/intel/issues/4423
[i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
[i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
[i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
[i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
[i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645
[i915#6794]: https://gitlab.freedesktop.org/drm/intel/issues/6794
[i915#7392]: https://gitlab.freedesktop.org/drm/intel/issues/7392
[i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456
[i915#8442]: https://gitlab.freedesktop.org/drm/intel/issues/8442
[i915#8668]: https://gitlab.freedesktop.org/drm/intel/issues/8668
[i915#8747]: https://gitlab.freedesktop.org/drm/intel/issues/8747
[i915#8809]: https://gitlab.freedesktop.org/drm/intel/issues/8809
[i915#8860]: https://gitlab.freedesktop.org/drm/intel/issues/8860
[i915#9164]: https://gitlab.freedesktop.org/drm/intel/issues/9164
Build changes
-------------
* Linux: CI_DRM_13541 -> Patchwork_119121v10
CI-20190529: 20190529
CI_DRM_13541: 035b310211a224d37e0968584c01c91f4581f037 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7448: 84aa6d50648d9349fb4f1520f37e5374908c9f4d @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_119121v10: 035b310211a224d37e0968584c01c91f4581f037 @ git://anongit.freedesktop.org/gfx-ci/linux
### Linux commits
c8e2f74c79e1 drm/i915/display: Configure and initialize HDMI audio capabilities
35679435469d drm: Add Wrapper Functions for ELD SAD Extraction
f8eba5930536 drm/i915: Add has_audio to separate audio parameter in crtc_state
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/index.html
[-- Attachment #2: Type: text/html, Size: 12479 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for Get optimal audio frequency and channels (rev10)
2023-08-21 16:00 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
` (5 preceding siblings ...)
2023-08-21 22:13 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
@ 2023-08-22 1:05 ` Patchwork
6 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-08-22 1:05 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 45391 bytes --]
== Series Details ==
Series: Get optimal audio frequency and channels (rev10)
URL : https://patchwork.freedesktop.org/series/119121/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_13541_full -> Patchwork_119121v10_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/index.html
Participating hosts (9 -> 9)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in Patchwork_119121v10_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@object-reloc-keep-cache:
- shard-dg2: NOTRUN -> [SKIP][1] ([i915#8411])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@api_intel_bb@object-reloc-keep-cache.html
* igt@drm_buddy@drm_buddy_test:
- shard-snb: NOTRUN -> [SKIP][2] ([fdo#109271] / [i915#8661])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-snb4/igt@drm_buddy@drm_buddy_test.html
* igt@drm_fdinfo@virtual-busy-idle:
- shard-dg2: NOTRUN -> [SKIP][3] ([i915#8414])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@drm_fdinfo@virtual-busy-idle.html
* igt@gem_ccs@block-multicopy-compressed:
- shard-mtlp: NOTRUN -> [SKIP][4] ([i915#5325])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-6/igt@gem_ccs@block-multicopy-compressed.html
* igt@gem_ctx_persistence@heartbeat-stop:
- shard-dg2: NOTRUN -> [SKIP][5] ([i915#8555])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-11/igt@gem_ctx_persistence@heartbeat-stop.html
* igt@gem_ctx_persistence@hostile:
- shard-snb: NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#1099]) +1 similar issue
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-snb4/igt@gem_ctx_persistence@hostile.html
* igt@gem_eio@banned:
- shard-mtlp: [PASS][7] -> [FAIL][8] ([i915#8798])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-1/igt@gem_eio@banned.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-3/igt@gem_eio@banned.html
* igt@gem_eio@hibernate:
- shard-dg1: [PASS][9] -> [ABORT][10] ([i915#7975] / [i915#8213])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg1-19/igt@gem_eio@hibernate.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg1-14/igt@gem_eio@hibernate.html
* igt@gem_eio@in-flight-contexts-10ms:
- shard-mtlp: [PASS][11] -> [ABORT][12] ([i915#7941])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-4/igt@gem_eio@in-flight-contexts-10ms.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-1/igt@gem_eio@in-flight-contexts-10ms.html
* igt@gem_eio@kms:
- shard-glk: [PASS][13] -> [FAIL][14] ([i915#8764])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-glk2/igt@gem_eio@kms.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-glk9/igt@gem_eio@kms.html
* igt@gem_exec_balancer@bonded-dual:
- shard-dg2: NOTRUN -> [SKIP][15] ([i915#4771])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@gem_exec_balancer@bonded-dual.html
* igt@gem_exec_capture@capture-invisible@lmem0:
- shard-dg2: NOTRUN -> [SKIP][16] ([i915#6334]) +1 similar issue
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@gem_exec_capture@capture-invisible@lmem0.html
* igt@gem_exec_capture@pi@bcs0:
- shard-mtlp: [PASS][17] -> [FAIL][18] ([i915#4475] / [i915#7765])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-2/igt@gem_exec_capture@pi@bcs0.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-7/igt@gem_exec_capture@pi@bcs0.html
* igt@gem_exec_fair@basic-flow@rcs0:
- shard-tglu: [PASS][19] -> [FAIL][20] ([i915#2842])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-tglu-5/igt@gem_exec_fair@basic-flow@rcs0.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-tglu-7/igt@gem_exec_fair@basic-flow@rcs0.html
* igt@gem_exec_fair@basic-none-share:
- shard-dg2: NOTRUN -> [SKIP][21] ([i915#3539] / [i915#4852])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@gem_exec_fair@basic-none-share.html
* igt@gem_exec_fair@basic-none@bcs0:
- shard-rkl: [PASS][22] -> [FAIL][23] ([i915#2842]) +1 similar issue
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-rkl-1/igt@gem_exec_fair@basic-none@bcs0.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-4/igt@gem_exec_fair@basic-none@bcs0.html
* igt@gem_exec_fence@syncobj-backward-timeline-chain-engines:
- shard-snb: NOTRUN -> [SKIP][24] ([fdo#109271]) +194 similar issues
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-snb4/igt@gem_exec_fence@syncobj-backward-timeline-chain-engines.html
* igt@gem_exec_reloc@basic-gtt-wc-active:
- shard-dg2: NOTRUN -> [SKIP][25] ([i915#3281]) +3 similar issues
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@gem_exec_reloc@basic-gtt-wc-active.html
* igt@gem_exec_reloc@basic-wc-gtt:
- shard-mtlp: NOTRUN -> [SKIP][26] ([i915#3281]) +1 similar issue
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-6/igt@gem_exec_reloc@basic-wc-gtt.html
* igt@gem_lmem_swapping@heavy-multi:
- shard-apl: NOTRUN -> [SKIP][27] ([fdo#109271] / [i915#4613])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-apl4/igt@gem_lmem_swapping@heavy-multi.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg1: [PASS][28] -> [TIMEOUT][29] ([i915#5493])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg1-15/igt@gem_lmem_swapping@smem-oom@lmem0.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg1-17/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@gem_mmap_gtt@cpuset-big-copy:
- shard-dg2: NOTRUN -> [SKIP][30] ([i915#4077]) +8 similar issues
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@gem_mmap_gtt@cpuset-big-copy.html
* igt@gem_mmap_wc@read-write-distinct:
- shard-dg2: NOTRUN -> [SKIP][31] ([i915#4083]) +1 similar issue
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@gem_mmap_wc@read-write-distinct.html
* igt@gem_pxp@reject-modify-context-protection-off-3:
- shard-dg2: NOTRUN -> [SKIP][32] ([i915#4270]) +2 similar issues
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@gem_pxp@reject-modify-context-protection-off-3.html
* igt@gem_render_copy@yf-tiled-ccs-to-y-tiled:
- shard-dg2: NOTRUN -> [SKIP][33] ([i915#5190]) +4 similar issues
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@gem_render_copy@yf-tiled-ccs-to-y-tiled.html
* igt@gem_userptr_blits@map-fixed-invalidate-busy:
- shard-dg2: NOTRUN -> [SKIP][34] ([i915#3297] / [i915#4880])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
* igt@gem_userptr_blits@unsync-overlap:
- shard-dg2: NOTRUN -> [SKIP][35] ([i915#3297])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@gem_userptr_blits@unsync-overlap.html
* igt@gen9_exec_parse@valid-registers:
- shard-dg2: NOTRUN -> [SKIP][36] ([i915#2856]) +3 similar issues
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@gen9_exec_parse@valid-registers.html
* igt@i915_pipe_stress@stress-xrgb8888-ytiled:
- shard-dg2: NOTRUN -> [SKIP][37] ([i915#7091])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@i915_pipe_stress@stress-xrgb8888-ytiled.html
* igt@i915_pm_backlight@fade:
- shard-dg2: NOTRUN -> [SKIP][38] ([i915#5354] / [i915#7561])
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@i915_pm_backlight@fade.html
* igt@i915_pm_rpm@dpms-mode-unset-lpsp:
- shard-dg2: [PASS][39] -> [SKIP][40] ([i915#1397])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg2-12/igt@i915_pm_rpm@dpms-mode-unset-lpsp.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-11/igt@i915_pm_rpm@dpms-mode-unset-lpsp.html
* igt@i915_pm_rpm@modeset-non-lpsp-stress:
- shard-dg2: NOTRUN -> [SKIP][41] ([i915#1397])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@i915_pm_rpm@modeset-non-lpsp-stress.html
- shard-rkl: [PASS][42] -> [SKIP][43] ([i915#1397]) +1 similar issue
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-rkl-4/igt@i915_pm_rpm@modeset-non-lpsp-stress.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-7/igt@i915_pm_rpm@modeset-non-lpsp-stress.html
* igt@i915_pm_rpm@modeset-pc8-residency-stress:
- shard-dg2: NOTRUN -> [SKIP][44] ([fdo#109506])
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@i915_pm_rpm@modeset-pc8-residency-stress.html
* igt@i915_pm_rps@min-max-config-idle:
- shard-dg2: NOTRUN -> [SKIP][45] ([i915#6621])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@i915_pm_rps@min-max-config-idle.html
* igt@i915_pm_rps@thresholds-idle@gt0:
- shard-dg2: NOTRUN -> [SKIP][46] ([i915#8925])
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@i915_pm_rps@thresholds-idle@gt0.html
* igt@i915_query@query-topology-coherent-slice-mask:
- shard-dg2: NOTRUN -> [SKIP][47] ([i915#6188])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@i915_query@query-topology-coherent-slice-mask.html
* igt@kms_addfb_basic@framebuffer-vs-set-tiling:
- shard-dg2: NOTRUN -> [SKIP][48] ([i915#4212])
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
* igt@kms_async_flips@alternate-sync-async-flip@pipe-b-edp-1:
- shard-mtlp: [PASS][49] -> [FAIL][50] ([i915#2521])
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-5/igt@kms_async_flips@alternate-sync-async-flip@pipe-b-edp-1.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-2/igt@kms_async_flips@alternate-sync-async-flip@pipe-b-edp-1.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-2-y-rc_ccs:
- shard-rkl: NOTRUN -> [SKIP][51] ([i915#8502]) +3 similar issues
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-1/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-2-y-rc_ccs.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-4-mc_ccs:
- shard-dg2: NOTRUN -> [SKIP][52] ([i915#8502] / [i915#8709]) +11 similar issues
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-1/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-4-mc_ccs.html
* igt@kms_async_flips@crc@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [FAIL][53] ([i915#8247]) +3 similar issues
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-6/igt@kms_async_flips@crc@pipe-a-hdmi-a-3.html
* igt@kms_async_flips@crc@pipe-b-vga-1:
- shard-snb: NOTRUN -> [FAIL][54] ([i915#8247]) +1 similar issue
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-snb7/igt@kms_async_flips@crc@pipe-b-vga-1.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-90:
- shard-apl: NOTRUN -> [SKIP][55] ([fdo#109271]) +58 similar issues
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-apl4/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@4-tiled-8bpp-rotate-90:
- shard-mtlp: NOTRUN -> [SKIP][56] ([fdo#111614])
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-3/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-mtlp: [PASS][57] -> [FAIL][58] ([i915#3743])
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-mtlp: [PASS][59] -> [FAIL][60] ([i915#5138])
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@x-tiled-32bpp-rotate-270:
- shard-dg2: NOTRUN -> [SKIP][61] ([fdo#111614]) +2 similar issues
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0:
- shard-dg2: NOTRUN -> [SKIP][62] ([i915#4538] / [i915#5190]) +3 similar issues
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0.html
* igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs:
- shard-mtlp: NOTRUN -> [SKIP][63] ([i915#3886] / [i915#6095])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-6/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs.html
* igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc:
- shard-apl: NOTRUN -> [SKIP][64] ([fdo#109271] / [i915#3886]) +1 similar issue
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-apl4/igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc.html
* igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc:
- shard-dg2: NOTRUN -> [SKIP][65] ([i915#3689] / [i915#3886] / [i915#5354]) +2 similar issues
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc.html
* igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs:
- shard-dg2: NOTRUN -> [SKIP][66] ([i915#3689] / [i915#5354]) +10 similar issues
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-mtlp: NOTRUN -> [SKIP][67] ([i915#7213] / [i915#9010])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-3/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][68] ([i915#4087]) +3 similar issues
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3.html
* igt@kms_chamelium_color@ctm-negative:
- shard-dg2: NOTRUN -> [SKIP][69] ([fdo#111827])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_chamelium_color@ctm-negative.html
* igt@kms_chamelium_hpd@dp-hpd-after-suspend:
- shard-dg2: NOTRUN -> [SKIP][70] ([i915#7828]) +4 similar issues
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
* igt@kms_content_protection@atomic@pipe-a-dp-2:
- shard-dg2: NOTRUN -> [TIMEOUT][71] ([i915#7173])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_content_protection@atomic@pipe-a-dp-2.html
* igt@kms_content_protection@dp-mst-type-1:
- shard-dg2: NOTRUN -> [SKIP][72] ([i915#3299])
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_content_protection@dp-mst-type-1.html
* igt@kms_content_protection@lic:
- shard-dg2: NOTRUN -> [SKIP][73] ([i915#7118])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-6/igt@kms_content_protection@lic.html
* igt@kms_content_protection@uevent@pipe-a-dp-4:
- shard-dg2: NOTRUN -> [FAIL][74] ([i915#1339])
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-11/igt@kms_content_protection@uevent@pipe-a-dp-4.html
* igt@kms_cursor_crc@cursor-onscreen-512x512:
- shard-mtlp: NOTRUN -> [SKIP][75] ([i915#3359])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-3/igt@kms_cursor_crc@cursor-onscreen-512x512.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-dg2: NOTRUN -> [SKIP][76] ([i915#3359])
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size:
- shard-dg2: NOTRUN -> [SKIP][77] ([fdo#109274] / [i915#5354]) +1 similar issue
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-apl: [PASS][78] -> [FAIL][79] ([i915#2346])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-apl7/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-apl2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-glk: [PASS][80] -> [FAIL][81] ([i915#2346])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][82] ([i915#3804])
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-7/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html
* igt@kms_fence_pin_leak:
- shard-dg2: NOTRUN -> [SKIP][83] ([i915#4881])
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_fence_pin_leak.html
* igt@kms_flip@2x-dpms-vs-vblank-race:
- shard-dg2: NOTRUN -> [SKIP][84] ([fdo#109274]) +3 similar issues
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-11/igt@kms_flip@2x-dpms-vs-vblank-race.html
* igt@kms_flip@2x-flip-vs-rmfb-interruptible:
- shard-apl: NOTRUN -> [SKIP][85] ([fdo#109271] / [fdo#111767])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-apl4/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html
* igt@kms_flip@2x-plain-flip-fb-recreate@ab-hdmi-a1-hdmi-a2:
- shard-glk: [PASS][86] -> [FAIL][87] ([i915#2122])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-glk2/igt@kms_flip@2x-plain-flip-fb-recreate@ab-hdmi-a1-hdmi-a2.html
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-glk1/igt@kms_flip@2x-plain-flip-fb-recreate@ab-hdmi-a1-hdmi-a2.html
* igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
- shard-snb: NOTRUN -> [DMESG-WARN][88] ([i915#8841]) +2 similar issues
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-snb1/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][89] ([i915#2672]) +3 similar issues
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_tiling@flip-change-tiling@edp-1-pipe-b-4-rc_ccs-to-4-rc_ccs-cc:
- shard-mtlp: [PASS][90] -> [FAIL][91] ([i915#9056]) +3 similar issues
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-5/igt@kms_flip_tiling@flip-change-tiling@edp-1-pipe-b-4-rc_ccs-to-4-rc_ccs-cc.html
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-8/igt@kms_flip_tiling@flip-change-tiling@edp-1-pipe-b-4-rc_ccs-to-4-rc_ccs-cc.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-blt:
- shard-mtlp: NOTRUN -> [SKIP][92] ([i915#1825])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt:
- shard-dg2: NOTRUN -> [SKIP][93] ([i915#5354]) +21 similar issues
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt:
- shard-dg2: NOTRUN -> [SKIP][94] ([i915#3458]) +11 similar issues
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt:
- shard-mtlp: NOTRUN -> [SKIP][95] ([i915#8708])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-farfromfence-mmap-gtt:
- shard-dg2: NOTRUN -> [SKIP][96] ([i915#8708]) +7 similar issues
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_frontbuffer_tracking@psr-farfromfence-mmap-gtt.html
* igt@kms_hdr@bpc-switch:
- shard-dg2: NOTRUN -> [SKIP][97] ([i915#3555] / [i915#8228]) +1 similar issue
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-6/igt@kms_hdr@bpc-switch.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-rkl: NOTRUN -> [SKIP][98] ([i915#3555] / [i915#8228])
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-7/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-4:
- shard-dg2: NOTRUN -> [FAIL][99] ([fdo#103375])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-11/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-4.html
* igt@kms_plane_scaling@intel-max-src-size:
- shard-dg2: NOTRUN -> [SKIP][100] ([i915#6953])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-6/igt@kms_plane_scaling@intel-max-src-size.html
* igt@kms_plane_scaling@plane-downscale-with-modifiers-factor-0-25@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][101] ([i915#5176]) +3 similar issues
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-7/igt@kms_plane_scaling@plane-downscale-with-modifiers-factor-0-25@pipe-b-hdmi-a-1.html
* igt@kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-25@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][102] ([i915#5176]) +7 similar issues
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-8/igt@kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-25@pipe-a-hdmi-a-3.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][103] ([i915#5176]) +3 similar issues
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg1-16/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-a-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][104] ([i915#5235]) +3 similar issues
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg1-14/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-a-hdmi-a-4.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-d-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][105] ([i915#5235]) +15 similar issues
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-1/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-d-hdmi-a-3.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][106] ([i915#5235]) +7 similar issues
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-4/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b-hdmi-a-2.html
* igt@kms_psr2_su@page_flip-p010:
- shard-dg2: NOTRUN -> [SKIP][107] ([i915#658]) +2 similar issues
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_psr2_su@page_flip-p010.html
* igt@kms_psr@psr2_cursor_mmap_gtt:
- shard-dg2: NOTRUN -> [SKIP][108] ([i915#1072]) +2 similar issues
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-11/igt@kms_psr@psr2_cursor_mmap_gtt.html
* igt@kms_rotation_crc@primary-rotation-270:
- shard-mtlp: NOTRUN -> [SKIP][109] ([i915#4235])
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-3/igt@kms_rotation_crc@primary-rotation-270.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-270:
- shard-dg2: NOTRUN -> [SKIP][110] ([i915#4235] / [i915#5190])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html
* igt@kms_scaling_modes@scaling-mode-none:
- shard-dg2: NOTRUN -> [SKIP][111] ([i915#3555]) +1 similar issue
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@kms_scaling_modes@scaling-mode-none.html
* igt@kms_selftest@drm_format:
- shard-apl: NOTRUN -> [SKIP][112] ([fdo#109271] / [i915#8661]) +1 similar issue
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-apl4/igt@kms_selftest@drm_format.html
* igt@kms_selftest@drm_plane:
- shard-dg2: NOTRUN -> [SKIP][113] ([i915#8661])
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_selftest@drm_plane.html
* igt@kms_sysfs_edid_timing:
- shard-dg2: [PASS][114] -> [FAIL][115] ([IGT#2])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg2-12/igt@kms_sysfs_edid_timing.html
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-6/igt@kms_sysfs_edid_timing.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-dg2: NOTRUN -> [SKIP][116] ([i915#8623])
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_vblank@pipe-b-ts-continuation-suspend:
- shard-dg2: [PASS][117] -> [FAIL][118] ([fdo#103375]) +1 similar issue
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg2-12/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-11/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
* igt@perf_pmu@frequency@gt0:
- shard-dg2: NOTRUN -> [FAIL][119] ([i915#6806])
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@perf_pmu@frequency@gt0.html
* igt@v3d/v3d_submit_csd@bad-extension:
- shard-mtlp: NOTRUN -> [SKIP][120] ([i915#2575])
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-3/igt@v3d/v3d_submit_csd@bad-extension.html
* igt@v3d/v3d_submit_csd@single-out-sync:
- shard-dg2: NOTRUN -> [SKIP][121] ([i915#2575]) +4 similar issues
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-12/igt@v3d/v3d_submit_csd@single-out-sync.html
* igt@vc4/vc4_create_bo@create-bo-4096:
- shard-dg2: NOTRUN -> [SKIP][122] ([i915#7711]) +4 similar issues
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-3/igt@vc4/vc4_create_bo@create-bo-4096.html
#### Possible fixes ####
* igt@gem_eio@unwedge-stress:
- shard-dg1: [FAIL][123] ([i915#5784]) -> [PASS][124] +1 similar issue
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg1-16/igt@gem_eio@unwedge-stress.html
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg1-12/igt@gem_eio@unwedge-stress.html
* igt@gem_exec_capture@pi@rcs0:
- shard-mtlp: [FAIL][125] ([i915#4475]) -> [PASS][126]
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-2/igt@gem_exec_capture@pi@rcs0.html
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-7/igt@gem_exec_capture@pi@rcs0.html
* igt@gem_exec_fair@basic-pace-share@rcs0:
- shard-tglu: [FAIL][127] ([i915#2842]) -> [PASS][128]
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-tglu-5/igt@gem_exec_fair@basic-pace-share@rcs0.html
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-tglu-4/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@gem_exec_fair@basic-pace-solo@rcs0:
- shard-glk: [FAIL][129] ([i915#2842]) -> [PASS][130]
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-glk4/igt@gem_exec_fair@basic-pace-solo@rcs0.html
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-glk5/igt@gem_exec_fair@basic-pace-solo@rcs0.html
* igt@gem_exec_schedule@noreorder@bcs0:
- shard-mtlp: [DMESG-FAIL][131] ([i915#9121]) -> [PASS][132] +1 similar issue
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-4/igt@gem_exec_schedule@noreorder@bcs0.html
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-6/igt@gem_exec_schedule@noreorder@bcs0.html
* igt@gem_exec_schedule@noreorder@vcs0:
- shard-mtlp: [FAIL][133] -> [PASS][134]
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-4/igt@gem_exec_schedule@noreorder@vcs0.html
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-6/igt@gem_exec_schedule@noreorder@vcs0.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg2: [TIMEOUT][135] ([i915#5493]) -> [PASS][136]
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg2-6/igt@gem_lmem_swapping@smem-oom@lmem0.html
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-1/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a:
- shard-rkl: [SKIP][137] ([i915#1937]) -> [PASS][138]
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-rkl-4/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-7/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html
* igt@i915_pm_rc6_residency@rc6-idle@bcs0:
- shard-dg1: [FAIL][139] ([i915#3591]) -> [PASS][140]
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg1-17/igt@i915_pm_rc6_residency@rc6-idle@bcs0.html
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg1-19/igt@i915_pm_rc6_residency@rc6-idle@bcs0.html
* igt@i915_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-dg2: [SKIP][141] ([i915#1397]) -> [PASS][142] +1 similar issue
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg2-12/igt@i915_pm_rpm@dpms-mode-unset-non-lpsp.html
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-6/igt@i915_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@i915_pm_rpm@modeset-non-lpsp:
- shard-rkl: [SKIP][143] ([i915#1397]) -> [PASS][144]
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-rkl-7/igt@i915_pm_rpm@modeset-non-lpsp.html
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-1/igt@i915_pm_rpm@modeset-non-lpsp.html
* igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-mtlp: [FAIL][145] ([i915#3743]) -> [PASS][146]
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-1/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-3/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_flip_tiling@flip-change-tiling@edp-1-pipe-b-4-to-x:
- shard-mtlp: [FAIL][147] ([i915#9056]) -> [PASS][148] +6 similar issues
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-5/igt@kms_flip_tiling@flip-change-tiling@edp-1-pipe-b-4-to-x.html
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-8/igt@kms_flip_tiling@flip-change-tiling@edp-1-pipe-b-4-to-x.html
* igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-dp-1:
- shard-apl: [ABORT][149] ([i915#180]) -> [PASS][150]
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-apl1/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-dp-1.html
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-apl4/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-dp-1.html
* igt@perf_pmu@most-busy-idle-check-all@rcs0:
- shard-dg1: [FAIL][151] ([i915#5234]) -> [PASS][152]
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg1-12/igt@perf_pmu@most-busy-idle-check-all@rcs0.html
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg1-12/igt@perf_pmu@most-busy-idle-check-all@rcs0.html
* igt@sysfs_heartbeat_interval@nopreempt@bcs0:
- shard-mtlp: [FAIL][153] ([i915#6015]) -> [PASS][154]
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-5/igt@sysfs_heartbeat_interval@nopreempt@bcs0.html
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-7/igt@sysfs_heartbeat_interval@nopreempt@bcs0.html
#### Warnings ####
* igt@kms_content_protection@mei_interface:
- shard-dg2: [SKIP][155] ([i915#7118] / [i915#7162]) -> [SKIP][156] ([i915#7118])
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg2-12/igt@kms_content_protection@mei_interface.html
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg2-6/igt@kms_content_protection@mei_interface.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-mtlp: [FAIL][157] ([i915#2346]) -> [DMESG-FAIL][158] ([i915#2017] / [i915#5954])
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-mtlp-6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-mtlp-1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_fbcon_fbt@psr:
- shard-rkl: [SKIP][159] ([fdo#110189] / [i915#3955]) -> [SKIP][160] ([i915#3955])
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-rkl-1/igt@kms_fbcon_fbt@psr.html
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-4/igt@kms_fbcon_fbt@psr.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-rkl: [SKIP][161] ([i915#3955]) -> [SKIP][162] ([fdo#110189] / [i915#3955])
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-rkl-7/igt@kms_fbcon_fbt@psr-suspend.html
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-1/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_force_connector_basic@force-load-detect:
- shard-rkl: [SKIP][163] ([fdo#109285] / [i915#4098]) -> [SKIP][164] ([fdo#109285])
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-rkl-2/igt@kms_force_connector_basic@force-load-detect.html
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-rkl-7/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_psr@cursor_plane_move:
- shard-dg1: [SKIP][165] ([i915#1072] / [i915#4078]) -> [SKIP][166] ([i915#1072])
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13541/shard-dg1-16/igt@kms_psr@cursor_plane_move.html
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/shard-dg1-17/igt@kms_psr@cursor_plane_move.html
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
[fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
[fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
[fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
[fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
[fdo#111767]: https://bugs.freedesktop.org/show_bug.cgi?id=111767
[fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
[i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
[i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
[i915#1339]: https://gitlab.freedesktop.org/drm/intel/issues/1339
[i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
[i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937
[i915#2017]: https://gitlab.freedesktop.org/drm/intel/issues/2017
[i915#2122]: https://gitlab.freedesktop.org/drm/intel/issues/2122
[i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
[i915#2521]: https://gitlab.freedesktop.org/drm/intel/issues/2521
[i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
[i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
[i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
[i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
[i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
[i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
[i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
[i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
[i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
[i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
[i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
[i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
[i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
[i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804
[i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
[i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
[i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
[i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
[i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
[i915#4087]: https://gitlab.freedesktop.org/drm/intel/issues/4087
[i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
[i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
[i915#4235]: https://gitlab.freedesktop.org/drm/intel/issues/4235
[i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
[i915#4475]: https://gitlab.freedesktop.org/drm/intel/issues/4475
[i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
[i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
[i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
[i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881
[i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138
[i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
[i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
[i915#5234]: https://gitlab.freedesktop.org/drm/intel/issues/5234
[i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
[i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
[i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
[i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493
[i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
[i915#5954]: https://gitlab.freedesktop.org/drm/intel/issues/5954
[i915#6015]: https://gitlab.freedesktop.org/drm/intel/issues/6015
[i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
[i915#6188]: https://gitlab.freedesktop.org/drm/intel/issues/6188
[i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
[i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
[i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
[i915#6806]: https://gitlab.freedesktop.org/drm/intel/issues/6806
[i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953
[i915#7091]: https://gitlab.freedesktop.org/drm/intel/issues/7091
[i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
[i915#7162]: https://gitlab.freedesktop.org/drm/intel/issues/7162
[i915#7173]: https://gitlab.freedesktop.org/drm/intel/issues/7173
[i915#7213]: https://gitlab.freedesktop.org/drm/intel/issues/7213
[i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
[i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
[i915#7765]: https://gitlab.freedesktop.org/drm/intel/issues/7765
[i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
[i915#7941]: https://gitlab.freedesktop.org/drm/intel/issues/7941
[i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
[i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
[i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
[i915#8247]: https://gitlab.freedesktop.org/drm/intel/issues/8247
[i915#8411]: https://gitlab.freedesktop.org/drm/intel/issues/8411
[i915#8414]: https://gitlab.freedesktop.org/drm/intel/issues/8414
[i915#8502]: https://gitlab.freedesktop.org/drm/intel/issues/8502
[i915#8555]: https://gitlab.freedesktop.org/drm/intel/issues/8555
[i915#8623]: https://gitlab.freedesktop.org/drm/intel/issues/8623
[i915#8661]: https://gitlab.freedesktop.org/drm/intel/issues/8661
[i915#8708]: https://gitlab.freedesktop.org/drm/intel/issues/8708
[i915#8709]: https://gitlab.freedesktop.org/drm/intel/issues/8709
[i915#8764]: https://gitlab.freedesktop.org/drm/intel/issues/8764
[i915#8798]: https://gitlab.freedesktop.org/drm/intel/issues/8798
[i915#8841]: https://gitlab.freedesktop.org/drm/intel/issues/8841
[i915#8925]: https://gitlab.freedesktop.org/drm/intel/issues/8925
[i915#9010]: https://gitlab.freedesktop.org/drm/intel/issues/9010
[i915#9056]: https://gitlab.freedesktop.org/drm/intel/issues/9056
[i915#9121]: https://gitlab.freedesktop.org/drm/intel/issues/9121
Build changes
-------------
* Linux: CI_DRM_13541 -> Patchwork_119121v10
* Piglit: piglit_4509 -> None
CI-20190529: 20190529
CI_DRM_13541: 035b310211a224d37e0968584c01c91f4581f037 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7448: 84aa6d50648d9349fb4f1520f37e5374908c9f4d @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_119121v10: 035b310211a224d37e0968584c01c91f4581f037 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_119121v10/index.html
[-- Attachment #2: Type: text/html, Size: 52901 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-gfx] [PATCH 2/3] drm: Add Wrapper Functions for ELD SAD Extraction
2023-08-21 16:00 ` [Intel-gfx] [PATCH 2/3] drm: Add Wrapper Functions for ELD SAD Extraction Mitul Golani
@ 2023-09-05 6:26 ` Kandpal, Suraj
2023-09-07 9:35 ` Jani Nikula
1 sibling, 0 replies; 15+ messages in thread
From: Kandpal, Suraj @ 2023-09-05 6:26 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar, intel-gfx@lists.freedesktop.org
Cc: Nikula, Jani
> Subject: [Intel-gfx] [PATCH 2/3] drm: Add Wrapper Functions for ELD SAD
> Extraction
>
> Add wrapper functions to facilitate extracting Short Audio Descriptor (SAD)
> information from EDID-Like Data (ELD) pointers with different constness
> requirements.
>
> 1. `drm_eld_sad`: This function returns a constant `uint8_t` pointer and wraps
> the main extraction function, allowing access to SAD information while
> maintaining const correctness.
>
> 2. `drm_extract_sad_from_eld`: This function returns a mutable `uint8_t`
> pointer and implements the core logic for extracting SAD from the provided ELD
> pointer. It performs version and maximum channel checks to ensure proper
> extraction.
>
> These wrapper functions provide flexibility to the codebase, allowing users to
> access SAD information while adhering to const correctness when needed and
> modifying the pointer when required.
>
> Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
This should also be floated in drm-devel mailing list.
> ---
> include/drm/drm_edid.h | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h index
> 48e93f909ef6..626bc0d542eb 100644
> --- a/include/drm/drm_edid.h
> +++ b/include/drm/drm_edid.h
> @@ -418,11 +418,7 @@ static inline int drm_eld_mnl(const uint8_t *eld)
> return (eld[DRM_ELD_CEA_EDID_VER_MNL] &
> DRM_ELD_MNL_MASK) >> DRM_ELD_MNL_SHIFT; }
>
> -/**
> - * drm_eld_sad - Get ELD SAD structures.
> - * @eld: pointer to an eld memory structure with sad_count set
> - */
> -static inline const uint8_t *drm_eld_sad(const uint8_t *eld)
> +static uint8_t *drm_extract_sad_from_eld(uint8_t *eld)
> {
> unsigned int ver, mnl;
>
> @@ -437,6 +433,15 @@ static inline const uint8_t *drm_eld_sad(const uint8_t
> *eld)
> return eld + DRM_ELD_CEA_SAD(mnl, 0);
> }
>
> +/**
> + * drm_eld_sad - Get ELD SAD structures.
> + * @eld: pointer to an eld memory structure with sad_count set */
> +static inline const uint8_t *drm_eld_sad(const uint8_t *eld) {
> + return drm_extract_sad_from_eld((uint8_t *)eld); }
> +
Not sure about the wrapper here the point of the const variable here was we do not want the eld to be changed
but adding a wrapper seems to make it irrelevant
Also why do you want to change pointer data that is a const.
Regards,
Suraj Kandpal
> /**
> * drm_eld_sad_count - Get ELD SAD count.
> * @eld: pointer to an eld memory structure with sad_count set
> --
> 2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize HDMI audio capabilities
2023-08-21 16:00 ` [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize HDMI audio capabilities Mitul Golani
@ 2023-09-05 9:17 ` Kandpal, Suraj
2023-09-06 16:17 ` Golani, Mitulkumar Ajitkumar
0 siblings, 1 reply; 15+ messages in thread
From: Kandpal, Suraj @ 2023-09-05 9:17 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar, intel-gfx@lists.freedesktop.org
Cc: Nikula, Jani
> Subject: [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize HDMI
> audio capabilities
>
> Initialize the source audio capabilities in the crtc_state property, setting them to
Nit: maybe mention the above as intel_crtc_state rather than crtc_state property as
property usually refer to as drm_property and it just seems a little weird to
read. I have seen this in some of your previous patches in this series you can make the
changes there as well.
> their maximum supported values for max_channel and max_rate. This
> initialization enables the calculation of audio source capabilities concerning the
> available mode bandwidth. These capabilities encompass parameters such as
> supported rate and channel configurations.
>
> Additionally, introduces a wrapper function for computing Short Audio
> Descriptors (SADs). The wrapper function incorporates logic for determining
Typo * introduce
> supported rates and channels according to the capabilities of the audio source.
> It returns a set of SADs that are compatible with the audio source's capabilities.
>
> --v1:
> - Refactor max_channel and max_rate to this commit as it is being initialised
> here
> - Remove call for intel_audio_compute_eld to avoid any regression while
> merge. instead call it in different commit when it is defined.
> - Use int instead of unsigned int for max_channel and max_frequecy
> - Update commit message and header
>
> --v2:
> - Use signed instead of unsigned variables.
> - Avoid using magic numbers and give them proper name.
>
> --v3:
> - Move defines to intel_audio.c.
> - use consistent naming convention for rate and channel.
> - declare num_of_channel and aud_rate separately.
> - Declare index value outside of for loop.
> - Move Bandwidth calculation to intel_Audio.c as it is common for both DP and
> HDMI. Also use static.
>
> --v10:
> - Merged patch 2 and 3 to deduplicate function calls.
> - Instead using Calibrate and calculated functions separately, removed code
> duplication and merged functions.[Nikula, Jani]
> - Remove magic value for SAD Channel mask. [Nikula, Jani]
> - Corrected rate values based on HDMI Spec [Nikula, Jani]
> - Update drm function to extract SAD from ELD [Nikula, Jani]
>
> Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_audio.c | 127 ++++++++++++++++++
> .../drm/i915/display/intel_display_types.h | 6 +
> 2 files changed, 133 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_audio.c
> b/drivers/gpu/drm/i915/display/intel_audio.c
> index e20ffc8e9654..2584096d80a4 100644
> --- a/drivers/gpu/drm/i915/display/intel_audio.c
> +++ b/drivers/gpu/drm/i915/display/intel_audio.c
> @@ -64,6 +64,10 @@
> * struct &i915_audio_component_audio_ops @audio_ops is called from i915
> driver.
> */
>
> +#define AUDIO_SAMPLE_CONTAINER_SIZE 32
> +#define MAX_CHANNEL_COUNT 8
> +#define ELD_SAD_CHANNELS_MASK 0x7
Use REG_GENMASK() to create masks should look cleaner
> +
> struct intel_audio_funcs {
> void (*audio_codec_enable)(struct intel_encoder *encoder,
> const struct intel_crtc_state *crtc_state, @@
> -770,6 +774,127 @@ void intel_audio_sdp_split_update(struct intel_encoder
> *encoder,
> crtc_state->sdp_split_enable ?
> AUD_ENABLE_SDP_SPLIT : 0); }
>
> +static int sad_to_channels(const u8 *sad) {
> + return 1 + (sad[0] & 0x7);
I think you missed using your defined mask here;
> +}
> +
> +static int calc_audio_bw(int channel_count, int rate) {
> + int bandwidth = channel_count * rate *
> AUDIO_SAMPLE_CONTAINER_SIZE;
> + return bandwidth;
Why introduce a variable here why not just
return channel_count * rate * AUDIO_SAMPLE_CONTAINER_SIZE;
> +}
> +
> +static void calc_and_calibrate_audio_config_params(struct intel_crtc_state
> *pipe_config,
> + int channel, bool
> calibration_required) {
I think this should have a int type function that returns 0 if max_rate and max_channel_count
are non zero else return -EINVAL
> + struct drm_display_mode *adjusted_mode = &pipe_config-
> >hw.adjusted_mode;
> + int channel_count;
> + int index, rate[] = { 192000, 176400, 96000, 88200, 48000, 44100,
> 32000 };
Where do we get these rate values from.
What if we kept them at crtc_state so these can be update if required.
> + int audio_req_bandwidth, available_blank_bandwidth, vblank, hblank;
> +
> + hblank = adjusted_mode->htotal - adjusted_mode->hdisplay;
> + vblank = adjusted_mode->vtotal - adjusted_mode->vdisplay;
> + available_blank_bandwidth = hblank * vblank *
> + drm_mode_vrefresh(adjusted_mode) * pipe_config->pipe_bpp;
> +
> + /*
> + * Expected calibration of channels and respective rates,
> + * based on MAX_CHANNEL_COUNT. First calculate channel and
> + * rate based on Maximum that source can compute, letter
> + * with respect to sink's maximum channel capacity, calibrate
> + * supportive rates.
Typo: *maximum and *later and *supported
> + */
> + if (calibration_required) {
> + channel_count = channel;
> + for (index = 0; index < ARRAY_SIZE(rate); index++) {
> + audio_req_bandwidth = calc_audio_bw(channel_count,
> + rate[index]);
> + if (audio_req_bandwidth < available_blank_bandwidth)
> {
> + pipe_config->audio.max_rate = rate[index];
> + pipe_config->audio.max_channel_count =
> channel_count;
I think the above lines can be moved to function set_max_rate_and_channel as this is duplicated even in
the else block
> + return;
> + }
> + }
> + } else {
> + for (channel_count = channel; channel_count > 0;
> channel_count--) {
> + for (index = 0; index < ARRAY_SIZE(rate); index++) {
> + audio_req_bandwidth =
> calc_audio_bw(channel_count, rate[index]);
> + if (audio_req_bandwidth <
> available_blank_bandwidth) {
> + pipe_config->audio.max_rate =
> rate[index];
> + pipe_config-
> >audio.max_channel_count = channel_count;
> + return;
> + }
> + }
> + }
> + }
> +
> + pipe_config->audio.max_rate = 0;
> + pipe_config->audio.max_channel_count = 0; }
> +
> +static int get_supported_freq_mask(struct intel_crtc_state *crtc_state)
> +{
> + int rate[] = { 32000, 44100, 48000, 88200, 96000, 176400, 192000 };
So you do use the same array of rates maybe add these in the intel_crtc_state audio
struct and which can be filled in intel_dp_compute_config ,
also mention where we get these rates from.
> + int mask = 0, index;
> +
> + for (index = 0; index < ARRAY_SIZE(rate); index++) {
> + if (rate[index] > crtc_state->audio.max_rate)
> + break;
> +
> + mask |= 1 << index;
> +
> + if (crtc_state->audio.max_rate != rate[index])
> + continue;
Why are the above two lines of code needed?
It's not like there is anything to skip below them.
> + }
> +
> + return mask;
> +}
> +
> +static void intel_audio_compute_eld(struct intel_crtc_state
> +*crtc_state) {
Lets not have this as a void function and lets return the appropriate errors
If required
> + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
> + u8 *eld, *sad;
> + int index, mask = 0;
> +
> + eld = crtc_state->eld;
> + if (!eld)
> + return;
> +
> + sad = drm_extract_sad_from_eld(eld);
> + if (!sad)
> + return;
> +
> + calc_and_calibrate_audio_config_params(crtc_state,
> MAX_CHANNEL_COUNT,
> + false);
> +
> + mask = get_supported_freq_mask(crtc_state);
> + for (index = 0; index < drm_eld_sad_count(eld); index++, sad += 3) {
> + /*
> + * Respect source restricitions. Limit capabilities to a subset
> that is
> + * supported both by the source and the sink.
> + */
> + if (sad_to_channels(sad) >= crtc_state-
> >audio.max_channel_count) {
> + sad[0] &= ~ELD_SAD_CHANNELS_MASK;
> + sad[0] |= crtc_state->audio.max_channel_count - 1;
> + drm_dbg_kms(&i915->drm, "Channel count is limited
> to %d\n",
> + crtc_state->audio.max_channel_count - 1);
> + } else {
> + /*
> + * calibrate rate when, sink supported channel
> + * count is slight less than max supported
Typo: *slightly
Regards,
Suraj Kandpal
> + * channel count.
> + */
> + calc_and_calibrate_audio_config_params(crtc_state,
> +
> sad_to_channels(sad),
> + true);
> + mask = get_supported_freq_mask(crtc_state);
> + }
> +
> + sad[1] &= mask;
> + }
> +}
> +
> bool intel_audio_compute_config(struct intel_encoder *encoder,
> struct intel_crtc_state *crtc_state,
> struct drm_connector_state *conn_state) @@
> -791,6 +916,8 @@ bool intel_audio_compute_config(struct intel_encoder
> *encoder,
>
> crtc_state->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
>
> + intel_audio_compute_eld(crtc_state);
> +
> return true;
> }
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index ebd147180a6e..8815837a95a6 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1131,6 +1131,12 @@ struct intel_crtc_state {
>
> struct {
> bool has_audio;
> +
> + /* Audio rate in Hz */
> + int max_rate;
> +
> + /* Number of audio channels */
> + int max_channel_count;
> } audio;
>
> /*
> --
> 2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize HDMI audio capabilities
2023-09-05 9:17 ` Kandpal, Suraj
@ 2023-09-06 16:17 ` Golani, Mitulkumar Ajitkumar
2023-09-08 8:17 ` Kandpal, Suraj
0 siblings, 1 reply; 15+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2023-09-06 16:17 UTC (permalink / raw)
To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org; +Cc: Nikula, Jani
Hi Suraj,
> -----Original Message-----
> From: Kandpal, Suraj <suraj.kandpal@intel.com>
> Sent: 05 September 2023 14:47
> To: Golani, Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@intel.com>;
> intel-gfx@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>
> Subject: RE: [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize
> HDMI audio capabilities
>
> > Subject: [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and
> > initialize HDMI audio capabilities
> >
> > Initialize the source audio capabilities in the crtc_state property,
> > setting them to
>
> Nit: maybe mention the above as intel_crtc_state rather than crtc_state
> property as property usually refer to as drm_property and it just seems a
> little weird to read. I have seen this in some of your previous patches in this
> series you can make the changes there as well.
>
> > their maximum supported values for max_channel and max_rate. This
> > initialization enables the calculation of audio source capabilities
> > concerning the available mode bandwidth. These capabilities encompass
> > parameters such as supported rate and channel configurations.
> >
> > Additionally, introduces a wrapper function for computing Short Audio
> > Descriptors (SADs). The wrapper function incorporates logic for
> > determining
>
> Typo * introduce
>
> > supported rates and channels according to the capabilities of the audio
> source.
> > It returns a set of SADs that are compatible with the audio source's
> capabilities.
> >
> > --v1:
> > - Refactor max_channel and max_rate to this commit as it is being
> > initialised here
> > - Remove call for intel_audio_compute_eld to avoid any regression
> > while merge. instead call it in different commit when it is defined.
> > - Use int instead of unsigned int for max_channel and max_frequecy
> > - Update commit message and header
> >
> > --v2:
> > - Use signed instead of unsigned variables.
> > - Avoid using magic numbers and give them proper name.
> >
> > --v3:
> > - Move defines to intel_audio.c.
> > - use consistent naming convention for rate and channel.
> > - declare num_of_channel and aud_rate separately.
> > - Declare index value outside of for loop.
> > - Move Bandwidth calculation to intel_Audio.c as it is common for both
> > DP and HDMI. Also use static.
> >
> > --v10:
> > - Merged patch 2 and 3 to deduplicate function calls.
> > - Instead using Calibrate and calculated functions separately, removed
> > code duplication and merged functions.[Nikula, Jani]
> > - Remove magic value for SAD Channel mask. [Nikula, Jani]
> > - Corrected rate values based on HDMI Spec [Nikula, Jani]
> > - Update drm function to extract SAD from ELD [Nikula, Jani]
> >
> > Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_audio.c | 127 ++++++++++++++++++
> > .../drm/i915/display/intel_display_types.h | 6 +
> > 2 files changed, 133 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_audio.c
> > b/drivers/gpu/drm/i915/display/intel_audio.c
> > index e20ffc8e9654..2584096d80a4 100644
> > --- a/drivers/gpu/drm/i915/display/intel_audio.c
> > +++ b/drivers/gpu/drm/i915/display/intel_audio.c
> > @@ -64,6 +64,10 @@
> > * struct &i915_audio_component_audio_ops @audio_ops is called from
> > i915 driver.
> > */
> >
> > +#define AUDIO_SAMPLE_CONTAINER_SIZE 32
> > +#define MAX_CHANNEL_COUNT 8
> > +#define ELD_SAD_CHANNELS_MASK 0x7
>
> Use REG_GENMASK() to create masks should look cleaner
you should use REG_GENMASK when you need to create a bitmask that covers a specific range of bits within a register or variable.
I think If you are defining a simple bitmask like in above example, there's no need to use REG_GENMASK.
> > +
> > struct intel_audio_funcs {
> > void (*audio_codec_enable)(struct intel_encoder *encoder,
> > const struct intel_crtc_state *crtc_state,
> @@
> > -770,6 +774,127 @@ void intel_audio_sdp_split_update(struct
> > intel_encoder *encoder,
> > crtc_state->sdp_split_enable ?
> > AUD_ENABLE_SDP_SPLIT : 0); }
> >
> > +static int sad_to_channels(const u8 *sad) {
> > + return 1 + (sad[0] & 0x7);
>
> I think you missed using your defined mask here;
>
> > +}
> > +
> > +static int calc_audio_bw(int channel_count, int rate) {
> > + int bandwidth = channel_count * rate *
> > AUDIO_SAMPLE_CONTAINER_SIZE;
> > + return bandwidth;
>
> Why introduce a variable here why not just return channel_count * rate *
> AUDIO_SAMPLE_CONTAINER_SIZE;
>
> > +}
> > +
> > +static void calc_and_calibrate_audio_config_params(struct
> > +intel_crtc_state
> > *pipe_config,
> > + int channel, bool
> > calibration_required) {
>
> I think this should have a int type function that returns 0 if max_rate and
> max_channel_count are non zero else return -EINVAL
calc_and_calibrate_audio_config_params does not required to get
failed. If it gets failed as well, we will have to go ahead with the current configs available.
So this function does not require to return EINVAL in case it returns value as 0.
That 0 value itself we will compute.
>
> > + struct drm_display_mode *adjusted_mode = &pipe_config-
> > >hw.adjusted_mode;
> > + int channel_count;
> > + int index, rate[] = { 192000, 176400, 96000, 88200, 48000, 44100,
> > 32000 };
>
> Where do we get these rate values from.
> What if we kept them at crtc_state so these can be update if required.
>
> > + int audio_req_bandwidth, available_blank_bandwidth, vblank,
> hblank;
> > +
> > + hblank = adjusted_mode->htotal - adjusted_mode->hdisplay;
> > + vblank = adjusted_mode->vtotal - adjusted_mode->vdisplay;
> > + available_blank_bandwidth = hblank * vblank *
> > + drm_mode_vrefresh(adjusted_mode) * pipe_config-
> >pipe_bpp;
> > +
> > + /*
> > + * Expected calibration of channels and respective rates,
> > + * based on MAX_CHANNEL_COUNT. First calculate channel and
> > + * rate based on Maximum that source can compute, letter
> > + * with respect to sink's maximum channel capacity, calibrate
> > + * supportive rates.
>
> Typo: *maximum and *later and *supported
>
> > + */
> > + if (calibration_required) {
> > + channel_count = channel;
> > + for (index = 0; index < ARRAY_SIZE(rate); index++) {
> > + audio_req_bandwidth =
> calc_audio_bw(channel_count,
> > + rate[index]);
> > + if (audio_req_bandwidth <
> available_blank_bandwidth)
> > {
> > + pipe_config->audio.max_rate = rate[index];
> > + pipe_config->audio.max_channel_count =
> > channel_count;
>
> I think the above lines can be moved to function set_max_rate_and_channel
> as this is duplicated even in the else block
>
> > + return;
> > + }
> > + }
> > + } else {
> > + for (channel_count = channel; channel_count > 0;
> > channel_count--) {
> > + for (index = 0; index < ARRAY_SIZE(rate); index++) {
> > + audio_req_bandwidth =
> > calc_audio_bw(channel_count, rate[index]);
> > + if (audio_req_bandwidth <
> > available_blank_bandwidth) {
> > + pipe_config->audio.max_rate =
> > rate[index];
> > + pipe_config-
> > >audio.max_channel_count = channel_count;
> > + return;
> > + }
> > + }
> > + }
> > + }
> > +
> > + pipe_config->audio.max_rate = 0;
> > + pipe_config->audio.max_channel_count = 0; }
> > +
> > +static int get_supported_freq_mask(struct intel_crtc_state
> > +*crtc_state) {
> > + int rate[] = { 32000, 44100, 48000, 88200, 96000, 176400, 192000 };
>
> So you do use the same array of rates maybe add these in the
> intel_crtc_state audio struct and which can be filled in
> intel_dp_compute_config , also mention where we get these rates from.
I don't think it's a good idea for this specific case, as we are not going to use it apart from above 2
instances and also these are common sample frequency being used from HDMI and DP spec.
So instead, we can reduce the redundancy. I will push that change with new patch set.
Also, adding max rate and max channel was added considering source restrictions which
we will address. But this rates array will be common to both it seems.
>
> > + int mask = 0, index;
> > +
> > + for (index = 0; index < ARRAY_SIZE(rate); index++) {
> > + if (rate[index] > crtc_state->audio.max_rate)
> > + break;
> > +
> > + mask |= 1 << index;
> > +
> > + if (crtc_state->audio.max_rate != rate[index])
> > + continue;
>
> Why are the above two lines of code needed?
> It's not like there is anything to skip below them.
>
> > + }
> > +
> > + return mask;
> > +}
> > +
> > +static void intel_audio_compute_eld(struct intel_crtc_state
> > +*crtc_state) {
>
> Lets not have this as a void function and lets return the appropriate errors If
> required
>
> > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
> > + u8 *eld, *sad;
> > + int index, mask = 0;
> > +
> > + eld = crtc_state->eld;
> > + if (!eld)
> > + return;
> > +
> > + sad = drm_extract_sad_from_eld(eld);
> > + if (!sad)
> > + return;
> > +
> > + calc_and_calibrate_audio_config_params(crtc_state,
> > MAX_CHANNEL_COUNT,
> > + false);
> > +
> > + mask = get_supported_freq_mask(crtc_state);
> > + for (index = 0; index < drm_eld_sad_count(eld); index++, sad += 3) {
> > + /*
> > + * Respect source restricitions. Limit capabilities to a subset
> > that is
> > + * supported both by the source and the sink.
> > + */
> > + if (sad_to_channels(sad) >= crtc_state-
> > >audio.max_channel_count) {
> > + sad[0] &= ~ELD_SAD_CHANNELS_MASK;
> > + sad[0] |= crtc_state->audio.max_channel_count - 1;
> > + drm_dbg_kms(&i915->drm, "Channel count is limited
> > to %d\n",
> > + crtc_state->audio.max_channel_count - 1);
> > + } else {
> > + /*
> > + * calibrate rate when, sink supported channel
> > + * count is slight less than max supported
>
> Typo: *slightly
>
> Regards,
> Suraj Kandpal
> > + * channel count.
> > + */
> > + calc_and_calibrate_audio_config_params(crtc_state,
> > +
> > sad_to_channels(sad),
> > + true);
> > + mask = get_supported_freq_mask(crtc_state);
> > + }
> > +
> > + sad[1] &= mask;
> > + }
> > +}
> > +
> > bool intel_audio_compute_config(struct intel_encoder *encoder,
> > struct intel_crtc_state *crtc_state,
> > struct drm_connector_state *conn_state)
> @@
> > -791,6 +916,8 @@ bool intel_audio_compute_config(struct intel_encoder
> > *encoder,
> >
> > crtc_state->eld[6] = drm_av_sync_delay(connector, adjusted_mode)
> /
> > 2;
> >
> > + intel_audio_compute_eld(crtc_state);
> > +
> > return true;
> > }
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > index ebd147180a6e..8815837a95a6 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > @@ -1131,6 +1131,12 @@ struct intel_crtc_state {
> >
> > struct {
> > bool has_audio;
> > +
> > + /* Audio rate in Hz */
> > + int max_rate;
> > +
> > + /* Number of audio channels */
> > + int max_channel_count;
> > } audio;
> >
> > /*
> > --
> > 2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-gfx] [PATCH 2/3] drm: Add Wrapper Functions for ELD SAD Extraction
2023-08-21 16:00 ` [Intel-gfx] [PATCH 2/3] drm: Add Wrapper Functions for ELD SAD Extraction Mitul Golani
2023-09-05 6:26 ` Kandpal, Suraj
@ 2023-09-07 9:35 ` Jani Nikula
1 sibling, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2023-09-07 9:35 UTC (permalink / raw)
To: Mitul Golani, intel-gfx; +Cc: dri-devel
On Mon, 21 Aug 2023, Mitul Golani <mitulkumar.ajitkumar.golani@intel.com> wrote:
> Add wrapper functions to facilitate extracting Short Audio
> Descriptor (SAD) information from EDID-Like Data (ELD) pointers
> with different constness requirements.
>
> 1. `drm_eld_sad`: This function returns a constant `uint8_t`
> pointer and wraps the main extraction function, allowing access
> to SAD information while maintaining const correctness.
>
> 2. `drm_extract_sad_from_eld`: This function returns a mutable
> `uint8_t` pointer and implements the core logic for extracting
> SAD from the provided ELD pointer. It performs version and
> maximum channel checks to ensure proper extraction.
>
> These wrapper functions provide flexibility to the codebase,
> allowing users to access SAD information while adhering to
> const correctness when needed and modifying the pointer when
> required.
I've considered this, and in the end I think it's better to *not* make
it easier for drivers to modify the ELD buffer directly.
To that end, I wrote some helpers to modify the SADs using the existing
struct cea_sad abstraction [1]. Please have a look. It should make your
changes better focus on what you need to do here, instead of getting
distracted with ELD parsing details.
BR,
Jani.
[1] https://patchwork.freedesktop.org/series/123384/
>
> Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> ---
> include/drm/drm_edid.h | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
> index 48e93f909ef6..626bc0d542eb 100644
> --- a/include/drm/drm_edid.h
> +++ b/include/drm/drm_edid.h
> @@ -418,11 +418,7 @@ static inline int drm_eld_mnl(const uint8_t *eld)
> return (eld[DRM_ELD_CEA_EDID_VER_MNL] & DRM_ELD_MNL_MASK) >> DRM_ELD_MNL_SHIFT;
> }
>
> -/**
> - * drm_eld_sad - Get ELD SAD structures.
> - * @eld: pointer to an eld memory structure with sad_count set
> - */
> -static inline const uint8_t *drm_eld_sad(const uint8_t *eld)
> +static uint8_t *drm_extract_sad_from_eld(uint8_t *eld)
> {
> unsigned int ver, mnl;
>
> @@ -437,6 +433,15 @@ static inline const uint8_t *drm_eld_sad(const uint8_t *eld)
> return eld + DRM_ELD_CEA_SAD(mnl, 0);
> }
>
> +/**
> + * drm_eld_sad - Get ELD SAD structures.
> + * @eld: pointer to an eld memory structure with sad_count set
> + */
> +static inline const uint8_t *drm_eld_sad(const uint8_t *eld)
> +{
> + return drm_extract_sad_from_eld((uint8_t *)eld);
> +}
> +
> /**
> * drm_eld_sad_count - Get ELD SAD count.
> * @eld: pointer to an eld memory structure with sad_count set
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize HDMI audio capabilities
2023-09-06 16:17 ` Golani, Mitulkumar Ajitkumar
@ 2023-09-08 8:17 ` Kandpal, Suraj
0 siblings, 0 replies; 15+ messages in thread
From: Kandpal, Suraj @ 2023-09-08 8:17 UTC (permalink / raw)
To: Golani, Mitulkumar Ajitkumar, intel-gfx@lists.freedesktop.org
Cc: Nikula, Jani
> Subject: RE: [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize
> HDMI audio capabilities
>
> Hi Suraj,
>
> > -----Original Message-----
> > From: Kandpal, Suraj <suraj.kandpal@intel.com>
> > Sent: 05 September 2023 14:47
> > To: Golani, Mitulkumar Ajitkumar
> > <mitulkumar.ajitkumar.golani@intel.com>;
> > intel-gfx@lists.freedesktop.org
> > Cc: Nikula, Jani <jani.nikula@intel.com>
> > Subject: RE: [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and
> > initialize HDMI audio capabilities
> >
> > > Subject: [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and
> > > initialize HDMI audio capabilities
> > >
> > > Initialize the source audio capabilities in the crtc_state property,
> > > setting them to
> >
> > Nit: maybe mention the above as intel_crtc_state rather than
> > crtc_state property as property usually refer to as drm_property and
> > it just seems a little weird to read. I have seen this in some of your
> > previous patches in this series you can make the changes there as well.
> >
> > > their maximum supported values for max_channel and max_rate. This
> > > initialization enables the calculation of audio source capabilities
> > > concerning the available mode bandwidth. These capabilities
> > > encompass parameters such as supported rate and channel configurations.
> > >
> > > Additionally, introduces a wrapper function for computing Short
> > > Audio Descriptors (SADs). The wrapper function incorporates logic
> > > for determining
> >
> > Typo * introduce
> >
> > > supported rates and channels according to the capabilities of the
> > > audio
> > source.
> > > It returns a set of SADs that are compatible with the audio source's
> > capabilities.
> > >
> > > --v1:
> > > - Refactor max_channel and max_rate to this commit as it is being
> > > initialised here
> > > - Remove call for intel_audio_compute_eld to avoid any regression
> > > while merge. instead call it in different commit when it is defined.
> > > - Use int instead of unsigned int for max_channel and max_frequecy
> > > - Update commit message and header
> > >
> > > --v2:
> > > - Use signed instead of unsigned variables.
> > > - Avoid using magic numbers and give them proper name.
> > >
> > > --v3:
> > > - Move defines to intel_audio.c.
> > > - use consistent naming convention for rate and channel.
> > > - declare num_of_channel and aud_rate separately.
> > > - Declare index value outside of for loop.
> > > - Move Bandwidth calculation to intel_Audio.c as it is common for
> > > both DP and HDMI. Also use static.
> > >
> > > --v10:
> > > - Merged patch 2 and 3 to deduplicate function calls.
> > > - Instead using Calibrate and calculated functions separately,
> > > removed code duplication and merged functions.[Nikula, Jani]
> > > - Remove magic value for SAD Channel mask. [Nikula, Jani]
> > > - Corrected rate values based on HDMI Spec [Nikula, Jani]
> > > - Update drm function to extract SAD from ELD [Nikula, Jani]
> > >
> > > Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> > > ---
> > > drivers/gpu/drm/i915/display/intel_audio.c | 127 ++++++++++++++++++
> > > .../drm/i915/display/intel_display_types.h | 6 +
> > > 2 files changed, 133 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_audio.c
> > > b/drivers/gpu/drm/i915/display/intel_audio.c
> > > index e20ffc8e9654..2584096d80a4 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_audio.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_audio.c
> > > @@ -64,6 +64,10 @@
> > > * struct &i915_audio_component_audio_ops @audio_ops is called from
> > > i915 driver.
> > > */
> > >
> > > +#define AUDIO_SAMPLE_CONTAINER_SIZE 32
> > > +#define MAX_CHANNEL_COUNT 8
> > > +#define ELD_SAD_CHANNELS_MASK 0x7
> >
> > Use REG_GENMASK() to create masks should look cleaner
>
> you should use REG_GENMASK when you need to create a bitmask that covers
> a specific range of bits within a register or variable.
> I think If you are defining a simple bitmask like in above example, there's no
> need to use REG_GENMASK.
>
We can still used GENMASK macro or BITMASK do have a look there
> > > +
> > > struct intel_audio_funcs {
> > > void (*audio_codec_enable)(struct intel_encoder *encoder,
> > > const struct intel_crtc_state *crtc_state,
> > @@
> > > -770,6 +774,127 @@ void intel_audio_sdp_split_update(struct
> > > intel_encoder *encoder,
> > > crtc_state->sdp_split_enable ?
> > > AUD_ENABLE_SDP_SPLIT : 0); }
> > >
> > > +static int sad_to_channels(const u8 *sad) {
> > > + return 1 + (sad[0] & 0x7);
> >
> > I think you missed using your defined mask here;
> >
> > > +}
> > > +
> > > +static int calc_audio_bw(int channel_count, int rate) {
> > > + int bandwidth = channel_count * rate *
> > > AUDIO_SAMPLE_CONTAINER_SIZE;
> > > + return bandwidth;
> >
> > Why introduce a variable here why not just return channel_count * rate
> > * AUDIO_SAMPLE_CONTAINER_SIZE;
> >
> > > +}
> > > +
> > > +static void calc_and_calibrate_audio_config_params(struct
> > > +intel_crtc_state
> > > *pipe_config,
> > > + int channel, bool
> > > calibration_required) {
> >
> > I think this should have a int type function that returns 0 if
> > max_rate and max_channel_count are non zero else return -EINVAL
>
> calc_and_calibrate_audio_config_params does not required to get failed. If it
> gets failed as well, we will have to go ahead with the current configs available.
> So this function does not require to return EINVAL in case it returns value as 0.
> That 0 value itself we will compute.
>
> >
> > > + struct drm_display_mode *adjusted_mode = &pipe_config-
> > > >hw.adjusted_mode;
> > > + int channel_count;
> > > + int index, rate[] = { 192000, 176400, 96000, 88200, 48000, 44100,
> > > 32000 };
> >
> > Where do we get these rate values from.
> > What if we kept them at crtc_state so these can be update if required.
> >
> > > + int audio_req_bandwidth, available_blank_bandwidth, vblank,
> > hblank;
> > > +
> > > + hblank = adjusted_mode->htotal - adjusted_mode->hdisplay;
> > > + vblank = adjusted_mode->vtotal - adjusted_mode->vdisplay;
> > > + available_blank_bandwidth = hblank * vblank *
> > > + drm_mode_vrefresh(adjusted_mode) * pipe_config-
> > >pipe_bpp;
> > > +
> > > + /*
> > > + * Expected calibration of channels and respective rates,
> > > + * based on MAX_CHANNEL_COUNT. First calculate channel and
> > > + * rate based on Maximum that source can compute, letter
> > > + * with respect to sink's maximum channel capacity, calibrate
> > > + * supportive rates.
> >
> > Typo: *maximum and *later and *supported
> >
> > > + */
> > > + if (calibration_required) {
> > > + channel_count = channel;
> > > + for (index = 0; index < ARRAY_SIZE(rate); index++) {
> > > + audio_req_bandwidth =
> > calc_audio_bw(channel_count,
> > > + rate[index]);
> > > + if (audio_req_bandwidth <
> > available_blank_bandwidth)
> > > {
> > > + pipe_config->audio.max_rate = rate[index];
> > > + pipe_config->audio.max_channel_count =
> > > channel_count;
> >
> > I think the above lines can be moved to function
> > set_max_rate_and_channel as this is duplicated even in the else block
> >
> > > + return;
> > > + }
> > > + }
> > > + } else {
> > > + for (channel_count = channel; channel_count > 0;
> > > channel_count--) {
> > > + for (index = 0; index < ARRAY_SIZE(rate); index++) {
> > > + audio_req_bandwidth =
> > > calc_audio_bw(channel_count, rate[index]);
> > > + if (audio_req_bandwidth <
> > > available_blank_bandwidth) {
> > > + pipe_config->audio.max_rate =
> > > rate[index];
> > > + pipe_config-
> > > >audio.max_channel_count = channel_count;
> > > + return;
> > > + }
> > > + }
> > > + }
> > > + }
> > > +
> > > + pipe_config->audio.max_rate = 0;
> > > + pipe_config->audio.max_channel_count = 0; }
> > > +
> > > +static int get_supported_freq_mask(struct intel_crtc_state
> > > +*crtc_state) {
> > > + int rate[] = { 32000, 44100, 48000, 88200, 96000, 176400, 192000
> > > +};
> >
> > So you do use the same array of rates maybe add these in the
> > intel_crtc_state audio struct and which can be filled in
> > intel_dp_compute_config , also mention where we get these rates from.
>
> I don't think it's a good idea for this specific case, as we are not going to use it
> apart from above 2 instances and also these are common sample frequency
> being used from HDMI and DP spec.
> So instead, we can reduce the redundancy. I will push that change with new
> patch set.
>
> Also, adding max rate and max channel was added considering source
> restrictions which we will address. But this rates array will be common to both
> it seems.
>
But seeing that these rates are common for HDMI and DP spec it would be better to have them in
the audio structure you make and fill this up in intel_dp_compute_config and intel_hdmi_compute_config
if there is a change in both HDMI and DP spec in future changing these values should help.
Also we do have two instances that are being used now but this can increase hence having it at one
Structure would be helpful.
Regards,
Suraj Kandpal
> >
> > > + int mask = 0, index;
> > > +
> > > + for (index = 0; index < ARRAY_SIZE(rate); index++) {
> > > + if (rate[index] > crtc_state->audio.max_rate)
> > > + break;
> > > +
> > > + mask |= 1 << index;
> > > +
> > > + if (crtc_state->audio.max_rate != rate[index])
> > > + continue;
> >
> > Why are the above two lines of code needed?
> > It's not like there is anything to skip below them.
> >
> > > + }
> > > +
> > > + return mask;
> > > +}
> > > +
> > > +static void intel_audio_compute_eld(struct intel_crtc_state
> > > +*crtc_state) {
> >
> > Lets not have this as a void function and lets return the appropriate
> > errors If required
> >
> > > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
> > > + u8 *eld, *sad;
> > > + int index, mask = 0;
> > > +
> > > + eld = crtc_state->eld;
> > > + if (!eld)
> > > + return;
> > > +
> > > + sad = drm_extract_sad_from_eld(eld);
> > > + if (!sad)
> > > + return;
> > > +
> > > + calc_and_calibrate_audio_config_params(crtc_state,
> > > MAX_CHANNEL_COUNT,
> > > + false);
> > > +
> > > + mask = get_supported_freq_mask(crtc_state);
> > > + for (index = 0; index < drm_eld_sad_count(eld); index++, sad += 3) {
> > > + /*
> > > + * Respect source restricitions. Limit capabilities to a subset
> > > that is
> > > + * supported both by the source and the sink.
> > > + */
> > > + if (sad_to_channels(sad) >= crtc_state-
> > > >audio.max_channel_count) {
> > > + sad[0] &= ~ELD_SAD_CHANNELS_MASK;
> > > + sad[0] |= crtc_state->audio.max_channel_count - 1;
> > > + drm_dbg_kms(&i915->drm, "Channel count is limited
> > > to %d\n",
> > > + crtc_state->audio.max_channel_count - 1);
> > > + } else {
> > > + /*
> > > + * calibrate rate when, sink supported channel
> > > + * count is slight less than max supported
> >
> > Typo: *slightly
> >
> > Regards,
> > Suraj Kandpal
> > > + * channel count.
> > > + */
> > > + calc_and_calibrate_audio_config_params(crtc_state,
> > > +
> > > sad_to_channels(sad),
> > > + true);
> > > + mask = get_supported_freq_mask(crtc_state);
> > > + }
> > > +
> > > + sad[1] &= mask;
> > > + }
> > > +}
> > > +
> > > bool intel_audio_compute_config(struct intel_encoder *encoder,
> > > struct intel_crtc_state *crtc_state,
> > > struct drm_connector_state *conn_state)
> > @@
> > > -791,6 +916,8 @@ bool intel_audio_compute_config(struct
> > > intel_encoder *encoder,
> > >
> > > crtc_state->eld[6] = drm_av_sync_delay(connector, adjusted_mode)
> > /
> > > 2;
> > >
> > > + intel_audio_compute_eld(crtc_state);
> > > +
> > > return true;
> > > }
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > index ebd147180a6e..8815837a95a6 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > @@ -1131,6 +1131,12 @@ struct intel_crtc_state {
> > >
> > > struct {
> > > bool has_audio;
> > > +
> > > + /* Audio rate in Hz */
> > > + int max_rate;
> > > +
> > > + /* Number of audio channels */
> > > + int max_channel_count;
> > > } audio;
> > >
> > > /*
> > > --
> > > 2.25.1
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2023-09-08 8:17 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-21 16:00 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
2023-08-21 16:00 ` [Intel-gfx] [PATCH 1/3] drm/i915: Add has_audio to separate audio parameter in crtc_state Mitul Golani
2023-08-21 16:00 ` [Intel-gfx] [PATCH 2/3] drm: Add Wrapper Functions for ELD SAD Extraction Mitul Golani
2023-09-05 6:26 ` Kandpal, Suraj
2023-09-07 9:35 ` Jani Nikula
2023-08-21 16:00 ` [Intel-gfx] [PATCH 3/3] drm/i915/display: Configure and initialize HDMI audio capabilities Mitul Golani
2023-09-05 9:17 ` Kandpal, Suraj
2023-09-06 16:17 ` Golani, Mitulkumar Ajitkumar
2023-09-08 8:17 ` Kandpal, Suraj
2023-08-21 21:58 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Get optimal audio frequency and channels (rev10) Patchwork
2023-08-21 21:58 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2023-08-21 22:13 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-08-22 1:05 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2023-08-17 12:50 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
2023-08-18 15:24 ` Kai Vehmanen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox