[alsa-devel] speaker-test error using sgtl5000 and imx27
gianluca
gianlucarenzi at eurek.it
Tue Sep 29 20:22:43 CEST 2015
On 09/29/2015 04:26 PM, Alexandre Schnegg wrote:
> Hello,
>
> After a few researches, it seems to me that the problem come from the
> DMA. The SSI is set up correctly and waits for data from the DMA, but
> the DMA doesn't not seem to to do his job.
>
> Does anyone can confirm me that the module imx_pcm_dma is working
> properly with Freescale imx27 and mainline kernel?
>
> Anyone has got an audio codec working with the Freescale imx27 and
> mainline kernel?
>
> Thank you in advance for your help.
>
> Best regards
> Alexandre Schnegg
>
> Le 15.09.2015 11:49, Alexandre Schnegg a écrit :
>> Hello,
>>
>>
>> I would like to use the Freescale SGTl5000 audio codec with the Freescale
>> imx27 processor.
>>
>>
I faced a problem like that but in the opposite way: I was unable to
record anything from mic or line-in.
I saw all logic levels running, but no interrupt never catched by the
driver. Because of the CLKMUX_SEL was not set. Strangely it worked in
playback mode. But not for record. :-/
Have you read this?
https://community.freescale.com/message/540885#540885
> I had finally got a solution to this issue: the HW_DIGCTL_CTRL_SAIF_CLKMUX_SEL was not set.
>
On the platform init code you have to call:
> mxs_saif_clkmux_select(MXS_DIGCTL_SAIF_CLKMUX_EXTMSTR0);
Obviously the correct function for iMX27 will be to find in:
> drivers/clk/imx/clk-imx27.c
Good luck.
>> Unfortunately, I get this error when I try to run < speaker-test >:
>>
>>
>> # speaker-test
>>
>>
>> speaker-test 1.0.28
>>
>>
>> Playback device is default
>>
>> Stream parameters are 48000Hz, S16_LE, 1 channels
>>
>> Using 16 octaves of pink noise
>>
>> Rate set to 48000Hz (requested 48000Hz)
>>
>> Buffer size range from 128 to 32768
>>
>> Period size range from 64 to 16384
>>
>> Using max buffer size 32768
>>
>> Periods = 4
>>
>> was set period_size = 8192
>>
>> was set buffer_size = 32768
>>
>> 0 - Front Left
>>
>> Write error: -5,Input/output error
>>
>> xrun_recovery failed: -5,Input/output error
>>
>> Transfer failed: Input/output error
>>
>>
>> The codec is connected to SSI2 pins and I would like to use the SSI0
>> internal port in asynchronous mode (4 wires). The command interface is
>> I2C1.
>> The codec seems to work because it generates both bit and frame clocks
>> (the
>> codec is the master) but no data are coming from the processor. I'm using
>> kernel 4.1.7 but I have got the same error with versions 3.19.8, 4.0.5
>> and
>> 4.0.9. I have also tried the < imx-sgtl5000 > driver and I get the same
>> error. I can use < alsamixer > with no issue.
>>
>>
>> Here are my device tree bindings:
>>
>>
>> sound {
>>
>> compatible = "simple-audio-card";
>>
>> simple-audio-card,name =
>> "sgtl5000-audio";
>>
>> simple-audio-card,format = "i2s";
>>
>> simple-audio-card,bitclock-master =
>> <&dailink0_master>;
>>
>> simple-audio-card,frame-master =
>> <&dailink0_master>;
>>
>>
>> simple-audio-card,widgets =
>>
>> "Microphone", "Mic Jack",
>>
>> "Headphone", "Headphone
>> Jack";
>>
>>
>> simple-audio-card,routing =
>>
>> "MIC_IN", "Mic Jack",
>>
>> "Mic Jack", "Mic Bias",
>>
>> "Headphone Jack",
>> "HP_OUT";
>>
>>
>> simple-audio-card,cpu {
>>
>> sound-dai = <&ssi1 0>;
>>
>> };
>>
>>
>> dailink0_master:
>> simple-audio-card,codec {
>>
>> sound-dai = <&sgtl5000>;
>>
>> clocks = <&mclk>;
>>
>> };
>>
>>
>> };
>>
>>
>> mclk: asvmpc {
>>
>> #clock-cells = <0>;
>>
>> compatible = "fixed-clock";
>>
>> clock-frequency = <12288000>;
>>
>> };
>>
>>
>> &ssi1 {
>>
>> #sound-dai-cells = <1>;
>>
>> status = "okay";
>>
>> fsl,audmux-port = <MX27_AUDMUX_PPCR2_SSI_PINS_2>;
>>
>> fsl,port-config = <
>>
>> (IMX_AUDMUX_V1_PCR_SYN |
>>
>> IMX_AUDMUX_V1_PCR_RXDSEL(MX27_AUDMUX_HPCR1_SSI0))
>>
>> >;
>>
>> };
>>
>>
>> &audmux {
>>
>> pinctrl-names = "default";
>>
>> pinctrl-0 = <&pinctrl_ssi2>;
>>
>> status = "okay";
>>
>> fsl,audmux-port = <MX27_AUDMUX_HPCR1_SSI0>;
>>
>> fsl,port-config = <
>>
>> (IMX_AUDMUX_V1_PCR_SYN |
>>
>> IMX_AUDMUX_V1_PCR_TFCSEL(MX27_AUDMUX_PPCR2_SSI_PINS_2) |
>>
>> IMX_AUDMUX_V1_PCR_TFSDIR |
>>
>> IMX_AUDMUX_V1_PCR_TCLKDIR |
>>
>> IMX_AUDMUX_V1_PCR_RXDSEL(MX27_AUDMUX_PPCR2_SSI_PINS_2))
>>
>> >;
>>
>> };
>>
>>
>> &i2c1 {
>>
>> clock-frequency = <100000>;
>>
>> pinctrl-names = "default";
>>
>> pinctrl-0 = <&pinctrl_i2c1>;
>>
>> status = "okay";
>>
>>
>> sgtl5000: sgtl5000 at 0a {
>>
>> #sound-dai-cells = <0>;
>>
>> compatible = "fsl,sgtl5000";
>>
>> reg = <0x0a>;
>>
>> clocks = <&mclk>;
>>
>> micbias-resistor-k-ohms = <2>;
>>
>> micbias-voltage-m-volts = <2250>;
>>
>> VDDA-supply = <®_2p8v>;
>>
>> VDDIO-supply = <®_2p8v>;
>>
>> };
>>
>> };
>>
>>
>> pinctrl_ssi2: ssi2grp {
>>
>> fsl,pins = <
>>
>>
>> MX27_PAD_SSI2_FS__SSI2_FS 0x0
>>
>> MX27_PAD_SSI2_RXDAT__SSI2_RXDAT 0x0
>>
>> MX27_PAD_SSI2_TXDAT__SSI2_TXDAT 0x0
>>
>>
>> MX27_PAD_SSI2_CLK__SSI2_CLK
>> 0x0
>>
>> >;
>>
>> };
>>
>>
>> And the modules I have loaded before running < speaker test > :
>>
>>
>> # modprobe snd-soc-sgtl5000
>>
>> [ 23.274351] sgtl5000 0-000a: sgtl5000 revision 0x11
>>
>> # modprobe snd-soc-simple-card
>>
>> # modprobe snd-soc-fsl-ssi
>>
>> [ 79.752288] sgtl5000 0-000a: Using internal LDO instead of VDDD
>>
>> # [ 79.853711] asoc-simple-card sound: sgtl5000 <-> 10010000.ssi
>> mapping
>> ok
>>
>> # modprobe snd-soc-imx-audmux
>>
>>
>> Does anybody know what is the mistake?
>>
>>
>> Thank you for your help.
>>
>>
>> Best regards.
>>
>> Alexandre Schnegg
>>
>>
>> _______________________________________________
>> Alsa-devel mailing list
>> Alsa-devel at alsa-project.org
>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
>
>
--
Eurek s.r.l. |
Electronic Engineering | http://www.eurek.it
via Celletta 8/B, 40026 Imola, Italy | Phone: +39-(0)542-609120
p.iva 00690621206 - c.f. 04020030377 | Fax: +39-(0)542-609212
More information about the Alsa-devel
mailing list