[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