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.

noise with tps65930

Other Parts Discussed in Thread: TPS65930, DM3730

Hi,

I am using kernel 2.6.32, on DM3730, and tps65930. Using tps65930 codec, for speaker and headset. When using the aplay to paly .wav file in headset as

aplay -Dplug:dmix Error.wav

With this observing noise after play is complete for both speaer and headset.

To the remove the noise, we used external mute GPIO6 method (By changing GPIO6 mode to MUTE in PMBR1 register), that is being used in headset_ramp () function in "sound/soc/codecs/twl4030.c"  to mute, so that amplifier gain is set depending in ramp up and down.

Also, initialized the int (*digital_mute)(struct snd_soc_dai *dai, int mute); in  "snd_soc_dai_ops" structure,

that control the speaker and headset amplifier using OMAP GPIO 36 & 38. 

During aplay start these GPIOs (36 & 38) are pulled high to enable the speaker/headset amplifer and during close these are pulled down.

With this we do not see noise on the speaker. But still we observe the noise in headset, but it is random.

We are using predrive line that is being feed to headset or speaker depending on the switch used to select speaker/headset. After that we have separate amplifier for speaker and headset that are controlled by GPIO 36 and 38 respectively.

Also, tried the fix given in errta but does not help-out.

Also, aplay -Dhw:0,0 Error.wav works without generation of any noise for both headset  and speaker.

Please help in fixing the issue.

 Thanks

jitendra

 

  • Hi,

    I was able to fix the pop noise problem, by adding the below fix.

    Index: sound/soc/omap/omap-mcbsp.c
    ===================================================================
    --- sound/soc/omap/omap-mcbsp.c (revision 1959)
    +++ sound/soc/omap/omap-mcbsp.c (working copy)
    @@ -30,6 +30,7 @@
     #include <sound/pcm_params.h>
     #include <sound/initval.h>
     #include <sound/soc.h>
    +#include <linux/delay.h>

     #include <plat/control.h>
     #include <plat/dma.h>
    @@ -245,6 +246,7 @@

            case SNDRV_PCM_TRIGGER_STOP:
            case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
    +               udelay (550);
                    omap_mcbsp_stop(mcbsp_data->bus_id, play, !play);
                    mcbsp_data->active--;
                    break;

    But, I do not get why delay is required?.

    Thnaks

    jitendra kumar