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.

TPS65950 generates the half signal only on positive side

Other Parts Discussed in Thread: TPS65950, OMAP3530

I have the problem with codec TPS65950 on Beagleboard revC4 (OMAP3530).

Codec is configured as media player, but it cuts negative values of signal, only half of signal is availability (for both left and right channel, HSOR, HSOL).
Where could be the reason?





Configuration:
    aregw(AV_CODEC_MODE, 0);     // turn it off to configure
    aregw(AV_CODEC_MODE, APPL_RATE_8 | 1); //OPTMODE = 1

    // audio audio 1 = in (transmit) audio 2 = out (receive)
    aregw(AV_OPTION, ARXR2_EN | ARXL2_EN | ATXR1_EN | ATXL1_EN);           //Reg 2 = 0x3c

    // route rx 1 to pga 1
    aregw(AV_RX_PATH_SEL,  (0 << B_RXL1_SEL) | (0 << B_RXR1_SEL));

    // set system clock speed and enable the local clock
    aregw(AV_APLL_CTL, APLL_EN | APLL_INFREQ_26);

    aregw(AV_AVDAC_CTL, ADACL2_EN | ADACR2_EN);   // turn on audio DAC (left, right)

    // turn on left and right output
    aregw(AV_ARXL2_APGA_CTL, ARX1_PDZ | ARX1_DA_EN | (0x06 << B_ARX1_GAIN_SET));
    aregw(AV_ARXR2_APGA_CTL, ARX1_PDZ | ARX1_DA_EN | (0x06 << B_ARX1_GAIN_SET));
    // headset output select
    aregw(AV_HS_SEL, HSOL_AL2_EN | HSOR_AR2_EN);
    // left/right digital gain
    aregw(AV_ARXL2PGA, 0xFB);        /* max value */                                        //reg13 = 0xfb;
    aregw(AV_ARXR2PGA, 0xFB);                                                                         //reg12 = 0xfb;

    // set headset left/right gain (balance)
    aregw(AV_HS_GAIN_SET, 0x05);

    // audio interface.  master mode, i2s format, 16 bit data
    aregw(AV_AUDIO_IF, AIF_FORMAT_CODEC | DATA_WIDTH_16 | AIF_EN);                   //reg14 = 0x1;

    // volume/effects
    // set base boost effect
    aregw(AV_BOOST_CTL, 1<<1);
    // turn on soft volume delay and enable
    //    aregw(AV_SOFTVOL_CTL, SOFTVOL_EN | (3 << B_SOFTVOL_SET));
    // anti-pop volume changes
    //    aregw(AV_MISC_SET_1, SMOOTH_ANAVOL_EN);
    // anti-pop paramters
    aregw(AV_HS_POPN_SET, RAMP_DELAY_161ms);
    aregw(AV_HS_POPN_SET, VMID_EN);
    aregw(AV_HS_POPN_SET, RAMP_EN);

    // transmit settings (audio in)
    // left/right gain
    aregw(AV_ATXL1PGA, 0x0);                                                         //reg10 = 0x0
    aregw(AV_ATXR1PGA, 0x0);                                                         //reg11 = 0x0;

    // left/right ADC, and choose as TXx1
    aregw(AV_AVADC_CTL, ADCL_EN | ADCR_EN);                                          //reg7 = 0xa;
    aregw(AV_ADCMICSEL, 0);                                                          //reg8 = 0x0;

    // line in on beagle comes from AUX, also enable anti-pop and start
    aregw(AV_ANAMICL, 0x34 | AUXL_EN | OFFSET_CNCL_SEL_RXALL | CNCL_OFFSET_START);   //reg 5 = 0x118
    aregw(AV_ANAMICR, 0x14 | AUXR_EN);                                               //reg6 = 0x18;
    aregw(AV_ANAMIC_GAIN, (0<<3)|0);                                                 //reg48 = 0x0;

    // power up, with sample rate and option 1 (2x stereo audio paths in and out)
    aregw(AV_CODEC_MODE, APPL_RATE_8 | 0 | OPT_MODE);
    aregw(AV_CODEC_MODE, APPL_RATE_48 | CODECPDZ | OPT_MODE);                           //reg 1 = 0x2;