From: Guennadi Liakhovetski <g.liakhovetski@gmx.de> To: linux-media@vger.kernel.org Cc: devicetree-discuss@lists.ozlabs.org, Sylwester Nawrocki <sylvester.nawrocki@gmail.com>, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, Hans Verkuil <hverkuil@xs4all.nl>, Magnus Damm <magnus.damm@gmail.com>, linux-sh@vger.kernel.org, Mark Brown <broonie@opensource.wolfsonmicro.com>, Stephen Warren <swarren@wwwdotorg.org>, Arnd Bergmann <arnd@arndb.de>, Grant Likely <grant.likely@secretlab.ca> Subject: [PATCH 06/14] media: soc-camera: prepare for asynchronous client probing Date: Thu, 27 Sep 2012 14:07:25 +0000 [thread overview] Message-ID: <1348754853-28619-7-git-send-email-g.liakhovetski@gmx.de> (raw) In-Reply-To: <1348754853-28619-1-git-send-email-g.liakhovetski@gmx.de> Currently the soc-camera core uses the fact, that client's .probe() method is run inside of soc_camera_probe(). In such a case, the core can first attach the client to a host, then trigger client's probing, check its result and detach the client from the host to allow further clients to be probed and / or used with it. However, if a client probes at a different time, there is no way to know when to attach it to and when to detach it from the host. To solve this we allow the client to decide itself, when it hae to be attached and detached. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> --- drivers/media/i2c/soc_camera/mt9t112.c | 13 ++++- drivers/media/platform/soc_camera/soc_camera.c | 70 +++++++++++++++++++++--- include/media/soc_camera.h | 3 + 3 files changed, 75 insertions(+), 11 deletions(-) diff --git a/drivers/media/i2c/soc_camera/mt9t112.c b/drivers/media/i2c/soc_camera/mt9t112.c index de7cd83..dfa03f0 100644 --- a/drivers/media/i2c/soc_camera/mt9t112.c +++ b/drivers/media/i2c/soc_camera/mt9t112.c @@ -1036,17 +1036,22 @@ static struct v4l2_subdev_ops mt9t112_subdev_ops = { .video = &mt9t112_subdev_video_ops, }; -static int mt9t112_camera_probe(struct i2c_client *client) +static int mt9t112_camera_probe(struct i2c_client *client, + struct soc_camera_link *icl) { struct mt9t112_priv *priv = to_mt9t112(client); const char *devname; int chipid; int ret; - ret = mt9t112_s_power(&priv->subdev, 1); + ret = soc_camera_device_attach(icl); if (ret < 0) return ret; + ret = mt9t112_s_power(&priv->subdev, 1); + if (ret < 0) + goto detach; + /* * check and show chip ID */ @@ -1071,6 +1076,8 @@ static int mt9t112_camera_probe(struct i2c_client *client) done: mt9t112_s_power(&priv->subdev, 0); +detach: + soc_camera_device_detach(icl); return ret; } @@ -1100,7 +1107,7 @@ static int mt9t112_probe(struct i2c_client *client, v4l2_i2c_subdev_init(&priv->subdev, client, &mt9t112_subdev_ops); - ret = mt9t112_camera_probe(client); + ret = mt9t112_camera_probe(client, icl); if (ret) { kfree(priv); return ret; diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c index 2f31ca0..b98e602 100644 --- a/drivers/media/platform/soc_camera/soc_camera.c +++ b/drivers/media/platform/soc_camera/soc_camera.c @@ -50,6 +50,58 @@ static LIST_HEAD(hosts); static LIST_HEAD(devices); static DEFINE_MUTEX(list_lock); /* Protects the list of hosts */ +static struct soc_camera_device *soc_camera_device_find(struct soc_camera_link *icl) +{ + struct soc_camera_device *icd; + + mutex_lock(&list_lock); + + list_for_each_entry(icd, &devices, list) + if (icd->link = icl) + break; + + mutex_unlock(&list_lock); + + if (&icd->list = &devices) + return NULL; + + return icd; +} + +int soc_camera_device_attach(struct soc_camera_link *icl) +{ + struct soc_camera_device *icd = soc_camera_device_find(icl); + if (icd) { + struct soc_camera_host *ici = to_soc_camera_host(icd->parent); + bool must_lock = icd->vdev != NULL && video_is_registered(icd->vdev); + int ret; + + if (must_lock) + mutex_lock(&ici->host_lock); + /* device must be linked to a host by now */ + ret = ici->ops->add(icd); + if (must_lock) + mutex_unlock(&ici->host_lock); + return ret; + } + + return -ENODEV; +} +EXPORT_SYMBOL(soc_camera_device_attach); + +void soc_camera_device_detach(struct soc_camera_link *icl) +{ + struct soc_camera_device *icd = soc_camera_device_find(icl); + + if (icd) { + struct soc_camera_host *ici = to_soc_camera_host(icd->parent); + + /* device must be linked to a host by now */ + ici->ops->remove(icd); + } +} +EXPORT_SYMBOL(soc_camera_device_detach); + int soc_camera_power_on(struct device *dev, struct soc_camera_link *icl) { int ret = regulator_bulk_enable(icl->num_regulators, @@ -1142,10 +1194,6 @@ static int soc_camera_probe(struct soc_camera_device *icd) if (icl->reset) icl->reset(icd->pdev); - ret = ici->ops->add(icd); - if (ret < 0) - goto eadd; - /* Must have icd->vdev before registering the device */ ret = video_dev_create(icd); if (ret < 0) @@ -1206,6 +1254,9 @@ static int soc_camera_probe(struct soc_camera_device *icd) goto evidstart; /* Try to improve our guess of a reasonable window format */ + ret = ici->ops->add(icd); + if (ret < 0) + goto eadd; if (!v4l2_subdev_call(sd, video, g_mbus_fmt, &mf)) { icd->user_width = mf.width; icd->user_height = mf.height; @@ -1219,6 +1270,9 @@ static int soc_camera_probe(struct soc_camera_device *icd) return 0; +eadd: + video_unregister_device(icd->vdev); + icd->vdev = NULL; evidstart: mutex_unlock(&icd->video_lock); soc_camera_free_user_formats(icd); @@ -1232,11 +1286,11 @@ ectrl: } enodrv: eadddev: - video_device_release(icd->vdev); - icd->vdev = NULL; + if (icd->vdev) { + video_device_release(icd->vdev); + icd->vdev = NULL; + } evdc: - ici->ops->remove(icd); -eadd: regulator_bulk_free(icl->num_regulators, icl->regulators); ereg: v4l2_ctrl_handler_free(&icd->ctrl_handler); diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h index 6442edc..72342fe 100644 --- a/include/media/soc_camera.h +++ b/include/media/soc_camera.h @@ -259,6 +259,9 @@ unsigned long soc_camera_apply_board_flags(struct soc_camera_link *icl, int soc_camera_power_on(struct device *dev, struct soc_camera_link *icl); int soc_camera_power_off(struct device *dev, struct soc_camera_link *icl); +int soc_camera_device_attach(struct soc_camera_link *icl); +void soc_camera_device_detach(struct soc_camera_link *icl); + static inline int soc_camera_set_power(struct device *dev, struct soc_camera_link *icl, bool on) { -- 1.7.2.5
WARNING: multiple messages have this Message-ID (diff)
From: Guennadi Liakhovetski <g.liakhovetski@gmx.de> To: linux-media@vger.kernel.org Cc: devicetree-discuss@lists.ozlabs.org, Sylwester Nawrocki <sylvester.nawrocki@gmail.com>, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, Hans Verkuil <hverkuil@xs4all.nl>, Magnus Damm <magnus.damm@gmail.com>, linux-sh@vger.kernel.org, Mark Brown <broonie@opensource.wolfsonmicro.com>, Stephen Warren <swarren@wwwdotorg.org>, Arnd Bergmann <arnd@arndb.de>, Grant Likely <grant.likely@secretlab.ca> Subject: [PATCH 06/14] media: soc-camera: prepare for asynchronous client probing Date: Thu, 27 Sep 2012 16:07:25 +0200 [thread overview] Message-ID: <1348754853-28619-7-git-send-email-g.liakhovetski@gmx.de> (raw) In-Reply-To: <1348754853-28619-1-git-send-email-g.liakhovetski@gmx.de> Currently the soc-camera core uses the fact, that client's .probe() method is run inside of soc_camera_probe(). In such a case, the core can first attach the client to a host, then trigger client's probing, check its result and detach the client from the host to allow further clients to be probed and / or used with it. However, if a client probes at a different time, there is no way to know when to attach it to and when to detach it from the host. To solve this we allow the client to decide itself, when it hae to be attached and detached. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> --- drivers/media/i2c/soc_camera/mt9t112.c | 13 ++++- drivers/media/platform/soc_camera/soc_camera.c | 70 +++++++++++++++++++++--- include/media/soc_camera.h | 3 + 3 files changed, 75 insertions(+), 11 deletions(-) diff --git a/drivers/media/i2c/soc_camera/mt9t112.c b/drivers/media/i2c/soc_camera/mt9t112.c index de7cd83..dfa03f0 100644 --- a/drivers/media/i2c/soc_camera/mt9t112.c +++ b/drivers/media/i2c/soc_camera/mt9t112.c @@ -1036,17 +1036,22 @@ static struct v4l2_subdev_ops mt9t112_subdev_ops = { .video = &mt9t112_subdev_video_ops, }; -static int mt9t112_camera_probe(struct i2c_client *client) +static int mt9t112_camera_probe(struct i2c_client *client, + struct soc_camera_link *icl) { struct mt9t112_priv *priv = to_mt9t112(client); const char *devname; int chipid; int ret; - ret = mt9t112_s_power(&priv->subdev, 1); + ret = soc_camera_device_attach(icl); if (ret < 0) return ret; + ret = mt9t112_s_power(&priv->subdev, 1); + if (ret < 0) + goto detach; + /* * check and show chip ID */ @@ -1071,6 +1076,8 @@ static int mt9t112_camera_probe(struct i2c_client *client) done: mt9t112_s_power(&priv->subdev, 0); +detach: + soc_camera_device_detach(icl); return ret; } @@ -1100,7 +1107,7 @@ static int mt9t112_probe(struct i2c_client *client, v4l2_i2c_subdev_init(&priv->subdev, client, &mt9t112_subdev_ops); - ret = mt9t112_camera_probe(client); + ret = mt9t112_camera_probe(client, icl); if (ret) { kfree(priv); return ret; diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c index 2f31ca0..b98e602 100644 --- a/drivers/media/platform/soc_camera/soc_camera.c +++ b/drivers/media/platform/soc_camera/soc_camera.c @@ -50,6 +50,58 @@ static LIST_HEAD(hosts); static LIST_HEAD(devices); static DEFINE_MUTEX(list_lock); /* Protects the list of hosts */ +static struct soc_camera_device *soc_camera_device_find(struct soc_camera_link *icl) +{ + struct soc_camera_device *icd; + + mutex_lock(&list_lock); + + list_for_each_entry(icd, &devices, list) + if (icd->link == icl) + break; + + mutex_unlock(&list_lock); + + if (&icd->list == &devices) + return NULL; + + return icd; +} + +int soc_camera_device_attach(struct soc_camera_link *icl) +{ + struct soc_camera_device *icd = soc_camera_device_find(icl); + if (icd) { + struct soc_camera_host *ici = to_soc_camera_host(icd->parent); + bool must_lock = icd->vdev != NULL && video_is_registered(icd->vdev); + int ret; + + if (must_lock) + mutex_lock(&ici->host_lock); + /* device must be linked to a host by now */ + ret = ici->ops->add(icd); + if (must_lock) + mutex_unlock(&ici->host_lock); + return ret; + } + + return -ENODEV; +} +EXPORT_SYMBOL(soc_camera_device_attach); + +void soc_camera_device_detach(struct soc_camera_link *icl) +{ + struct soc_camera_device *icd = soc_camera_device_find(icl); + + if (icd) { + struct soc_camera_host *ici = to_soc_camera_host(icd->parent); + + /* device must be linked to a host by now */ + ici->ops->remove(icd); + } +} +EXPORT_SYMBOL(soc_camera_device_detach); + int soc_camera_power_on(struct device *dev, struct soc_camera_link *icl) { int ret = regulator_bulk_enable(icl->num_regulators, @@ -1142,10 +1194,6 @@ static int soc_camera_probe(struct soc_camera_device *icd) if (icl->reset) icl->reset(icd->pdev); - ret = ici->ops->add(icd); - if (ret < 0) - goto eadd; - /* Must have icd->vdev before registering the device */ ret = video_dev_create(icd); if (ret < 0) @@ -1206,6 +1254,9 @@ static int soc_camera_probe(struct soc_camera_device *icd) goto evidstart; /* Try to improve our guess of a reasonable window format */ + ret = ici->ops->add(icd); + if (ret < 0) + goto eadd; if (!v4l2_subdev_call(sd, video, g_mbus_fmt, &mf)) { icd->user_width = mf.width; icd->user_height = mf.height; @@ -1219,6 +1270,9 @@ static int soc_camera_probe(struct soc_camera_device *icd) return 0; +eadd: + video_unregister_device(icd->vdev); + icd->vdev = NULL; evidstart: mutex_unlock(&icd->video_lock); soc_camera_free_user_formats(icd); @@ -1232,11 +1286,11 @@ ectrl: } enodrv: eadddev: - video_device_release(icd->vdev); - icd->vdev = NULL; + if (icd->vdev) { + video_device_release(icd->vdev); + icd->vdev = NULL; + } evdc: - ici->ops->remove(icd); -eadd: regulator_bulk_free(icl->num_regulators, icl->regulators); ereg: v4l2_ctrl_handler_free(&icd->ctrl_handler); diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h index 6442edc..72342fe 100644 --- a/include/media/soc_camera.h +++ b/include/media/soc_camera.h @@ -259,6 +259,9 @@ unsigned long soc_camera_apply_board_flags(struct soc_camera_link *icl, int soc_camera_power_on(struct device *dev, struct soc_camera_link *icl); int soc_camera_power_off(struct device *dev, struct soc_camera_link *icl); +int soc_camera_device_attach(struct soc_camera_link *icl); +void soc_camera_device_detach(struct soc_camera_link *icl); + static inline int soc_camera_set_power(struct device *dev, struct soc_camera_link *icl, bool on) { -- 1.7.2.5
next prev parent reply other threads:[~2012-09-27 14:07 UTC|newest] Thread overview: 202+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-09-27 14:07 [PATCH 00/14] V4L2 DT support Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-09-27 14:07 ` [PATCH 01/14] i2c: add dummy inline functions for when CONFIG_OF_I2C(_MODULE) isn't defined Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-09-27 14:07 ` [PATCH 02/14] of: add a dummy inline function for when CONFIG_OF is not defined Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-09-28 11:05 ` [PATCH 15/14] OF: define of_*_cmp() macros also if CONFIG_OF isn't set Guennadi Liakhovetski 2012-09-28 11:05 ` Guennadi Liakhovetski 2012-09-27 14:07 ` [PATCH 04/14] media: add V4L2 DT binding documentation Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-10-01 20:45 ` Sylwester Nawrocki 2012-10-01 20:45 ` Sylwester Nawrocki [not found] ` <1348754853-28619-5-git-send-email-g.liakhovetski-Mmb7MZpHnFY@public.gmane.org> 2012-10-02 14:15 ` Rob Herring 2012-10-02 14:15 ` Rob Herring 2012-10-02 14:15 ` Rob Herring 2012-10-02 14:33 ` Guennadi Liakhovetski 2012-10-02 14:33 ` Guennadi Liakhovetski 2012-10-03 20:54 ` Rob Herring 2012-10-03 20:54 ` Rob Herring 2012-10-05 9:43 ` Guennadi Liakhovetski 2012-10-05 9:43 ` Guennadi Liakhovetski 2012-10-05 11:31 ` Hans Verkuil 2012-10-05 11:31 ` Hans Verkuil 2012-10-05 11:37 ` Guennadi Liakhovetski 2012-10-05 11:37 ` Guennadi Liakhovetski 2012-10-08 20:00 ` Stephen Warren 2012-10-08 20:00 ` Stephen Warren 2012-10-08 20:59 ` Laurent Pinchart 2012-10-08 21:00 ` Laurent Pinchart 2012-10-08 21:14 ` Guennadi Liakhovetski 2012-10-08 21:14 ` Guennadi Liakhovetski 2012-10-08 21:14 ` Guennadi Liakhovetski 2012-10-09 9:21 ` Hans Verkuil 2012-10-09 9:21 ` Hans Verkuil 2012-10-09 9:29 ` Guennadi Liakhovetski 2012-10-09 9:29 ` Guennadi Liakhovetski 2012-10-05 15:10 ` Sascha Hauer 2012-10-05 15:10 ` Sascha Hauer 2012-10-05 15:10 ` Sascha Hauer 2012-10-05 15:41 ` Guennadi Liakhovetski 2012-10-05 15:41 ` Guennadi Liakhovetski 2012-10-05 16:02 ` Sascha Hauer 2012-10-05 16:02 ` Sascha Hauer 2012-10-08 7:58 ` Guennadi Liakhovetski 2012-10-08 7:58 ` Guennadi Liakhovetski 2012-10-10 8:40 ` Sascha Hauer 2012-10-10 8:40 ` Sascha Hauer 2012-10-10 8:51 ` Mark Brown 2012-10-10 8:51 ` Mark Brown 2012-10-10 9:21 ` Sascha Hauer 2012-10-10 9:21 ` Sascha Hauer 2012-10-10 10:46 ` Mark Brown 2012-10-10 10:46 ` Mark Brown 2012-10-08 20:12 ` Stephen Warren 2012-10-08 20:12 ` Stephen Warren 2012-09-27 14:07 ` [PATCH 05/14] media: add a V4L2 OF parser Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-10-01 21:37 ` Sylwester Nawrocki 2012-10-01 21:37 ` Sylwester Nawrocki 2012-10-02 9:49 ` Guennadi Liakhovetski 2012-10-02 9:49 ` Guennadi Liakhovetski [not found] ` <Pine.LNX.4.64.1210021142210.15778-0199iw4Nj15frtckUFj5Ag@public.gmane.org> 2012-10-02 10:13 ` Sylwester Nawrocki 2012-10-02 10:13 ` Sylwester Nawrocki 2012-10-02 10:13 ` Sylwester Nawrocki 2012-10-02 11:04 ` Guennadi Liakhovetski 2012-10-02 11:04 ` Guennadi Liakhovetski 2012-10-05 10:41 ` Hans Verkuil 2012-10-05 10:41 ` Hans Verkuil 2012-10-05 10:58 ` Guennadi Liakhovetski 2012-10-05 10:58 ` Guennadi Liakhovetski 2012-10-05 11:23 ` Hans Verkuil 2012-10-05 11:23 ` Hans Verkuil 2012-10-05 11:35 ` Guennadi Liakhovetski 2012-10-05 11:35 ` Guennadi Liakhovetski 2012-10-08 12:23 ` Guennadi Liakhovetski 2012-10-08 12:23 ` Guennadi Liakhovetski 2012-10-08 13:48 ` Hans Verkuil 2012-10-08 13:48 ` Hans Verkuil 2012-10-08 14:30 ` Guennadi Liakhovetski 2012-10-08 14:30 ` Guennadi Liakhovetski 2012-10-08 14:53 ` Hans Verkuil 2012-10-08 14:53 ` Hans Verkuil 2012-10-08 15:15 ` Guennadi Liakhovetski 2012-10-08 15:15 ` Guennadi Liakhovetski 2012-10-08 15:41 ` Hans Verkuil 2012-10-08 15:41 ` Hans Verkuil 2012-10-08 15:53 ` Guennadi Liakhovetski 2012-10-08 15:53 ` Guennadi Liakhovetski [not found] ` <Pine.LNX.4.64.1210081748390.14454-0199iw4Nj15frtckUFj5Ag@public.gmane.org> 2012-10-08 16:00 ` Guennadi Liakhovetski 2012-10-08 16:00 ` Guennadi Liakhovetski 2012-10-08 16:00 ` Guennadi Liakhovetski 2012-10-10 13:22 ` Laurent Pinchart 2012-10-10 13:22 ` Laurent Pinchart 2012-10-10 13:18 ` Laurent Pinchart 2012-10-10 13:18 ` Laurent Pinchart 2012-10-10 16:50 ` Stephen Warren 2012-10-10 16:50 ` Stephen Warren 2012-10-10 22:51 ` Laurent Pinchart 2012-10-10 22:51 ` Laurent Pinchart 2012-10-11 16:15 ` Stephen Warren 2012-10-11 16:15 ` Stephen Warren 2012-10-10 13:12 ` Laurent Pinchart 2012-10-10 13:12 ` Laurent Pinchart 2012-10-10 12:54 ` Laurent Pinchart 2012-10-10 12:54 ` Laurent Pinchart 2012-10-10 13:45 ` Mauro Carvalho Chehab 2012-10-10 13:45 ` Mauro Carvalho Chehab 2012-10-10 14:48 ` Laurent Pinchart 2012-10-10 14:48 ` Laurent Pinchart 2012-10-10 14:57 ` Mauro Carvalho Chehab 2012-10-10 14:57 ` Mauro Carvalho Chehab 2012-10-10 15:15 ` Laurent Pinchart 2012-10-10 15:15 ` Laurent Pinchart 2012-10-11 19:48 ` Sakari Ailus 2012-10-11 19:48 ` Sakari Ailus 2012-10-13 0:16 ` Guennadi Liakhovetski 2012-10-13 0:16 ` Guennadi Liakhovetski 2012-10-05 18:30 ` Sylwester Nawrocki 2012-10-05 18:30 ` Sylwester Nawrocki 2012-10-05 18:45 ` Mark Brown 2012-10-05 18:45 ` Mark Brown 2012-10-08 9:40 ` Guennadi Liakhovetski 2012-10-08 9:40 ` Guennadi Liakhovetski 2012-10-09 10:34 ` Sylwester Nawrocki 2012-10-09 10:34 ` Sylwester Nawrocki 2012-10-09 11:00 ` Hans Verkuil 2012-10-09 11:00 ` Hans Verkuil 2012-10-10 13:25 ` Laurent Pinchart 2012-10-10 13:25 ` Laurent Pinchart 2012-10-10 20:23 ` Sylwester Nawrocki 2012-10-10 20:23 ` Sylwester Nawrocki 2012-10-10 20:32 ` Guennadi Liakhovetski 2012-10-10 20:32 ` Guennadi Liakhovetski 2012-10-10 21:12 ` Sylwester Nawrocki 2012-10-10 21:12 ` Sylwester Nawrocki 2012-10-10 23:05 ` Laurent Pinchart 2012-10-10 23:05 ` Laurent Pinchart [not found] ` <5075D947.3080903-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2012-10-10 22:58 ` Laurent Pinchart 2012-10-10 22:58 ` Laurent Pinchart 2012-10-10 22:58 ` Laurent Pinchart 2012-10-08 21:30 ` Laurent Pinchart 2012-10-08 21:30 ` Laurent Pinchart 2012-10-08 10:03 ` Sylwester Nawrocki 2012-10-08 10:03 ` Sylwester Nawrocki 2012-09-27 14:07 ` Guennadi Liakhovetski [this message] 2012-09-27 14:07 ` [PATCH 06/14] media: soc-camera: prepare for asynchronous client probing Guennadi Liakhovetski 2012-09-27 14:07 ` [PATCH 07/14] media: soc-camera: support deferred probing of clients Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2013-04-10 10:38 ` Barry Song 2013-04-10 10:38 ` Barry Song [not found] ` <CAGsJ_4yUY6PE0NWZ9yaOLFmRb3O-HL55=w7Y6muwL0YbkJtP0Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-04-10 12:06 ` Guennadi Liakhovetski 2013-04-10 12:06 ` Guennadi Liakhovetski 2013-04-10 12:06 ` Guennadi Liakhovetski 2013-04-10 13:53 ` Barry Song 2013-04-10 13:53 ` Barry Song 2013-04-10 13:56 ` Mark Brown 2013-04-10 13:56 ` Mark Brown 2013-04-10 14:00 ` Barry Song 2013-04-10 14:00 ` Barry Song 2013-04-10 14:03 ` Guennadi Liakhovetski 2013-04-10 14:03 ` Guennadi Liakhovetski 2013-04-10 14:30 ` Barry Song 2013-04-10 14:30 ` Barry Song 2013-04-10 14:43 ` Guennadi Liakhovetski 2013-04-10 14:43 ` Guennadi Liakhovetski 2013-04-10 15:02 ` Barry Song 2013-04-10 15:02 ` Barry Song 2012-09-27 14:07 ` [PATCH 08/14] media: soc-camera: use managed devm_regulator_bulk_get() Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-09-27 17:38 ` Sachin Kamat 2012-09-27 17:50 ` Sachin Kamat 2012-09-27 14:07 ` [PATCH 09/14] media: mt9t112: support deferred probing Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski [not found] ` <1348754853-28619-1-git-send-email-g.liakhovetski-Mmb7MZpHnFY@public.gmane.org> 2012-09-27 14:07 ` [PATCH 03/14] OF: make a function pointer argument const Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-09-27 14:07 ` [PATCH 10/14] media: soc-camera: support OF cameras Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-10-05 19:11 ` Sylwester Nawrocki 2012-10-05 19:11 ` Sylwester Nawrocki 2012-10-08 8:37 ` Guennadi Liakhovetski 2012-10-08 8:37 ` Guennadi Liakhovetski 2012-10-08 9:28 ` Sylwester Nawrocki 2012-10-08 9:28 ` Sylwester Nawrocki 2013-04-08 9:19 ` Barry Song 2013-04-08 9:19 ` Barry Song [not found] ` <CAGsJ_4zYvF-U0_ETs9EP8i+bOJiJLkXWrJdMNnW_sXU-QwnXQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-04-08 11:21 ` Guennadi Liakhovetski 2013-04-08 11:21 ` Guennadi Liakhovetski 2013-04-08 11:21 ` Guennadi Liakhovetski 2013-04-08 11:49 ` Barry Song 2013-04-08 11:49 ` Barry Song 2012-09-27 14:07 ` [PATCH 11/14] media: sh-mobile-ceu-camera: runtime PM suspending doesn't have to be synchronous Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-09-27 14:07 ` [PATCH 12/14] media: sh-mobile-ceu-camera: add primitive OF support Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-09-27 14:07 ` [PATCH 13/14] media: sh-mobile-ceu-driver: support max width and height in DT Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-09-27 14:07 ` [PATCH 14/14] media: sh_mobile_ceu_camera: support all standard V4L2 DT properties Guennadi Liakhovetski 2012-09-27 14:07 ` Guennadi Liakhovetski 2012-10-05 12:32 ` [PATCH 00/14] V4L2 DT support Sylwester Nawrocki 2012-10-05 12:32 ` Sylwester Nawrocki 2012-10-05 14:41 ` Guennadi Liakhovetski 2012-10-05 14:41 ` Guennadi Liakhovetski
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1348754853-28619-7-git-send-email-g.liakhovetski@gmx.de \ --to=g.liakhovetski@gmx.de \ --cc=arnd@arndb.de \ --cc=broonie@opensource.wolfsonmicro.com \ --cc=devicetree-discuss@lists.ozlabs.org \ --cc=grant.likely@secretlab.ca \ --cc=hverkuil@xs4all.nl \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linux-media@vger.kernel.org \ --cc=linux-sh@vger.kernel.org \ --cc=magnus.damm@gmail.com \ --cc=swarren@wwwdotorg.org \ --cc=sylvester.nawrocki@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.