[alsa-devel] WM8510 on i.MX6

Schrempf Frieder frieder.schrempf at kontron.de
Thu Feb 28 09:54:22 CET 2019


Hi,

I have a board with i.MX6 and a WM8510 codec and I can play audio using 
an old vendor kernel (3.14) and my own asoc machine driver [1].

Now I want to run this with something more recent (currently trying on 
4.14) and upstream drivers like simple-card or fsl-asoc-card.

The problem is I'm only getting a little bit of noise from the speakers 
but nothing more.

I would really appreciate it if someone more knowledgeable could have a 
quick look and maybe come up with some ideas how I can proceed debugging.

Thanks,
Frieder

[1] https://paste.ee/p/VuZbg

My devicetree setup for the simple-card approach looks like this:

sound {
	compatible = "simple-audio-card";
	simple-audio-card,name = "wm8510-audio";
	simple-audio-card,format = "i2s";
	simple-audio-card,bitclock-master = <&sound_codec>;
	simple-audio-card,frame-master = <&sound_codec>;
	simple-audio-card,widgets =
		"Speaker", "Ext Spk";
	simple-audio-card,routing =
		"Ext Spk", "SPKOUTP",
		"Ext Spk", "SPKOUTN";

	assigned-clocks = <&clks IMX6QDL_CLK_CKO2_SEL>,
			  <&clks IMX6QDL_CLK_CKO2>;
	assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>,
				 <&clks IMX6QDL_CLK_CKO2_PODF>;
	assigned-clock-rates = <0 24000000>;

	sound_master: simple-audio-card,cpu {
		sound-dai = <&ssi2>;
	};

	sound_codec: simple-audio-card,codec {
		sound-dai = <&codec>;
		clocks = <&clks IMX6QDL_CLK_CKO2>;
	};
};

&audmux {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_audmux>;
	status = "okay";

	ssi2 {
		fsl,audmux-port = <1>;
		fsl,port-config = <
			(IMX_AUDMUX_V2_PTCR_SYN |
			 IMX_AUDMUX_V2_PTCR_TFSEL(4) |
			 IMX_AUDMUX_V2_PTCR_TCSEL(4) |
			 IMX_AUDMUX_V2_PTCR_TFSDIR |
			 IMX_AUDMUX_V2_PTCR_TCLKDIR)
			IMX_AUDMUX_V2_PDCR_RXDSEL(4)
		>;
	};

	aud5 {
		fsl,audmux-port = <4>;
		fsl,port-config = <
			IMX_AUDMUX_V2_PTCR_SYN
			IMX_AUDMUX_V2_PDCR_RXDSEL(1)
		>;
	};
};

&ssi2 {
	status = "okay";
};

&i2c2 {
	status = "okay";
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;

	codec: wm8510 at 1a {
		#sound-dai-cells = <0>;
		compatible = "wlf,wm8510";
		reg = <0x1a>;
	};
};

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sound_mclk>;

	pinctrl_sound_mclk: sound {
		/* WM8510 MCLK */
		fsl,pins = <
			MX6QDL_PAD_NANDF_CS2__CCM_CLKO2	0x130b0
		>;
	};

	pinctrl_audmux: audmux {
		fsl,pins = <
			MX6QDL_PAD_KEY_COL0__AUD5_TXC	0x130b0
			MX6QDL_PAD_KEY_COL1__AUD5_TXFS	0x130b0
			MX6QDL_PAD_KEY_ROW1__AUD5_RXD	0x130b0
			MX6QDL_PAD_KEY_ROW0__AUD5_TXD	0x130b0
		>;
	};
};


More information about the Alsa-devel mailing list