Message ID | 20181212175744.8287-1-s.nawrocki@samsung.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | ARM: dts: exynos: Specify I2S assigned clocks in proper node | expand |
On Wed, Dec 12, 2018 at 06:57:44PM +0100, Sylwester Nawrocki wrote: > The assigned parent clocks should be normally specified in the consumer > device's DT node, this ensures respective driver always sees correct clock > settings when required. > > This patch fixes regression in audio subsystem on Odroid XU3/XU4 boards > that appeared after commits: > > 'commit 647d04f8e07a ("ASoC: samsung: i2s: Ensure the RCLK rate is properly determined")' > 'commit 995e73e55f46 ("ASoC: samsung: i2s: Fix rclk_srcrate handling")' > 'commit 48279c53fd1d ("ASoC: samsung: i2s: Prevent external abort on exynos5433 I2S1 access")' > > Without this patch the driver gets wrong clock as the I2S function (op_clk) > clock in probe() and effectively the clock which is finally assigned from DT > is not being enabled/disabled in the runtime resume/suspend ops. > > Without the above listed commits the EXYNOS_I2S_BUS clock was always set > as parent of CLK_I2S_RCLK_SRC regardless of DT settings so there was no issue > with not enabled EXYNOS_SCLK_I2S. > > Cc: stable@vger.kernel.org # v4.17+ I gues your format would work (got recognized by stable scripts) but strictly speaking format is different: Cc: <stable@vger.kernel.org> # 4.17.x https://elixir.bootlin.com/linux/latest/source/Documentation/process/stable-kernel-rules.rst#L127 Thanks, fixed and applied. Best regards, Krzysztof
On Thu, Dec 13, 2018 at 09:56:56PM +0100, Krzysztof Kozlowski wrote: > On Wed, Dec 12, 2018 at 06:57:44PM +0100, Sylwester Nawrocki wrote: > > The assigned parent clocks should be normally specified in the consumer > > device's DT node, this ensures respective driver always sees correct clock > > settings when required. > > > > This patch fixes regression in audio subsystem on Odroid XU3/XU4 boards > > that appeared after commits: > > > > 'commit 647d04f8e07a ("ASoC: samsung: i2s: Ensure the RCLK rate is properly determined")' > > 'commit 995e73e55f46 ("ASoC: samsung: i2s: Fix rclk_srcrate handling")' > > 'commit 48279c53fd1d ("ASoC: samsung: i2s: Prevent external abort on exynos5433 I2S1 access")' > > > > Without this patch the driver gets wrong clock as the I2S function (op_clk) > > clock in probe() and effectively the clock which is finally assigned from DT > > is not being enabled/disabled in the runtime resume/suspend ops. > > > > Without the above listed commits the EXYNOS_I2S_BUS clock was always set > > as parent of CLK_I2S_RCLK_SRC regardless of DT settings so there was no issue > > with not enabled EXYNOS_SCLK_I2S. > > > > Cc: stable@vger.kernel.org # v4.17+ > > I gues your format would work (got recognized by stable scripts) but > strictly speaking format is different: > > Cc: <stable@vger.kernel.org> # 4.17.x > > https://elixir.bootlin.com/linux/latest/source/Documentation/process/stable-kernel-rules.rst#L127 Either works just fine, my scripts have to be a bit flexible due to all of the odd ways people like to tag things here... thanks, greg k-h
On 12/14/18 07:59, Greg KH wrote: > On Thu, Dec 13, 2018 at 09:56:56PM +0100, Krzysztof Kozlowski wrote: >> On Wed, Dec 12, 2018 at 06:57:44PM +0100, Sylwester Nawrocki wrote: >>> The assigned parent clocks should be normally specified in the consumer >>> device's DT node, this ensures respective driver always sees correct clock >>> settings when required. >>> >>> This patch fixes regression in audio subsystem on Odroid XU3/XU4 boards >>> that appeared after commits: >>> >>> 'commit 647d04f8e07a ("ASoC: samsung: i2s: Ensure the RCLK rate is properly determined")' >>> 'commit 995e73e55f46 ("ASoC: samsung: i2s: Fix rclk_srcrate handling")' >>> 'commit 48279c53fd1d ("ASoC: samsung: i2s: Prevent external abort on exynos5433 I2S1 access")' >>> >>> Without this patch the driver gets wrong clock as the I2S function (op_clk) >>> clock in probe() and effectively the clock which is finally assigned from DT >>> is not being enabled/disabled in the runtime resume/suspend ops. >>> >>> Without the above listed commits the EXYNOS_I2S_BUS clock was always set >>> as parent of CLK_I2S_RCLK_SRC regardless of DT settings so there was no issue >>> with not enabled EXYNOS_SCLK_I2S. >>> >>> Cc: stable@vger.kernel.org # v4.17+ >> >> I gues your format would work (got recognized by stable scripts) but >> strictly speaking format is different: >> >> Cc: <stable@vger.kernel.org> # 4.17.x >> >> https://elixir.bootlin.com/linux/latest/source/Documentation/process/stable-kernel-rules.rst#L127 >> >> Thanks, fixed and applied. Thanks for correcting this, indeed I just looked at existing usage in git log rather than at the documentation. > Either works just fine, my scripts have to be a bit flexible due to all > of the odd ways people like to tag things here...
diff --git a/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi b/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi index 03611d50c5a9..e84544b220b9 100644 --- a/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi +++ b/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi @@ -26,8 +26,7 @@ "Speakers", "SPKL", "Speakers", "SPKR"; - assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>, - <&clock CLK_MOUT_EPLL>, + assigned-clocks = <&clock CLK_MOUT_EPLL>, <&clock CLK_MOUT_MAU_EPLL>, <&clock CLK_MOUT_USER_MAU_EPLL>, <&clock_audss EXYNOS_MOUT_AUDSS>, @@ -36,8 +35,7 @@ <&clock_audss EXYNOS_DOUT_AUD_BUS>, <&clock_audss EXYNOS_DOUT_I2S>; - assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>, - <&clock CLK_FOUT_EPLL>, + assigned-clock-parents = <&clock CLK_FOUT_EPLL>, <&clock CLK_MOUT_EPLL>, <&clock CLK_MOUT_MAU_EPLL>, <&clock CLK_MAU_EPLL>, @@ -48,7 +46,6 @@ <0>, <0>, <0>, - <0>, <196608001>, <(196608002 / 2)>, <196608000>; @@ -84,4 +81,6 @@ &i2s0 { status = "okay"; + assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>; + assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>; }; diff --git a/arch/arm/boot/dts/exynos5422-odroidxu4.dts b/arch/arm/boot/dts/exynos5422-odroidxu4.dts index 4a30cc849b00..122174ea9e0a 100644 --- a/arch/arm/boot/dts/exynos5422-odroidxu4.dts +++ b/arch/arm/boot/dts/exynos5422-odroidxu4.dts @@ -33,8 +33,7 @@ compatible = "samsung,odroid-xu3-audio"; model = "Odroid-XU4"; - assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>, - <&clock CLK_MOUT_EPLL>, + assigned-clocks = <&clock CLK_MOUT_EPLL>, <&clock CLK_MOUT_MAU_EPLL>, <&clock CLK_MOUT_USER_MAU_EPLL>, <&clock_audss EXYNOS_MOUT_AUDSS>, @@ -43,8 +42,7 @@ <&clock_audss EXYNOS_DOUT_AUD_BUS>, <&clock_audss EXYNOS_DOUT_I2S>; - assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>, - <&clock CLK_FOUT_EPLL>, + assigned-clock-parents = <&clock CLK_FOUT_EPLL>, <&clock CLK_MOUT_EPLL>, <&clock CLK_MOUT_MAU_EPLL>, <&clock CLK_MAU_EPLL>, @@ -55,7 +53,6 @@ <0>, <0>, <0>, - <0>, <196608001>, <(196608002 / 2)>, <196608000>; @@ -79,6 +76,8 @@ &i2s0 { status = "okay"; + assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>; + assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>; }; &pwm {
The assigned parent clocks should be normally specified in the consumer device's DT node, this ensures respective driver always sees correct clock settings when required. This patch fixes regression in audio subsystem on Odroid XU3/XU4 boards that appeared after commits: 'commit 647d04f8e07a ("ASoC: samsung: i2s: Ensure the RCLK rate is properly determined")' 'commit 995e73e55f46 ("ASoC: samsung: i2s: Fix rclk_srcrate handling")' 'commit 48279c53fd1d ("ASoC: samsung: i2s: Prevent external abort on exynos5433 I2S1 access")' Without this patch the driver gets wrong clock as the I2S function (op_clk) clock in probe() and effectively the clock which is finally assigned from DT is not being enabled/disabled in the runtime resume/suspend ops. Without the above listed commits the EXYNOS_I2S_BUS clock was always set as parent of CLK_I2S_RCLK_SRC regardless of DT settings so there was no issue with not enabled EXYNOS_SCLK_I2S. Cc: stable@vger.kernel.org # v4.17+ Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> --- arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi | 9 ++++----- arch/arm/boot/dts/exynos5422-odroidxu4.dts | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-)