diff options
author | Alain Volmat <alain.volmat@foss.st.com> | 2025-01-13 09:57:56 +0100 |
---|---|---|
committer | Hans Verkuil <hverkuil@xs4all.nl> | 2025-02-15 15:22:49 +0100 |
commit | e0c2081221a201f350a89f291218687ee02ebc6a (patch) | |
tree | f6afe63ef15f7ef0b672ea67a306b5bf8891a541 | |
parent | a3a91b6e62be24c5df47a800c367504cb41e502b (diff) |
media: stm32: csi: simplify enable_streams error handling
Put all error handling for VC stop and CSI stop together
to avoid duplication of code.
Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
-rw-r--r-- | drivers/media/platform/st/stm32/stm32-csi.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/media/platform/st/stm32/stm32-csi.c b/drivers/media/platform/st/stm32/stm32-csi.c index 3654f9895dbc..4affbc00b042 100644 --- a/drivers/media/platform/st/stm32/stm32-csi.c +++ b/drivers/media/platform/st/stm32/stm32-csi.c @@ -694,19 +694,21 @@ static int stm32_csi_enable_streams(struct v4l2_subdev *sd, ret = stm32_csi_start_vc(csidev, state, 0); if (ret) { dev_err(csidev->dev, "Failed to start VC0\n"); - stm32_csi_stop(csidev); - return ret; + goto failed_start_vc; } ret = v4l2_subdev_enable_streams(csidev->s_subdev, csidev->s_subdev_pad_nb, BIT_ULL(0)); - if (ret) { - stm32_csi_stop_vc(csidev, 0); - stm32_csi_stop(csidev); - return ret; - } + if (ret) + goto failed_enable_streams; return 0; + +failed_enable_streams: + stm32_csi_stop_vc(csidev, 0); +failed_start_vc: + stm32_csi_stop(csidev); + return ret; } static int stm32_csi_init_state(struct v4l2_subdev *sd, |