From: Maxime Ripard <mripard@kernel.org>
To: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Cc: "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>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Sandy Huang" <hjc@rock-chips.com>,
"Heiko Stübner" <heiko@sntech.de>,
"Andy Yan" <andy.yan@rock-chips.com>,
"Chen-Yu Tsai" <wens@csie.org>,
"Samuel Holland" <samuel@sholland.org>,
"Dave Stevenson" <dave.stevenson@raspberrypi.com>,
"Maíra Canal" <mcanal@igalia.com>,
"Raspberry Pi Kernel Maintenance" <kernel-list@raspberrypi.com>,
"Liu Ying" <victor.liu@nxp.com>,
"Rob Clark" <robin.clark@oss.qualcomm.com>,
"Dmitry Baryshkov" <lumag@kernel.org>,
"Abhinav Kumar" <abhinav.kumar@linux.dev>,
"Jessica Zhang" <jessica.zhang@oss.qualcomm.com>,
"Sean Paul" <sean@poorly.run>,
"Marijn Suijten" <marijn.suijten@somainline.org>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev,
linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org,
"Daniel Stone" <daniels@collabora.com>
Subject: Re: [PATCH v4 01/10] drm/connector: let drivers declare infoframes as unsupported
Date: Thu, 25 Sep 2025 14:36:46 +0200 [thread overview]
Message-ID: <20250925-didactic-spiked-lobster-fefabe@penduick> (raw)
In-Reply-To: <z333ysst5ifakomo35jtbpydj44epqwwn4da76rcnsq4are62m@32gsmgx2pcdi>
[-- Attachment #1: Type: text/plain, Size: 6601 bytes --]
On Wed, Sep 10, 2025 at 06:16:25PM +0300, Dmitry Baryshkov wrote:
> On Wed, Sep 10, 2025 at 01:03:47PM +0200, Maxime Ripard wrote:
> > On Tue, Sep 09, 2025 at 05:51:59PM +0300, Dmitry Baryshkov wrote:
> > > Currently DRM framework expects that the HDMI connector driver supports
> > > all infoframe types: it generates the data as required and calls into
> > > the driver to program all of them, letting the driver to soft-fail if
> > > the infoframe is unsupported. This has a major drawback on userspace
> > > API: the framework also registers debugfs files for all Infoframe types,
> > > possibly surprising the users when infoframe is visible in the debugfs
> > > file, but it is not visible on the wire. Drivers are also expected to
> > > return success even for unsuppoted InfoFrame types.
> > >
> > > Let drivers declare that they support only a subset of infoframes,
> > > creating a more consistent interface. Make the affected drivers return
> > > -EOPNOTSUPP if they are asked to program (or clear) InfoFrames which are
> > > not supported.
> > >
> > > Acked-by: Liu Ying <victor.liu@nxp.com>
> > > Acked-by: Daniel Stone <daniels@collabora.com>
> > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> >
> > Again, I still believe that it's a bad idea, goes against what the spec
> > states, and the framework was meant to be.
>
> Please correct me if I'm wrong. The specs (HDMI & CEA) define several
> infoframes and whether we should be sending them. If I'm reading it
> correctrly, CEA spec explicitly says 'If the Source supports the
> transmission of [foo] InfoFrame..." (6.4 - AVI, 6.6 - Audio, 6.7 MPEG,
> 6.9 - DRM). For other InfoFrames (6.5 SPD, 6.8 NTSC VBI) it just defines
> that sending those frames is optional.
SPD is indeed optional, but the HDMI spec, (HDMI 1.4b, Section 8.2.1 -
Auxiliary Video information (AVI) InfoFrame) states that:
A Source shall always transmit an AVI InfoFrame at least once per two
Video Fields if the Source:
* is ever capable of transmitting an AVI InfoFrame or,
* is ever capable of transmitting YCBCR pixel encoding or,
* is ever capable of transmitting any colorimetry other than the
transmitted video format’s default colorimetry or,
* is ever capable of transmitting any xvYCC or future enhanced
colorimetry or,
* is ever capable of transmitting any Gamut Metadata packet or,
* is ever capable of transmitting any video format with multiple
allowed pixel repetitions or,
* is ever capable of transmitting Content Type other than “no data” or,
* is ever capable of transmitting YCC Quantization Range.
The AVI InfoFrame shall be transmitted even while such a Source is
transmitting RGB and non-pixel-repeated video. When a Source is not
explicitly required to transmit AVI InfoFrames, it is recommended that
the Source transmit AVI InfoFrames.
So it's recommended in every case, and the list kind of makes it
mandatory for how Linux uses HDMI.
Also, did we ever encounter some hardware that couldn't send AVI?
Audio is mandatory when streaming audio, DRM when using HDR, and we
don't support the others yet.
So the only we support but don't have to send is SPD.
> We can't even infer support for InfoFrames from the Source features.
> E.g. CEA 6.6.1 defines a case when digital audio is allowed to be sent,
> without sending Audio InfoFrame.
HDMI 1.4 section 8.2.2 - Audio Infoframe states that:
Whenever an active audio stream is being transmitted, an accurate
Audio InfoFrame shall be transmitted at least once per two Video
Fields.
I'd say it takes precedence over CTA-861.
> As we will be getting more and more features, some of the InfoFrames
> or data packets will be 'good to have, but not required'.
And drivers would be free to ignore those.
> > So, no, sorry. That's still a no for me. Please stop sending that patch
>
> Oops :-)
>
> > unless we have a discussion about it and you convince me that it's
> > actually something that we'd need.
>
> My main concern is that the drivers should not opt-out of the features.
> E.g. if we start supporting ISRC packets or MPEG or NTSC VBI InfoFrames
> (yes, stupid examples), it should not be required to go through all the
> drivers, making sure that they disable those. Instead the DRM framework
> should be able to make decisions like:
>
> - The driver supports SPD and the VSDB defines SPD, enable this
> InfoFrame (BTW, this needs to be done anyway, we should not be sending
> SPD if it's not defined in VSDB, if I read it correctly).
>
> - The driver hints that the pixel data has only 10 meaninful bits of
> data per component (e.g. out of 12 for DeepColor 36), the Sink has
> HF-VSDB, send HF-VSIF.
>
> - The driver has enabled 3D stereo mode, but it doesn't declare support
> for HF-VSIF. Send only H14b-VSIF.
>
> Similarly (no, I don't have these on my TODO list, these are just
> examples):
> - The driver defines support for NTSC VBI, register a VBI device.
>
> - The driver defines support for ISRC packets, register ISRC-related
> properties.
>
> - The driver defines support for MPEG Source InfoFrame, provide a way
> for media players to report frame type and bit rate.
>
> - The driver provides limited support for Extended HDR DM InfoFrames,
> select the correct frame type according to driver capabilities.
>
> Without the 'supported' information we should change atomic_check()
> functions to set infoframe->set to false for all unsupported InfoFrames
> _and_ go through all the drivers again each time we add support for a
> feature (e.g. after adding HF-VSIF support).
From what you described here, I think we share a similar goal and have
somewhat similar concerns (thanks, btw, it wasn't obvious to me before),
we just disagree on the trade-offs and ideal solution :)
I agree that we need to sanity check the drivers, and I don't want to go
back to the situation we had before where drivers could just ignore
infoframes and take the easy way out.
It should be hard, and easy to catch during review.
I don't think bitflag are a solution because, to me, it kind of fails
both.
What if, just like the debugfs discussion, we split write_infoframe into
write_avi_infoframe (mandatory), write_spd_infoframe (optional),
write_audio_infoframe (checked by drm_connector_hdmi_audio_init?) and
write_hdr_infoframe (checked in drmm_connector_hdmi_init if max_bpc > 8)
How does that sound?
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
next prev parent reply other threads:[~2025-09-25 12:37 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-09 14:51 [PATCH v4 00/10] drm/connector: hdmi: limit infoframes per driver capabilities Dmitry Baryshkov
2025-09-09 14:51 ` [PATCH v4 01/10] drm/connector: let drivers declare infoframes as unsupported Dmitry Baryshkov
2025-09-10 11:03 ` Maxime Ripard
2025-09-10 15:16 ` Dmitry Baryshkov
2025-09-25 12:36 ` Maxime Ripard [this message]
2025-09-25 14:55 ` Dmitry Baryshkov
2025-10-03 14:23 ` Maxime Ripard
2025-10-03 15:41 ` Dmitry Baryshkov
2025-10-14 12:43 ` Maxime Ripard
2025-10-14 16:02 ` Dmitry Baryshkov
2025-11-21 15:48 ` Maxime Ripard
2025-11-21 16:08 ` Dmitry Baryshkov
2025-09-09 14:52 ` [PATCH v4 02/10] drm/bridge: adv7511: declare supported infoframes Dmitry Baryshkov
2025-09-09 14:52 ` [PATCH v4 03/10] drm/bridge: ite-it6263: " Dmitry Baryshkov
2025-09-09 14:52 ` [PATCH v4 04/10] drm/bridge: lontium-lt9611: " Dmitry Baryshkov
2025-09-09 14:52 ` [PATCH v4 05/10] drm/bridge: synopsys/dw-hdmi-qp: " Dmitry Baryshkov
2025-09-09 14:52 ` [PATCH v4 06/10] drm/msm: hdmi: " Dmitry Baryshkov
2025-09-09 14:52 ` [PATCH v4 07/10] drm/rockchip: rk3066: " Dmitry Baryshkov
2025-09-09 14:52 ` [PATCH v4 08/10] drm/display: bridge_connector: drop default list for HDMI Infoframes Dmitry Baryshkov
2025-09-09 14:52 ` [PATCH v4 09/10] drm/connector: verify that HDMI connectors support necessary InfoFrames Dmitry Baryshkov
2025-09-10 11:08 ` Maxime Ripard
2025-09-09 14:52 ` [PATCH v4 10/10] drm/display: hdmi-audio: warn if HDMI connector doesn't support Audio IF Dmitry Baryshkov
2025-09-10 11:05 ` Maxime Ripard
2025-09-10 13:43 ` Dmitry Baryshkov
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=20250925-didactic-spiked-lobster-fefabe@penduick \
--to=mripard@kernel.org \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=abhinav.kumar@linux.dev \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=andy.yan@rock-chips.com \
--cc=daniels@collabora.com \
--cc=dave.stevenson@raspberrypi.com \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=heiko@sntech.de \
--cc=hjc@rock-chips.com \
--cc=jernej.skrabec@gmail.com \
--cc=jessica.zhang@oss.qualcomm.com \
--cc=jonas@kwiboo.se \
--cc=kernel-list@raspberrypi.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=lumag@kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=marijn.suijten@somainline.org \
--cc=mcanal@igalia.com \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=robin.clark@oss.qualcomm.com \
--cc=samuel@sholland.org \
--cc=sean@poorly.run \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
--cc=victor.liu@nxp.com \
--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