| From 7c0f812a5d65e712618af880dda4a5cc7ed79463 Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> |
| Date: Mon, 11 Mar 2013 12:02:13 -0300 |
| Subject: [media] omap3isp: Defer probe when the IOMMU is not available |
| |
| From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> |
| |
| commit 7c0f812a5d65e712618af880dda4a5cc7ed79463 upstream. |
| |
| When the OMAP3 ISP driver is compiled in the kernel the device can be |
| probed before the corresponding IOMMU is available. Defer the probe in |
| that case, and fix a crash in the error path. |
| |
| Reported-by: Javier Martin <javier.martin@vista-silicon.com> |
| Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/media/platform/omap3isp/isp.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/media/platform/omap3isp/isp.c |
| +++ b/drivers/media/platform/omap3isp/isp.c |
| @@ -2249,6 +2249,7 @@ static int isp_probe(struct platform_dev |
| ret = iommu_attach_device(isp->domain, &pdev->dev); |
| if (ret) { |
| dev_err(&pdev->dev, "can't attach iommu device: %d\n", ret); |
| + ret = -EPROBE_DEFER; |
| goto free_domain; |
| } |
| |
| @@ -2287,6 +2288,7 @@ detach_dev: |
| iommu_detach_device(isp->domain, &pdev->dev); |
| free_domain: |
| iommu_domain_free(isp->domain); |
| + isp->domain = NULL; |
| error_isp: |
| isp_xclk_cleanup(isp); |
| omap3isp_put(isp); |