From 876f998c0a607db226c271386c7bcf35d4e29e59 Mon Sep 17 00:00:00 2001 From: Robert Jarzmik Date: Fri, 1 Aug 2008 20:14:50 -0300 Subject: [PATCH] --- yaml --- r: 107903 b: refs/heads/master c: 2e521061db61a35dd64ea85a1642f9a9dfde2872 h: refs/heads/master i: 107901: eeb06518fab79db342689692dea633d2130a9d8d 107899: d88ccdab097b261fa2bf072a3d89d0b312d8052b 107895: 1749247630d03bb4845c190a5f35c70ecf88592d 107887: 20442c9cdc0dce80e20ac87ad1089d3924a91c19 107871: d40bcedd2dcce8c5733541979b2806f057988a8c 107839: 2f468aab1a4d7295e5d0b7926749671dfa9feaaa 107775: b9fe7c2e79a59bae2f469e676f831c2fa73275cb v: v3 --- [refs] | 2 +- trunk/drivers/media/video/soc_camera.c | 26 ++++++++++++++++++++++++++ trunk/include/media/soc_camera.h | 5 +++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 57b61197be4c..d80f7341bfae 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 01c1e4ca8ec39d21be0cd9d1b300d479de97298a +refs/heads/master: 2e521061db61a35dd64ea85a1642f9a9dfde2872 diff --git a/trunk/drivers/media/video/soc_camera.c b/trunk/drivers/media/video/soc_camera.c index b6be5ee678b6..66ebe5956a87 100644 --- a/trunk/drivers/media/video/soc_camera.c +++ b/trunk/drivers/media/video/soc_camera.c @@ -732,10 +732,36 @@ static int soc_camera_remove(struct device *dev) return 0; } +static int soc_camera_suspend(struct device *dev, pm_message_t state) +{ + struct soc_camera_device *icd = to_soc_camera_dev(dev); + struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent); + int ret = 0; + + if (ici->ops->suspend) + ret = ici->ops->suspend(icd, state); + + return ret; +} + +static int soc_camera_resume(struct device *dev) +{ + struct soc_camera_device *icd = to_soc_camera_dev(dev); + struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent); + int ret = 0; + + if (ici->ops->resume) + ret = ici->ops->resume(icd); + + return ret; +} + static struct bus_type soc_camera_bus_type = { .name = "soc-camera", .probe = soc_camera_probe, .remove = soc_camera_remove, + .suspend = soc_camera_suspend, + .resume = soc_camera_resume, }; static struct device_driver ic_drv = { diff --git a/trunk/include/media/soc_camera.h b/trunk/include/media/soc_camera.h index 1de98f150e99..d548de326722 100644 --- a/trunk/include/media/soc_camera.h +++ b/trunk/include/media/soc_camera.h @@ -14,6 +14,7 @@ #include #include +#include struct soc_camera_device { struct list_head list; @@ -63,6 +64,8 @@ struct soc_camera_host_ops { struct module *owner; int (*add)(struct soc_camera_device *); void (*remove)(struct soc_camera_device *); + int (*suspend)(struct soc_camera_device *, pm_message_t state); + int (*resume)(struct soc_camera_device *); int (*set_fmt_cap)(struct soc_camera_device *, __u32, struct v4l2_rect *); int (*try_fmt_cap)(struct soc_camera_device *, struct v4l2_format *); @@ -111,6 +114,8 @@ struct soc_camera_ops { struct module *owner; int (*probe)(struct soc_camera_device *); void (*remove)(struct soc_camera_device *); + int (*suspend)(struct soc_camera_device *, pm_message_t state); + int (*resume)(struct soc_camera_device *); int (*init)(struct soc_camera_device *); int (*release)(struct soc_camera_device *); int (*start_capture)(struct soc_camera_device *);