0.3.6 with PVR-150MCE (LG TAPE, PAL). Audio on tuner worked fine till
0.3.4s, got broken, fixed in 0.3.5, broken again in 0.3.5a.
Tried 0.3.6. Audio works with tda9887 qss=0 module option but with
crackling, popping sound.

N.

On 6/4/05, Bryan Mayland <[EMAIL PROTECTED]> wrote:
> I spent my morning looking at why the audio on my svideo and composite
> inputs has clicks and stuff in it.  I've modified our
> cx25840_set_audio_input to more closely match the windows driver.  The
> main difference is the mutes on line-in; we now unmute AC97, PAR, and
> SRC1 like the windows version does.
> 
> I've also removed a lot of places where we toggle the microcontroller on
> and off, and only turn it on after selecting tuner audio.  This is also
> came from the windows driver.
> 
> Third, I fixed where I had a typo in my 5/31 email.  I meant to say
> 0x478 write4 0x6650021f, but I said 0x64...  The difference that a 2line
> luma comb filter can be used by the adaptation algorithm in addition to
> the 3line.
> 
> I've also got:
> -- CH2_SRC is now set to 0 instead of 3 when selecting the tuner input.
> This is because CH2 isn't actually used, and I think it reads a little
> better this way.  The line could actually be removed altogether.
> -- CH2 or CH3 is powered down when not in use by the selected input.
> -- A function to power down all units is included but #defined out.
> 
> I can break these up, but I don't see any potential problems except for
> all the changes to the MICROCTRL on/off.
> 
> 
> Index: ivtv/driver/cx25840-driver.c
> ===================================================================
> --- ivtv/driver/cx25840-driver.c        (revision 283)
> +++ ivtv/driver/cx25840-driver.c        (working copy)
> @@ -233,7 +233,7 @@
>                  cx25840_write(client, 0x0478, 0x1f);
>                  cx25840_write(client, 0x0479, 0x02);
>                  cx25840_write(client, 0x047a, 0x50);
> -                cx25840_write(client, 0x047b, 0x64);
> +                cx25840_write(client, 0x047b, 0x66);
> 
>                  cx25840_write(client, 0x047c, 0x1f);
>                  cx25840_write(client, 0x047d, 0x7c);
> @@ -441,23 +441,38 @@
> 
>          cx25840_initialize(client);
>  #if 1
> -        CX25840_SET_START_MICROCNTL(0x0000); // FW Stop
> +        //CX25840_SET_START_MICROCNTL(0x0000); // FW Stop
>          CX25840_SET_SOFT_RESET(0x0001); // Soft reset assert.
>          CX25840_SET_VD_SOFT_RST(0x0001); // Video assert
> 
> -        CX25840_SET_START_MICROCNTL(0x0001); // FW Start
> +        //CX25840_SET_START_MICROCNTL(0x0001); // FW Start
>          CX25840_SET_SOFT_RESET(0x0000); // Deassert soft reset
>          CX25840_SET_VD_SOFT_RST(0x0000); // Deassert video reset
>  #endif
> 
>          /* Setup VBI */
> -        CX25840_SET_START_MICROCNTL(0x0000);
> +        //CX25840_SET_START_MICROCNTL(0x0000);
>          vbi_reg_setup(client);
> -        CX25840_SET_START_MICROCNTL(0x0001);
> +        //CX25840_SET_START_MICROCNTL(0x0001);
> 
>          return;
>  }
> 
> +#if 0
> +static void cx25840_set_low_power(struct i2c_client *client, int down)
> +{
> +       int pwr_dn = (down) ? 0x01 : 0x00;
> +       DEBUG(1, "cx25840_set_low_power: %d %d\n", down, pwr_dn);
> +       CX25840_SET_PWR_DN_CH1(pwr_dn);
> +       // Don't change power to CH2 or CH3, since they are input-dependant
> +       CX25840_SET_PWR_DN_ADC1(pwr_dn);
> +       CX25840_SET_PWR_DN_ADC2(pwr_dn);
> +       CX25840_SET_PWR_DN_DLL1(pwr_dn);
> +       CX25840_SET_PWR_DN_DLL2(pwr_dn);
> +       CX25840_SET_PWR_DN_TUNING(pwr_dn);
> +}
> +#endif
> +
>  static int cx25840_command(struct i2c_client *client, unsigned int cmd,
>                            void *arg)
>  {
> @@ -642,7 +657,7 @@
>                         break;
> 
>                 CX25840_SET_SOFT_RESET(0x0001);
> -               CX25840_SET_START_MICROCNTL(0x0000);
> +               //CX25840_SET_START_MICROCNTL(0x0000);
> 
>                 switch (*iarg) {
>                 case VIDEO_MODE_NTSC:
> @@ -660,13 +675,13 @@
>                 default:
>                         DEBUG(1, "Unknown video mode!!!");
>                         CX25840_SET_SOFT_RESET(0x0000);
> -                       CX25840_SET_START_MICROCNTL(0x0001);
> +                       //CX25840_SET_START_MICROCNTL(0x0001);
>                         return -EINVAL;
>                 }
>                 state->norm = *iarg;
> 
>                 CX25840_SET_SOFT_RESET(0x0000);
> -               CX25840_SET_START_MICROCNTL(0x0001);
> +               //CX25840_SET_START_MICROCNTL(0x0001);
>                 break;
>         }
> 
> @@ -692,7 +707,9 @@
>                         DEBUG(1, "now setting Composite input");
>                         CX25840_SET_CH_1__SOURCE(0x0002);
>                         CX25840_SET_CH_2__SOURCE(0x0000);
> +                       CX25840_SET_PWR_DN_CH2(0x01);
>                         CX25840_SET_CH_3__SOURCE(0x0000);
> +                       CX25840_SET_PWR_DN_CH3(0x00);
>                         CX25840_SET_CH_SEL_ADC2(0x0001);
>                         CX25840_SET_INPUT_MODE(0x0000);
>                         break;
> @@ -701,7 +718,9 @@
>                         DEBUG(1, "now setting S-Video input");
>                         CX25840_SET_CH_1__SOURCE(0x0000);
>                         CX25840_SET_CH_2__SOURCE(0x0001);
> +                       CX25840_SET_PWR_DN_CH2(0x00);
>                         CX25840_SET_CH_3__SOURCE(0x0000);
> +                       CX25840_SET_PWR_DN_CH3(0x01);
>                         CX25840_SET_CH_SEL_ADC2(0x0000);
>                         CX25840_SET_INPUT_MODE(0x0001);
>                         CX25840_SET_VGA_SEL_CH2(0x00);
> @@ -712,8 +731,10 @@
>                 case CX25840_TUNER:
>                         DEBUG(1, "now setting Tuner input");
>                         CX25840_SET_CH_1__SOURCE(cardtype==1 ? 0x0001:0x0006);
> -                       CX25840_SET_CH_2__SOURCE(0x0003);
> +                       CX25840_SET_CH_2__SOURCE(0x0000);
> +                       CX25840_SET_PWR_DN_CH2(0x01);
>                         CX25840_SET_CH_3__SOURCE(0x0001);
> +                       CX25840_SET_PWR_DN_CH3(0x00);
>                         CX25840_SET_CH_SEL_ADC2(0x0001);
>                         CX25840_SET_INPUT_MODE(0x0000);
>                         break;
> @@ -772,7 +793,7 @@
>                                         DECODER_SET_VBI, &vbi_mode);
> 
>                                 CX25840_SET_SOFT_RESET(0x0001);
> -                               CX25840_SET_START_MICROCNTL(0x0000);
> +                               //CX25840_SET_START_MICROCNTL(0x0000);
> 
>                                  cx25840_write(client, 0x0115,
>                                         (cx25840_read(client, 0x0115)|0x04));
> @@ -780,10 +801,10 @@
>                                         (cx25840_read(client, 0x0116)|0x04));
> 
>                                 CX25840_SET_SOFT_RESET(0x0000);
> -                               CX25840_SET_START_MICROCNTL(0x0001);
> +                               //CX25840_SET_START_MICROCNTL(0x0001);
>                          } else {
>                                 CX25840_SET_SOFT_RESET(0x0001);
> -                               CX25840_SET_START_MICROCNTL(0x0000);
> +                               //CX25840_SET_START_MICROCNTL(0x0000);
> 
>                                  cx25840_write(client, 0x0115,
>                                         (cx25840_read(client, 0x0115)&0xfb));
> @@ -791,7 +812,7 @@
>                                         (cx25840_read(client, 0x0116)&0xfb));
> 
>                                 CX25840_SET_SOFT_RESET(0x0000);
> -                               CX25840_SET_START_MICROCNTL(0x0001);
> +                               //CX25840_SET_START_MICROCNTL(0x0001);
>                          }
>                  }
>                  break;
> @@ -862,7 +883,7 @@
>                  for (x = 0; x <= 18; x++)
>                          lcr[x] = 0x00;
> 
> -               CX25840_SET_START_MICROCNTL(0x0000);
> +               //CX25840_SET_START_MICROCNTL(0x0000);
>                 /* Raw VBI */
>                 if (set == 0) {
>                         /*for (x = 0, i = 0x0424; i <= 0x0434; i++, x++) {
> @@ -875,7 +896,7 @@
>                         cx25840_write(client, 0x047F, vbi_offset);
> 
>                         cx25840_write(client, 0x0404, 0x2e);
> -                       CX25840_SET_START_MICROCNTL(0x0001);
> +                       //CX25840_SET_START_MICROCNTL(0x0001);
>                         break;
>                 }
> 
> @@ -942,7 +963,7 @@
>                 for (x = 1, i = 0x0424; i <= 0x0434; i++, x++) {
>                         cx25840_write(client, i, lcr[x]);
>                 }
> -               CX25840_SET_START_MICROCNTL(0x0001);
> +               //CX25840_SET_START_MICROCNTL(0x0001);
>                 break;
>         }
> 
> Index: ivtv/driver/cx25840-audio.c
> ===================================================================
> --- ivtv/driver/cx25840-audio.c (revision 283)
> +++ ivtv/driver/cx25840-audio.c (working copy)
> @@ -11,7 +11,6 @@
>         if(audio_input <= 4) {
>                 DEBUG(1, "set audio input (%d)", audio_input);
> 
> -               CX25840_SET_SOFT_RESET(0x0001);
>                 CX25840_SET_START_MICROCNTL(0x0000);
> 
>                 switch (audio_input) {
> @@ -35,6 +34,8 @@
>                         CX25840_SET_SA_MUTE_EN(0x0001);
>                         CX25840_SET_SRC1_MUTE_EN(0x0000);
>                         CX25840_SET_SOFT1_MUTE_EN(0x0001);
> +
> +                       CX25840_SET_START_MICROCNTL(0x0001);
>                         break;
> 
>                 case 1: // external line-in (???)
> @@ -55,17 +56,14 @@
>                         CX25840_SET_PATH1_AVC_RT(0x0001);
> 
>                         // 01
> -                       CX25840_SET_AC97_MUTE_EN(0x0001);
> -                       CX25840_SET_PAR_MUTE_EN(0x0001);
> +                       CX25840_SET_AC97_MUTE_EN(0x0000);
> +                       CX25840_SET_PAR_MUTE_EN(0x0000);
>                         CX25840_SET_SA_MUTE_EN(0x0000);
> -                       CX25840_SET_SRC1_MUTE_EN(0x0001);
> +                       CX25840_SET_SRC1_MUTE_EN(0x0000);
>                         CX25840_SET_SOFT1_MUTE_EN(0x0001);
>                         break;
>                 }
> 
> -               CX25840_SET_SOFT_RESET(0x0000);
> -               CX25840_SET_START_MICROCNTL(0x0001);
> -
>                 state->audio_input = audio_input;
>                 return 0;
>         }
> @@ -83,7 +81,6 @@
> 
>         // assert soft reset
>         CX25840_SET_SOFT_RESET(0x0001);
> -       CX25840_SET_START_MICROCNTL(0x0000);
> 
>         // common for all inputs and rates
>         CX25840_SET_VID_PLL_INT(0x000f);
> @@ -260,7 +257,6 @@
> 
>         // deassert soft reset
>         CX25840_SET_SOFT_RESET(0x0000);
> -       CX25840_SET_START_MICROCNTL(0x0001);
> 
>         state->audio = audio;
> 
> 
> 
>


-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r 
_______________________________________________
ivtv-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ivtv-devel

Reply via email to