summaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/microchip/microchip-sama7g5-isc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/platform/microchip/microchip-sama7g5-isc.c')
-rw-r--r--drivers/media/platform/microchip/microchip-sama7g5-isc.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/media/platform/microchip/microchip-sama7g5-isc.c b/drivers/media/platform/microchip/microchip-sama7g5-isc.c
index 3408f6fb61e8..75a0a5caa8d8 100644
--- a/drivers/media/platform/microchip/microchip-sama7g5-isc.c
+++ b/drivers/media/platform/microchip/microchip-sama7g5-isc.c
@@ -526,15 +526,23 @@ static int microchip_xisc_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);
- regmap_read(isc->regmap, ISC_VERSION + isc->offsets.version, &ver);
dev_info(dev, "Microchip XISC version %x\n", ver);
return 0;
+isc_probe_mc_init_err:
+ isc_mc_cleanup(isc);
+
cleanup_subdev:
microchip_isc_subdev_cleanup(isc);
@@ -555,6 +563,8 @@ static int microchip_xisc_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);