mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

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>
42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _DP_DISPLAY_H_
|
|
#define _DP_DISPLAY_H_
|
|
|
|
#include "dp_panel.h"
|
|
#include <sound/hdmi-codec.h>
|
|
|
|
struct msm_dp {
|
|
struct drm_device *drm_dev;
|
|
struct device *codec_dev;
|
|
struct drm_connector *connector;
|
|
struct drm_encoder *encoder;
|
|
bool is_connected;
|
|
bool audio_enabled;
|
|
bool power_on;
|
|
|
|
hdmi_codec_plugged_cb plugged_cb;
|
|
|
|
u32 max_pclk_khz;
|
|
|
|
u32 max_dp_lanes;
|
|
struct dp_audio *dp_audio;
|
|
};
|
|
|
|
int dp_display_set_plugged_cb(struct msm_dp *dp_display,
|
|
hdmi_codec_plugged_cb fn, struct device *codec_dev);
|
|
int dp_display_validate_mode(struct msm_dp *dp_display, u32 mode_pclk_khz);
|
|
int dp_display_get_modes(struct msm_dp *dp_display,
|
|
struct dp_display_mode *dp_mode);
|
|
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);
|
|
|
|
#endif /* _DP_DISPLAY_H_ */
|