aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacopo Mondi <[email protected]>2022-03-14 10:39:41 +0000
committerMauro Carvalho Chehab <[email protected]>2022-04-24 09:06:41 +0100
commit851b270bc41d006ac8dddf15265f8a0fa0df9877 (patch)
treefe3d96360e51f943b6702d4a70ee44793fe595e0
parente273454c50c33b32203ec93aafb52cc32546e99c (diff)
media: imx: imx-mipi-csis: Protect mipi_csis_dump_regs()
The mipi_csis_dump_regs() function accesses the interface registers in order to printout their values for debug purposes. As the function access the registers, it requires the interface to be powered up. Currently this is only enforced in one of the function's callers (mipi_csis_log_status)() but not when the function is called by the debugfs attribute handler. Make sure to access registers only if the interface is powered up and remove the same check from the caller. Signed-off-by: Jacopo Mondi <[email protected]> Acked-by: Rui Miguel Silva <[email protected]> Signed-off-by: Laurent Pinchart <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
-rw-r--r--drivers/media/platform/nxp/imx-mipi-csis.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/media/platform/nxp/imx-mipi-csis.c b/drivers/media/platform/nxp/imx-mipi-csis.c
index 1434aa87406a..2a03da2f2239 100644
--- a/drivers/media/platform/nxp/imx-mipi-csis.c
+++ b/drivers/media/platform/nxp/imx-mipi-csis.c
@@ -873,6 +873,9 @@ static int mipi_csis_dump_regs(struct mipi_csis_device *csis)
unsigned int i;
u32 cfg;
+ if (!pm_runtime_get_if_in_use(csis->dev))
+ return 0;
+
dev_info(csis->dev, "--- REGISTERS ---\n");
for (i = 0; i < ARRAY_SIZE(registers); i++) {
@@ -880,6 +883,8 @@ static int mipi_csis_dump_regs(struct mipi_csis_device *csis)
dev_info(csis->dev, "%14s: 0x%08x\n", registers[i].name, cfg);
}
+ pm_runtime_put(csis->dev);
+
return 0;
}
@@ -1163,10 +1168,8 @@ static int mipi_csis_log_status(struct v4l2_subdev *sd)
struct mipi_csis_device *csis = sd_to_mipi_csis_device(sd);
mipi_csis_log_counters(csis, true);
- if (csis->debug.enable && pm_runtime_get_if_in_use(csis->dev)) {
+ if (csis->debug.enable)
mipi_csis_dump_regs(csis);
- pm_runtime_put(csis->dev);
- }
return 0;
}