Skip to content

Commit

Permalink
V4L/DVB (5467): Add suspend/resume support to the Cafe CCIC
Browse files Browse the repository at this point in the history
Add suspend/resume support to the Cafe CCIC driver.

Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Jonathan Corbet authored and Mauro Carvalho Chehab committed Apr 27, 2007
1 parent 5b50ed7 commit ff68def
Showing 1 changed file with 44 additions and 1 deletion.
45 changes: 44 additions & 1 deletion drivers/media/video/cafe_ccic.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@

#include "cafe_ccic-regs.h"

#define CAFE_VERSION 0x000001
#define CAFE_VERSION 0x000002


/*
Expand Down Expand Up @@ -2188,6 +2188,45 @@ static void cafe_pci_remove(struct pci_dev *pdev)
}


#ifdef CONFIG_PM
/*
* Basic power management.
*/
static int cafe_pci_suspend(struct pci_dev *pdev, pm_message_t state)
{
struct cafe_camera *cam = cafe_find_by_pdev(pdev);
int ret;

ret = pci_save_state(pdev);
if (ret)
return ret;
cafe_ctlr_stop_dma(cam);
cafe_ctlr_power_down(cam);
pci_disable_device(pdev);
return 0;
}


static int cafe_pci_resume(struct pci_dev *pdev)
{
struct cafe_camera *cam = cafe_find_by_pdev(pdev);
int ret = 0;

ret = pci_restore_state(pdev);
if (ret)
return ret;
pci_enable_device(pdev);
cafe_ctlr_init(cam);
cafe_ctlr_power_up(cam);
set_bit(CF_CONFIG_NEEDED, &cam->flags);
if (cam->state == S_SPECREAD)
cam->state = S_IDLE; /* Don't bother restarting */
else if (cam->state == S_SINGLEREAD || cam->state == S_STREAMING)
ret = cafe_read_setup(cam, cam->state);
return ret;
}

#endif /* CONFIG_PM */


static struct pci_device_id cafe_ids[] = {
Expand All @@ -2203,6 +2242,10 @@ static struct pci_driver cafe_pci_driver = {
.id_table = cafe_ids,
.probe = cafe_pci_probe,
.remove = cafe_pci_remove,
#ifdef CONFIG_PM
.suspend = cafe_pci_suspend,
.resume = cafe_pci_resume,
#endif
};


Expand Down

0 comments on commit ff68def

Please sign in to comment.