summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm/dp/dp_display.h
diff options
context:
space:
mode:
authorAbhinav Kumar <abhinavk@codeaurora.org>2020-09-12 13:49:32 -0700
committerRob Clark <robdclark@chromium.org>2020-09-15 10:54:35 -0700
commit158b9aa74479c9979b7b4806cefdbf0c9a72ba49 (patch)
tree6768265267b788f69ada719bc8440524ee63b0e8 /drivers/gpu/drm/msm/dp/dp_display.h
parentbf4a1b3127d34b0b6ee0565b31ff699b3dc9c48e (diff)
downloadlinux-158b9aa74479c9979b7b4806cefdbf0c9a72ba49.tar.gz
linux-158b9aa74479c9979b7b4806cefdbf0c9a72ba49.tar.bz2
linux-158b9aa74479c9979b7b4806cefdbf0c9a72ba49.zip
drm/msm/dp: wait for audio notification before disabling clocks
In the current implementation, there is a very small window for the audio side to safely signal the hdmi_code_shutdown() before the clocks are disabled. Add some synchronization between the DP display and DP audio module to safely disable the clocks to avoid unclocked access from audio side. In addition, audio side can open the sound card even if DP monitor is not connected. Avoid programming hardware registers in this case and bail out early. Changes in v4: - removed some leftover prints Changes in v5: - fix crash when user tries to play audio in suspended state Changes in v6: - rebased on top of latest patchset of dependency Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org> Signed-off-by: Rob Clark <robdclark@chromium.org>
Diffstat (limited to 'drivers/gpu/drm/msm/dp/dp_display.h')
-rw-r--r--drivers/gpu/drm/msm/dp/dp_display.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/dp_display.h
index 5020faf360db..8b78b40bbd6c 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.h
+++ b/drivers/gpu/drm/msm/dp/dp_display.h
@@ -15,6 +15,8 @@ struct msm_dp {
struct drm_connector *connector;
struct drm_encoder *encoder;
bool is_connected;
+ bool audio_enabled;
+ bool power_on;
hdmi_codec_plugged_cb plugged_cb;
@@ -32,6 +34,7 @@ int dp_display_get_modes(struct msm_dp *dp_display,
int dp_display_request_irq(struct msm_dp *dp_display);
bool dp_display_check_video_test(struct msm_dp *dp_display);
int dp_display_get_test_bpp(struct msm_dp *dp_display);
+void dp_display_signal_audio_complete(struct msm_dp *dp_display);
void __init msm_dp_pll_driver_register(void);
void __exit msm_dp_pll_driver_unregister(void);