[alsa-devel] Setting some clocks back to DUMMY fixes spdif output on imx6q wandboard rev B1
Nicolin Chen
nicoleotsuka at gmail.com
Mon Aug 29 21:28:21 CEST 2016
Added Fabio as I can't test S/PDIF on my board.
On Sun, Aug 28, 2016 at 06:00:55PM +0200, Xavi Drudis Ferran wrote:
> I was using linux-libre-3.19 (implies no working sdma) with a
> wandboard quad (Freescale imx6q). Spidf output worked fine.
>
> When I upgraded to linux-libre-4.7 spdif output was supressed without
> any error (precisely, with the same errors about sdma that 3.19 gave).
>
> I saw someone else reporting the same elsewhere with linux-4.4
> https://forum.digikey.com/thread/34240
> (but I don't have a login there)
>
> This patch fixes it for me and sound works again on spdif.
>
> But I don't know if it can break (or fix?) something for some other
> boards or kernels or cases... I hardly know what I'm doing.
> The commits that might have caused the problem for me might be
>
> commit 833f2cbf7091099baee28136dc68678e974c0ac5
> Author: Shengjiu Wang <shengjiu.wang at freescale.com>
> Date: Sat Oct 10 18:15:07 2015 +0800
>
> ARM: dts: imx6: change the core clock of spdif
>
> The correct core clock of spdif is SPDIF_GCLK, which is added to
> clock tree. So the dts also need to be updated.
>
> Signed-off-by: Shengjiu Wang <shengjiu.wang at freescale.com>
> Signed-off-by: Shawn Guo <shawnguo at kernel.org>
>
> (the commit changed more clocks than SPDIF_GCLK)
Yes, it seems that it also tried to correct the clock sources
as those were not available when adding the S/PDIF support at
the first place.
> The issue is fixed for me with this patch but I'm not sure what's the
> best way to help fix any issue someone else may have or what other
> info or test you might need. Any guidance welcome.
> --- linux-4.7-no-spdif-out/arch/arm/boot/dts/imx6qdl.dtsi 2016-07-25 00:19:43.000000000 +0200
> +++ linux-4.7/arch/arm/boot/dts/imx6qdl.dtsi 2016-08-28 17:59:14.276774409 +0200
> @@ -240,9 +240,9 @@
> <&sdma 15 18 0>;
> dma-names = "rx", "tx";
> clocks = <&clks IMX6QDL_CLK_SPDIF_GCLK>, <&clks IMX6QDL_CLK_OSC>,
> - <&clks IMX6QDL_CLK_SPDIF>, <&clks IMX6QDL_CLK_ASRC>,
> - <&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_ESAI_EXTAL>,
> - <&clks IMX6QDL_CLK_IPG>, <&clks IMX6QDL_CLK_MLB>,
> + <&clks IMX6QDL_CLK_SPDIF>, <&clks IMX6QDL_CLK_DUMMY>,
> + <&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_DUMMY>,
> + <&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_DUMMY>,
> <&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_SPBA>;
> clock-names = "core", "rxtx0",
> "rxtx1", "rxtx2",
This looks like that you merely revert the SPDIF_GCLK. Would you
please do a little debug using "#define DEBUG 1" and check printk
from fsl_spdif_probe_txclk() to see the difference between before
and after Shengjiu's commit?
More information about the Alsa-devel
mailing list