All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cezary Rojewski <cezary.rojewski@intel.com>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: hdegoede@redhat.com,
	"alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>,
	Mark Brown <broonie@kernel.org>,
	tiwai@suse.com, amadeuszx.slawinski@linux.intel.com
Subject: Re: [PATCH v2 16/17] ASoC: Intel: bdw_rt286: Refactor suspend/resume
Date: Sun, 19 Jun 2022 15:04:12 +0200	[thread overview]
Message-ID: <69e4263a-e036-cb21-2360-55b06600911e@intel.com> (raw)
In-Reply-To: <a32db639-89e7-de35-6943-b29a7fb52200@linux.intel.com>

On 2022-06-15 6:25 PM, Pierre-Louis Bossart wrote:
> 
>> Jacks are often initialized during dai_link initialization which is
>> completely out of platform_device area. This report made me think
>> further - if we assign jack in dai_link->init(), we should be able to
>> drop it in dai_link->exit().
>>
>> Not exactly! ->init() is done once card components are already accounted
>> for (available for use) but snd_soc_link_exit() is called during
>> snd_soc_remove_pcm_runtime() when card components are available no
>> longer - soc_remove_link_components().
>>
>> TLDR: teardown path is not symmetric with its counterpart, perhaps a
>> problem yet to be addressed. I'll see if moving the jack-NULLing to
>> codec's DAI ->remove() won't be a better temporary (?) solution than
>> reverting to platform_device->remove() usage.
> 
> It's a problem that impacted other platforms, see e.g.
> 
> static void kabylake_rt5660_codec_exit(struct snd_soc_pcm_runtime *rtd)
> {
> 	struct kbl_codec_private *ctx = snd_soc_card_get_drvdata(rtd->card);
> 
> 	/*
> 	 * The .exit() can be reached without going through the .init()
> 	 * so explicitly test if the gpiod is valid
> 	 */
> 	if (!IS_ERR_OR_NULL(ctx->gpio_lo_mute))
> 		gpiod_put(ctx->gpio_lo_mute);
> }
> 
> I vaguely recall hitting this myself when working with codec properties.
> It's worthy of a comment in the ASoC header to make sure this is better
> known/shared.
> 
> I see in other drivers that the use of component_set_jack() is
> symmetrical between .init and .exit, so far we haven't seen any issues
> with sof_rt5682.c and others.


I'll send a separate mail where we can discuss the teardown path. Don't 
believe the problem can be ignored. Even for the bdw_rt286.c usage of 
link->exit() generates:

   rt286 i2c-INT343A:00: ASoC: DAPM unknown pin LDO1

the following is the cause:

soc_remove_component() calls both component->remove() and 
snd_soc_dapm_free() for the component (in that order) so when 
link->exit() finally gets executes DAPM widgets are no longer there.


Regards,
Czarek

  reply	other threads:[~2022-06-19 13:05 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-13  9:15 [PATCH v2 00/17] ASoC: Intel: haswell and broadwell boards update Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 01/17] ASoC: Intel: Rename haswell source file to hsw_rt5640 Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 02/17] ASoC: Intel: hsw_rt5640: Reword prefixes of all driver members Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 03/17] ASoC: Intel: hsw_rt5640: Reword driver name Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 04/17] ASoC: Intel: hsw_rt5640: Update code indentation Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 05/17] ASoC: Intel: hsw_rt5640: Update file comments Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 06/17] ASoC: Intel: hsw_rt5640: Improve probe() function quality Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 07/17] ASoC: Intel: hsw_rt5640: Improve hw_params() debug-ability Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 08/17] ASoC: Intel: Rename broadwell source file to bdw_rt286 Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 09/17] ASoC: Intel: bdw_rt286: Reword prefixes of all driver members Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 10/17] ASoC: Intel: bdw_rt286: Reword driver name Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 11/17] ASoC: Intel: bdw_rt286: Update code indentation Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 12/17] ASoC: Intel: bdw_rt286: Update file comments Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 13/17] ASoC: Intel: bdw_rt286: Improve probe() function quality Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 14/17] ASoC: Intel: bdw_rt286: Improve hw_params() debug-ability Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 15/17] ASoC: Intel: bdw_rt286: Improve codec_link_init() quality Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 16/17] ASoC: Intel: bdw_rt286: Refactor suspend/resume Cezary Rojewski
2022-06-15  1:27   ` Pierre-Louis Bossart
2022-06-15 12:57     ` Cezary Rojewski
2022-06-15 16:25       ` Pierre-Louis Bossart
2022-06-19 13:04         ` Cezary Rojewski [this message]
2022-06-19 13:58       ` Cezary Rojewski
2022-06-13  9:15 ` [PATCH v2 17/17] ASoC: Intel: bdw_rt286: Remove FE DAI ops Cezary Rojewski
2022-06-24 10:59 ` [PATCH v2 00/17] ASoC: Intel: haswell and broadwell boards update Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=69e4263a-e036-cb21-2360-55b06600911e@intel.com \
    --to=cezary.rojewski@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=amadeuszx.slawinski@linux.intel.com \
    --cc=broonie@kernel.org \
    --cc=hdegoede@redhat.com \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.