[16/17] ASoC: Intel: sdw_max98373: add card_late_probe support
diff mbox series

Message ID 20200625192652.4365-1-pierre-louis.bossart@linux.intel.com
State New
Headers show
Series
  • Untitled series #308553
Related show

Commit Message

Pierre-Louis Bossart June 25, 2020, 7:26 p.m. UTC
From: randerwang <rander.wang@linux.intel.com>

Disable Left and Right Spk pin after boot so that sof can
get suspended. Please check patch: ASoC: Intel: Boards:
tgl_max98373: add dai_trigger function

Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: randerwang <rander.wang@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
---
 sound/soc/intel/boards/sof_sdw.c          | 19 ++++++++++++++++++-
 sound/soc/intel/boards/sof_sdw_common.h   |  6 ++++++
 sound/soc/intel/boards/sof_sdw_max98373.c | 12 ++++++++++++
 3 files changed, 36 insertions(+), 1 deletion(-)

Comments

Mark Brown June 26, 2020, 2:37 p.m. UTC | #1
On Thu, Jun 25, 2020 at 02:26:52PM -0500, Pierre-Louis Bossart wrote:
> From: randerwang <rander.wang@linux.intel.com>
> 
> Disable Left and Right Spk pin after boot so that sof can
> get suspended. Please check patch: ASoC: Intel: Boards:
> tgl_max98373: add dai_trigger function

This doesn't apply against current code, please check and resend.
Pierre-Louis Bossart June 26, 2020, 2:52 p.m. UTC | #2
On 6/26/20 9:37 AM, Mark Brown wrote:
> On Thu, Jun 25, 2020 at 02:26:52PM -0500, Pierre-Louis Bossart wrote:
>> From: randerwang <rander.wang@linux.intel.com>
>>
>> Disable Left and Right Spk pin after boot so that sof can
>> get suspended. Please check patch: ASoC: Intel: Boards:
>> tgl_max98373: add dai_trigger function
> 
> This doesn't apply against current code, please check and resend.

Not sure what happened here, I always apply the patches on your latest 
branch in a separate tree, then re-extract them and recheck. maybe an 
email glitch, SMTP was behaving yesterday?

087e499f3588 (HEAD) ASoC: Intel: common: add match table for TGL 
MAX98373 + RT5682 SoundWire driver
b823b27ac76a ASoC: Intel: sdw_max98373: add card_late_probe support
e880afab0e1e ASoC: Intel: sof_sdw: Add MAX98373 support
420f436a475d ASoc: Intel: cml_rt1011_rt5682: explicitly access first codec
5c1e816dc7f8 ASoC: Intel: Boards: tgl_max98373: Update TDM configuration 
in hw_params
580146e7aa3c ASoC: intel: cml_rt1011_rt5682: use for_each_card_prelinks
5be6a56bf667 ASoC: Intel: Boards: cml_rt1011_rt5682: use statically 
define codec config
ec850dd28467 ASoC: Intel: Boards: cml_rt1011_rt5682: reduce log level 
for printing quirk
ff4ddc936df9 ASoC: intel: sof_rt5682: Add support for jsl-max98360a-rt5682
340cd9f9204a ASoC: Intel: Boards: tgl_max98373: Fix the comment for 
max_98373_components
1411290ca7d7 ASoC: Intel: Boards: tgl_max98373: add dai_trigger function
66cc4de87f59 ASoC: Intel: boards: byt*.c: remove cast in dev_info quirk log
4d57ebbdc285 ASoC: Intel: sof_sdw: add quirk override with kernel parameter
c0279ffae76b ASoC: Intel: bxt_rt298: add missing .owner field
6d3f35161e30 ASoC: Intel: sof_sdw: add missing .owner field
84b3d261c3c2 ASoC: Intel: cml_rt1011_rt5682: add missing .owner field
af35def7968d ASoC: SOF: nocodec: add missing .owner field
6f81e520b290 (broonie/for-5.9) ASoC: tas2562: Fix shut-down gpio property
Mark Brown June 26, 2020, 3:16 p.m. UTC | #3
On Fri, Jun 26, 2020 at 09:52:41AM -0500, Pierre-Louis Bossart wrote:
> On 6/26/20 9:37 AM, Mark Brown wrote:

> > This doesn't apply against current code, please check and resend.

> Not sure what happened here, I always apply the patches on your latest
> branch in a separate tree, then re-extract them and recheck. maybe an email
> glitch, SMTP was behaving yesterday?

You didn't thread a bunch of patches in your series yesterday, if there
were dependencies within the series they may have been disrupted.
Pierre-Louis Bossart June 26, 2020, 4:01 p.m. UTC | #4
On 6/26/20 10:16 AM, Mark Brown wrote:
> On Fri, Jun 26, 2020 at 09:52:41AM -0500, Pierre-Louis Bossart wrote:
>> On 6/26/20 9:37 AM, Mark Brown wrote:
> 
>>> This doesn't apply against current code, please check and resend.
> 
>> Not sure what happened here, I always apply the patches on your latest
>> branch in a separate tree, then re-extract them and recheck. maybe an email
>> glitch, SMTP was behaving yesterday?
> 
> You didn't thread a bunch of patches in your series yesterday, if there
> were dependencies within the series they may have been disrupted.

