Hi,
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 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@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 = < MX6QDL_PAD_DISP0_DAT13__AUD5_RXFS 0x130b0 MX6QDL_PAD_DISP0_DAT14__AUD5_RXC 0x130b0 MX6QDL_PAD_DISP0_DAT16__AUD5_TXC 0x130b0 MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS 0x130b0 MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0 >; }; };
&ssi1 { status = "okay"; codec-handle = <&codec>; fsl,mode = "i2s-master"; fsl,ssi-asynchronous; };
FYI, AUD5_TXC is wirely connected to AUD5_RXC and AUD5_TXFS is connected to AUD5_RXFS.
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