summaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/microchip/microchip-sama5d2-isc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/platform/microchip/microchip-sama5d2-isc.c')
-rw-r--r--drivers/media/platform/microchip/microchip-sama5d2-isc.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/media/platform/microchip/microchip-sama5d2-isc.c b/drivers/media/platform/microchip/microchip-sama5d2-isc.c
index 8c7ceee41fd5..c702d2537738 100644
--- a/drivers/media/platform/microchip/microchip-sama5d2-isc.c
+++ b/drivers/media/platform/microchip/microchip-sama5d2-isc.c
@@ -536,6 +536,12 @@ static int microchip_isc_probe(struct platform_device *pdev)
break;
}
+ regmap_read(isc->regmap, ISC_VERSION + isc->offsets.version, &ver);
+
+ ret = isc_mc_init(isc, ver);
+ if (ret < 0)
+ goto isc_probe_mc_init_err;
+
pm_runtime_set_active(dev);
pm_runtime_enable(dev);
pm_request_idle(dev);
@@ -555,7 +561,6 @@ static int microchip_isc_probe(struct platform_device *pdev)
goto unprepare_clk;
}
- regmap_read(isc->regmap, ISC_VERSION + isc->offsets.version, &ver);
dev_info(dev, "Microchip ISC version %x\n", ver);
return 0;
@@ -566,6 +571,9 @@ unprepare_clk:
disable_pm:
pm_runtime_disable(dev);
+isc_probe_mc_init_err:
+ isc_mc_cleanup(isc);
+
cleanup_subdev:
microchip_isc_subdev_cleanup(isc);
@@ -586,6 +594,8 @@ static int microchip_isc_remove(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev);
+ isc_mc_cleanup(isc);
+
microchip_isc_subdev_cleanup(isc);
v4l2_device_unregister(&isc->v4l2_dev);