Am Mittwoch, den 29.04.2009, 21:14 -0400 schrieb Andy Walls:
> On Wed, 2009-04-29 at 20:12 +1000, Dmitri Belimov wrote:
> > Hi,
> >
> > > Am Dienstag, den 28.04.2009, 19:59 +1000 schrieb Dmitri Belimov:
> > > > On Tue, 28 Apr 2009 15:18:32 -0300
> > > > Mauro Carvalho Chehab <[email protected]> wrote:
> > > >
> > > > > On Mon, 27 Apr 2009 19:29:05 +1000
> > > > > Dmitri Belimov <[email protected]> wrote:
> > > > >
> > > > > > Hi All
> > > > > >
> > > > > > Step by step.
> > > > > >
> > > > > > This is patch for change only range of FM1216ME_MK3. Slow
> > > > > > tunning is not a big problem.
> > > > >
> > > > > Dmitri,
> > > > >
> > > > > I'll mark those patches as RFC at patchwork until the end of those
> > > > > discussions. After that, please send it again into a new thread.
> > > >
> > > > You mark patch with TOP AGC not this.
> > > >
> > > > I think need discuss about FM1216ME_MK3 because I'll have a big
> > > > patch for support control TOP AGC (sensitivity) of this tuner. It
> > > > can be bad for compatible tuners.
> > >
> > > hmm, in Europe, that TOP AGC did not ever made much difference and it
> > > is an insmod option since ever.
> > >
> > > I can't tell for Sibiria and initially that tuner had no SECAM-DK
> > > support officially at all. There are no good/much_better tuners for
> > > FTA at all and never have been ;)
> > >
> > > Some examples, user success reports, to make it more easily to
> > > understand? I think it can only change some _very little_ under
> > > already worst conditions.
> >
> > This is my idea for RFC about TOP AGC:
> >
> > 1. Add gain variable to tuner structure.
> > 2. Add V4L2_CID_GAIN control to saa7134 and disable this control.
> > 3. Add workaround to simple_post_tune function for write sensitivity level
> > to the tuner.
> > 4. Enable V4L2_CID_GAIN control when module load if card is right.
> >
> > My expirience not so good, step 4 segfault the kernel. How to we can make
> > it?
> >
> > Our windows end-user programm control the sensitivity of each TV channel
> > and change when
> > channel changed.
> >
> > What you think about it??
>
> Dmitri,
>
> >From my understanding the take over point is the signal strength level
> that you want the second stage (an IF demod chip like the TDA9887) to
> take over automatic gain control from the first stage (a tuner chip like
> the TUA6030). The objective is to set the TOP to achieve maximum gain
> in the first stage while avoiding clipping in the first stage. When the
> input signal level is smaller than the TOP, the first stage gain is at a
> maximum, and the second stage is performing automatic gain control
> internally. When the input signal level becomes greater than the TOP,
> the first stage gain needs to be reduced by an AGC, and the second stage
> gain remains constant.
>
>
> As I understand it, it would be best to set the first stage (TUA6030 or
> similar) to "External AGC" and set the take over point in the second
> stage (the TDA9887), if the pins between the chips are wired up properly
> inside the tuner. This should coordinate the AGC in both the first
> stage and second stage of the tuner, as the second stage will be
> providing the gain control to the first stage as needed when the signal
> reaches the TOP.
>
> http://www.comsec.com/usrp/microtune/NF_tutorial.pdf
>
> It allows you to achieve maximum gain in the first stage to minimize
> overall receiver noise figure, and avoid clipping the input signal in
> the first stage (TUA6030) with a proper TOP setting in the second stage
> (TDA9887). The TOP setting in the second stage needs to take into
> account IF SAW filter attenuation of course.
>
> Do the circuit board traces in the FM1216ME_MK3 support the TDA9887
> controlling the gain of the first stage? (I've never opened an
> equivalent NTSC tuner assembly to take a look.)
"equivalent" NTSC tuners _do not_ exist at all.
I don't forget all the time we spend to find out that some of them are
Intercarrier only!
Also, the tda988x stuff is underneath the tuner PCB.
I cut one off for those interested in line tracing ...
Without port2=0 you don't get any SECAM-L into the sound trap.
It needs amplification from minus 40 dB AM for the first sound carrier,
and then of course you prefer the second with NICAM.
> If not, then, if I understand things correctly, you need to set the
> first stage and second stage TOP settings so that they refer to about
> the same signal level before the IF SAW filter.
>
>
> I would think AGC TOP settings, for both stages of the tuner, are
> tuner-dependent and relatively constant once you figure out what they
> should be.
>
> Do you have a different understanding or insight?
>
> Regards,
> Andy
Since I have some m$ system again after 9 years, not used within the
last three months, I would prefer to get it demonstrated there at first.
I leave on the first BSOD.
Cheers,
Hermann
>
>
>
> > If TV card is not touch V4L2_CTRL_FLAG_DISABLED in this control. The
> > programm can't change AGC TOP.
> > And write default value to AGC TOP like now.
> >
> > diff -r 43dbc8ebb5a2 linux/drivers/media/common/tuners/tuner-simple.c
> > --- a/linux/drivers/media/common/tuners/tuner-simple.c Tue Jan 27
> > 23:47:50 2009 -0200
> > +++ b/linux/drivers/media/common/tuners/tuner-simple.c Tue Apr 21
> > 09:44:38 2009 +1000
> > @@ -116,6 +116,7 @@
> >
> > u32 frequency;
> > u32 bandwidth;
> > + signed int gain;
> > };
> >
> > /* ----------------------------------------------------------------------
> > */
> > @@ -495,15 +507,57 @@
> > "(should be 4)\n", rc);
> > break;
> > }
> > + case TUNER_PHILIPS_FM1216ME_MK3:
> > + {
> > + buffer[2] = 0xDE; /* T2 = 0, T1 = 1 and T0 = 1 */
> > + switch (priv->gain) {
> > + case 0:
> > + /* TOP = External AGC, ATC = OFF */
> > + buffer[3] = 0x60;
> > + break;
> > + case 1:
> > + /* TOP = 118 dB, ATC = OFF */
> > + buffer[3] = 0x00;
> > + break;
> > + case 2:
> > + /* TOP = 115 dB, ATC = OFF */
> > + buffer[3] = 0x10;
> > + break;
> > + case 3:
> > + /* TOP = 112 dB, ATC = OFF */
> > + buffer[3] = 0x20;
> > + break;
> > + case 4:
> > + /* TOP = 109 dB, ATC = OFF */
> > + buffer[3] = 0x30;
> > + break;
> > + case 5:
> > + /* TOP = 106 dB, ATC = OFF */
> > + buffer[3] = 0x40;
> > + break;
> > + case 6:
> > + /* TOP = 103 dB, ATC = OFF */
> > + buffer[3] = 0x50;
> > + break;
> > + default:
> > + /* TOP = 112 dB, ATC = OFF */
> > + buffer[3] = 0x20;
> > + break;
> > + }
> > +
> > + tuner_dbg("tv 0x%02x 0x%02x 0x%02x 0x%02x\n",
> > + buffer[0], buffer[1], buffer[2], buffer[3]);
> > +
> > + rc = tuner_i2c_xfer_send(&priv->i2c_props, buffer, 4);
> > + if (4 != rc)
> > + tuner_warn("i2c i/o error: rc == %d "
> > + "(should be 4)\n", rc);
> > +
> > + break;
> > }
> > -
> > + }
> > return 0;
> > }
> >
> > diff -r 43dbc8ebb5a2 linux/drivers/media/video/saa7134/saa7134-cards.c
> > --- a/linux/drivers/media/video/saa7134/saa7134-cards.c Tue Jan 27
> > 23:47:50 2009 -0200
> > +++ b/linux/drivers/media/video/saa7134/saa7134-cards.c Tue Apr 21
> > 09:44:38 2009 +1000
> > @@ -6506,6 +6806,20 @@
> > saa_call_all(dev, tuner, s_config, &tea5767_cfg);
> > break;
> > }
> > + case SAA7134_BOARD_BEHOLD_M6_EXTRA:
> > + {
> > + struct v4l2_queryctrl *ctl;
> > + struct saa7134_fh *fh;
> > + struct file *fl;
> > +
> > + ctl->id = V4L2_CID_GAIN;
> > + if (saa7134_queryctrl(fl, fh, ctl) == 0) { /*
> > BUG here */
> > + /* enable this control */
> > + ctl->flags &= ~(V4L2_CTRL_FLAG_DISABLED);
> > + }
> > + }
> > } /* switch() */
> >
> > saa7134_tuner_setup(dev);
> > diff -r 43dbc8ebb5a2 linux/drivers/media/video/saa7134/saa7134-video.c
> > --- a/linux/drivers/media/video/saa7134/saa7134-video.c Tue Jan 27
> > 23:47:50 2009 -0200
> > +++ b/linux/drivers/media/video/saa7134/saa7134-video.c Tue Apr 21
> > 09:44:38 2009 +1000
> > @@ -417,6 +417,15 @@
> > .step = 1,
> > .default_value = 0,
> > .type = V4L2_CTRL_TYPE_INTEGER,
> > + }, {
> > + .id = V4L2_CID_GAIN,
> > + .name = "Gain",
> > + .minimum = 0,
> > + .maximum = 6,
> > + .step = 1,
> > + .default_value = 3,
> > + .type = V4L2_CTRL_TYPE_INTEGER,
> > + .flags = V4L2_CTRL_FLAG_DISABLED,
> > },{
> > .id = V4L2_CID_HFLIP,
> > .name = "Mirror",
> > @@ -1129,6 +1138,9 @@
> > case V4L2_CID_HUE:
> > c->value = dev->ctl_hue;
> > break;
> > + case V4L2_CID_GAIN:
> > + c->value = dev->ctl_gain;
> > + break;
> > case V4L2_CID_CONTRAST:
> > c->value = dev->ctl_contrast;
> > break;
> > @@ -1214,6 +1226,10 @@
> > case V4L2_CID_HUE:
> > dev->ctl_hue = c->value;
> > saa_writeb(SAA7134_DEC_CHROMA_HUE, dev->ctl_hue);
> > + break;
> > + case V4L2_CID_GAIN:
> > + dev->ctl_gain = c->value;
> > +
> > break;
> > case V4L2_CID_CONTRAST:
> > dev->ctl_contrast = c->value;
> > @@ -2502,6 +2518,7 @@
> > dev->ctl_bright = ctrl_by_id(V4L2_CID_BRIGHTNESS)->default_value;
> > dev->ctl_contrast = ctrl_by_id(V4L2_CID_CONTRAST)->default_value;
> > dev->ctl_hue = ctrl_by_id(V4L2_CID_HUE)->default_value;
> > + dev->ctl_gain = ctrl_by_id(V4L2_CID_GAIN)->default_value;
> > dev->ctl_saturation = ctrl_by_id(V4L2_CID_SATURATION)->default_value;
> > dev->ctl_volume = ctrl_by_id(V4L2_CID_AUDIO_VOLUME)->default_value;
> > dev->ctl_mute = 1; //
> > ctrl_by_id(V4L2_CID_AUDIO_MUTE)->default_value;
> > diff -r 43dbc8ebb5a2 linux/drivers/media/video/saa7134/saa7134.h
> > --- a/linux/drivers/media/video/saa7134/saa7134.h Tue Jan 27 23:47:50
> > 2009 -0200
> > +++ b/linux/drivers/media/video/saa7134/saa7134.h Tue Apr 21 09:44:38
> > 2009 +1000
> > @@ -548,6 +558,7 @@
> > int ctl_bright;
> > int ctl_contrast;
> > int ctl_hue;
> > + int ctl_gain; /* gain */
> > int ctl_saturation;
> > int ctl_freq;
> > int ctl_mute; /* audio */
> >
> >
> > With my best regards, Dmitry.
> >
> > > Cheers,
> > > Hermann
> > >
> > > > With my best regards, Dmitry.
> > > >
> > > > >
> > > > > Cheers,
> > > > > Mauro.
> > > > >
> > > > > >
> > > > > > diff -r b40d628f830d
> > > > > > linux/drivers/media/common/tuners/tuner-types.c ---
> > > > > > a/linux/drivers/media/common/tuners/tuner-types.c Fri
> > > > > > Apr 24 01:46:41 2009 -0300 +++
> > > > > > b/linux/drivers/media/common/tuners/tuner-types.c Tue
> > > > > > Apr 28 03:35:42 2009 +1000 @@ -558,8 +558,8 @@ static struct
> > > > > > tuner_range tuner_fm1216me_mk3_pal_ranges[] = { { 16 *
> > > > > > 158.00 /*MHz*/, 0x8e, 0x01, },
> > > > > > - { 16 * 442.00 /*MHz*/, 0x8e, 0x02, },
> > > > > > - { 16 * 999.99 , 0x8e, 0x04, },
> > > > > > + { 16 * 441.00 /*MHz*/, 0x8e, 0x02, },
> > > > > > + { 16 * 864.00 , 0x8e, 0x04, },
> > > > > > };
> > > > > >
> > > > > > static struct tuner_params tuner_fm1216me_mk3_params[] = {
> > > > > >
> > > > > > Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov
> > > > > > <[email protected]>
> > > > > >
> > > > > >
> > > > > > With my best regards, Dmitry.
> > > > > >
> > > > > > > Hi Dmitri,
> > > > > > >
> > > > > > > Thank you for you responses.
> > > > > > >
> > > > > > > Just a few more comments...
> > > > > > >
> > > > > > > On Thu, 2009-04-23 at 20:36 +1000, Dmitri Belimov wrote:
> > > > > > > > Hi Andy
> > > > > > > >
> > > > > > > > > Dmitri,
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Wed, 2009-04-22 at 17:48 +1000, Dmitri Belimov wrote:
> > > > > > > > > > Hi All
> > > > > > > > > >
> > > > > > > > > > 1. Change middle band. In the end of the middle band the
> > > > > > > > > > sensitivity of receiver not good. If we switch to higher
> > > > > > > > > > band, sensitivity more better. Hardware trick.
> > > > > > > > >
> > > > > > >
> > > > > > > > Several years a go your customers write some messages about
> > > > > > > > bad quality of TV if frequency of TV is the end of band. It
> > > > > > > > can be low band or middle. Our hardware engeneer make some
> > > > > > > > tests with hardware TV generator and our TV tuners.
> > > > > > > >
> > > > > > > > If we set default frequency range for low and middle band,
> > > > > > > > quality of TV signal on 159MHz and 442 MHz is bad. When we
> > > > > > > > make our changes with moving end of bands the quality of TV
> > > > > > > > much better. And our system programmer for OS Windows use
> > > > > > > > changed bands for drivers. Customers be happy.
> > > > > > >
> > > > > > > OK. A properly run experiment wins over theory every time. :)
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > > You can test it if in your placement available TV programm
> > > > > > > > on 159MHz or 442MHz. This trick can be usefull for other
> > > > > > > > tuners.
> > > > > > >
> > > > > > > If you look at tveeprom.c, a number of other tuners are using
> > > > > > > that tuner definition:
> > > > > > >
> > > > > > > $ grep FM1216ME_MK3 tveeprom.c
> > > > > > > { TUNER_PHILIPS_FM1216ME_MK3, "Philips
> > > > > > > FQ1216ME MK3"}, { TUNER_PHILIPS_FM1216ME_MK3,
> > > > > > > "Philips FM1216 ME MK3"},
> > > > > > > { TUNER_PHILIPS_FM1216ME_MK3, "LG S001D MK3"},
> > > > > > > { TUNER_PHILIPS_FM1216ME_MK3, "LG S701D MK3"},
> > > > > > > { TUNER_PHILIPS_FM1216ME_MK3, "Philips FQ1216LME
> > > > > > > MK3"}, { TUNER_PHILIPS_FM1216ME_MK3, "TCL MFPE05 2"},
> > > > > > > { TUNER_PHILIPS_FM1216ME_MK3, "TCL MPE05-2"},
> > > > > > > { TUNER_PHILIPS_FM1216ME_MK3, "Philips FM1216ME MK5"},
> > > > > > >
> > > > > > > If your change makes things bad for the other tuners, we'll
> > > > > > > probably have to create an alternate entry for the other
> > > > > > > tuners instead of using the FM1216ME_MK3 defintion. I
> > > > > > > suspect most of them are clones of the FM1216ME MK3 however,
> > > > > > > so it probably won't matter.
> > > > > > >
> > > > > > > > > > 3. Set charge pump bit
> > > > > > > > >
> > > > > > > > > This will improve the time to initially tune to a
> > > > > > > > > frequency, but will likely add some noise as the PLL
> > > > > > > > > continues to maintain lock on the signal. If there is no
> > > > > > > > > way to turn off the CP after the lock bit is set in the
> > > > > > > > > tuner, it's probably better to leave it off for lower
> > > > > > > > > noise and just live with slower tuning.
> > > > > > > >
> > > > > > > > We discuss with our windows system programmer about it. He
> > > > > > > > sad that in analog TV mode noise from PLL don't give any
> > > > > > > > problem.
> > > > > > >
> > > > > > > I would be concerned about phase noise affecting the colors or
> > > > > > > any FM sound carriers. If the noise isn't noticably affecting
> > > > > > > colors to the human eye (do color bars look OK?), or sound to
> > > > > > > the human ear, then OK.
> > > > > > >
> > > > > > >
> > > > > > > > But in digital TV mode
> > > > > > > > noise from PLL decreased BER.
> > > > > > >
> > > > > > > I thought the FM1216ME MK3 was an analog only tuner. I guess
> > > > > > > I don't know DVB-T or cable in Europe well enough.
> > > > > > >
> > > > > > >
> > > > > > > > > Leaving the CP bit set should be especially noticable ad
> > > > > > > > > FM noise when set to tune to FM radio stations. From the
> > > > > > > > > FM1236ME_MK3 datasheet: "It is recommended to set CP=0 in
> > > > > > > > > the FM mode at all times." But the VHF low band control
> > > > > > > > > byte is also used when setting FM radio (AFAICT with a
> > > > > > > > > quick look at the code.)
> > > > > > > >
> > > > > > > > Yes. You are right. We can swith CP off in FM mode.
> > > > > > >
> > > > > > > OK. Thank you.
> > > > > > >
> > > > > > > > With my best regards, Dmitry.
> > > > > > >
> > > > > > >
> > > > > > > Regards,
> > > > > > > Andy
> > > > > > >
> > > > > > >
> > > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Cheers,
> > > > > Mauro
> > >
> > >
> >
>
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html