diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2009-12-11 09:15:06 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-12-16 06:27:15 -0500 |
commit | 6ed7c03884ee7c05ff880cafb46ae20915e22e3c (patch) | |
tree | c412d8ec7f77b5108a93111114691d05fbe2f8b5 /drivers/media | |
parent | 5d28d525452f170e30bc038955439731462a5228 (diff) |
V4L/DVB (13646): sh_mobile_ceu_camera: do not mark host occupied, when adding a client fails
Currently, if resetting the host interface, when adding a new client, fails, a
negative error code is returned, but the host is still marked as occupied. Fix
this bug.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/video/sh_mobile_ceu_camera.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c index 3271944f261c..2a38e1d90613 100644 --- a/drivers/media/video/sh_mobile_ceu_camera.c +++ b/drivers/media/video/sh_mobile_ceu_camera.c | |||
@@ -459,6 +459,7 @@ static int sh_mobile_ceu_add_device(struct soc_camera_device *icd) | |||
459 | { | 459 | { |
460 | struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent); | 460 | struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent); |
461 | struct sh_mobile_ceu_dev *pcdev = ici->priv; | 461 | struct sh_mobile_ceu_dev *pcdev = ici->priv; |
462 | int ret; | ||
462 | 463 | ||
463 | if (pcdev->icd) | 464 | if (pcdev->icd) |
464 | return -EBUSY; | 465 | return -EBUSY; |
@@ -469,9 +470,11 @@ static int sh_mobile_ceu_add_device(struct soc_camera_device *icd) | |||
469 | 470 | ||
470 | pm_runtime_get_sync(ici->v4l2_dev.dev); | 471 | pm_runtime_get_sync(ici->v4l2_dev.dev); |
471 | 472 | ||
472 | pcdev->icd = icd; | 473 | ret = sh_mobile_ceu_soft_reset(pcdev); |
474 | if (!ret) | ||
475 | pcdev->icd = icd; | ||
473 | 476 | ||
474 | return sh_mobile_ceu_soft_reset(pcdev); | 477 | return ret; |
475 | } | 478 | } |
476 | 479 | ||
477 | /* Called with .video_lock held */ | 480 | /* Called with .video_lock held */ |