[alsa-devel] iMX6UL EVK with kernel 4.6
Fabio Estevam
festevam at gmail.com
Sun May 1 20:27:33 CEST 2016
On Sun, May 1, 2016 at 11:49 AM, Fabio Estevam <festevam at gmail.com> wrote:
> On Sat, Apr 30, 2016 at 8:18 AM, Petr Kulhavy <brain at jikos.cz> wrote:
>> Hi,
>>
>> I'm trying to run the latest mainline kernel 4.6 on the iMX6UL EVK. The
>> board mostly works and the only problem is audio.
>> Even though the sound card is detected and the ALSA mixer can be controlled
>> there is no MCLK coming out of the SAI2 interface.
>
> Also, have you tried setting bit 20 (SAI2_MCLK_DIR) of register IOMUXC_GPR_GPR1?
>
> You can set this bit in the bootloader for a quick test.
So I tried it myself and here are the changes I did:
diff --git a/arch/arm/boot/dts/imx6ul-14x14-evk.dts
b/arch/arm/boot/dts/imx6ul-14x14-evk.dts
index 7207280..8c20783 100644
--- a/arch/arm/boot/dts/imx6ul-14x14-evk.dts
+++ b/arch/arm/boot/dts/imx6ul-14x14-evk.dts
@@ -36,6 +36,23 @@
enable-active-high;
};
};
+
+ sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "mx6ul-evk-sound-card";
+ simple-audio-card,format = "i2s";
+ simple-audio-card,bitclock-master = <&dailink_master>;
+ simple-audio-card,frame-master = <&dailink_master>;
+
+ simple-audio-card,cpu {
+ sound-dai = <&sai2>;
+ };
+
+ dailink_master: simple-audio-card,codec {
+ sound-dai = <&codec>;
+ clocks = <&clks IMX6UL_CLK_SAI2>;
+ };
+ };
};
&cpu0 {
@@ -43,6 +60,20 @@
soc-supply = <®_soc>;
};
+&i2c2 {
+ clock_frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c2>;
+ status = "okay";
+
+ codec: wm8960 at 1a {
+ #sound-dai-cells = <0>;
+ compatible = "wlf,wm8960";
+ reg = <0x1a>;
+ wlf,shared-lrclk;
+ };
+};
+
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet1>;
@@ -86,6 +117,18 @@
};
};
+&sai2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_sai2>;
+
+ assigned-clocks = <&clks IMX6UL_CLK_SAI2_SEL>,
+ <&clks IMX6UL_CLK_SAI2>;
+ assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
+ assigned-clock-rates = <0>, <12288000>;
+
+ status = "okay";
+};
+
&snvs_poweroff {
status = "okay";
};
@@ -272,6 +315,17 @@
>;
};
+ pinctrl_sai2: sai2grp {
+ fsl,pins = <
+ MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK 0x17088
+ MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC 0x17088
+ MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA 0x11088
+ MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA 0x11088
+ MX6UL_PAD_JTAG_TMS__SAI2_MCLK 0x17088
+ MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x17059
+ >;
+ };
+
pinctrl_pwm1: pwm1grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO08__PWM1_OUT 0x110b0
--
1.9
also applied: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/sound/soc/codecs/Kconfig?id=465011fc56717f0227d1aa7a99cce000abc614d8
and the codec is probed successfully.
Prior to playing audio I did:
./memtool -32 20E4004=0F560005 (so that bit 20 of register GPR1 is set).
However after running aplay the system hangs.
I also tried NXP kernel 3.14.52 and 4.1.15 and I also get the same
hang after running aplay.
Which NXP kernel did you verify correct audio functionality on mx6ul-evk?
More information about the Alsa-devel
mailing list