[alsa-devel] No sound captured with SGTL5000 on i.MX6 in I²S master mode
Michael Trimarchi
michael at amarulasolutions.com
Thu Sep 18 15:35:15 CEST 2014
Hi
On Thu, Sep 18, 2014 at 3:30 PM, Fabio Estevam <festevam at gmail.com> wrote:
> Hi Jean-Michel,
>
> On Thu, Sep 18, 2014 at 9:56 AM, Jean-Michel Hautbois
> <jean-michel.hautbois at vodalys.com> wrote:
>> 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 ?
>
Yes, can you check if the direction of the mux-port is correct and you
are really get data.
> I am also trying to test fsl_ssi in master mode.
>
> I am running linux-next 20140912 with the following changes to get SSI
> in master mode:
>
> --- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
> @@ -532,6 +532,7 @@
> };
>
> &ssi2 {
> + fsl,mode = "i2s-master";
> status = "okay";
> };
>
> diff --git a/sound/soc/fsl/imx-wm8962.c b/sound/soc/fsl/imx-wm8962.c
> index 3a3d17c..09ea6a5 100644
> --- a/sound/soc/fsl/imx-wm8962.c
> +++ b/sound/soc/fsl/imx-wm8962.c
> @@ -247,7 +247,7 @@ static int imx_wm8962_probe(struct platform_device *pdev)
> data->dai.platform_of_node = ssi_np;
> data->dai.ops = &imx_hifi_ops;
> data->dai.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
> - SND_SOC_DAIFMT_CBM_CFM;
> + SND_SOC_DAIFMT_CBS_CFS;
>
> data->card.dev = &pdev->dev;
> ret = snd_soc_of_parse_card_name(&data->card, "model");
>
> ,but when I do aplay I do not get any sound.
>
>> 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>;
>
> I think this codec-handle is not needed here.
>
>> 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 clock is not get in
Michael
>> The kernel is 3.17-rc5.
>>
>> Thanks for reading all this, and for any advice :).
>
> I am adding some more folks in Cc in case they have some suggestions.
>
> Regards,
>
> Fabio Estevam
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
--
| Michael Nazzareno Trimarchi Amarula Solutions BV |
| COO - Founder Cruquiuskade 47 |
| +31(0)851119172 Amsterdam 1018 AM NL |
| [`as] http://www.amarulasolutions.com |
More information about the Alsa-devel
mailing list