diff --git a/msm/dp/dp_audio.c b/msm/dp/dp_audio.c index 57d5b74bf6..821d8fe1f0 100644 --- a/msm/dp/dp_audio.c +++ b/msm/dp/dp_audio.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. */ @@ -362,7 +362,9 @@ static void dp_audio_enable(struct dp_audio_private *audio, bool enable) return; } catalog->data = enable; - catalog->enable(catalog); + + if (audio->panel->get_panel_on(audio->panel)) + catalog->enable(catalog); } diff --git a/msm/dp/dp_panel.c b/msm/dp/dp_panel.c index 4635ec48b2..4e9cbb515c 100644 --- a/msm/dp/dp_panel.c +++ b/msm/dp/dp_panel.c @@ -3126,6 +3126,15 @@ int dp_panel_sink_crc_enable(struct dp_panel *dp_panel, bool enable) return rc; } +bool dp_panel_get_panel_on(struct dp_panel *dp_panel) +{ + struct dp_panel_private *panel; + + panel = container_of(dp_panel, struct dp_panel_private, dp_panel); + + return panel->panel_on; +} + struct dp_panel *dp_panel_get(struct dp_panel_in *in) { int rc = 0; @@ -3204,6 +3213,7 @@ struct dp_panel *dp_panel_get(struct dp_panel_in *in) dp_panel->get_src_crc = dp_panel_get_src_crc; dp_panel->get_sink_crc = dp_panel_get_sink_crc; dp_panel->sink_crc_enable = dp_panel_sink_crc_enable; + dp_panel->get_panel_on = dp_panel_get_panel_on; sde_conn = to_sde_connector(dp_panel->connector); sde_conn->drv_panel = dp_panel; diff --git a/msm/dp/dp_panel.h b/msm/dp/dp_panel.h index 4e57e91c77..b4d6ca8501 100644 --- a/msm/dp/dp_panel.h +++ b/msm/dp/dp_panel.h @@ -199,6 +199,7 @@ struct dp_panel { int (*sink_crc_enable)(struct dp_panel *dp_panel, bool enable); int (*get_src_crc)(struct dp_panel *dp_panel, u16 *crc); int (*get_sink_crc)(struct dp_panel *dp_panel, u16 *crc); + bool (*get_panel_on)(struct dp_panel *dp_panel); }; struct dp_tu_calc_input {