[alsa-devel] speaker-test error using sgtl5000 and imx27

Alexandre Schnegg aschnegg at digger.ch
Wed Sep 30 08:28:49 CEST 2015


Le 29.09.2015 20:22, gianluca a écrit :
> 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
I cannot find an equivalent function in this file.

The imx27 doesn't have a SAIF unit. It has a SSI unit.

Thank you for your reply.
>
> 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 = <&reg_2p8v>;
>>>
>>>                                  VDDIO-supply = <&reg_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
>>
>>
>>
>
>



More information about the Alsa-devel mailing list