All of lore.kernel.org
 help / color / mirror / Atom feed
* audio mcbsp1 broken for beagleboard-xm -OMAP
@ 2015-02-20  6:45 noman pouigt
  2015-02-20 16:24 ` Peter Ujfalusi
  2015-02-20 16:27 ` Peter Ujfalusi
  0 siblings, 2 replies; 7+ messages in thread
From: noman pouigt @ 2015-02-20  6:45 UTC (permalink / raw)
  To: peter.ujfalusi@ti.com, jarkko.nikula@bitmer.com,
	broonie@kernel.org, jslaby@suse.cz
  Cc: alsa-devel@alsa-project.org, zonque

Hello,

I am trying to integrate max98090 codec with $subject board.  I am
running the mcBSP in slave mode as i have not changed the hw_parms for
omap-twl4030.c file. With below changes i see wait_for_avail is
getting stuck i.e. mcbsp is not getting any interrupt and nothing is
playing.

Kernel version:
VERSION = 3
PATCHLEVEL = 19
SUBLEVEL = 0
EXTRAVERSION =
NAME = Diseased Newt

Setup information:
Using beagle board -xm and connected max98090 codec to mcbsp1 pins.
Connected only 4 pins.

Changed the omap-twl4030.c machine file as below to disable the twl4030:
static struct snd_soc_dai_link omap_twl4030_dai_links[] = {
       {
+               .name = "max98090",
+               .stream_name = "max98090",
               .cpu_dai_name = "omap-mcbsp.1",
+               .codec_dai_name = "HiFi",
               .platform_name = "omap-mcbsp.1",
+               .codec_name = "max98090.1-0010",
               .ops = &omap_twl4030_ops,
       },

DTSI file change:arch/arm/boot/dts/omap3-beagle-xm.dts

&i2c2 {
       clock-frequency = <400000>;
+
+       max98090: max98090@10 {
+               compatible = "maxim,max98090";
+               reg = <0x10>;
+       };
};

omap/omap-twl4030.c
added in hw_params below function to set internal oscillator for 98090
for generating PLL for master clock.
snd_soc_dai_set_sysclk(codec_dai, 26000000, 0, SND_SOC_CLOCK_IN);

I am able to see that the cpu_dai is mapped with codec_dai and
configuration is ok. kernel logs at https://ideone.com/oezNSj

I think i don't need to configure the mcbsp1 pins right as it uses default.

Please guide me.I have tried IRC channel also but not getting the right folks.

https://github.com/CircuitCo/BeagleBoard-xM-RevC/blob/master/BeagleBoard-xM_revC_SCH.pdf?raw=true

Thanks,

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: audio mcbsp1 broken for beagleboard-xm -OMAP
  2015-02-20  6:45 audio mcbsp1 broken for beagleboard-xm -OMAP noman pouigt
@ 2015-02-20 16:24 ` Peter Ujfalusi
  2015-02-24  0:03   ` noman pouigt
  2015-02-20 16:27 ` Peter Ujfalusi
  1 sibling, 1 reply; 7+ messages in thread
From: Peter Ujfalusi @ 2015-02-20 16:24 UTC (permalink / raw)
  To: noman pouigt, jarkko.nikula@bitmer.com, broonie@kernel.org,
	jslaby@suse.cz
  Cc: alsa-devel@alsa-project.org, zonque

Hi,

On 02/20/2015 08:45 AM, noman pouigt wrote:
> Hello,
> 
> I am trying to integrate max98090 codec with $subject board.  I am
> running the mcBSP in slave mode as i have not changed the hw_parms for
> omap-twl4030.c file. With below changes i see wait_for_avail is
> getting stuck i.e. mcbsp is not getting any interrupt and nothing is
> playing.

I have tested the XM with twl4030 on linux-next and McBSP is working fine as
slave and master (I have a patch to add the McBSP master support for testing)
also.

> 
> Kernel version:
> VERSION = 3
> PATCHLEVEL = 19
> SUBLEVEL = 0
> EXTRAVERSION =
> NAME = Diseased Newt
> 
> Setup information:
> Using beagle board -xm and connected max98090 codec to mcbsp1 pins.
> Connected only 4 pins.
> 
> Changed the omap-twl4030.c machine file as below to disable the twl4030:
> static struct snd_soc_dai_link omap_twl4030_dai_links[] = {
>        {
> +               .name = "max98090",
> +               .stream_name = "max98090",
>                .cpu_dai_name = "omap-mcbsp.1",

Hrm, mcbsp.1 is not in use by default on the board, 2 and 3 are the one which
is used by the omap-twl4030 driver.

> +               .codec_dai_name = "HiFi",
>                .platform_name = "omap-mcbsp.1",
> +               .codec_name = "max98090.1-0010",
>                .ops = &omap_twl4030_ops,
>        },
> 
> DTSI file change:arch/arm/boot/dts/omap3-beagle-xm.dts
> 
> &i2c2 {
>        clock-frequency = <400000>;
> +
> +       max98090: max98090@10 {
> +               compatible = "maxim,max98090";
> +               reg = <0x10>;
> +       };
> };
> 
> omap/omap-twl4030.c
> added in hw_params below function to set internal oscillator for 98090
> for generating PLL for master clock.
> snd_soc_dai_set_sysclk(codec_dai, 26000000, 0, SND_SOC_CLOCK_IN);
> 
> I am able to see that the cpu_dai is mapped with codec_dai and
> configuration is ok. kernel logs at https://ideone.com/oezNSj
> 
> I think i don't need to configure the mcbsp1 pins right as it uses default.

I think you should check the pin mux for the McBSP1 pins. They might not set
to correct mode.

> 
> Please guide me.I have tried IRC channel also but not getting the right folks.
> 
> https://github.com/CircuitCo/BeagleBoard-xM-RevC/blob/master/BeagleBoard-xM_revC_SCH.pdf?raw=true
> 
> Thanks,
> 


-- 
Péter
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: audio mcbsp1 broken for beagleboard-xm -OMAP
  2015-02-20  6:45 audio mcbsp1 broken for beagleboard-xm -OMAP noman pouigt
  2015-02-20 16:24 ` Peter Ujfalusi
@ 2015-02-20 16:27 ` Peter Ujfalusi
  2015-02-21  2:36   ` noman pouigt
  1 sibling, 1 reply; 7+ messages in thread
From: Peter Ujfalusi @ 2015-02-20 16:27 UTC (permalink / raw)
  To: noman pouigt, jarkko.nikula@bitmer.com, broonie@kernel.org,
	jslaby@suse.cz
  Cc: alsa-devel@alsa-project.org, zonque

On 02/20/2015 08:45 AM, noman pouigt wrote:
> Hello,
> 
> I am trying to integrate max98090 codec with $subject board.  I am
> running the mcBSP in slave mode as i have not changed the hw_parms for
> omap-twl4030.c file. With below changes i see wait_for_avail is
> getting stuck i.e. mcbsp is not getting any interrupt and nothing is
> playing.
> 
> Kernel version:
> VERSION = 3
> PATCHLEVEL = 19
> SUBLEVEL = 0
> EXTRAVERSION =
> NAME = Diseased Newt
> 
> Setup information:
> Using beagle board -xm and connected max98090 codec to mcbsp1 pins.
> Connected only 4 pins.
> 
> Changed the omap-twl4030.c machine file as below to disable the twl4030:
> static struct snd_soc_dai_link omap_twl4030_dai_links[] = {
>        {
> +               .name = "max98090",
> +               .stream_name = "max98090",
>                .cpu_dai_name = "omap-mcbsp.1",
> +               .codec_dai_name = "HiFi",
>                .platform_name = "omap-mcbsp.1",
> +               .codec_name = "max98090.1-0010",
>                .ops = &omap_twl4030_ops,
>        },
> 
> DTSI file change:arch/arm/boot/dts/omap3-beagle-xm.dts
> 
> &i2c2 {
>        clock-frequency = <400000>;
> +
> +       max98090: max98090@10 {
> +               compatible = "maxim,max98090";
> +               reg = <0x10>;
> +       };
> };

You also need to change the dts file's sound node, enable mcbsp1, set the
pinctrl entries, etc if you boot with DT.

> 
> omap/omap-twl4030.c
> added in hw_params below function to set internal oscillator for 98090
> for generating PLL for master clock.
> snd_soc_dai_set_sysclk(codec_dai, 26000000, 0, SND_SOC_CLOCK_IN);
> 
> I am able to see that the cpu_dai is mapped with codec_dai and
> configuration is ok. kernel logs at https://ideone.com/oezNSj
> 
> I think i don't need to configure the mcbsp1 pins right as it uses default.
> 
> Please guide me.I have tried IRC channel also but not getting the right folks.
> 
> https://github.com/CircuitCo/BeagleBoard-xM-RevC/blob/master/BeagleBoard-xM_revC_SCH.pdf?raw=true
> 
> Thanks,
> 


-- 
Péter

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: audio mcbsp1 broken for beagleboard-xm -OMAP
  2015-02-20 16:27 ` Peter Ujfalusi
@ 2015-02-21  2:36   ` noman pouigt
  2015-02-25  9:40     ` Peter Ujfalusi
  0 siblings, 1 reply; 7+ messages in thread
From: noman pouigt @ 2015-02-21  2:36 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: alsa-devel@alsa-project.org, broonie@kernel.org, jslaby@suse.cz,
	jarkko.nikula@bitmer.com, Daniel Mack

On Fri, Feb 20, 2015 at 8:27 AM, Peter Ujfalusi <peter.ujfalusi@ti.com> wrote:
> On 02/20/2015 08:45 AM, noman pouigt wrote:
>> Hello,
>>
>> I am trying to integrate max98090 codec with $subject board.  I am
>> running the mcBSP in slave mode as i have not changed the hw_parms for
>> omap-twl4030.c file. With below changes i see wait_for_avail is
>> getting stuck i.e. mcbsp is not getting any interrupt and nothing is
>> playing.
>>
>> Kernel version:
>> VERSION = 3
>> PATCHLEVEL = 19
>> SUBLEVEL = 0
>> EXTRAVERSION =
>> NAME = Diseased Newt
>>
>> Setup information:
>> Using beagle board -xm and connected max98090 codec to mcbsp1 pins.
>> Connected only 4 pins.
>>
>> Changed the omap-twl4030.c machine file as below to disable the twl4030:
>> static struct snd_soc_dai_link omap_twl4030_dai_links[] = {
>>        {
>> +               .name = "max98090",
>> +               .stream_name = "max98090",
>>                .cpu_dai_name = "omap-mcbsp.1",
>> +               .codec_dai_name = "HiFi",
>>                .platform_name = "omap-mcbsp.1",
>> +               .codec_name = "max98090.1-0010",
>>                .ops = &omap_twl4030_ops,
>>        },
>>
>> DTSI file change:arch/arm/boot/dts/omap3-beagle-xm.dts
>>
>> &i2c2 {
>>        clock-frequency = <400000>;
>> +
>> +       max98090: max98090@10 {
>> +               compatible = "maxim,max98090";
>> +               reg = <0x10>;
>> +       };
>> };
>
> You also need to change the dts file's sound node, enable mcbsp1, set the
> pinctrl entries, etc if you boot with DT.
Yes and it is done as below:

&omap3_pmx_core {
        mcbsp1_pins: pinmux_mcbsp1_pins {
                pinctrl-single,pins = <
                        OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0)
                        OMAP3_CORE1_IOPAD(0x2194, PIN_INPUT | MUX_MODE0)
                        OMAP3_CORE1_IOPAD(0x2190, PIN_INPUT | MUX_MODE0)
                        OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0)
                >;
        };
}

        sound {
-               ti,mcbsp = <&mcbsp2>;
-               ti,codec = <&twl_audio>;
+               ti,mcbsp = <&mcbsp1>;
+               ti,codec = <&max98090>;
        }

&mcbsp1 {
        pinctrl-names = "default";
        pinctrl-0 = <&mcbsp1_pins>;

        status = "okay";
};

&i2c2 {
      clock-frequency = <400000>;

       max98090: max98090@10 {
               compatible = "maxim,max98090";
               reg = <0x10>;
       };
 };

all other changes remain the same. Have i done muxing wrong? I am
still stuck with mcbsp not getting interrupt.
please find the dts file here http://ideone.com/TPFkBv

I connected digital output of 98090 to mcbsp1_dr and digital receive
to mcbsp1_dx. I can see the bit clock and lrclk is coming fine from
98090. As already mentioned i have connected lrclk, bit clock, DR
and DX only.

Kernel logs here: http://ideone.com/hDHq2l

>
>>
>> omap/omap-twl4030.c
>> added in hw_params below function to set internal oscillator for 98090
>> for generating PLL for master clock.
>> snd_soc_dai_set_sysclk(codec_dai, 26000000, 0, SND_SOC_CLOCK_IN);
>>
>> I am able to see that the cpu_dai is mapped with codec_dai and
>> configuration is ok. kernel logs at https://ideone.com/oezNSj
>>
>> I think i don't need to configure the mcbsp1 pins right as it uses default.
>>
>> Please guide me.I have tried IRC channel also but not getting the right folks.
>>
>> https://github.com/CircuitCo/BeagleBoard-xM-RevC/blob/master/BeagleBoard-xM_revC_SCH.pdf?raw=true
>>
>> Thanks,
>>
>
>
> --
> Péter
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: audio mcbsp1 broken for beagleboard-xm -OMAP
  2015-02-20 16:24 ` Peter Ujfalusi
@ 2015-02-24  0:03   ` noman pouigt
  0 siblings, 0 replies; 7+ messages in thread
From: noman pouigt @ 2015-02-24  0:03 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: alsa-devel@alsa-project.org, broonie@kernel.org, jslaby@suse.cz,
	jarkko.nikula@bitmer.com, Daniel Mack

On Fri, Feb 20, 2015 at 8:24 AM, Peter Ujfalusi <peter.ujfalusi@ti.com> wrote:
> Hi,
>
> On 02/20/2015 08:45 AM, noman pouigt wrote:
>> Hello,
>>
>> I am trying to integrate max98090 codec with $subject board.  I am
>> running the mcBSP in slave mode as i have not changed the hw_parms for
>> omap-twl4030.c file. With below changes i see wait_for_avail is
>> getting stuck i.e. mcbsp is not getting any interrupt and nothing is
>> playing.
>
> I have tested the XM with twl4030 on linux-next and McBSP is working fine as
> slave and master (I have a patch to add the McBSP master support for testing)
> also.
>
>>
>> Kernel version:
>> VERSION = 3
>> PATCHLEVEL = 19
>> SUBLEVEL = 0
>> EXTRAVERSION =
>> NAME = Diseased Newt
>>
>> Setup information:
>> Using beagle board -xm and connected max98090 codec to mcbsp1 pins.
>> Connected only 4 pins.
>>
>> Changed the omap-twl4030.c machine file as below to disable the twl4030:
>> static struct snd_soc_dai_link omap_twl4030_dai_links[] = {
>>        {
>> +               .name = "max98090",
>> +               .stream_name = "max98090",
>>                .cpu_dai_name = "omap-mcbsp.1",
>
> Hrm, mcbsp.1 is not in use by default on the board, 2 and 3 are the one which
> is used by the omap-twl4030 driver.

I have used the mcbsp3 also as below where i am running codec in master and
mcbsp3 in slave mode. Configuration for that is below:

                compatible = "ti,omap-twl4030";
                ti,model = "omap3beagle";
 -               ti,mcbsp = <&mcbsp2>;
-               ti,codec = <&twl_audio>;
+               ti,mcbsp = <&mcbsp3>;
+               ti,codec = <&max98090>;


&omap3_pmx_core {

+       mcbsp3_pins: pinmux_mcbsp3_pins {
+               pinctrl-single,pins = <
+                       OMAP3_CORE1_IOPAD(0x216c, PIN_OUTPUT |
MUX_MODE1)       /* mcbsp3_dx.uart2_cts */
+                       OMAP3_CORE1_IOPAD(0x216e, PIN_INPUT |
MUX_MODE1)        /* mcbsp3_dr.uart2_rts */
+                       OMAP3_CORE1_IOPAD(0x2170, PIN_INPUT |
MUX_MODE1)        /* mcbsp3_clk.uart2_tx */
+                       OMAP3_CORE1_IOPAD(0x2172, PIN_INPUT |
MUX_MODE0)        /* mcbsp3_fsx.uart2_rx */
+               >;
+       };
}

&mcbsp3 {
        pinctrl-names = "default";
        pinctrl-0 = <&mcbsp3_pins>;

        status = "okay";
};

However still the interrupts doesn't get generated. Can you please
guide in right
direction? I have checked the mcbsp1_fsx and mcbsp1_clkx and
both the clocks generated are right i.e. one is 8k and other is
multiple of it.

On the data line i can see only zeroes. Probably dsp is filling it with
zeroes as generally done by Qualcomm dsp.

>
>> +               .codec_dai_name = "HiFi",
>>                .platform_name = "omap-mcbsp.1",
>> +               .codec_name = "max98090.1-0010",
>>                .ops = &omap_twl4030_ops,
>>        },
>>
>> DTSI file change:arch/arm/boot/dts/omap3-beagle-xm.dts
>>
>> &i2c2 {
>>        clock-frequency = <400000>;
>> +
>> +       max98090: max98090@10 {
>> +               compatible = "maxim,max98090";
>> +               reg = <0x10>;
>> +       };
>> };
>>
>> omap/omap-twl4030.c
>> added in hw_params below function to set internal oscillator for 98090
>> for generating PLL for master clock.
>> snd_soc_dai_set_sysclk(codec_dai, 26000000, 0, SND_SOC_CLOCK_IN);
>>
>> I am able to see that the cpu_dai is mapped with codec_dai and
>> configuration is ok. kernel logs at https://ideone.com/oezNSj
>>
>> I think i don't need to configure the mcbsp1 pins right as it uses default.
>
> I think you should check the pin mux for the McBSP1 pins. They might not set
> to correct mode.
>
>>
>> Please guide me.I have tried IRC channel also but not getting the right folks.
>>
>> https://github.com/CircuitCo/BeagleBoard-xM-RevC/blob/master/BeagleBoard-xM_revC_SCH.pdf?raw=true
>>
>> Thanks,
>>
>
>
> --
> Péter
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: audio mcbsp1 broken for beagleboard-xm -OMAP
  2015-02-21  2:36   ` noman pouigt
@ 2015-02-25  9:40     ` Peter Ujfalusi
  2015-02-25 20:09       ` noman pouigt
  0 siblings, 1 reply; 7+ messages in thread
From: Peter Ujfalusi @ 2015-02-25  9:40 UTC (permalink / raw)
  To: noman pouigt
  Cc: alsa-devel@alsa-project.org, broonie@kernel.org, jslaby@suse.cz,
	jarkko.nikula@bitmer.com, Daniel Mack

On 02/21/2015 04:36 AM, noman pouigt wrote:
> On Fri, Feb 20, 2015 at 8:27 AM, Peter Ujfalusi <peter.ujfalusi@ti.com> wrote:
>> On 02/20/2015 08:45 AM, noman pouigt wrote:
>>> Hello,
>>>
>>> I am trying to integrate max98090 codec with $subject board.  I am
>>> running the mcBSP in slave mode as i have not changed the hw_parms for
>>> omap-twl4030.c file. With below changes i see wait_for_avail is
>>> getting stuck i.e. mcbsp is not getting any interrupt and nothing is
>>> playing.
>>>
>>> Kernel version:
>>> VERSION = 3
>>> PATCHLEVEL = 19
>>> SUBLEVEL = 0
>>> EXTRAVERSION =
>>> NAME = Diseased Newt
>>>
>>> Setup information:
>>> Using beagle board -xm and connected max98090 codec to mcbsp1 pins.
>>> Connected only 4 pins.
>>>
>>> Changed the omap-twl4030.c machine file as below to disable the twl4030:
>>> static struct snd_soc_dai_link omap_twl4030_dai_links[] = {
>>>        {
>>> +               .name = "max98090",
>>> +               .stream_name = "max98090",
>>>                .cpu_dai_name = "omap-mcbsp.1",
>>> +               .codec_dai_name = "HiFi",
>>>                .platform_name = "omap-mcbsp.1",
>>> +               .codec_name = "max98090.1-0010",
>>>                .ops = &omap_twl4030_ops,
>>>        },
>>>
>>> DTSI file change:arch/arm/boot/dts/omap3-beagle-xm.dts
>>>
>>> &i2c2 {
>>>        clock-frequency = <400000>;
>>> +
>>> +       max98090: max98090@10 {
>>> +               compatible = "maxim,max98090";
>>> +               reg = <0x10>;
>>> +       };
>>> };
>>
>> You also need to change the dts file's sound node, enable mcbsp1, set the
>> pinctrl entries, etc if you boot with DT.
> Yes and it is done as below:
> 
> &omap3_pmx_core {
>         mcbsp1_pins: pinmux_mcbsp1_pins {
>                 pinctrl-single,pins = <
>                         OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0)
>                         OMAP3_CORE1_IOPAD(0x2194, PIN_INPUT | MUX_MODE0)
>                         OMAP3_CORE1_IOPAD(0x2190, PIN_INPUT | MUX_MODE0)
>                         OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0)

Should be:
	OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0)	/* CLKX */
        OMAP3_CORE1_IOPAD(0x2196, PIN_INPUT | MUX_MODE0)	/* FSX */
        OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT | MUX_MODE0)	/* DR */
        OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0)	/* DX */


