From nobody Mon Feb 9 22:38:59 2026 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AFE331684B0 for ; Sun, 26 Jan 2025 13:29:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737898174; cv=none; b=ktlxKHbrSO6qtxNL5qNzYcE0NNYVzYkhUCS15hdnrlF6wi+eyiwnwAgSI5xaAKdArtrEhqriUDR9LoadAbWlQaxUqwmqIu34P8LJvFnPKJWUs4LuNW6XlSBkJeSjitW6JQFGjzIdQjpEmQk9N/QxQkc0dPV9nUt0b7D8pz5B05I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737898174; c=relaxed/simple; bh=ASn3UQankdxlfhrL+CKAzYynXIH1IlHKS9zOuAB5WR4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QaBg/cjN+MB/miticKBlUmvHuAECKoiv/hi4NzKJDI+p1Yf5QsgPbK9gZbEOOLHRreqT3OZM7PyTJLu180PAN9UIu+zHrBGKbXdrJwPE8wm+o2add2rPI07TdvzDf96jUQTlPWMdLnFUvaKqcfotMICaHe2hNv7HudvyJd9kssg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=d69uPBRg; arc=none smtp.client-ip=209.85.167.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="d69uPBRg" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-53f22fd6887so4021158e87.2 for ; Sun, 26 Jan 2025 05:29:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1737898171; x=1738502971; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=HGhjmb+uqSqvkEmufcjl2V40+leLLjqR5nwVjQpnnDA=; b=d69uPBRgYX96f7tcDI0jd/CXiykmoWXP2RvxnhtvXrE70mWYz2p++aztXN8Eza2HQz sePv/VZvd6oEWhDjB4ZG12wABMbzvQjmQ+yNAClELNk6uZBRCE2JPw8NkdzDQcfrB1q1 Xxp9AicADt2S8BP/4C5pyfIh1nRVztt7jWxljtrYeIWTdww3loNiAJMzjWb6P/zYkQfp yn6nKwqCUpcKj9IS+mzZkbkireEy4fEFXXCGhGg+9DBEPHN8KqLQWocKgxDHqstKrmmk uHNnI8wYd0aw7/69koIDh9gSULl2sviu+9texIeNRk94bnDkC2Q4ii2yzqgngwq9eUcZ w7mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737898171; x=1738502971; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HGhjmb+uqSqvkEmufcjl2V40+leLLjqR5nwVjQpnnDA=; b=Htx1qB+pigOzUO837v+mn/3AfqIG9NOJd47wMnwPAJw2XgfvGUI6hl6XndRFKtVdpn nbOhnu4fNhSt/17NObZh1N1PBdSPQaGxUOJDnKdcdFozR4bEgYfvzp93FuMiosFkgVg3 zYjA9VfYz6SAmvMdPnI6/Pfp9sdHN9JK0d6RPULiMsnVG2HYQg2d1ZrbKpt2JHDvTMXP mvt3uv2qYVAoCfpqOMqdvoInC4HL4UTCyE1u3H4NXL8ndH8rZj6gDXPQ7zIKYtdIVtIn MP0NyPqtLdOyS+jE7PAVwgQpL+QkMxMNp62tz5Iyi5X2nMtgv+ZtNTb3lLarxsZrHpm7 290A== X-Forwarded-Encrypted: i=1; AJvYcCXSrCWJVdEoXCJTCIHo8kLb+tfY3mdv4E1q41VIg9FX9+ULs2cWD5wR9UpuoSPJQCVp+gMGtRWWeNPNG64=@vger.kernel.org X-Gm-Message-State: AOJu0Yxl78EQOs3/we+23Sh7aFFlwwkfxK5kgKPURHVxY9lX8TPF8WpR 821EQzc0ZWhuwgctoIePr8Pnw6FLZOb+En2+r1RQlePau4PVWgGdDNq6uRWbfVM= X-Gm-Gg: ASbGncvRbCtceY+IL9hZAcMq6a6bttU0bu5tY7q8NwMGddI8rfKJVVhsrJY7U+p2Idw ItjMNvcIWLhaQfT9o+E04/mB11VP8j3SjP6oDjaYFgW02X0Y2C9roOMKkI4HvUQn4tBjQov+Mos 16gUnnTaEy/+On4O50/2PhLGUZh145XuBxOOh3sw9KVr9X5r5f4g+hXfoHmD0dVQcOnyV+HEreE DOBwC0zVw3ZLPaWBQ880AJmvbYp3zHIj2ubgN1y+hXSq9mOPeamjyULDoWgG7akwQH3RXzN9RrY bd0Vlr3wFMap X-Google-Smtp-Source: AGHT+IHJn1KiUo3Vc8J9Cci15tlfKfpOBbrYT330xqlvaSxCSdV7Lx8S0XyWdDjQ64i5ZLK2+EFYeA== X-Received: by 2002:ac2:4acb:0:b0:540:1a0c:9ba6 with SMTP id 2adb3069b0e04-5439c282d2bmr11295775e87.34.1737898170829; Sun, 26 Jan 2025 05:29:30 -0800 (PST) Received: from umbar.lan ([192.130.178.90]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-543cbbd4cf8sm770488e87.201.2025.01.26.05.29.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Jan 2025 05:29:29 -0800 (PST) From: Dmitry Baryshkov Date: Sun, 26 Jan 2025 15:29:14 +0200 Subject: [PATCH v3 09/10] drm/bridge: allow limiting I2S formats Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250126-drm-hdmi-connector-cec-v3-9-5b5b2d4956da@linaro.org> References: <20250126-drm-hdmi-connector-cec-v3-0-5b5b2d4956da@linaro.org> In-Reply-To: <20250126-drm-hdmi-connector-cec-v3-0-5b5b2d4956da@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , =?utf-8?q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4008; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=ASn3UQankdxlfhrL+CKAzYynXIH1IlHKS9zOuAB5WR4=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBnljikF9+yC/fA8RClEtPsWuyQ2DiNmGNb9dUCZ 5Oabv7pqZWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCZ5Y4pAAKCRCLPIo+Aiko 1VmfB/kBgNMdpi9bIEMgrEFVMB8ztoZ8lIr4Gr1w3U6+wvRyn1IGyjrdxU7hic0WIa6W5ATt07L YX9N+KyCJkk+gBGOa1OrdACF0HaBEc55fQKAAP+csUYpdWlSYhAPUbB09dWvj14KDGk7nHpE8us f5sswFr6LaGY5DF6gF04u99ezewv/RMrxp3IQ1DSY4XQm5OUCTwOzyhSiP1khQqS8FGSrKSPKRT R89SG0VBNPBye3Drx4FpWUA0kO6Mr5mMUUSTvKZcedv/kuvo4yw2ijzaz8W2noDUb5KaLd0k7Gt GkKKXD09UBVJeB65hDQ2cHrMEKLoDrWR7h0wbzSyqtAjsAc5 X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A By default HDMI codec registers all formats supported on the I2S bus. Allow bridges (and connectors) to limit the list of the PCM formats supported by the HDMI codec. Signed-off-by: Dmitry Baryshkov Reviewed-by: Maxime Ripard --- drivers/gpu/drm/display/drm_bridge_connector.c | 1 + drivers/gpu/drm/display/drm_hdmi_audio_helper.c | 2 ++ drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +- include/drm/display/drm_hdmi_audio_helper.h | 1 + include/drm/drm_bridge.h | 5 +++++ 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/d= rm/display/drm_bridge_connector.c index 5b77fd59d79abddd419e611a7868b001857ccb37..28055bc2e7069d738bbe76b16c3= bbde06f2d6e4e 100644 --- a/drivers/gpu/drm/display/drm_bridge_connector.c +++ b/drivers/gpu/drm/display/drm_bridge_connector.c @@ -698,6 +698,7 @@ struct drm_connector *drm_bridge_connector_init(struct = drm_device *drm, bridge->hdmi_dev, &drm_bridge_connector_hdmi_audio_funcs, bridge->hdmi_audio_max_i2s_playback_channels, + bridge->hdmi_audio_i2s_formats, bridge->hdmi_audio_spdif_playback, bridge->hdmi_audio_dai_port); if (ret) diff --git a/drivers/gpu/drm/display/drm_hdmi_audio_helper.c b/drivers/gpu/= drm/display/drm_hdmi_audio_helper.c index 05afc9f0bdd6b6f00d74223a9d8875e6d16aea5f..589b0bd6c21366b83bd4d1131e8= 9c71644ebc401 100644 --- a/drivers/gpu/drm/display/drm_hdmi_audio_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_audio_helper.c @@ -154,6 +154,7 @@ int drm_connector_hdmi_audio_init(struct drm_connector = *connector, struct device *hdmi_codec_dev, const struct drm_connector_hdmi_audio_funcs *funcs, unsigned int max_i2s_playback_channels, + u64 i2s_formats, bool spdif_playback, int dai_port) { @@ -161,6 +162,7 @@ int drm_connector_hdmi_audio_init(struct drm_connector = *connector, .ops =3D &drm_connector_hdmi_audio_ops, .max_i2s_channels =3D max_i2s_playback_channels, .i2s =3D !!max_i2s_playback_channels, + .i2s_formats =3D i2s_formats, .spdif =3D spdif_playback, .no_i2s_capture =3D true, .no_spdif_capture =3D true, diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 1108983c44858382cb9f09b686956903645ebe0a..fcaba4a64a33b2267b22960772c= 2977b4109c67f 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -582,7 +582,7 @@ static int vc4_hdmi_connector_init(struct drm_device *d= ev, =20 ret =3D drm_connector_hdmi_audio_init(connector, dev->dev, &vc4_hdmi_audio_funcs, - 8, false, -1); + 8, 0, false, -1); if (ret) return ret; =20 diff --git a/include/drm/display/drm_hdmi_audio_helper.h b/include/drm/disp= lay/drm_hdmi_audio_helper.h index c9a6faef4109f20ba79b610a9d5e8d5980efe2d1..44d910bdc72dd2fdbbe7ada65b6= 7080d4a41e88b 100644 --- a/include/drm/display/drm_hdmi_audio_helper.h +++ b/include/drm/display/drm_hdmi_audio_helper.h @@ -14,6 +14,7 @@ int drm_connector_hdmi_audio_init(struct drm_connector *c= onnector, struct device *hdmi_codec_dev, const struct drm_connector_hdmi_audio_funcs *funcs, unsigned int max_i2s_playback_channels, + u64 i2s_formats, bool spdif_playback, int sound_dai_port); void drm_connector_hdmi_audio_plugged_notify(struct drm_connector *connect= or, diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index b55e80a57758e8b652eac0cd01cb245a04e221f5..d16af5fe90cb48f6671e798d9de= e61a359c9233f 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -920,6 +920,11 @@ struct drm_bridge { */ int hdmi_audio_max_i2s_playback_channels; =20 + /** + * @hdmi_audio_i2s_formats: supported I2S formats, optional + */ + u64 hdmi_audio_i2s_formats; + /** * @hdmi_audio_spdif_playback: set if HDMI codec has S/PDIF playback port */ --=20 2.39.5