Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

OMAPDSS: hdmi5: Change hdmi_wp idlemode to to no_idle for audio playback

Enabling idle mode during audio playback causes the glitches on OMAP5
HDMI. The TRM also suggests to use no-idle for HDMI audio playback.

This patch sets HDMI idle mode to no-idle for the duration of the
playback, and restores it back to original value afterwards.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>

authored by

Jyri Sarha and committed by
Tomi Valkeinen
2d7639bc 84a845de

+8
+1
drivers/video/fbdev/omap2/dss/hdmi.h
··· 357 357 358 358 struct platform_device *audio_pdev; 359 359 void (*audio_abort_cb)(struct device *dev); 360 + int wp_idlemode; 360 361 }; 361 362 362 363 #endif
+7
drivers/video/fbdev/omap2/dss/hdmi5.c
··· 607 607 WARN_ON(!hdmi_mode_has_audio(&hd->cfg)); 608 608 WARN_ON(!hd->display_enabled); 609 609 610 + /* No-idle while playing audio, store the old value */ 611 + hd->wp_idlemode = REG_GET(hdmi.wp.base, HDMI_WP_SYSCONFIG, 3, 2); 612 + REG_FLD_MOD(hdmi.wp.base, HDMI_WP_SYSCONFIG, 1, 3, 2); 613 + 610 614 hdmi_wp_audio_enable(&hd->wp, true); 611 615 hdmi_wp_audio_core_req_enable(&hd->wp, true); 612 616 ··· 626 622 627 623 hdmi_wp_audio_core_req_enable(&hd->wp, false); 628 624 hdmi_wp_audio_enable(&hd->wp, false); 625 + 626 + /* Playback stopped, restore original idlemode */ 627 + REG_FLD_MOD(hdmi.wp.base, HDMI_WP_SYSCONFIG, hd->wp_idlemode, 3, 2); 629 628 } 630 629 631 630 static int hdmi_audio_config(struct device *dev,