From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
Cc: intel-gfx@lists.freedesktop.org, jyri.sarha@linux.intel.com
Subject: Re: [Intel-gfx] [PATCH 2/3] drm/i915/display: Configure and initialize HDMI audio capabilities
Date: Thu, 17 Aug 2023 16:04:05 +0300 [thread overview]
Message-ID: <ZN4axVL9z7OtycRg@intel.com> (raw)
In-Reply-To: <20230817125007.2681331-3-mitulkumar.ajitkumar.golani@intel.com>
On Thu, Aug 17, 2023 at 06:20:06PM +0530, Mitul Golani wrote:
> Initialize the source audio capabilities in crtc_state
> property by setting them to their maximum supported values,
> including max_channel and max_frequency. This allows for the
> calculation of audio source capabilities with respect to
> the available mode bandwidth. These capabilities encompass
> parameters such as supported frequency and channel configurations.
>
> --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.
>
> Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_audio.c | 38 +++++++++++++++++++
> .../drm/i915/display/intel_display_types.h | 6 +++
> 2 files changed, 44 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
> index e20ffc8e9654..79377e33a59b 100644
> --- a/drivers/gpu/drm/i915/display/intel_audio.c
> +++ b/drivers/gpu/drm/i915/display/intel_audio.c
> @@ -64,6 +64,9 @@
> * struct &i915_audio_component_audio_ops @audio_ops is called from i915 driver.
> */
>
> +#define AUDIO_SAMPLE_CONTAINER_SIZE 32
> +#define MAX_CHANNEL_COUNT 8
> +
> struct intel_audio_funcs {
> void (*audio_codec_enable)(struct intel_encoder *encoder,
> const struct intel_crtc_state *crtc_state,
> @@ -770,6 +773,39 @@ void intel_audio_sdp_split_update(struct intel_encoder *encoder,
> crtc_state->sdp_split_enable ? AUD_ENABLE_SDP_SPLIT : 0);
> }
>
> +static int calc_audio_bw(int channel_count, int rate)
> +{
> + int bandwidth = channel_count * rate * AUDIO_SAMPLE_CONTAINER_SIZE;
> + return bandwidth;
> +}
> +
> +static void calc_audio_config_params(struct intel_crtc_state *pipe_config)
> +{
> + struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode;
> + int channel_count;
> + int index, rate[] = { 192000, 176000, 96000, 88000, 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;
> + for (channel_count = MAX_CHANNEL_COUNT; 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;
> +}
> +
> bool intel_audio_compute_config(struct intel_encoder *encoder,
> struct intel_crtc_state *crtc_state,
> struct drm_connector_state *conn_state)
> @@ -791,6 +827,8 @@ bool intel_audio_compute_config(struct intel_encoder *encoder,
>
> crtc_state->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
>
> + calc_audio_config_params(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;
From what I can see you only calculate these when computing the ELD,
and immediately use them there and nowhere else. So I see no reason
to bloat the crtc_state with this.
> } audio;
>
> /*
> --
> 2.25.1
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2023-08-17 13:04 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-17 12:50 [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Mitul Golani
2023-08-17 12:50 ` [Intel-gfx] [PATCH 1/3] drm/i915: Add has_audio to separate audio parameter in crtc_state Mitul Golani
2023-08-17 12:50 ` [Intel-gfx] [PATCH 2/3] drm/i915/display: Configure and initialize HDMI audio capabilities Mitul Golani
2023-08-17 13:04 ` Ville Syrjälä [this message]
2023-08-17 13:50 ` Golani, Mitulkumar Ajitkumar
2023-08-17 12:50 ` [Intel-gfx] [PATCH 3/3] drm/i915/display: Add wrapper to Compute SAD Mitul Golani
2023-08-17 15:24 ` kernel test robot
2023-08-17 15:24 ` kernel test robot
2023-08-18 8:38 ` Jani Nikula
2023-08-21 16:10 ` Golani, Mitulkumar Ajitkumar
2023-08-17 14:46 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Get optimal audio frequency and channels (rev9) Patchwork
2023-08-17 14:46 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2023-08-17 15:03 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2023-08-18 15:24 ` [Intel-gfx] [PATCH 0/3] Get optimal audio frequency and channels Kai Vehmanen
2023-08-22 6:38 ` [Intel-gfx] ✓ Fi.CI.BAT: success for Get optimal audio frequency and channels (rev9) Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZN4axVL9z7OtycRg@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jyri.sarha@linux.intel.com \
--cc=mitulkumar.ajitkumar.golani@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.