Re: Thoughts about suspending DVB C PCI device transparently

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

 



Hi,

found this old email when searching for suspend issues, seems like a good idea. 
Just wondering - how many eg dvb drivers are there with working suspend/hibernate 
(all buses, not just PCI)? Me thinks only a small fraction, the rest will crash
unless blacklisted by pm-utils?

Would it be worth to code a generic approach working around drivers that need to be
blacklisted? It seems that because of eg firmware loading this might be the only way 
to get dvb drivers behave?

Richard

> Once in a time I wrote into Mantis driver Suspend / resume
> code. The idea was, that bridge driver (mantis_dvb.c) will
> handle the suspend / resume transparently to the application.
>
> With a PCI device this was rather easy to achieve.
> With xine, there was just a glitch with video and audio
> after resume.
>
> So after suspend, frontend was tuned into the original
> frequency, and the DMA transfer state was restored.
>
> Suspend:
> 1. Turn off possible DMA transfer if active (feeds > 0)
> 2. Remember tuner power on state.
> 3. Do tuner and fronted power off.
>
> Resume:
> 1. Restore frontend and tuner power.
> 2. (feeds > 0)? Set frequency for the tuner.
> 3. (feeds > 0)? Restore DMA transfer into previous state.
>
> What do you think about this?
> I need some feedback: is it worth coding?
> Other needed code is usual suspend / resume stuff.
>
> Is it worth powering off the tuner, if it isn't
> used?
>
> For my current usage, powering off the unused tuner
> gives more power savings than implementing suspend/resume.
>
> Marko Ristola
>
> ------------------------------
>
> // suspend to standby, ram or disk.
> int mantis_dvb_suspend(struct mantis_pci *mantis, pm_message_t
>     prevState, pm_message_t mesg)
> {
>         if (mantis->feeds > 0)
> mantis_dma_stop(mantis);
>
>         if (mantis->has_power)
>                 mantis_fe_powerdown(mantis); // power off tuner.
>
>         return 0;
> }
>
> void mantis_dvb_resume(struct mantis_pci *mantis, pm_message_t prevMesg)
> {
>        // power on frontend and tuner.
>        mantis_frontend_tuner_init(mantis);
>
>        if (mantis->feeds > 0 && mantis->fe->ops.tuner_ops.init)
>                 (mantis->fe->ops.init)(mantis->fe);
>
>         if (mantis->feeds > 0) {
>                 (mantis->fe->ops.set_frontend)(mantis->fe, NULL);
> mantis_dma_start(mantis);
>         }
> }
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux