how to use dvb_attach (was: Re: [linux-dvb] Re: Error unloading WinTV NOVA T USB2)

Patrick Boettcher patrick.boettcher at
Tue Aug 29 11:30:12 CEST 2006


On Mon, 28 Aug 2006, Trent Piepho wrote:
> > On 8/22/06, Patrick Boettcher <patrick.boettcher at> wrote:
> > > Hi Mario,
> > >
> > > The wrong use_count for the dib3000mc is most likely because I'm not using
> > > the dvb_attach-function for attaching the demod/frontend, because the
> > > prototype of the dib3000mc_attach is not exactly the same as for other
> > > demod-drivers.
> > >
> > > Why? Because with the dib3000mc_attach (and with the future coming
> > > dib7000m_attach and dib7000p_attach) we can attach more than one demod at
> > > the same time - will be used on devices arriving late fall/autumn).
> > >
> > > Can someone please advise me how to proceed?
> You should not use dvb_frontend_detach() unless you are using dvb_attach(),
> which you are not using.

Am I using dvb_frontend_detach? 

> I think it would make a lot more sense if you had dib3000mc_attach() just
> attach one frontend, like all the other front-end attach functions.

For whom would it make more sense? My understanding of the attach-function 
is not, that it only has to attach exactly one frontend. If I missed 
something in the dvb_attach-discussion I'm sorry.

> If something has multiple front-ends, just call the attach function 
> multiple times.

For the so-called I2C-enumeration of the DiBcom-demods (to get all the 
demod reachable by I2C) it is necessary to have some information which is 
present in the config-struct. I actually don't like to change all that, 
just because the software architecture (which was working fine before) 
suddenly sets limitations. OTOH, I also wouldn't want to change 
architecture just because there will be 4 frontend driver very soon which 
are behaving differently (today there are 2). Difficult ;) .

What can I do? Add a small function which I then use to force the 
symbol_get. (maybe struct dvb_frontend * dvb_get_frontend(struct 
dvb_frontend *fe) { return fe; } and then I can called 
dvb_frontend_attach(dvb_get_frontend, fe); )

> Why is dibusb_dib3000mb_frontend_attach() in dibusb-mb.c, and
> dibusb_dib3000mc_frontend_attach in dibusb-common.c?

Why why why? *sigh*. You can believe me, there is a reason:

At first dibusb_dib3000mc_frontend_attach was only located in dibusb-mc.c, 
then a device appeared with the 3000mc inside but with USB firmware 
interface which normally only used with the 3000mb onboard. So, I put the 
dibusb_dib3000mc_frontend_attach in common, because it was used by two 
different modules.

> BTW, the error path in dib3000mc_attach() is broken.

Thanks, but where? I'm too blind to see it.

best regards,

  Mail: patrick.boettcher at

More information about the linux-dvb mailing list