mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
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>
This commit is contained in:
parent
e4aae21c92
commit
723a170811
|
|
@ -916,22 +916,33 @@ static int adv7511_bridge_hdmi_write_infoframe(struct drm_bridge *bridge,
|
|||
{
|
||||
struct adv7511 *adv7511 = bridge_to_adv7511(bridge);
|
||||
|
||||
adv7511_bridge_hdmi_clear_infoframe(bridge, type);
|
||||
|
||||
switch (type) {
|
||||
case HDMI_INFOFRAME_TYPE_AVI:
|
||||
/* send current AVI infoframe values while updating */
|
||||
regmap_update_bits(adv7511->regmap, ADV7511_REG_INFOFRAME_UPDATE,
|
||||
BIT(6), BIT(6));
|
||||
|
||||
/* The AVI infoframe id is not configurable */
|
||||
regmap_bulk_write(adv7511->regmap, ADV7511_REG_AVI_INFOFRAME_VERSION,
|
||||
buffer + 1, len - 1);
|
||||
|
||||
regmap_write(adv7511->regmap, ADV7511_REG_AUDIO_INFOFRAME_LENGTH, 0x2);
|
||||
regmap_write(adv7511->regmap, ADV7511_REG_AUDIO_INFOFRAME(1), 0x1);
|
||||
|
||||
/* use AVI infoframe updated info */
|
||||
regmap_update_bits(adv7511->regmap, ADV7511_REG_INFOFRAME_UPDATE,
|
||||
BIT(6), 0);
|
||||
|
||||
adv7511_packet_enable(adv7511, ADV7511_PACKET_ENABLE_AVI_INFOFRAME);
|
||||
break;
|
||||
case HDMI_INFOFRAME_TYPE_SPD:
|
||||
adv7511_packet_disable(adv7511, ADV7511_PACKET_ENABLE_SPD);
|
||||
regmap_bulk_write(adv7511->regmap_packet, ADV7511_PACKET_SPD(0),
|
||||
buffer, len);
|
||||
adv7511_packet_enable(adv7511, ADV7511_PACKET_ENABLE_SPD);
|
||||
break;
|
||||
case HDMI_INFOFRAME_TYPE_VENDOR:
|
||||
adv7511_packet_disable(adv7511, ADV7511_PACKET_ENABLE_SPARE1);
|
||||
regmap_bulk_write(adv7511->regmap_packet, ADV7511_PACKET_SPARE1(0),
|
||||
buffer, len);
|
||||
adv7511_packet_enable(adv7511, ADV7511_PACKET_ENABLE_SPARE1);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user