This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Audio on DVI cape not working

It doesn't seem to register the codec, although it does show up on the i2c bus. Diff used:

http://dominion.thruhere.net/koen/angstrom/beaglebone/dvi-audio.diff

  • Which kernel did you start with?

    Steve K.

  • Koen,

    The AUD_DIN & AUD_DOUT on Cape are swapped when compared to the EVM - in your source I do not see the definition for am335x_iis_serializer_direction1. Please refer the attached patch for details. 

    Master branch on gitorious: https://gitorious.org/sitara-board-port

    Patch (change extension to .patch): 

    From 6a5b7fa0806be7af6e92f895ab4430d98a8f7fc2 Mon Sep 17 00:00:00 2001
    From: Punya Prakash <pprakash@ti.com>
    Date: Fri, 4 May 2012 07:50:04 -0500
    Subject: [PATCH]  board-am335xevm: Add audio suport for Beaglebone DVI Cape
    
    
    Signed-off-by: Punya Prakash <pprakash@ti.com>
    ---
     arch/arm/mach-omap2/board-am335xevm.c |   43 ++++++++++++++++++++++++++++++++-
     1 files changed, 42 insertions(+), 1 deletions(-)
    
    diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
    index 874dfd7..65d20b9 100644
    --- a/arch/arm/mach-omap2/board-am335xevm.c
    +++ b/arch/arm/mach-omap2/board-am335xevm.c
    @@ -191,6 +191,13 @@ static u8 am335x_iis_serializer_direction1[] = {
     	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,
     };
     
    +static u8 am335x_iis_serializer_direction[] = {
    +        INACTIVE_MODE,  INACTIVE_MODE,  RX_MODE,        TX_MODE,
    +        INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,
    +        INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,
    +        INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,
    +};
    +
     static struct snd_platform_data am335x_evm_snd_data1 = {
     	.tx_dma_offset	= 0x46400000,	/* McASP1 */
     	.rx_dma_offset	= 0x46400000,
    @@ -204,6 +211,19 @@ static struct snd_platform_data am335x_evm_snd_data1 = {
     	.rxnumevt	= 1,
     };
     
    +static struct snd_platform_data bone_snd_data1 = {
    +       .tx_dma_offset  = 0x46000000,   /* McASP0*/
    +       .rx_dma_offset  = 0x46000000,
    +       .op_mode        = DAVINCI_MCASP_IIS_MODE,
    +       .num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction),
    +       .tdm_slots      = 2,
    +       .serial_dir     = am335x_iis_serializer_direction1,
    +       .asp_chan_q     = EVENTQ_2,
    +       .version        = MCASP_VERSION_3,
    +       .txnumevt       = 1,
    +       .rxnumevt       = 1,
    +};
    +
     static struct omap2_hsmmc_info am335x_mmc[] __initdata = {
     	{
     		.mmc            = 1,
    @@ -595,6 +615,14 @@ static struct pinmux_config mcasp1_pin_mux[] = {
     	{NULL, 0},
     };
     
    +/* Module pin mux for mcasp0 */
    +static struct pinmux_config mcasp0_pin_mux[] = {
    +       {"mcasp0_aclkx.mcasp0_aclkx", OMAP_MUX_MODE0 |AM33XX_PIN_INPUT_PULLDOWN},
    +       {"mcasp0_fsx.mcasp0_fsx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
    +       {"mcasp0_ahclkr.mcasp0_axr2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
    +       {"mcasp0_ahclkx.mcasp0_axr3", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
    +       {NULL, 0},
    +};
     
     /* Module pin mux for mmc0 */
     static struct pinmux_config mmc0_pin_mux[] = {
    @@ -1466,6 +1494,9 @@ static void i2c1_init(int evm_id, int profile)
     
     
     static struct i2c_board_info am335x_i2c_boardinfo2[] = {
    +        {
    +                I2C_BOARD_INFO("tlv320aic3x", 0x1b),
    +        },
     };
     
     static void i2c2_init(int evm_id, int profile)
    @@ -1485,6 +1516,15 @@ static void mcasp1_init(int evm_id, int profile)
     	return;
     }
     
    +/* Setup McASP 0 */
    +static void mcasp0_init(int evm_id, int profile)
    +{
    +       /* Configure McASP */
    +       setup_pin_mux(mcasp0_pin_mux);
    +       am335x_register_mcasp(&bone_snd_data1, 0);
    +       return;
    +}
    +
     static void mmc1_init(int evm_id, int profile)
     {
     	setup_pin_mux(mmc1_pin_mux);
    @@ -1841,6 +1881,7 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = {
     	{usb1_init,	DEV_ON_BASEBOARD, PROFILE_NONE},
     	{mmc0_init,	DEV_ON_BASEBOARD, PROFILE_NONE},
     	{i2c2_init,	DEV_ON_BASEBOARD, PROFILE_NONE},
    +	{mcasp0_init, DEV_ON_BASEBOARD, PROFILE_ALL},
     	{NULL, 0, 0},
     };
     
    @@ -1934,7 +1975,7 @@ static void setup_beaglebone(void)
     	_configure_device(LOW_COST_EVM, beaglebone_dev_cfg, PROFILE_NONE);
     
     	/* TPS65217 regulator has full constraints */
    -	regulator_has_full_constraints();
    +//	regulator_has_full_constraints();
     
     	/* Fill up global evmid */
     	am33xx_evmid_fillup(BEAGLE_BONE_A3);
    -- 
    1.7.0.4
    
    

    Regards, Punya