Has any one gotten MCBSP1 or MCBSP3 to work?

Background:
I have an external I2S codec that I would like to connect to the beagleboard as a slave on McBSP1. From reading through previous posts I gather that the easiest thing to do is to set up the MUX for McBSP1, then change McBSP2 to McBSP1 in sound/soc/omap/omap3beagle.c. These changes should cause any writes to /dev/ausio to show up at the expansion header McBSP1 pins. In order to actually communicate with my ADC (ADS1174), I would need to modify sound/soc/omap/omap-mcbsp.c and sound/soc/codecs/twl4030.c to match my codec.

OS: Angstrom
kernel version: Linux beagle 2.6.29-omap1 #9 Thu Jul 2 18:20:30 EDT 2009 armv7l GNU/Linux

My Attempts:

  1. Set up the uboot pin mux for McBSP1 the same way as MCBSP2:
    MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M0)) /MCBSP1_DX/\ --OUTPUT
    MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M0)) /MCBSP1_CLKX/\ --OUTPUT
    MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M0)) /MCBSP1_FSX/\ --OUTPUT
    MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M0)) /MCBSP1_DR/\ --INPUT
    MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTD | DIS | M0)) /MCBSP1_CLKR/\ --INPUT
    MUX_VAL(CP(MCBSP1_FSR), (IEN | PTD | EN | M0)) /MCBSP1_FSR/\ --INPUT
    MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /McBSP_CLKS/\ --INPUT (FROM PRCM)

FOR BSP 3 I USED:
MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M2)) /MCBSP3_DX/\ --OUTPUT
MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M2)) /MCBSP3_CLKX/\ --OUTPUT
MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M2)) /MCBSP3_FSX/\ --OUTPUT
MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M2)) /MCBSP3_DR/\ --INPUT
MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTD | DIS | M4)) /GPIO_156/\ --GPIO DON’T CARE
MUX_VAL(CP(MCBSP1_FSR), (IEN | PTD | EN | M4)) /GPIO_157/\ --GPIO DON’T CARE
MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /McBSP_CLKS/\ --INPUT (FROM PRCM)

BTW: I’ve also tried setting the pinmux in Linux, and also tried the IDIS and IEN settings in the u-boot a couple different ways as well.

  1. Changed McBSP2 to McBSP1 in sound/soc/omap/omap3beagle.c:
    (unsigned int )omap3beagle_dai.cpu_dai->private_data = 0; / McBSP1/

  2. To test this, cat File > /dev/audio

  3. I scoped both the audio out jack and the McBSP1 clock and data lines.
    I only see stuff come out of the McBSP2 port (by way of some vias) nothing on McBSP1.

  4. Just as a final verification that the BSP port “CLKS” was not being sourced externally by the TWL4030,(as opposed to by the PRCM), I scoped the TWL4030 CLKS line on r40 with BSP2 enbled, and there wasn’t a clk there.

I was expecting the audio jack to be disabled by the omap3beagle.c change from McBSP2 to McBSP1.
Can anyone help me setup and test McBSP1? I have also tried this with McBSP3 to no avail. Are my settings correct or do I need to make some other changes. My first objective is to see that the McBSP1(or BSP3…can use either) pins are “alive” before I start changing the TWL4030
codec driver to match my own.

I was able to configure the pin mux for the McBSP1 pins as GPIO’s and toggle the pins successfully. So I believe the pinmux is working. I was also able to read the pinmux addresses to verify their settings. I also tracked down (using printk’s) that McBSP1 was being setup rather than McBSP2. The addresses all line up with the McBSP1 registers. Yet when I test it, McBSP2 is still active with clock and data.

Also after configuring the pins in Linux, I disabled the I2C port to the TWL4030 (per another user group recommendation) no joy there either.

Any help on this will be greatly appreciated. Has anyone got this working? What BB version/OS/Uboot did you use? Help?

Thanks,
Saladino.

I am running into the same problem and looks like no one has got it to work yet.
I wonder if there is a bug in latest mcbsp driver in latest kernel as i am trying the
current stable branch 3.19 to test it however i have not tried with older kernels.