[linux-dvb] PATCH for adequate customization and attachment of dvb-pll.c

Markus Rechberger mrechberger at gmail.com
Fri Jun 1 23:02:52 CEST 2007


On 6/1/07, Bill Eldridge <dcbill at volny.cz> wrote:
>
> Suggestion:
>
> If the patch adds value without breaking anything, include it.
>
> Even if it's "ugly", you can easily clean it up later and "do it the
> right way" (tm).
> Providing you find time and cleaning it up is more important than
> something useful.
> I counted about 35 lines of actual logic in the patch, and I think
> that's really about 20-25
> if you ignore repetitions.
>
> If there's a better way of coding it that someone (Markus? Michael?) can
> think of in 5 minutes,

I already sent Uwe another approach before I wrote the first reply,
Mike wrote he has another idea let's see what will come up within the
next few hours I'm off till tomorrow anyway.

> please let Uwe know, since I imagine he could fix it in about 5 minutes with
> his mind still fresh on the topic. Otherwise I suggest putting "clean
> up" somewhere
> low on the to-do list and moving on.
>
> Regards,
> Bill
>
> Uwe Bugla wrote:
> > Am Freitag, 1. Juni 2007 20:13 schrieben Sie:
> >
> >> Uwe Bugla wrote:
> >>
> >>> In current kernel 2.6.22-rc3 the frontend module dvb-pll.c is attached
> as
> >>> a generic standard for all bt8xx-based DVB cards. This is no good
> >>> solution.
> >>>
> >>> Fact is:
> >>> The only bt8xx-based card taking advantage of that pll library is the
> >>> DViCO FusionHDTV Lite 5. All other bt8xx-based DVB cards do not take any
> >>> advantage of this pll library.
> >>>
> >>> The following patch corrects this problem without breaking any card
> >>> support. For further SOBs I do appreciate the relevant persons Cced.
> >>>
> >>> Signed-off-by: Uwe Bugla <uwe.bugla at gmx.de>
> >>>
> >> NACK.
> >>
> >> This hack is unacceptable.  Uwe, Please have patience
> >>
> >
> > In fact I had enough patience, for a couple of months now.
> > Even if you do not like it, it is a functionable compromise solution for
> now.
> >
> > There is no technical reason to nack it at all. If there is one, then it's
> > either a personal issue or a matter of design.
> > The fact that you reacted so quickly prefares option 1 (i. e. personal
> issue).
> >
> > And the tactical background of telling some other person to wait (or to be
> > patient) without offering an adequate time window for the WHEN is a
> gesture
> > of humiliation (I know that gesture already very well from Manu, and I do
> not
> > like it at all).
> >
> > Above that you were not the only one I was asking for a SOB. I only wanted
> to
> > try fair play (i. e. not overstepping anybody).
> >
> > Regards
> >
> > Uwe
> >
> > P. S.: To let somebody starve at the long arm: Ever heard what that means,
> > Mike? In fact I am not keen on flames, but I know people who provoke them
> by
> > their inacceptable gestures. And that's it what must become past in here.
> >
> > The other people reading this I would appreciate to test the two patches
> and
> > complain if I have done anything wrong. My door stays open for real
> technical
> > criticism.
> > Thanks for reading :)
> >
> >
> >> -- I have a few ideas
> >> on how to do this without using #ifdef's , but I am spending my time on
> >> other things right now.  Trent also had some ideas on how remove the
> static
> >> dependencies on dvb-pll, but we all have bigger fish to fry.
> >>
> >> For the time being, you should use this on your own kernel configuration,
> >> but this is not correct, and should not be pushed into mainline.
> >>
> >> Regards,
> >>
> >> Mike Krufky
> >>
> >>
> >>> --- a/drivers/media/dvb/bt8xx/Kconfig
> >>> +++ b/drivers/media/dvb/bt8xx/Kconfig
> >>> @@ -7,7 +7,6 @@ config DVB_BT8XX
> >>>  	select DVB_CX24110 if !DVB_FE_CUSTOMISE
> >>>  	select DVB_OR51211 if !DVB_FE_CUSTOMISE
> >>>  	select DVB_LGDT330X if !DVB_FE_CUSTOMISE
> >>> -	select DVB_PLL
> >>>  	select DVB_ZL10353 if !DVB_FE_CUSTOMISE
> >>>  	select DVB_DST if !DVB_FE_CUSTOMISE
> >>>  	select FW_LOADER
> >>> --- a/drivers/media/dvb/frontends/Kconfig
> >>> +++ b/drivers/media/dvb/frontends/Kconfig
> >>> @@ -279,6 +279,7 @@ config DVB_LGDT330X
> >>>  	tristate "LG Electronics LGDT3302/LGDT3303 based"
> >>>  	depends on DVB_CORE && I2C
> >>>  	default m if DVB_FE_CUSTOMISE
> >>> +	select DVB_PLL
> >>>  	help
> >>>  	  An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want
> >>>  	  to support this frontend.
> >>> @@ -291,8 +292,9 @@
> >>>  	depends on DVB_CORE && I2C
> >>>  	default m if DVB_FE_CUSTOMISE
> >>>  	help
> >>> -	  This module driver a number of tuners based on PLL chips with a
> >>> -	  common I2C interface. Say Y when you want to support these tuners.
> >>> +	  This module driver is needed by a number of tuners based on PLL
> chips
> >>> +	  with a common I2C inferface.
> >>> +	  Exceptions are: All bt8xx-based DVB cards except DViCO FusionHDTV 5
> >>> Lite.
> >>>
> >>>  config DVB_TDA826X
> >>>  	tristate "Philips TDA826X silicon tuner"
> >>> --- a/drivers/media/dvb/bt8xx/dvb-bt8xx.c
> >>> +++ b/drivers/media/dvb/bt8xx/dvb-bt8xx.c
> >>> @@ -568,24 +568,6 @@ static struct lgdt330x_config
> >>>  	.demod_init = digitv_alps_tded4_demod_init,
> >>>  };
> >>>
> >>> -static struct lgdt330x_config tdvs_tua6034_config = {
> >>> -	.demod_address    = 0x0e,
> >>> -	.demod_chip       = LGDT3303,
> >>> -	.serial_mpeg      = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */
> >>> -};
> >>> -
> >>> -static void lgdt330x_reset(struct dvb_bt8xx_card *bt)
> >>> -{
> >>> -	/* Set pin 27 of the lgdt3303 chip high to reset the frontend */
> >>> -
> >>> -	/* Pulse the reset line */
> >>> -	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
> >>> -	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000000); /* Low  */
> >>> -	msleep(100);
> >>> -
> >>> -	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
> >>> -	msleep(100);
> >>> -}
> >>>
> >>>  static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
> >>>  {
> >>> @@ -606,15 +588,39 @@ case BTTV_BOARD_DVICO
> >>>  		}
> >>>  		break;
> >>>
> >>> +#if defined(CONFIG_DVB_LGDT330x)
> >>> +static struct lgdt330x_config tdvs_tua6034_config = {
> >>> +	.demod_address    = 0x0e,
> >>> +	.demod_chip       = LGDT3303,
> >>> +	.serial_mpeg      = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */
> >>> +};
> >>> +
> >>> +static void lgdt330x_reset(struct dvb_bt8xx_card *bt)
> >>> +{
> >>> +	/* Set pin 27 of the lgdt3303 chip high to reset the frontend */
> >>> +
> >>> +	/* Pulse the reset line */
> >>> +	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
> >>> +	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000000); /* Low  */
> >>> +	msleep(100);
> >>> +
> >>> +	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
> >>> +	msleep(100);
> >>> +}
> >>> +
> >>>  	case BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE:
> >>>  		lgdt330x_reset(card);
> >>>  		card->fe = dvb_attach(lgdt330x_attach, &tdvs_tua6034_config,
> >>> card->i2c_adapter); if (card->fe != NULL) {
> >>>  			dvb_attach(dvb_pll_attach, card->fe, 0x61,
> >>>  				   card->i2c_adapter, &dvb_pll_lg_tdvs_h06xf);
> >>>  			dprintk ("dvb_bt8xx: lgdt330x detected\n");
> >>>  		}
> >>>  		break;
> >>> +#else
> >>> + printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
> >>> + return NULL;
> >>> +#endif // CONFIG_DVB_LGDT330x //
> >>>
> >>>  	case BTTV_BOARD_NEBULA_DIGITV:
> >>>  		/*
> >>>
> >>>
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>> --- a/drivers/media/dvb/bt8xx/Kconfig
> >>> +++ b/drivers/media/dvb/bt8xx/Kconfig
> >>> @@ -7,7 +7,6 @@ config DVB_BT8XX
> >>>  	select DVB_CX24110 if !DVB_FE_CUSTOMISE
> >>>  	select DVB_OR51211 if !DVB_FE_CUSTOMISE
> >>>  	select DVB_LGDT330X if !DVB_FE_CUSTOMISE
> >>> -	select DVB_PLL
> >>>  	select DVB_ZL10353 if !DVB_FE_CUSTOMISE
> >>>  	select DVB_DST if !DVB_FE_CUSTOMISE
> >>>  	select FW_LOADER
> >>> --- a/drivers/media/dvb/frontends/Kconfig
> >>> +++ b/drivers/media/dvb/frontends/Kconfig
> >>> @@ -279,6 +279,7 @@ config DVB_LGDT330X
> >>>  	tristate "LG Electronics LGDT3302/LGDT3303 based"
> >>>  	depends on DVB_CORE && I2C
> >>>  	default m if DVB_FE_CUSTOMISE
> >>> +	select DVB_PLL
> >>>  	help
> >>>  	  An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want
> >>>  	  to support this frontend.
> >>> @@ -291,8 +292,9 @@
> >>>  	depends on DVB_CORE && I2C
> >>>  	default m if DVB_FE_CUSTOMISE
> >>>  	help
> >>> -	  This module driver a number of tuners based on PLL chips with a
> >>> -	  common I2C interface. Say Y when you want to support these tuners.
> >>> +	  This module driver is needed by a number of tuners based on PLL
> chips
> >>> +	  with a common I2C inferface.
> >>> +	  Exceptions are: All bt8xx-based DVB cards except DViCO FusionHDTV 5
> >>> Lite.
> >>>
> >>>  config DVB_TDA826X
> >>>  	tristate "Philips TDA826X silicon tuner"
> >>> --- a/drivers/media/dvb/bt8xx/dvb-bt8xx.c
> >>> +++ b/drivers/media/dvb/bt8xx/dvb-bt8xx.c
> >>> @@ -568,24 +568,6 @@ static struct lgdt330x_config
> >>>  	.demod_init = digitv_alps_tded4_demod_init,
> >>>  };
> >>>
> >>> -static struct lgdt330x_config tdvs_tua6034_config = {
> >>> -	.demod_address    = 0x0e,
> >>> -	.demod_chip       = LGDT3303,
> >>> -	.serial_mpeg      = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */
> >>> -};
> >>> -
> >>> -static void lgdt330x_reset(struct dvb_bt8xx_card *bt)
> >>> -{
> >>> -	/* Set pin 27 of the lgdt3303 chip high to reset the frontend */
> >>> -
> >>> -	/* Pulse the reset line */
> >>> -	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
> >>> -	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000000); /* Low  */
> >>> -	msleep(100);
> >>> -
> >>> -	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
> >>> -	msleep(100);
> >>> -}
> >>>
> >>>  static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
> >>>  {
> >>> @@ -606,15 +588,39 @@ case BTTV_BOARD_DVICO
> >>>  		}
> >>>  		break;
> >>>
> >>> +#if defined(CONFIG_DVB_LGDT330x)
> >>> +static struct lgdt330x_config tdvs_tua6034_config = {
> >>> +	.demod_address    = 0x0e,
> >>> +	.demod_chip       = LGDT3303,
> >>> +	.serial_mpeg      = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */
> >>> +};
> >>> +
> >>> +static void lgdt330x_reset(struct dvb_bt8xx_card *bt)
> >>> +{
> >>> +	/* Set pin 27 of the lgdt3303 chip high to reset the frontend */
> >>> +
> >>> +	/* Pulse the reset line */
> >>> +	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
> >>> +	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000000); /* Low  */
> >>> +	msleep(100);
> >>> +
> >>> +	bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
> >>> +	msleep(100);
> >>> +}
> >>> +
> >>>  	case BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE:
> >>>  		lgdt330x_reset(card);
> >>>  		card->fe = dvb_attach(lgdt330x_attach, &tdvs_tua6034_config,
> >>> card->i2c_adapter); if (card->fe != NULL) {
> >>>  			dvb_attach(dvb_pll_attach, card->fe, 0x61,
> >>>  				   card->i2c_adapter, &dvb_pll_lg_tdvs_h06xf);
> >>>  			dprintk ("dvb_bt8xx: lgdt330x detected\n");
> >>>  		}
> >>>  		break;
> >>> +#else
> >>> + printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
> >>> + return NULL;
> >>> +#endif // CONFIG_DVB_LGDT330x //
> >>>
> >>>  	case BTTV_BOARD_NEBULA_DIGITV:
> >>>  		/*
> >>>
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>> _______________________________________________
> >>> linux-dvb mailing list
> >>> linux-dvb at linuxtv.org
> >>> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
> >>>
> >
> > _______________________________________________
> > linux-dvb mailing list
> > linux-dvb at linuxtv.org
> > http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
> >
> >
> >
> >
>
>


-- 
Markus Rechberger



More information about the linux-dvb mailing list