diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2011-03-23 04:41:28 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-04-13 08:54:16 -0400 |
commit | 24105ebc0567f2864999a8176be681c62fe31350 (patch) | |
tree | 077520b8ae7e37f7e22e34365f5e8a5caa8daf33 /drivers/media/video/soc_camera.c | |
parent | c6c735441207b2ab54e45b0eb47671c508ee9847 (diff) |
[media] soc-camera: fix a recent multi-camera breakage on sh-mobile
With the introduction of CSI2 support on sh-mobile, the host driver
switched to using v4l2_device_call_until_err() with grp_id == 0 to
call subdev operations on the sensor and the CSI2 subdev. However,
this has broken multi-client set ups like the one on migor, because
that way all operations get called on both clients. To fix this add
a grp_id and set it to the client private context.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/soc_camera.c')
-rw-r--r-- | drivers/media/video/soc_camera.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/media/video/soc_camera.c b/drivers/media/video/soc_camera.c index 46284489e4eb..921993060d2f 100644 --- a/drivers/media/video/soc_camera.c +++ b/drivers/media/video/soc_camera.c | |||
@@ -1071,6 +1071,9 @@ static int soc_camera_probe(struct device *dev) | |||
1071 | } | 1071 | } |
1072 | } | 1072 | } |
1073 | 1073 | ||
1074 | sd = soc_camera_to_subdev(icd); | ||
1075 | sd->grp_id = (long)icd; | ||
1076 | |||
1074 | /* At this point client .probe() should have run already */ | 1077 | /* At this point client .probe() should have run already */ |
1075 | ret = soc_camera_init_user_formats(icd); | 1078 | ret = soc_camera_init_user_formats(icd); |
1076 | if (ret < 0) | 1079 | if (ret < 0) |
@@ -1092,7 +1095,6 @@ static int soc_camera_probe(struct device *dev) | |||
1092 | goto evidstart; | 1095 | goto evidstart; |
1093 | 1096 | ||
1094 | /* Try to improve our guess of a reasonable window format */ | 1097 | /* Try to improve our guess of a reasonable window format */ |
1095 | sd = soc_camera_to_subdev(icd); | ||
1096 | if (!v4l2_subdev_call(sd, video, g_mbus_fmt, &mf)) { | 1098 | if (!v4l2_subdev_call(sd, video, g_mbus_fmt, &mf)) { |
1097 | icd->user_width = mf.width; | 1099 | icd->user_width = mf.width; |
1098 | icd->user_height = mf.height; | 1100 | icd->user_height = mf.height; |