And make sure to connect lrclk/bclk to FSX/CLKX (not to FSR/CLKR) of McBSP1.

I have tested on on my xM that McBSP1 in master mode works, DMA is running (I
do not have anything connected to pins).

>                 >;
>         };
> }
> 
>         sound {
> -               ti,mcbsp = <&mcbsp2>;
> -               ti,codec = <&twl_audio>;
> +               ti,mcbsp = <&mcbsp1>;
> +               ti,codec = <&max98090>;
>         }
> 
> &mcbsp1 {
>         pinctrl-names = "default";
>         pinctrl-0 = <&mcbsp1_pins>;
> 
>         status = "okay";
> };
> 
> &i2c2 {
>       clock-frequency = <400000>;
> 
>        max98090: max98090@10 {
>                compatible = "maxim,max98090";
>                reg = <0x10>;
>        };
>  };
> 
> all other changes remain the same. Have i done muxing wrong? I am
> still stuck with mcbsp not getting interrupt.
> please find the dts file here http://ideone.com/TPFkBv
> 
> I connected digital output of 98090 to mcbsp1_dr and digital receive
> to mcbsp1_dx. I can see the bit clock and lrclk is coming fine from
> 98090. As already mentioned i have connected lrclk, bit clock, DR
> and DX only.
> 
> Kernel logs here: http://ideone.com/hDHq2l
> 
>>
>>>
>>> omap/omap-twl4030.c
>>> added in hw_params below function to set internal oscillator for 98090
>>> for generating PLL for master clock.
>>> snd_soc_dai_set_sysclk(codec_dai, 26000000, 0, SND_SOC_CLOCK_IN);
>>>
>>> I am able to see that the cpu_dai is mapped with codec_dai and
>>> configuration is ok. kernel logs at https://ideone.com/oezNSj
>>>
>>> I think i don't need to configure the mcbsp1 pins right as it uses default.
>>>
>>> Please guide me.I have tried IRC channel also but not getting the right folks.
>>>
>>> https://github.com/CircuitCo/BeagleBoard-xM-RevC/blob/master/BeagleBoard-xM_revC_SCH.pdf?raw=true
>>>
>>> Thanks,
>>>
>>
>>
>> --
>> Péter


