From: Quentin Schulz <quentin.schulz@cherry.de>
To: Detlev Casanova <detlev.casanova@collabora.com>,
linux-kernel@vger.kernel.org
Cc: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Robert Foss <rfoss@kernel.org>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Jonas Karlman <jonas@kwiboo.se>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Sebastian Reichel <sebastian.reichel@collabora.com>,
Alexey Charkov <alchark@gmail.com>,
Cristian Ciocaltea <cristian.ciocaltea@collabora.com>,
Dragan Simic <dsimic@manjaro.org>,
Jianfeng Liu <liujianfeng1994@gmail.com>,
Niklas Cassel <cassel@kernel.org>,
FUKAUMI Naoki <naoki@radxa.com>,
Kever Yang <kever.yang@rock-chips.com>,
Johan Jonker <jbx6244@gmail.com>,
Geert Uytterhoeven <geert+renesas@glider.be>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Algea Cao <algea.cao@rock-chips.com>,
Chen-Yu Tsai <wens@csie.org>,
Sugar Zhang <sugar.zhang@rock-chips.com>,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
dri-devel@lists.freedesktop.org, kernel@collabora.com
Subject: Re: [PATCH v5 1/3] drm/bridge: synopsys: Add audio support for dw-hdmi-qp
Date: Fri, 7 Feb 2025 09:46:53 +0100 [thread overview]
Message-ID: <dee642fd-e50e-44b2-8482-a1ffc7948517@cherry.de> (raw)
In-Reply-To: <13709044.uLZWGnKmhe@earth>
Hi Detlev,
On 2/6/25 9:40 PM, Detlev Casanova wrote:
> Hi Quentin,
>
> On Tuesday, 4 February 2025 04:59:12 EST Quentin Schulz wrote:
>> Hi Detlev,
>>
>> Just some drive-by comment inline.
>>
>> On 2/3/25 6:16 PM, Detlev Casanova wrote:
[...]
>>> +static void dw_hdmi_qp_set_audio_interface(struct dw_hdmi_qp *hdmi,
>>> + struct hdmi_codec_daifmt
> *fmt,
>>> + struct hdmi_codec_params
> *hparms)
>>> +{
>>> + u32 conf0 = 0;
>>> +
>>> + /* Reset the audio data path of the AVP */
>>> + dw_hdmi_qp_write(hdmi, AVP_DATAPATH_PACKET_AUDIO_SWINIT_P,
>>> GLOBAL_SWRESET_REQUEST); +
>>> + /* Disable AUDS, ACR, AUDI */
>>> + dw_hdmi_qp_mod(hdmi, 0,
>>> + PKTSCHED_ACR_TX_EN | PKTSCHED_AUDS_TX_EN |
> PKTSCHED_AUDI_TX_EN,
>>> + PKTSCHED_PKT_EN);
>>> +
>>> + /* Clear the audio FIFO */
>>> + dw_hdmi_qp_write(hdmi, AUDIO_FIFO_CLR_P, AUDIO_INTERFACE_CONTROL0);
>>> +
>>> + /* Select I2S interface as the audio source */
>>> + dw_hdmi_qp_mod(hdmi, AUD_IF_I2S, AUD_IF_SEL_MSK,
>>> AUDIO_INTERFACE_CONFIG0); +
>>> + /* Enable the active i2s lanes */
>>> + switch (hparms->channels) {
>>> + case 7 ... 8:
>>> + conf0 |= I2S_LINES_EN(3);
>>> + fallthrough;
>>> + case 5 ... 6:
>>> + conf0 |= I2S_LINES_EN(2);
>>> + fallthrough;
>>> + case 3 ... 4:
>>> + conf0 |= I2S_LINES_EN(1);
>>> + fallthrough;
>>> + default:
>>> + conf0 |= I2S_LINES_EN(0);
>>> + break;
>>> + }
>>> +
>>> + dw_hdmi_qp_mod(hdmi, conf0, I2S_LINES_EN_MSK,
> AUDIO_INTERFACE_CONFIG0);
>>> +
>>> + /*
>>> + * Enable bpcuv generated internally for L-PCM, or received
>>> + * from stream for NLPCM/HBR.
>>> + */
>>> + switch (fmt->bit_fmt) {
>>> + case SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE:
>>> + conf0 = (hparms->channels == 8) ? AUD_HBR : AUD_ASP;
>>> + conf0 |= I2S_BPCUV_RCV_EN;
>>> + break;
>>> + default:
>>> + conf0 = AUD_ASP | I2S_BPCUV_RCV_DIS;
>>> + break;
>>> + }
>>> +
>>> + dw_hdmi_qp_mod(hdmi, conf0, I2S_BPCUV_RCV_MSK | AUD_FORMAT_MSK,
>>> + AUDIO_INTERFACE_CONFIG0);
>>> +
>>> + /* Enable audio FIFO auto clear when overflow */
>>> + dw_hdmi_qp_mod(hdmi, AUD_FIFO_INIT_ON_OVF_EN,
> AUD_FIFO_INIT_ON_OVF_MSK,
>>> + AUDIO_INTERFACE_CONFIG0);
>>
>> This is all very I2S-centric while the HDMI controllers on RK3588 do
>> have the ability (according to the TRM) to use S/PDIF instead of I2S. I
>> assume the driver should be able to know which format to use based on
>> simple-audio-card,format property? Is that correct? Then current support
>> which doesn't even check for I2S would be fine and not conflict with a
>> later commit which would add support for S/PDIF? (Essentially asking if
>> we need another DT property for the HDMI controller node or elsewhere to
>> specify which mode to run in instead of expecting it to always be I2S).
>
> The hdmi_codec_daifmt::fmt field already has this information, based on the
> simple-audio-card,format = "i2s"; field in the device tree.
>
> I could add a condition in dw_hdmi_qp_audio_prepare() to fail with -EINVAL if
> the devicetree specifies anything else than "i2s" for now.
>
All I was asking is whether we can (easily) check this property is set
to i2s the day we want to implement support for S/PDIF :) If that's the
case, then I don't think we necessarily need to check it right now, but
a -EINVAL would be fine too, up to you.
> I'm not willing to implement support for the SPDIF path for now, mainly
> because there's no need for that yet (I2S works well) and the downstream
> kernel doesn't implemented it, meaning it hasn't been tested a lot anyway.
>
That's fine, just wanted to know if a "backward-compatible"
implementation for S/PDIF would be possible in the future would we want
to support it :)
Cheers,
Quentin
next prev parent reply other threads:[~2025-02-07 8:55 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-03 17:16 [PATCH v5 0/3] Add HDMI audio on the rk3588 SoC Detlev Casanova
2025-02-03 17:16 ` [PATCH v5 1/3] drm/bridge: synopsys: Add audio support for dw-hdmi-qp Detlev Casanova
2025-02-04 9:59 ` Quentin Schulz
2025-02-06 20:40 ` Detlev Casanova
2025-02-07 8:46 ` Quentin Schulz [this message]
2025-02-03 17:16 ` [PATCH v5 2/3] arm64: dts: rockchip: Add HDMI0 audio output for rk3588 SoC Detlev Casanova
2025-02-04 10:14 ` Quentin Schulz
2025-02-06 17:17 ` Detlev Casanova
2025-02-07 10:23 ` Heiko Stübner
2025-02-03 17:16 ` [PATCH v5 3/3] arm64: dts: rockchip: Enable HDMI0 audio output for Rock 5B Detlev Casanova
2025-02-04 10:15 ` Quentin Schulz
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=dee642fd-e50e-44b2-8482-a1ffc7948517@cherry.de \
--to=quentin.schulz@cherry.de \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=alchark@gmail.com \
--cc=algea.cao@rock-chips.com \
--cc=andrzej.hajda@intel.com \
--cc=cassel@kernel.org \
--cc=conor+dt@kernel.org \
--cc=cristian.ciocaltea@collabora.com \
--cc=detlev.casanova@collabora.com \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=dsimic@manjaro.org \
--cc=geert+renesas@glider.be \
--cc=heiko@sntech.de \
--cc=jbx6244@gmail.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=kernel@collabora.com \
--cc=kever.yang@rock-chips.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=liujianfeng1994@gmail.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=naoki@radxa.com \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=robh@kernel.org \
--cc=sebastian.reichel@collabora.com \
--cc=simona@ffwll.ch \
--cc=sugar.zhang@rock-chips.com \
--cc=tzimmermann@suse.de \
--cc=wens@csie.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).