[linux-dvb] af9005/mt2060 module unload failure

Michael Krufky mkrufky at linuxtv.org
Thu Jun 14 21:12:16 CEST 2007

Luca Olivetti wrote:
> En/na Michael Krufky ha escrit:
>>> Why dont you just use dvb_frontend_detach?
>> I retract that comment...
>> The dvb-usb framework does this itself inside dvb-usb-dvb.c , inside
>> dvb_usb_adapter_frontend_exit
>> ... You should not have to do the symbol_put inside af9005-fe.c
>>   If you remove that code, does it fix the issue?
> Well, I'm doing the attach myself to attach the tuner to the frontend 
> the first time it is opened, so if I remove the code there will be at 
> least one reference to the mt2060 (or qt1010, depending on the model) so 
> it cannot be unloaded.
> I couldn't use tuner_attach for some reason (I think it was called too 
> early).

I see that inside af9005_fe_init, you are reading from the eeprom to determine
which tuner is present.  Yes, the correct place for this would be inside the
"tuner_attach" callback of af9005_properties ...  You say that isn't working for
you??  Exactly what happens when you do that?

Is it possible that there are some initializations happening inside af9005-fe.c
that is opening up access to the i2c bus, which you didnt have access to at the
time of tuner_attach?  If that's the case, then it can (and should) be fixed by
moving the bus initialization code to a function that is callable from tuner_attach.

Perhaps there is an i2c gate being controlled by the demod?  If that's the case,
then the best way to take care of this is by creating an i2c_gate_ctrl function
and add it to the frontend_ops struct, so that tuner_attach can call it from
there, and it will be accessible from within the set_params function of the
tuner module.

I didn't do a full analysis of this driver yet, but these are some ideas that
pop into my head at first glance.



More information about the linux-dvb mailing list