-- 
Péter
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: audio mcbsp1 broken for beagleboard-xm -OMAP
  2015-02-25  9:40     ` Peter Ujfalusi
@ 2015-02-25 20:09       ` noman pouigt
  0 siblings, 0 replies; 7+ messages in thread
From: noman pouigt @ 2015-02-25 20:09 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: alsa-devel@alsa-project.org, broonie@kernel.org, jslaby@suse.cz,
	jarkko.nikula@bitmer.com, Daniel Mack

On Wed, Feb 25, 2015 at 1:40 AM, Peter Ujfalusi <peter.ujfalusi@ti.com> wrote:
> On 02/21/2015 04:36 AM, noman pouigt wrote:
>> On Fri, Feb 20, 2015 at 8:27 AM, Peter Ujfalusi <peter.ujfalusi@ti.com> wrote:
>>> On 02/20/2015 08:45 AM, noman pouigt wrote:
>>>> Hello,
>>>>
>>>> I am trying to integrate max98090 codec with $subject board.  I am
>>>> running the mcBSP in slave mode as i have not changed the hw_parms for
>>>> omap-twl4030.c file. With below changes i see wait_for_avail is
>>>> getting stuck i.e. mcbsp is not getting any interrupt and nothing is
>>>> playing.
>>>>
>>>> Kernel version:
>>>> VERSION = 3
>>>> PATCHLEVEL = 19
>>>> SUBLEVEL = 0
>>>> EXTRAVERSION =
>>>> NAME = Diseased Newt
>>>>
>>>> Setup information:
>>>> Using beagle board -xm and connected max98090 codec to mcbsp1 pins.
>>>> Connected only 4 pins.
>>>>
>>>> Changed the omap-twl4030.c machine file as below to disable the twl4030:
>>>> static struct snd_soc_dai_link omap_twl4030_dai_links[] = {
>>>>        {
>>>> +               .name = "max98090",
>>>> +               .stream_name = "max98090",
>>>>                .cpu_dai_name = "omap-mcbsp.1",
>>>> +               .codec_dai_name = "HiFi",
>>>>                .platform_name = "omap-mcbsp.1",
>>>> +               .codec_name = "max98090.1-0010",
>>>>                .ops = &omap_twl4030_ops,
>>>>        },
>>>>
>>>> DTSI file change:arch/arm/boot/dts/omap3-beagle-xm.dts
>>>>
>>>> &i2c2 {
>>>>        clock-frequency = <400000>;
>>>> +
>>>> +       max98090: max98090@10 {
>>>> +               compatible = "maxim,max98090";
>>>> +               reg = <0x10>;
>>>> +       };
>>>> };
>>>
>>> You also need to change the dts file's sound node, enable mcbsp1, set the
>>> pinctrl entries, etc if you boot with DT.
>> Yes and it is done as below:
>>
>> &omap3_pmx_core {
>>         mcbsp1_pins: pinmux_mcbsp1_pins {
>>                 pinctrl-single,pins = <
>>                         OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0)
>>                         OMAP3_CORE1_IOPAD(0x2194, PIN_INPUT | MUX_MODE0)
>>                         OMAP3_CORE1_IOPAD(0x2190, PIN_INPUT | MUX_MODE0)
>>                         OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0)
>
> Should be:
>         OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0)        /* CLKX */
>         OMAP3_CORE1_IOPAD(0x2196, PIN_INPUT | MUX_MODE0)        /* FSX */
>         OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT | MUX_MODE0)        /* DR */
>         OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0)       /* DX */
>
>
> And make sure to connect lrclk/bclk to FSX/CLKX (not to FSR/CLKR) of McBSP1.
>
> I have tested on on my xM that McBSP1 in master mode works, DMA is running (I
> do not have anything connected to pins).

