All of lore.kernel.org
 help / color / mirror / Atom feed
From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org,
	linux-samsung-soc@vger.kernel.org, b.zolnierkie@samsung.com,
	sbkim73@samsung.com, patches@opensource.cirrus.com,
	broonie@kernel.org, lgirdwood@gmail.com, krzk@kernel.org,
	robh+dt@kernel.org, linux-arm-kernel@lists.infradead.org,
	m.szyprowski@samsung.com
Subject: Re: [PATCH v1 4/9] ASoC: wm8994: Add support for MCLKn clock gating
Date: Wed, 18 Sep 2019 14:31:57 +0000	[thread overview]
Message-ID: <20190918143157.GH10204@ediswmail.ad.cirrus.com> (raw)
In-Reply-To: <20190918104634.15216-5-s.nawrocki@samsung.com>

On Wed, Sep 18, 2019 at 12:46:29PM +0200, Sylwester Nawrocki wrote:
> As an intermediate step before covering the clocking subsystem
> of the CODEC entirely by the clk API add handling of external CODEC's
> master clocks in DAPM events when the AIFn clocks are sourced directly
> from MCLKn; when FLLn are used we enable/disable respective MCLKn
> before/after FLLn is enabled/disabled.
> 
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> ---
> @@ -2260,8 +2321,28 @@ static int _wm8994_set_fll(struct snd_soc_component *component, int id, int src,
>  	/* Clear any pending completion from a previous failure */
>  	try_wait_for_completion(&wm8994->fll_locked[id]);
>  
> +	switch (src) {
> +	case WM8994_FLL_SRC_MCLK1:
> +		mclk = control->mclk[0].clk;
> +		break;
> +	case WM8994_FLL_SRC_MCLK2:
> +		mclk = control->mclk[1].clk;
> +		break;
> +	default:
> +		mclk = NULL;
> +	}
> +
>  	/* Enable (with fractional mode if required) */
>  	if (freq_out) {
> +		if (mclk) {
> +			ret = clk_prepare_enable(mclk);
> +			if (ret < 0) {
> +				dev_err(component->dev,
> +					"Failed to enable MCLK for FLL%d\n",
> +					id + 1);
> +				return ret;
> +			}
> +		}
>  		/* Enable VMID if we need it */
>  		if (!was_enabled) {
>  			active_reference(component);
> @@ -2315,6 +2396,8 @@ static int _wm8994_set_fll(struct snd_soc_component *component, int id, int src,
>  
>  			active_dereference(component);
>  		}
> +		if (mclk)
> +			clk_disable_unprepare(mclk);

I don't think this works in the case of changing active FLLs.
The driver looks like it allows changing the FLL configuration
whilst the FLL is already active in which case it you would have
two wm8994_set_fll calls enabling the FLL but only a single one
disabling it. Resulting in the FLL being off but the MCLK being
left enabled.

Thanks,
Charles

WARNING: multiple messages have this Message-ID (diff)
From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org,
	linux-samsung-soc@vger.kernel.org, b.zolnierkie@samsung.com,
	sbkim73@samsung.com, patches@opensource.cirrus.com,
	broonie@kernel.org, lgirdwood@gmail.com, krzk@kernel.org,
	robh+dt@kernel.org, linux-arm-kernel@lists.infradead.org,
	m.szyprowski@samsung.com
Subject: Re: [alsa-devel] [PATCH v1 4/9] ASoC: wm8994: Add support for MCLKn clock gating
Date: Wed, 18 Sep 2019 14:31:57 +0000	[thread overview]
Message-ID: <20190918143157.GH10204@ediswmail.ad.cirrus.com> (raw)
In-Reply-To: <20190918104634.15216-5-s.nawrocki@samsung.com>

On Wed, Sep 18, 2019 at 12:46:29PM +0200, Sylwester Nawrocki wrote:
> As an intermediate step before covering the clocking subsystem
> of the CODEC entirely by the clk API add handling of external CODEC's
> master clocks in DAPM events when the AIFn clocks are sourced directly
> from MCLKn; when FLLn are used we enable/disable respective MCLKn
> before/after FLLn is enabled/disabled.
> 
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> ---
> @@ -2260,8 +2321,28 @@ static int _wm8994_set_fll(struct snd_soc_component *component, int id, int src,
>  	/* Clear any pending completion from a previous failure */
>  	try_wait_for_completion(&wm8994->fll_locked[id]);
>  
> +	switch (src) {
> +	case WM8994_FLL_SRC_MCLK1:
> +		mclk = control->mclk[0].clk;
> +		break;
> +	case WM8994_FLL_SRC_MCLK2:
> +		mclk = control->mclk[1].clk;
> +		break;
> +	default:
> +		mclk = NULL;
> +	}
> +
>  	/* Enable (with fractional mode if required) */
>  	if (freq_out) {
> +		if (mclk) {
> +			ret = clk_prepare_enable(mclk);
> +			if (ret < 0) {
> +				dev_err(component->dev,
> +					"Failed to enable MCLK for FLL%d\n",
> +					id + 1);
> +				return ret;
> +			}
> +		}
>  		/* Enable VMID if we need it */
>  		if (!was_enabled) {
>  			active_reference(component);
> @@ -2315,6 +2396,8 @@ static int _wm8994_set_fll(struct snd_soc_component *component, int id, int src,
>  
>  			active_dereference(component);
>  		}
> +		if (mclk)
> +			clk_disable_unprepare(mclk);

I don't think this works in the case of changing active FLLs.
The driver looks like it allows changing the FLL configuration
whilst the FLL is already active in which case it you would have
two wm8994_set_fll calls enabling the FLL but only a single one
disabling it. Resulting in the FLL being off but the MCLK being
left enabled.

Thanks,
Charles
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

WARNING: multiple messages have this Message-ID (diff)
From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org,
	linux-samsung-soc@vger.kernel.org, b.zolnierkie@samsung.com,
	sbkim73@samsung.com, patches@opensource.cirrus.com,
	broonie@kernel.org, lgirdwood@gmail.com, krzk@kernel.org,
	robh+dt@kernel.org, linux-arm-kernel@lists.infradead.org,
	m.szyprowski@samsung.com
Subject: Re: [PATCH v1 4/9] ASoC: wm8994: Add support for MCLKn clock gating
Date: Wed, 18 Sep 2019 14:31:57 +0000	[thread overview]
Message-ID: <20190918143157.GH10204@ediswmail.ad.cirrus.com> (raw)
In-Reply-To: <20190918104634.15216-5-s.nawrocki@samsung.com>

On Wed, Sep 18, 2019 at 12:46:29PM +0200, Sylwester Nawrocki wrote:
> As an intermediate step before covering the clocking subsystem
> of the CODEC entirely by the clk API add handling of external CODEC's
> master clocks in DAPM events when the AIFn clocks are sourced directly
> from MCLKn; when FLLn are used we enable/disable respective MCLKn
> before/after FLLn is enabled/disabled.
> 
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> ---
> @@ -2260,8 +2321,28 @@ static int _wm8994_set_fll(struct snd_soc_component *component, int id, int src,
>  	/* Clear any pending completion from a previous failure */
>  	try_wait_for_completion(&wm8994->fll_locked[id]);
>  
> +	switch (src) {
> +	case WM8994_FLL_SRC_MCLK1:
> +		mclk = control->mclk[0].clk;
> +		break;
> +	case WM8994_FLL_SRC_MCLK2:
> +		mclk = control->mclk[1].clk;
> +		break;
> +	default:
> +		mclk = NULL;
> +	}
> +
>  	/* Enable (with fractional mode if required) */
>  	if (freq_out) {
> +		if (mclk) {
> +			ret = clk_prepare_enable(mclk);
> +			if (ret < 0) {
> +				dev_err(component->dev,
> +					"Failed to enable MCLK for FLL%d\n",
> +					id + 1);
> +				return ret;
> +			}
> +		}
>  		/* Enable VMID if we need it */
>  		if (!was_enabled) {
>  			active_reference(component);
> @@ -2315,6 +2396,8 @@ static int _wm8994_set_fll(struct snd_soc_component *component, int id, int src,
>  
>  			active_dereference(component);
>  		}
> +		if (mclk)
> +			clk_disable_unprepare(mclk);

I don't think this works in the case of changing active FLLs.
The driver looks like it allows changing the FLL configuration
whilst the FLL is already active in which case it you would have
two wm8994_set_fll calls enabling the FLL but only a single one
disabling it. Resulting in the FLL being off but the MCLK being
left enabled.

Thanks,
Charles

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-09-18 14:31 UTC|newest]

Thread overview: 109+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20190918104650eucas1p2288b0b7e8081e872c4f181cb5ca8ba0d@eucas1p2.samsung.com>
2019-09-18 10:46 ` [PATCH v1 0/9] Basic sound support for Arndale board / wm8994 updates Sylwester Nawrocki
2019-09-18 10:46   ` Sylwester Nawrocki
2019-09-18 10:46   ` [alsa-devel] " Sylwester Nawrocki
     [not found]   ` <CGME20190918104653eucas1p2e23ccbd05b3b780300adc9f4cb7a4c49@eucas1p2.samsung.com>
2019-09-18 10:46     ` [PATCH v1 1/9] ASoC: wm8994: Do not register inapplicable controls for WM1811 Sylwester Nawrocki
2019-09-18 10:46       ` Sylwester Nawrocki
2019-09-18 10:46       ` [alsa-devel] " Sylwester Nawrocki
2019-09-18 12:51       ` Charles Keepax
2019-09-18 12:51         ` Charles Keepax
2019-09-18 12:51         ` [alsa-devel] " Charles Keepax
2019-09-19  7:38       ` Krzysztof Kozlowski
2019-09-19  7:38         ` Krzysztof Kozlowski
2019-09-19  7:38         ` [alsa-devel] " Krzysztof Kozlowski
     [not found]   ` <CGME20190918104656eucas1p1d9cad1394b08d05a99151c4fbc9425ce@eucas1p1.samsung.com>
2019-09-18 10:46     ` [PATCH v1 2/9] mfd: wm8994: Add support for MCLKn clock control Sylwester Nawrocki
2019-09-18 10:46       ` Sylwester Nawrocki
2019-09-18 10:46       ` [alsa-devel] " Sylwester Nawrocki
2019-09-18 10:59       ` Sylwester Nawrocki
2019-09-18 10:59         ` Sylwester Nawrocki
2019-09-18 10:59         ` [alsa-devel] " Sylwester Nawrocki
2019-09-18 12:54         ` Charles Keepax
2019-09-18 12:54           ` Charles Keepax
2019-09-18 12:54           ` [alsa-devel] " Charles Keepax
2019-09-18 13:36           ` Sylwester Nawrocki
2019-09-18 13:36             ` Sylwester Nawrocki
2019-09-18 13:36             ` [alsa-devel] " Sylwester Nawrocki
2019-09-19  7:59       ` Krzysztof Kozlowski
2019-09-19  7:59         ` Krzysztof Kozlowski
2019-09-19  7:59         ` [alsa-devel] " Krzysztof Kozlowski
2019-09-19 12:48         ` Sylwester Nawrocki
2019-09-19 12:48           ` Sylwester Nawrocki
2019-09-19 12:48           ` [alsa-devel] " Sylwester Nawrocki
2019-09-19 13:07           ` Krzysztof Kozlowski
2019-09-19 13:07             ` Krzysztof Kozlowski
2019-09-19 13:07             ` [alsa-devel] " Krzysztof Kozlowski
2019-09-19 12:50         ` Mark Brown
2019-09-19 12:50           ` [alsa-devel] " Mark Brown
2019-09-19 14:31           ` Charles Keepax
2019-09-19 14:31             ` Charles Keepax
2019-09-19 14:31             ` [alsa-devel] " Charles Keepax
2019-09-19 14:33             ` Mark Brown
2019-09-19 14:33               ` [alsa-devel] " Mark Brown
     [not found]   ` <CGME20190918104658eucas1p2c1f07d3e8b915d8c3a448b80d2af5df0@eucas1p2.samsung.com>
2019-09-18 10:46     ` [PATCH v1 3/9] ASoC: wm8994: Add support for setting MCLKn clock rate Sylwester Nawrocki
2019-09-18 10:46       ` Sylwester Nawrocki
2019-09-18 10:46       ` [alsa-devel] " Sylwester Nawrocki
2019-09-18 13:51       ` Charles Keepax
2019-09-18 13:51         ` Charles Keepax
2019-09-18 13:51         ` [alsa-devel] " Charles Keepax
2019-09-19  8:00       ` Krzysztof Kozlowski
2019-09-19  8:00         ` Krzysztof Kozlowski
2019-09-19  8:00         ` [alsa-devel] " Krzysztof Kozlowski
     [not found]   ` <CGME20190918104700eucas1p1ef0775632f5c7259fb54cab8efc96c50@eucas1p1.samsung.com>
2019-09-18 10:46     ` [PATCH v1 4/9] ASoC: wm8994: Add support for MCLKn clock gating Sylwester Nawrocki
2019-09-18 10:46       ` Sylwester Nawrocki
2019-09-18 10:46       ` [alsa-devel] " Sylwester Nawrocki
2019-09-18 14:31       ` Charles Keepax [this message]
2019-09-18 14:31         ` Charles Keepax
2019-09-18 14:31         ` [alsa-devel] " Charles Keepax
2019-09-19 11:58         ` Sylwester Nawrocki
2019-09-19 11:58           ` Sylwester Nawrocki
2019-09-19 11:58           ` [alsa-devel] " Sylwester Nawrocki
2019-09-19 14:33           ` Charles Keepax
2019-09-19 14:33             ` Charles Keepax
2019-09-19 14:33             ` [alsa-devel] " Charles Keepax
     [not found]   ` <CGME20190918104702eucas1p213070d06c69c4836d15d071b1926e60d@eucas1p2.samsung.com>
2019-09-18 10:46     ` [PATCH v1 5/9] ASoC: samsung: arndale: Simplify DAI link initialization Sylwester Nawrocki
2019-09-18 10:46       ` Sylwester Nawrocki
2019-09-18 10:46       ` [alsa-devel] " Sylwester Nawrocki
2019-09-18 14:33       ` Charles Keepax
2019-09-18 14:33         ` Charles Keepax
2019-09-18 14:33         ` [alsa-devel] " Charles Keepax
2019-09-19  8:01       ` Krzysztof Kozlowski
2019-09-19  8:01         ` Krzysztof Kozlowski
2019-09-19  8:01         ` [alsa-devel] " Krzysztof Kozlowski
     [not found]   ` <CGME20190918104703eucas1p1a06ecce433753ba42b422317ec7db48c@eucas1p1.samsung.com>
2019-09-18 10:46     ` [PATCH v1 6/9] ASoC: dt-bindings: Document "samsung,arndale-wm1811" compatible Sylwester Nawrocki
2019-09-18 10:46       ` Sylwester Nawrocki
2019-09-18 10:46       ` [alsa-devel] [PATCH v1 6/9] ASoC: dt-bindings: Document "samsung, arndale-wm1811" compatible Sylwester Nawrocki
2019-09-19  8:02       ` [PATCH v1 6/9] ASoC: dt-bindings: Document "samsung,arndale-wm1811" compatible Krzysztof Kozlowski
2019-09-19  8:02         ` Krzysztof Kozlowski
2019-09-19  8:02         ` [alsa-devel] [PATCH v1 6/9] ASoC: dt-bindings: Document "samsung, arndale-wm1811" compatible Krzysztof Kozlowski
     [not found]   ` <CGME20190918104705eucas1p1c01dc05bff199188677915e2bb8f7472@eucas1p1.samsung.com>
2019-09-18 10:46     ` [PATCH v1 7/9] ASoC: samsung: arndale: Add support for WM1811 CODEC Sylwester Nawrocki
2019-09-18 10:46       ` Sylwester Nawrocki
2019-09-18 10:46       ` [alsa-devel] " Sylwester Nawrocki
2019-09-18 14:45       ` Charles Keepax
2019-09-18 14:45         ` Charles Keepax
2019-09-18 14:45         ` [alsa-devel] " Charles Keepax
2019-09-19 12:00         ` Sylwester Nawrocki
2019-09-19 12:00           ` Sylwester Nawrocki
2019-09-19 12:00           ` [alsa-devel] " Sylwester Nawrocki
     [not found]   ` <CGME20190918104713eucas1p2ccfa8e9dff2cda9e8f88ac42dda2b680@eucas1p2.samsung.com>
2019-09-18 10:46     ` [PATCH v1 8/9] ASoC: samsung: arndale: Add missing OF node dereferencing Sylwester Nawrocki
2019-09-18 10:46       ` Sylwester Nawrocki
2019-09-18 10:46       ` [alsa-devel] " Sylwester Nawrocki
2019-09-18 14:51       ` Charles Keepax
2019-09-18 14:51         ` Charles Keepax
2019-09-18 14:51         ` [alsa-devel] " Charles Keepax
2019-09-19  8:22       ` Krzysztof Kozlowski
2019-09-19  8:22         ` Krzysztof Kozlowski
2019-09-19  8:22         ` [alsa-devel] " Krzysztof Kozlowski
2019-09-19 12:49         ` Sylwester Nawrocki
2019-09-19 12:49           ` Sylwester Nawrocki
2019-09-19 12:49           ` [alsa-devel] " Sylwester Nawrocki
2019-09-19 12:58           ` Krzysztof Kozlowski
2019-09-19 12:58             ` Krzysztof Kozlowski
2019-09-19 12:58             ` [alsa-devel] " Krzysztof Kozlowski
2019-09-19 13:31             ` Sylwester Nawrocki
2019-09-19 13:31               ` Sylwester Nawrocki
2019-09-19 13:31               ` Sylwester Nawrocki
     [not found]   ` <CGME20190918104715eucas1p2a051a537a0e86becfbbcb36c172ef705@eucas1p2.samsung.com>
2019-09-18 10:46     ` [PATCH v1 9/9] ARM: dts: arndale: Add audio support (WM1811 CODEC boards) Sylwester Nawrocki
2019-09-18 10:46       ` Sylwester Nawrocki
2019-09-18 10:46       ` [alsa-devel] " Sylwester Nawrocki
2019-09-19  8:26       ` Krzysztof Kozlowski
2019-09-19  8:26         ` Krzysztof Kozlowski
2019-09-19  8:26         ` [alsa-devel] " Krzysztof Kozlowski

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=20190918143157.GH10204@ediswmail.ad.cirrus.com \
    --to=ckeepax@opensource.cirrus.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=b.zolnierkie@samsung.com \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=patches@opensource.cirrus.com \
    --cc=robh+dt@kernel.org \
    --cc=s.nawrocki@samsung.com \
    --cc=sbkim73@samsung.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.