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_...
Thanks,
-- Péter