Thanks for this. Thomas Niederprüm was kind enough to provide also the
same details.
So summarizing it as below:

Inorder to use mcbsp1 pins connected to the auxillary header in
beagleboard-xm we
have to do the configure the below pins as output/input depending on what is
who is running as master or slave.

As stated in the DM3730 TRM the register offsets for the mcbsp1 pins
are:
0x218C -> mcbsp1_clkr
0x218E -> mcbsp1_fsr
0x2190 -> mcbsp1_dx
0x2192 -> mcbsp1_dr
0x2194 -> mcbsp1_clks (not exposed)
0x2196 -> mcbsp1_fsx
0x2198 -> mcbsp1_clkx

Also note that the pins mcbsp1_clkr, mcbsp1_dx, mcbsp1_dr and
mcbsp1_fsx interfere with the mcspi4 pins. So if you use those pins it
might be worth to disable mcspi4:

&mcspi4 {
        status = "disabled";
};

In my case i was running as mcbsp as slave and my codec as master.For
this configuration i did muxing as below in device tree file.

+       mcbsp1_pins: pinmux_mcbsp1_pins {
+                pinctrl-single,pins = <
+                        OMAP3_CORE1_IOPAD(0x2196, PIN_INPUT | MUX_MODE0)
+                        OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0)
+                        OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0)
+                        OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT | MUX_MODE0)
+                >;
+        };

>
>>                 >;
>>         };
>> }
>>
>>         sound {
>> -               ti,mcbsp = <&mcbsp2>;
>> -               ti,codec = <&twl_audio>;
>> +               ti,mcbsp = <&mcbsp1>;
>> +               ti,codec = <&max98090>;
>>         }
>>
>> &mcbsp1 {
>>         pinctrl-names = "default";
>>         pinctrl-0 = <&mcbsp1_pins>;
>>
>>         status = "okay";
>> };
>>
>> &i2c2 {
>>       clock-frequency = <400000>;
>>
>>        max98090: max98090@10 {
>>                compatible = "maxim,max98090";
>>                reg = <0x10>;
>>        };
>>  };
>>
>> all other changes remain the same. Have i done muxing wrong? I am
>> still stuck with mcbsp not getting interrupt.
>> please find the dts file here http://ideone.com/TPFkBv
>>
>> I connected digital output of 98090 to mcbsp1_dr and digital receive
>> to mcbsp1_dx. I can see the bit clock and lrclk is coming fine from
>> 98090. As already mentioned i have connected lrclk, bit clock, DR
>> and DX only.
>>
>> Kernel logs here: http://ideone.com/hDHq2l
>>
>>>
>>>>
>>>> omap/omap-twl4030.c
>>>> added in hw_params below function to set internal oscillator for 98090
>>>> for generating PLL for master clock.
>>>> snd_soc_dai_set_sysclk(codec_dai, 26000000, 0, SND_SOC_CLOCK_IN);
>>>>
>>>> I am able to see that the cpu_dai is mapped with codec_dai and
>>>> configuration is ok. kernel logs at https://ideone.com/oezNSj
>>>>
>>>> I think i don't need to configure the mcbsp1 pins right as it uses default.
>>>>
>>>> Please guide me.I have tried IRC channel also but not getting the right folks.
>>>>
>>>> https://github.com/CircuitCo/BeagleBoard-xM-RevC/blob/master/BeagleBoard-xM_revC_SCH.pdf?raw=true
>>>>
>>>> Thanks,
>>>>
>>>
>>>
>>> --
>>> Péter
>
>
> --
> Péter
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-02-25 20:09 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-20  6:45 audio mcbsp1 broken for beagleboard-xm -OMAP noman pouigt
2015-02-20 16:24 ` Peter Ujfalusi
2015-02-24  0:03   ` noman pouigt
2015-02-20 16:27 ` Peter Ujfalusi
2015-02-21  2:36   ` noman pouigt
2015-02-25  9:40     ` Peter Ujfalusi
2015-02-25 20:09       ` noman pouigt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.