Re: [PATCH 1/2] drm/display: hdmi: Only allow BPC values of 8, 10, 12 and 16

From: Nicolas Frattaroli

Date: Thu Jun 18 2026 - 12:05:25 EST


On Thursday, 18 June 2026 17:47:09 Central European Summer Time Maxime Ripard wrote:
> On Mon, Jun 08, 2026 at 01:19:07PM +0200, Nicolas Frattaroli wrote:
> > As per the comment in sink_supports_format_bpc(), CTA-861-F defines that
> > only bits-per-channel values of 8, 10, 12 and 16 are allowed for HDMI.
> > Allowing more than this has surprising consequences for the atomic check
> > phase. The HDMI state helpers may accidentally conclude that a sink
> > supports 11bpc if a caller asks for it.
> >
> > Fix this by exiting early if the bpc value doesn't match one of those
> > given in the standard.
> >
> > Fixes: 26ff1c38fc29 ("drm/connector: hdmi: Compute bpc and format automatically")
> > Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>
> > ---
> > drivers/gpu/drm/display/drm_hdmi_state_helper.c | 10 ++++++++++
> > 1 file changed, 10 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> > index a331ebdd65af..8303475ec021 100644
> > --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> > +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> > @@ -420,6 +420,16 @@ sink_supports_format_bpc(const struct drm_connector *connector,
> > return false;
> > }
> >
> > + switch (bpc) {
> > + case 8:
> > + case 10:
> > + case 12:
> > + case 16:
> > + break;
> > + default:
> > + return false;
> > + }
> > +
>
> That might be slightly personal, but I think if (bpc < 8 || bpc > 16 ||
> bpc % 2) is more readable

That would allow 14bpc, which wouldn't be correct.

Kind regards,
Nicolas Frattaroli

>
> With that fixed
> Reviewed-by: Maxime Ripard <mripard@xxxxxxxxxx>
>
> Maxime
>