[linux-dvb] Suspend/Resume support for budget-av

Oliver Endriss o.endriss at gmx.de
Wed Aug 8 18:12:04 CEST 2007


Julian Scheel wrote:
> Attached is a patch with adds full support for suspend/resume in budget-av. 
> Actually only the CI interface needs to be reinitialised as all the tuner 
> stuff gets reinitialised at the next tuning-process anyway.
> So this patch should be ready to go pretty straightforward into head.

Please post the sub-system ids of the cards you tested and which power
states you tested.

> diff -r c45e373bbca3 linux/drivers/media/common/saa7146_core.c
> --- a/linux/drivers/media/common/saa7146_core.c Sat Jul 28 00:06:44 2007 -0300
> +++ b/linux/drivers/media/common/saa7146_core.c Tue Aug 07 23:22:54 2007 +0200
> @@ -515,6 +515,28 @@ static void saa7146_remove_one(struct pc
>         saa7146_num--;
>  }
>
> +static int saa7146_suspend(struct pci_dev *pdev)
> +{
> +       struct saa7146_dev* dev = pci_get_drvdata(pdev);
> +       DEB_EE(("dev:%p\n",dev));
> +       int err;
> +
> +       err = dev->ext->suspend(dev);
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Causes an oops if the card driver did not set the suspend hook.

Fix:
	int err = -EBUSY;
	if (dev->ext->suspend)
		err = dev->ext->suspend(dev);

> +
> +       return err;
> +}
> +
> +static int saa7146_resume(struct pci_dev *pdev)
> +{
> +       struct saa7146_dev* dev = pci_get_drvdata(pdev);
> +       DEB_EE(("dev:%p\n",dev));
> +       int err;
> +
> +       err = dev->ext->resume(dev);

ditto

IMO this patch can only work with S1 state. Higher states turn off PCI
power and require re-initialization of saa7146, demod, tuner etc.
See other drivers which fully implement suspend/resume.

CU
Oliver

-- 
----------------------------------------------------------------
VDR Remote Plugin 0.3.9: http://www.escape-edv.de/endriss/vdr/
----------------------------------------------------------------




More information about the linux-dvb mailing list