Skip to content

Commit 723a170

Browse files
committed
drm/bridge: adv7511: use update latch for AVI infoframes
Instead of disabling and then reenabling AVI infoframe, use the recommended way of updating it on the fly: latch current values using the ADV7511_REG_INFOFRAME_UPDATE register. Acked-by: Maxime Ripard <mripard@kernel.org> Link: https://lore.kernel.org/r/20250903-adv7511-audio-infoframe-v1-1-05b24459b9a4@oss.qualcomm.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
1 parent e4aae21 commit 723a170

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

drivers/gpu/drm/bridge/adv7511/adv7511_drv.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -916,22 +916,33 @@ static int adv7511_bridge_hdmi_write_infoframe(struct drm_bridge *bridge,
916916
{
917917
struct adv7511 *adv7511 = bridge_to_adv7511(bridge);
918918

919-
adv7511_bridge_hdmi_clear_infoframe(bridge, type);
920-
921919
switch (type) {
922920
case HDMI_INFOFRAME_TYPE_AVI:
921+
/* send current AVI infoframe values while updating */
922+
regmap_update_bits(adv7511->regmap, ADV7511_REG_INFOFRAME_UPDATE,
923+
BIT(6), BIT(6));
924+
923925
/* The AVI infoframe id is not configurable */
924926
regmap_bulk_write(adv7511->regmap, ADV7511_REG_AVI_INFOFRAME_VERSION,
925927
buffer + 1, len - 1);
926928

929+
regmap_write(adv7511->regmap, ADV7511_REG_AUDIO_INFOFRAME_LENGTH, 0x2);
930+
regmap_write(adv7511->regmap, ADV7511_REG_AUDIO_INFOFRAME(1), 0x1);
931+
932+
/* use AVI infoframe updated info */
933+
regmap_update_bits(adv7511->regmap, ADV7511_REG_INFOFRAME_UPDATE,
934+
BIT(6), 0);
935+
927936
adv7511_packet_enable(adv7511, ADV7511_PACKET_ENABLE_AVI_INFOFRAME);
928937
break;
929938
case HDMI_INFOFRAME_TYPE_SPD:
939+
adv7511_packet_disable(adv7511, ADV7511_PACKET_ENABLE_SPD);
930940
regmap_bulk_write(adv7511->regmap_packet, ADV7511_PACKET_SPD(0),
931941
buffer, len);
932942
adv7511_packet_enable(adv7511, ADV7511_PACKET_ENABLE_SPD);
933943
break;
934944
case HDMI_INFOFRAME_TYPE_VENDOR:
945+
adv7511_packet_disable(adv7511, ADV7511_PACKET_ENABLE_SPARE1);
935946
regmap_bulk_write(adv7511->regmap_packet, ADV7511_PACKET_SPARE1(0),
936947
buffer, len);
937948
adv7511_packet_enable(adv7511, ADV7511_PACKET_ENABLE_SPARE1);

0 commit comments

Comments
 (0)