that's probably it. git send-email died after a timeout at about 2/3rds 
of the series. I wasn't sure what to do so sent the missed patches 
separately. I didn't think of threading...
Not sure however if there's a way to recover from this sort of errors. 
Maybe use -in-reply-to=<patch0 id> --nothread ?
Mark Brown June 26, 2020, 5:26 p.m. UTC | #5
On Fri, Jun 26, 2020 at 11:01:30AM -0500, Pierre-Louis Bossart wrote:

> Not sure however if there's a way to recover from this sort of errors. Maybe
> use -in-reply-to=<patch0 id> --nothread ?

Yes, that should do the right thing I think.

Patch
diff mbox series

diff --git a/sound/soc/intel/boards/sof_sdw.c b/sound/soc/intel/boards/sof_sdw.c
index 45be9ec6d4ef..be8eccb50450 100644
--- a/sound/soc/intel/boards/sof_sdw.c
+++ b/sound/soc/intel/boards/sof_sdw.c
@@ -237,6 +237,7 @@  static struct sof_sdw_codec_info codec_info_list[] = {
 		.direction = {true, true},
 		.dai_name = "max98373-aif1",
 		.init = sof_sdw_mx8373_init,
+		.codec_card_late_probe = sof_sdw_mx8373_late_probe,
 	},
 	{
 		.id = 0x5682,
@@ -927,13 +928,29 @@  static int sof_card_dai_links_create(struct device *dev,
 	return 0;
 }
 
+static int sof_sdw_card_late_probe(struct snd_soc_card *card)
+{
+	int i, ret;
+
+	for (i = 0; i < ARRAY_SIZE(codec_info_list); i++) {
+		if (!codec_info_list[i].late_probe)
+			continue;
+
+		ret = codec_info_list[i].codec_card_late_probe(card);
+		if (ret < 0)
+			return ret;
+	}
+
+	return sof_sdw_hdmi_card_late_probe(card);
+}
+
 /* SoC card */
 static const char sdw_card_long_name[] = "Intel Soundwire SOF";
 
 static struct snd_soc_card card_sof_sdw = {
 	.name = "soundwire",
 	.owner = THIS_MODULE,
-	.late_probe = sof_sdw_hdmi_card_late_probe,
+	.late_probe = sof_sdw_card_late_probe,
 	.codec_conf = codec_conf,
 	.num_configs = ARRAY_SIZE(codec_conf),
 };
diff --git a/sound/soc/intel/boards/sof_sdw_common.h b/sound/soc/intel/boards/sof_sdw_common.h
index 3f820cf99a89..426017626b16 100644
--- a/sound/soc/intel/boards/sof_sdw_common.h
+++ b/sound/soc/intel/boards/sof_sdw_common.h
@@ -11,6 +11,7 @@ 
 
 #include <linux/bits.h>
 #include <linux/types.h>
+#include <sound/soc.h>
 
 #define MAX_NO_PROPS 2
 #define MAX_HDMI_NUM 4
@@ -61,6 +62,9 @@  struct sof_sdw_codec_info {
 		     struct snd_soc_dai_link *dai_links,
 		     struct sof_sdw_codec_info *info,
 		     bool playback);
+
+	bool late_probe;
+	int (*codec_card_late_probe)(struct snd_soc_card *card);
 };
 
 struct mc_private {
@@ -114,6 +118,8 @@  int sof_sdw_mx8373_init(const struct snd_soc_acpi_link_adr *link,
 			struct sof_sdw_codec_info *info,
 			bool playback);
 
+int sof_sdw_mx8373_late_probe(struct snd_soc_card *card);
+
 /* RT5682 support */
 int sof_sdw_rt5682_init(const struct snd_soc_acpi_link_adr *link,
 			struct snd_soc_dai_link *dai_links,
diff --git a/sound/soc/intel/boards/sof_sdw_max98373.c b/sound/soc/intel/boards/sof_sdw_max98373.c
index a38ddc099a95..6437872a9b3d 100644
--- a/sound/soc/intel/boards/sof_sdw_max98373.c
+++ b/sound/soc/intel/boards/sof_sdw_max98373.c
@@ -68,7 +68,19 @@  int sof_sdw_mx8373_init(const struct snd_soc_acpi_link_adr *link,
 	if (info->amp_num == 2)
 		dai_links->init = spk_init;
 
+	info->late_probe = true;
+
 	dai_links->ops = &max_98373_sdw_ops;
 
 	return 0;
 }
+
+int sof_sdw_mx8373_late_probe(struct snd_soc_card *card)
+{
+	struct snd_soc_dapm_context *dapm = &card->dapm;
+
+	/* Disable Left and Right Spk pin after boot */
+	snd_soc_dapm_disable_pin(dapm, "Left Spk");
+	snd_soc_dapm_disable_pin(dapm, "Right Spk");
+	return snd_soc_dapm_sync(dapm);
+}