[alsa-devel] No sound captured with SGTL5000 on i.MX6 in I²S master mode

Jean-Michel Hautbois jean-michel.hautbois at vodalys.com
Thu Sep 18 14:56:25 CEST 2014


Hi,

Sorry if double posting, I have not received confirmation on
subscription yesterday... So I try again :/.

I have a custom i.MX6 board, and have a sgtl5000 connected on it. I
would like to have it used in master mode (it is used only for audio
capture) but I get a "pcm_read:2031: read error: Input/output error"
when using arecord.
I have checked my signals and I get something on I²S which seems to be good.
I launch :
$> arecord -f cd -Dhw:0,0 -v -V stereo
Receive Frame Sync is 44.1KHz
Receive Clock Signal is ~1MHz (I can be more precise if needed)
Data Receive is present, only when arecord is launched. It stops when
there is no capture asked.
Both clocks are still present even when no arecord is running.

This suggests, for me, that master mode is working.
So, I don't know why I can't get any data to my arecord. Is this a
left/right justified master mode ? Anything else ?

I am wondering if I forgot something in my DT or if I need to do
something else :

    sound {
        compatible = "fsl,imx6q-vbx3-sgtl5000",
                 "fsl,imx-audio-sgtl5000";
        model = "imx6q-vbx3-sgtl5000";
        ssi-controller = <&ssi1>;
        audio-codec = <&codec>;
        audio-routing =
            "LINE_IN", "Line In Jack";
        mux-int-port = <1>;
        mux-ext-port = <5>;
    };

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

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

    codec: sgtl5000 at 0a {
        compatible = "fsl,sgtl5000";
        reg = <0x0a>;
        clocks = <&clks 201>;
        VDDA-supply = <&vgen6_reg>;
        VDDIO-supply = <&vgen6_reg>;
        sysclk = <24000000>;
    };
};

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

    imx6qdl-vbx3 {
        pinctrl_audmux: audmuxgrp {
            fsl,pins = <
                MX6QDLPAD_DISP0_DAT13__AUD5_RXFS        0x130b0
                MX6QDL_PAD_DISP0_DAT14__AUD5_RXC        0x130b0
                MX6QDL_PAD_DISP0_DAT19__AUD5_RXD        0x130b0
            >;
        };
};

&ssi1 {
    status = "okay";
    codec-handle = <&codec>;
    fsl,mode = "i2s-master";
    fsl,ssi-asynchronous; /* Not sure about it, but does not change anything */
};

Here is the dmesg part :
[    6.026803] sgtl5000 1-000a: sgtl5000 revision 0x11
[    6.129380] imx-sgtl5000 sound: snd_soc_register_card failed (-517)
[    6.248849] platform sound: Driver imx-sgtl5000 requests probe deferral
[    6.311643] sgtl5000 1-000a: Using internal LDO instead of VDDD
[    6.393196] imx-sgtl5000 sound: sgtl5000 <-> 2028000.ssi mapping ok

And the user space commands :
$> arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: imx6qvbx3sgtl50 [imx6q-vbx3-sgtl5000], device 0: HiFi sgtl5000-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

$> arecord -v -V stereo -fdat -D hw:0,0 somefile.wav
Recording WAVE 'somefile.wav' : Signed 16 bit Little Endian, Rate
48000 Hz, Stereo
Hardware PCM card 0 'imx6q-vbx3-sgtl5000' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 16
  buffer_size  : 16384
  period_size  : 4096
  period_time  : 85333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 4096
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 16384
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
  appl_ptr     : 0
  hw_ptr       : 0
arecord: pcm_read:2031: read error: Input/output error

The kernel is 3.17-rc5.

Thanks for reading all this, and for any advice :).
JM


More information about the Alsa-devel mailing list