* [PATCH v2 0/2] ASoC hdmi-codec: fix HDMI jack reporting
@ 2020-02-17 3:16 Tzung-Bi Shih
2020-02-17 3:16 ` [PATCH v2 1/2] ASoC: hdmi-codec: set plugged_cb to NULL when component removing Tzung-Bi Shih
2020-02-17 3:16 ` [PATCH v2 2/2] drm/mediatek: fix race condition for HDMI jack status reporting Tzung-Bi Shih
0 siblings, 2 replies; 8+ messages in thread
From: Tzung-Bi Shih @ 2020-02-17 3:16 UTC (permalink / raw)
To: broonie, airlied, daniel
Cc: alsa-devel, cychiang, tzungbi, dri-devel, ck.hu, linux-mediatek,
p.zabel, matthias.bgg, dgreid, linux-arm-kernel
With proper unbinding audio components and inserting the HDMI external
display, kernel crashes as the following messages:
Unable to handle kernel NULL pointer dereference at virtual address ...
[snip]
Call trace:
plugged_cb+0x1c/0x74
mtk_hdmi_update_plugged_status+0x48/0x6c
hdmi_conn_detect+0x1c/0x28
drm_helper_probe_detect+0x110/0x170
drm_helper_probe_single_connector_modes+0xd4/0x608
drm_mode_getconnector+0x1e8/0x418
The 1st patch fixes the crash by notifying hdmi-codec's consumers to not
report jack status anymore when component removing.
The 2nd patch fixes race condition in mediatek/mtk_hdmi.c.
Changes from v1:
(https://patchwork.kernel.org/patch/11379979/)
- added the 1st patch
- use mutex to protect plugged_cb and codec_dev in 2nd patch
Tzung-Bi Shih (2):
ASoC: hdmi-codec: set plugged_cb to NULL when component removing
drm/mediatek: fix race condition for HDMI jack status reporting
drivers/gpu/drm/mediatek/mtk_hdmi.c | 11 ++++++++++-
sound/soc/codecs/hdmi-codec.c | 10 ++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
--
2.25.0.265.gbab2e86ba0-goog
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/2] ASoC: hdmi-codec: set plugged_cb to NULL when component removing
2020-02-17 3:16 [PATCH v2 0/2] ASoC hdmi-codec: fix HDMI jack reporting Tzung-Bi Shih
@ 2020-02-17 3:16 ` Tzung-Bi Shih
2020-02-17 22:04 ` Applied "ASoC: hdmi-codec: set plugged_cb to NULL when component removing" to the asoc tree Mark Brown
2020-02-17 3:16 ` [PATCH v2 2/2] drm/mediatek: fix race condition for HDMI jack status reporting Tzung-Bi Shih
1 sibling, 1 reply; 8+ messages in thread
From: Tzung-Bi Shih @ 2020-02-17 3:16 UTC (permalink / raw)
To: broonie, airlied, daniel
Cc: alsa-devel, cychiang, tzungbi, dri-devel, ck.hu, linux-mediatek,
p.zabel, matthias.bgg, dgreid, linux-arm-kernel
Sets plugged_cb to NULL when component removing to notify its consumers
: no further plugged status report is required.
Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
---
sound/soc/codecs/hdmi-codec.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
index 444cc4e3374e..f005751da2cc 100644
--- a/sound/soc/codecs/hdmi-codec.c
+++ b/sound/soc/codecs/hdmi-codec.c
@@ -779,7 +779,17 @@ static int hdmi_of_xlate_dai_id(struct snd_soc_component *component,
return ret;
}
+static void hdmi_remove(struct snd_soc_component *component)
+{
+ struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component);
+
+ if (hcp->hcd.ops->hook_plugged_cb)
+ hcp->hcd.ops->hook_plugged_cb(component->dev->parent,
+ hcp->hcd.data, NULL, NULL);
+}
+
static const struct snd_soc_component_driver hdmi_driver = {
+ .remove = hdmi_remove,
.dapm_widgets = hdmi_widgets,
.num_dapm_widgets = ARRAY_SIZE(hdmi_widgets),
.of_xlate_dai_id = hdmi_of_xlate_dai_id,
--
2.25.0.265.gbab2e86ba0-goog
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] drm/mediatek: fix race condition for HDMI jack status reporting
2020-02-17 3:16 [PATCH v2 0/2] ASoC hdmi-codec: fix HDMI jack reporting Tzung-Bi Shih
2020-02-17 3:16 ` [PATCH v2 1/2] ASoC: hdmi-codec: set plugged_cb to NULL when component removing Tzung-Bi Shih
@ 2020-02-17 3:16 ` Tzung-Bi Shih
2020-02-17 3:44 ` CK Hu
2020-02-17 22:03 ` Applied "drm/mediatek: fix race condition for HDMI jack status reporting" to the asoc tree Mark Brown
1 sibling, 2 replies; 8+ messages in thread
From: Tzung-Bi Shih @ 2020-02-17 3:16 UTC (permalink / raw)
To: broonie, airlied, daniel
Cc: alsa-devel, cychiang, tzungbi, dri-devel, ck.hu, linux-mediatek,
p.zabel, matthias.bgg, dgreid, linux-arm-kernel
hdmi_conn_detect and mtk_hdmi_audio_hook_plugged_cb would be called
by different threads.
Imaging the following calling sequence:
Thread A Thread B
--------------------------------------------------------------------
mtk_hdmi_audio_hook_plugged_cb()
mtk_cec_hpd_high() -> disconnected
hdmi_conn_detect()
mtk_cec_hpd_high() -> connected
plugged_cb(connected)
plugged_cb(disconnected)
The latest disconnected is false reported. Makes mtk_cec_hpd_high
and plugged_cb atomic to fix.
Also uses the same lock to protect read/write of plugged_cb and codec_dev.
Fixes: 5d3c64477392 ("drm/mediatek: support HDMI jack status reporting")
Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
---
drivers/gpu/drm/mediatek/mtk_hdmi.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index 03aeb73005ef..d80017e3d84a 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -12,6 +12,7 @@
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/mfd/syscon.h>
+#include <linux/mutex.h>
#include <linux/of_platform.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
@@ -171,6 +172,7 @@ struct mtk_hdmi {
bool enabled;
hdmi_codec_plugged_cb plugged_cb;
struct device *codec_dev;
+ struct mutex update_plugged_status_lock;
};
static inline struct mtk_hdmi *hdmi_ctx_from_bridge(struct drm_bridge *b)
@@ -1199,10 +1201,13 @@ static void mtk_hdmi_clk_disable_audio(struct mtk_hdmi *hdmi)
static enum drm_connector_status
mtk_hdmi_update_plugged_status(struct mtk_hdmi *hdmi)
{
- bool connected = mtk_cec_hpd_high(hdmi->cec_dev);
+ bool connected;
+ mutex_lock(&hdmi->update_plugged_status_lock);
+ connected = mtk_cec_hpd_high(hdmi->cec_dev);
if (hdmi->plugged_cb && hdmi->codec_dev)
hdmi->plugged_cb(hdmi->codec_dev, connected);
+ mutex_unlock(&hdmi->update_plugged_status_lock);
return connected ?
connector_status_connected : connector_status_disconnected;
@@ -1669,8 +1674,11 @@ static int mtk_hdmi_audio_hook_plugged_cb(struct device *dev, void *data,
{
struct mtk_hdmi *hdmi = data;
+ mutex_lock(&hdmi->update_plugged_status_lock);
hdmi->plugged_cb = fn;
hdmi->codec_dev = codec_dev;
+ mutex_unlock(&hdmi->update_plugged_status_lock);
+
mtk_hdmi_update_plugged_status(hdmi);
return 0;
@@ -1729,6 +1737,7 @@ static int mtk_drm_hdmi_probe(struct platform_device *pdev)
return ret;
}
+ mutex_init(&hdmi->update_plugged_status_lock);
platform_set_drvdata(pdev, hdmi);
ret = mtk_hdmi_output_init(hdmi);
--
2.25.0.265.gbab2e86ba0-goog
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] drm/mediatek: fix race condition for HDMI jack status reporting
2020-02-17 3:16 ` [PATCH v2 2/2] drm/mediatek: fix race condition for HDMI jack status reporting Tzung-Bi Shih
@ 2020-02-17 3:44 ` CK Hu
2020-02-17 3:55 ` Tzung-Bi Shih
2020-02-17 22:03 ` Applied "drm/mediatek: fix race condition for HDMI jack status reporting" to the asoc tree Mark Brown
1 sibling, 1 reply; 8+ messages in thread
From: CK Hu @ 2020-02-17 3:44 UTC (permalink / raw)
To: Tzung-Bi Shih
Cc: alsa-devel, p.zabel, airlied, dri-devel, broonie, linux-mediatek,
daniel, matthias.bgg, dgreid, linux-arm-kernel, cychiang
Hi, Tzhung-Bi:
On Mon, 2020-02-17 at 11:16 +0800, Tzung-Bi Shih wrote:
> hdmi_conn_detect and mtk_hdmi_audio_hook_plugged_cb would be called
> by different threads.
>
> Imaging the following calling sequence:
> Thread A Thread B
> --------------------------------------------------------------------
> mtk_hdmi_audio_hook_plugged_cb()
> mtk_cec_hpd_high() -> disconnected
> hdmi_conn_detect()
> mtk_cec_hpd_high() -> connected
> plugged_cb(connected)
> plugged_cb(disconnected)
>
> The latest disconnected is false reported. Makes mtk_cec_hpd_high
> and plugged_cb atomic to fix.
>
> Also uses the same lock to protect read/write of plugged_cb and codec_dev.
>
> Fixes: 5d3c64477392 ("drm/mediatek: support HDMI jack status reporting")
This patch looks good to me, but please merge this patch with the patch
it fix.
Regards,
CK
> Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
> ---
> drivers/gpu/drm/mediatek/mtk_hdmi.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> index 03aeb73005ef..d80017e3d84a 100644
> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> @@ -12,6 +12,7 @@
> #include <linux/io.h>
> #include <linux/kernel.h>
> #include <linux/mfd/syscon.h>
> +#include <linux/mutex.h>
> #include <linux/of_platform.h>
> #include <linux/of.h>
> #include <linux/of_gpio.h>
> @@ -171,6 +172,7 @@ struct mtk_hdmi {
> bool enabled;
> hdmi_codec_plugged_cb plugged_cb;
> struct device *codec_dev;
> + struct mutex update_plugged_status_lock;
> };
>
> static inline struct mtk_hdmi *hdmi_ctx_from_bridge(struct drm_bridge *b)
> @@ -1199,10 +1201,13 @@ static void mtk_hdmi_clk_disable_audio(struct mtk_hdmi *hdmi)
> static enum drm_connector_status
> mtk_hdmi_update_plugged_status(struct mtk_hdmi *hdmi)
> {
> - bool connected = mtk_cec_hpd_high(hdmi->cec_dev);
> + bool connected;
>
> + mutex_lock(&hdmi->update_plugged_status_lock);
> + connected = mtk_cec_hpd_high(hdmi->cec_dev);
> if (hdmi->plugged_cb && hdmi->codec_dev)
> hdmi->plugged_cb(hdmi->codec_dev, connected);
> + mutex_unlock(&hdmi->update_plugged_status_lock);
>
> return connected ?
> connector_status_connected : connector_status_disconnected;
> @@ -1669,8 +1674,11 @@ static int mtk_hdmi_audio_hook_plugged_cb(struct device *dev, void *data,
> {
> struct mtk_hdmi *hdmi = data;
>
> + mutex_lock(&hdmi->update_plugged_status_lock);
> hdmi->plugged_cb = fn;
> hdmi->codec_dev = codec_dev;
> + mutex_unlock(&hdmi->update_plugged_status_lock);
> +
> mtk_hdmi_update_plugged_status(hdmi);
>
> return 0;
> @@ -1729,6 +1737,7 @@ static int mtk_drm_hdmi_probe(struct platform_device *pdev)
> return ret;
> }
>
> + mutex_init(&hdmi->update_plugged_status_lock);
> platform_set_drvdata(pdev, hdmi);
>
> ret = mtk_hdmi_output_init(hdmi);
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] drm/mediatek: fix race condition for HDMI jack status reporting
2020-02-17 3:44 ` CK Hu
@ 2020-02-17 3:55 ` Tzung-Bi Shih
2020-02-17 4:49 ` CK Hu
0 siblings, 1 reply; 8+ messages in thread
From: Tzung-Bi Shih @ 2020-02-17 3:55 UTC (permalink / raw)
To: CK Hu
Cc: ALSA development, p.zabel, David Airlie, dri-devel, Mark Brown,
linux-mediatek, Daniel Vetter, Matthias Brugger, Dylan Reid,
linux-arm-kernel, Jimmy Cheng-Yi Chiang
On Mon, Feb 17, 2020 at 11:44 AM CK Hu <ck.hu@mediatek.com> wrote:
> On Mon, 2020-02-17 at 11:16 +0800, Tzung-Bi Shih wrote:
> > Fixes: 5d3c64477392 ("drm/mediatek: support HDMI jack status reporting")
>
> This patch looks good to me, but please merge this patch with the patch
> it fix.
5d3c64477392 ("drm/mediatek: support HDMI jack status reporting") has
applied to ASoC for-next branch. This is a fixup patch.
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] drm/mediatek: fix race condition for HDMI jack status reporting
2020-02-17 3:55 ` Tzung-Bi Shih
@ 2020-02-17 4:49 ` CK Hu
0 siblings, 0 replies; 8+ messages in thread
From: CK Hu @ 2020-02-17 4:49 UTC (permalink / raw)
To: Tzung-Bi Shih
Cc: ALSA development, p.zabel, David Airlie, dri-devel, Mark Brown,
linux-mediatek, Daniel Vetter, Matthias Brugger, Dylan Reid,
linux-arm-kernel, Jimmy Cheng-Yi Chiang
On Mon, 2020-02-17 at 11:55 +0800, Tzung-Bi Shih wrote:
> On Mon, Feb 17, 2020 at 11:44 AM CK Hu <ck.hu@mediatek.com> wrote:
> > On Mon, 2020-02-17 at 11:16 +0800, Tzung-Bi Shih wrote:
> > > Fixes: 5d3c64477392 ("drm/mediatek: support HDMI jack status reporting")
> >
> > This patch looks good to me, but please merge this patch with the patch
> > it fix.
>
> 5d3c64477392 ("drm/mediatek: support HDMI jack status reporting") has
> applied to ASoC for-next branch. This is a fixup patch.
I thought a patch need an ack by the maintainer. OK, so I could do is,
for this patch,
Acked-by: CK Hu <ck.hu@mediatek.com>
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply [flat|nested] 8+ messages in thread
* Applied "drm/mediatek: fix race condition for HDMI jack status reporting" to the asoc tree
2020-02-17 3:16 ` [PATCH v2 2/2] drm/mediatek: fix race condition for HDMI jack status reporting Tzung-Bi Shih
2020-02-17 3:44 ` CK Hu
@ 2020-02-17 22:03 ` Mark Brown
1 sibling, 0 replies; 8+ messages in thread
From: Mark Brown @ 2020-02-17 22:03 UTC (permalink / raw)
To: Tzung-Bi Shih
Cc: alsa-devel, cychiang, tzungbi, airlied, dri-devel, matthias.bgg,
Mark Brown, linux-mediatek, daniel, ck.hu, p.zabel, dgreid,
linux-arm-kernel
The patch
drm/mediatek: fix race condition for HDMI jack status reporting
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
From f07980d4ed60fbb35857b655c94b111f4ddf2abf Mon Sep 17 00:00:00 2001
From: Tzung-Bi Shih <tzungbi@google.com>
Date: Mon, 17 Feb 2020 11:16:53 +0800
Subject: [PATCH] drm/mediatek: fix race condition for HDMI jack status
reporting
hdmi_conn_detect and mtk_hdmi_audio_hook_plugged_cb would be called
by different threads.
Imaging the following calling sequence:
Thread A Thread B
--------------------------------------------------------------------
mtk_hdmi_audio_hook_plugged_cb()
mtk_cec_hpd_high() -> disconnected
hdmi_conn_detect()
mtk_cec_hpd_high() -> connected
plugged_cb(connected)
plugged_cb(disconnected)
The latest disconnected is false reported. Makes mtk_cec_hpd_high
and plugged_cb atomic to fix.
Also uses the same lock to protect read/write of plugged_cb and codec_dev.
Fixes: 5d3c64477392 ("drm/mediatek: support HDMI jack status reporting")
Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
Acked-by: CK Hu <ck.hu@mediatek.com>
Link: https://lore.kernel.org/r/20200217105513.2.I477092c2f104fd589133436c3ae4590e6fc6323b@changeid
Signed-off-by: Mark Brown <broonie@kernel.org>
---
drivers/gpu/drm/mediatek/mtk_hdmi.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index 03aeb73005ef..d80017e3d84a 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -12,6 +12,7 @@
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/mfd/syscon.h>
+#include <linux/mutex.h>
#include <linux/of_platform.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
@@ -171,6 +172,7 @@ struct mtk_hdmi {
bool enabled;
hdmi_codec_plugged_cb plugged_cb;
struct device *codec_dev;
+ struct mutex update_plugged_status_lock;
};
static inline struct mtk_hdmi *hdmi_ctx_from_bridge(struct drm_bridge *b)
@@ -1199,10 +1201,13 @@ static void mtk_hdmi_clk_disable_audio(struct mtk_hdmi *hdmi)
static enum drm_connector_status
mtk_hdmi_update_plugged_status(struct mtk_hdmi *hdmi)
{
- bool connected = mtk_cec_hpd_high(hdmi->cec_dev);
+ bool connected;
+ mutex_lock(&hdmi->update_plugged_status_lock);
+ connected = mtk_cec_hpd_high(hdmi->cec_dev);
if (hdmi->plugged_cb && hdmi->codec_dev)
hdmi->plugged_cb(hdmi->codec_dev, connected);
+ mutex_unlock(&hdmi->update_plugged_status_lock);
return connected ?
connector_status_connected : connector_status_disconnected;
@@ -1669,8 +1674,11 @@ static int mtk_hdmi_audio_hook_plugged_cb(struct device *dev, void *data,
{
struct mtk_hdmi *hdmi = data;
+ mutex_lock(&hdmi->update_plugged_status_lock);
hdmi->plugged_cb = fn;
hdmi->codec_dev = codec_dev;
+ mutex_unlock(&hdmi->update_plugged_status_lock);
+
mtk_hdmi_update_plugged_status(hdmi);
return 0;
@@ -1729,6 +1737,7 @@ static int mtk_drm_hdmi_probe(struct platform_device *pdev)
return ret;
}
+ mutex_init(&hdmi->update_plugged_status_lock);
platform_set_drvdata(pdev, hdmi);
ret = mtk_hdmi_output_init(hdmi);
--
2.20.1
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Applied "ASoC: hdmi-codec: set plugged_cb to NULL when component removing" to the asoc tree
2020-02-17 3:16 ` [PATCH v2 1/2] ASoC: hdmi-codec: set plugged_cb to NULL when component removing Tzung-Bi Shih
@ 2020-02-17 22:04 ` Mark Brown
0 siblings, 0 replies; 8+ messages in thread
From: Mark Brown @ 2020-02-17 22:04 UTC (permalink / raw)
To: Tzung-Bi Shih
Cc: alsa-devel, cychiang, tzungbi, airlied, dri-devel, matthias.bgg,
Mark Brown, linux-mediatek, daniel, ck.hu, p.zabel, dgreid,
linux-arm-kernel
The patch
ASoC: hdmi-codec: set plugged_cb to NULL when component removing
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
From 4aadf4b49ec7d80c5db842ca28479d07108c9484 Mon Sep 17 00:00:00 2001
From: Tzung-Bi Shih <tzungbi@google.com>
Date: Mon, 17 Feb 2020 11:16:52 +0800
Subject: [PATCH] ASoC: hdmi-codec: set plugged_cb to NULL when component
removing
Sets plugged_cb to NULL when component removing to notify its consumers
: no further plugged status report is required.
Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
Link: https://lore.kernel.org/r/20200217105513.1.Icc323daaf71ad02f191fd8d91136b01b61eca5e3@changeid
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/codecs/hdmi-codec.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
index 543363102d03..bc2903d27e6e 100644
--- a/sound/soc/codecs/hdmi-codec.c
+++ b/sound/soc/codecs/hdmi-codec.c
@@ -779,7 +779,17 @@ static int hdmi_of_xlate_dai_id(struct snd_soc_component *component,
return ret;
}
+static void hdmi_remove(struct snd_soc_component *component)
+{
+ struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component);
+
+ if (hcp->hcd.ops->hook_plugged_cb)
+ hcp->hcd.ops->hook_plugged_cb(component->dev->parent,
+ hcp->hcd.data, NULL, NULL);
+}
+
static const struct snd_soc_component_driver hdmi_driver = {
+ .remove = hdmi_remove,
.dapm_widgets = hdmi_widgets,
.num_dapm_widgets = ARRAY_SIZE(hdmi_widgets),
.of_xlate_dai_id = hdmi_of_xlate_dai_id,
--
2.20.1
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-02-17 22:04 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-17 3:16 [PATCH v2 0/2] ASoC hdmi-codec: fix HDMI jack reporting Tzung-Bi Shih
2020-02-17 3:16 ` [PATCH v2 1/2] ASoC: hdmi-codec: set plugged_cb to NULL when component removing Tzung-Bi Shih
2020-02-17 22:04 ` Applied "ASoC: hdmi-codec: set plugged_cb to NULL when component removing" to the asoc tree Mark Brown
2020-02-17 3:16 ` [PATCH v2 2/2] drm/mediatek: fix race condition for HDMI jack status reporting Tzung-Bi Shih
2020-02-17 3:44 ` CK Hu
2020-02-17 3:55 ` Tzung-Bi Shih
2020-02-17 4:49 ` CK Hu
2020-02-17 22:03 ` Applied "drm/mediatek: fix race condition for HDMI jack status reporting" to the asoc tree Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).