Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: acpi sleep mode



Barbini Uberto wrote:
> >The av7110 firmware reloading stuff (for ARM crash recovery) in dvb_ttpci
> >is broken anyway (Oopses most of the time), mayby it can get fixed while
> >you're at it ;-)
> 
> I don't think so! I don't know anything about the av7110 spec.
> I'll be happy with fixing module architecture for 2.6 kernel.
> Anyway are you referring to reset_arm or what?

Well, if the PCI bus is powered down on sleep the av7110 needs to be rebooted
after wake up, and the state in the firmware has to be restored, or at
least the linux driver must reset its state so that it matches the firmware's
state after reboot.
There is code in recover_arm() that is supposed to do that, but I don't
know if it is sufficient. There also seem locking or other problems
which lead to Oopses when the arm_thread() detects an "ARM crash". I
think you don't need to know too much about av7110/firmware internals to
get the linux driver to reboot the av7110 cleanly and reset itself into
a clean state. Anyway, if you have questions please ask.


> >There's a warning at module load time which needs to be taken care of:
> >Dec 16 21:29:30 heck vmunix: videodev: "av7110" has no release callback.  
> >Please fix your driver for proper sysfs support
> 
> The two thinks are similar but not directly related:
> 
> the release callback should be passed in 
> 
> saa7146_fops.c : static struct video_device device_template
> 
> maybe this line alone can work (I didn't try it yet):
> 
> static struct video_device device_template =
> {
>         .hardware        = VID_HARDWARE_SAA7146,
>         .fops                = &video_fops,
> +      .release           = video_device_release,
>         .minor                = -1,
> };

I don't think so. I think "release" is a kobject thing.
See Documentation/kobject.txt.

> regarding to power suspend the very first problem is that
> sysfs info and callbacks for suspend and resume are located in the
> pci_driver 
> struct but av7110_init() and av7110_exit() don't use new struct pci_driver 
> and pci_module_init()
> 
> The second and biggest problem is the actual writing of suspend and resume 
> functions! ;)
> I hope that one can use activation and deactivation code at first.

Since the PCI bridge is the saa7146 you will have to start from there and
add power management callbacks for the saa7146 clients (e.g. av7110).

The whole power management stuff seems to be a pretty challenging task
to me ;-/


Regards,
Johannes


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index