Skip to content

Commit

Permalink
[PATCH] v4l: some error treatment implemented at resume functions.
Browse files Browse the repository at this point in the history
- Some error treatment implemented at resume functions.

Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Mauro Carvalho Chehab authored and Linus Torvalds committed Sep 9, 2005
1 parent 4c93b07 commit 08adb9e
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 7 deletions.
18 changes: 16 additions & 2 deletions drivers/media/video/bttv-driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -4111,15 +4111,29 @@ static int bttv_resume(struct pci_dev *pci_dev)
{
struct bttv *btv = pci_get_drvdata(pci_dev);
unsigned long flags;
int err;

dprintk("bttv%d: resume\n", btv->c.nr);

/* restore pci state */
if (btv->state.disabled) {
pci_enable_device(pci_dev);
err=pci_enable_device(pci_dev);
if (err) {
printk(KERN_WARNING "bttv%d: Can't enable device.\n",
btv->c.nr);
return err;
}
btv->state.disabled = 0;
}
pci_set_power_state(pci_dev, PCI_D0);
err=pci_set_power_state(pci_dev, PCI_D0);
if (err) {
pci_disable_device(pci_dev);
printk(KERN_WARNING "bttv%d: Can't enable device.\n",
btv->c.nr);
btv->state.disabled = 1;
return err;
}

pci_restore_state(pci_dev);

/* restore bt878 state */
Expand Down
20 changes: 17 additions & 3 deletions drivers/media/video/cx88/cx88-mpeg.c
Original file line number Diff line number Diff line change
Expand Up @@ -455,14 +455,28 @@ int cx8802_suspend_common(struct pci_dev *pci_dev, pm_message_t state)

int cx8802_resume_common(struct pci_dev *pci_dev)
{
struct cx8802_dev *dev = pci_get_drvdata(pci_dev);
struct cx8802_dev *dev = pci_get_drvdata(pci_dev);
struct cx88_core *core = dev->core;
int err;

if (dev->state.disabled) {
pci_enable_device(pci_dev);
err=pci_enable_device(pci_dev);
if (err) {
printk(KERN_ERR "%s: can't enable device\n",
dev->core->name);
return err;
}
dev->state.disabled = 0;
}
pci_set_power_state(pci_dev, PCI_D0);
err=pci_set_power_state(pci_dev, PCI_D0);
if (err) {
printk(KERN_ERR "%s: can't enable device\n",
dev->core->name);
pci_disable_device(pci_dev);
dev->state.disabled = 1;

return err;
}
pci_restore_state(pci_dev);

/* FIXME: re-initialize hardware */
Expand Down
20 changes: 18 additions & 2 deletions drivers/media/video/cx88/cx88-video.c
Original file line number Diff line number Diff line change
Expand Up @@ -2005,12 +2005,28 @@ static int cx8800_resume(struct pci_dev *pci_dev)
{
struct cx8800_dev *dev = pci_get_drvdata(pci_dev);
struct cx88_core *core = dev->core;
int err;

if (dev->state.disabled) {
pci_enable_device(pci_dev);
err=pci_enable_device(pci_dev);
if (err) {
printk(KERN_ERR "%s: can't enable device\n",
core->name);
return err;
}

dev->state.disabled = 0;
}
pci_set_power_state(pci_dev, PCI_D0);
err= pci_set_power_state(pci_dev, PCI_D0);
if (err) {
printk(KERN_ERR "%s: can't enable device\n",
core->name);

pci_disable_device(pci_dev);
dev->state.disabled = 1;

return err;
}
pci_restore_state(pci_dev);

/* FIXME: re-initialize hardware */
Expand Down

0 comments on commit 08adb9e

Please sign in to comment.