media: imx: imx7_mipi_csis: Move link setup check out of locked section
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 15 Feb 2021 04:27:33 +0000 (05:27 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 11 Mar 2021 10:59:52 +0000 (11:59 +0100)
Checking if the link setup operation is called for the sink or source
pad doesn't require any locking. Move it out of the section protected by
the mutex.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/imx/imx7-mipi-csis.c

index a5f00983bd923e413ad343d46c74b644febda5dd..333ab3966b5b9a6c74b49c5f755f5949563c40ad 100644 (file)
@@ -668,20 +668,23 @@ static int mipi_csis_link_setup(struct media_entity *entity,
        dev_dbg(state->dev, "link setup %s -> %s", remote_pad->entity->name,
                local_pad->entity->name);
 
+       /* We only care about the link to the source. */
+       if (!(local_pad->flags & MEDIA_PAD_FL_SINK))
+               return 0;
+
        remote_sd = media_entity_to_v4l2_subdev(remote_pad->entity);
 
        mutex_lock(&state->lock);
 
-       if (local_pad->flags & MEDIA_PAD_FL_SINK) {
-               if (flags & MEDIA_LNK_FL_ENABLED) {
-                       if (state->src_sd) {
-                               ret = -EBUSY;
-                               goto out;
-                       }
-                       state->src_sd = remote_sd;
-               } else {
-                       state->src_sd = NULL;
+       if (flags & MEDIA_LNK_FL_ENABLED) {
+               if (state->src_sd) {
+                       ret = -EBUSY;
+                       goto out;
                }
+
+               state->src_sd = remote_sd;
+       } else {
+               state->src_sd = NULL;
        }
 
 out: