media: atomisp: Remove isp_timeout flag
authorHans de Goede <hdegoede@redhat.com>
Thu, 11 May 2023 14:51:21 +0000 (15:51 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 9 Jun 2023 13:35:03 +0000 (14:35 +0100)
isp_timeout only ever gets set in __atomisp_css_recover() and then
immediately gets cleared again after calling atomisp_reset().

All this happens with isp->mutex held.

The only consumer of isp->isp_timeout is atomisp_stop_streaming(), which
also holds isp->mutex and which is *not* called by atomisp_reset().

Since both hold isp->mutex and since __atomisp_css_recover() clears
isp_timeout before releasing the mutex, atomisp_stop_streaming() can
never see isp_timeout being true, so just remove the flag.

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/staging/media/atomisp/pci/atomisp_cmd.c
drivers/staging/media/atomisp/pci/atomisp_internal.h
drivers/staging/media/atomisp/pci/atomisp_ioctl.c

index 42a2a8f0da06ffa8490992990ab541b3982c18a5..ea07ddcdd7f15dab2c89979b5a703f28c0dfd3f8 100644 (file)
@@ -935,7 +935,7 @@ void atomisp_buf_done(struct atomisp_sub_device *asd, int error,
                atomisp_qbuffers_to_css(asd);
 }
 
-static void __atomisp_css_recover(struct atomisp_device *isp, bool isp_timeout)
+static void __atomisp_css_recover(struct atomisp_device *isp)
 {
        struct pci_dev *pdev = to_pci_dev(isp->dev);
        enum ia_css_pipe_id css_pipe_id;
@@ -992,9 +992,7 @@ static void __atomisp_css_recover(struct atomisp_device *isp, bool isp_timeout)
                               isp->saved_regs.i_control | MRFLD_PCI_I_CONTROL_SRSE_RESET_MASK);
 
        /* reset ISP and restore its state */
-       isp->isp_timeout = true;
        atomisp_reset(isp);
-       isp->isp_timeout = false;
 
        if (stream_restart) {
                atomisp_css_input_set_mode(&isp->asd, IA_CSS_INPUT_MODE_BUFFERED_SENSOR);
@@ -1043,14 +1041,14 @@ void atomisp_assert_recovery_work(struct work_struct *work)
                                                  assert_recovery_work);
 
        mutex_lock(&isp->mutex);
-       __atomisp_css_recover(isp, true);
+       __atomisp_css_recover(isp);
        mutex_unlock(&isp->mutex);
 }
 
 void atomisp_css_flush(struct atomisp_device *isp)
 {
        /* Start recover */
-       __atomisp_css_recover(isp, false);
+       __atomisp_css_recover(isp);
 
        dev_dbg(isp->dev, "atomisp css flush done\n");
 }
index cec0ac92726e6559dd4b7b01960603c997cca3f7..3d4f0f632f449e4ebd5023a407da93d55c9ab415 100644 (file)
@@ -204,8 +204,6 @@ struct atomisp_device {
        struct atomisp_regs saved_regs;
        struct atomisp_css_env css_env;
 
-       /* isp timeout status flag */
-       bool isp_timeout;
        bool isp_fatal_error;
        struct work_struct assert_recovery_work;
 
index 8e2b5b647670fbd74ee30a94cb5c0530d8ca9fff..e0a8616ecf05010d8fb8a8bf1924be573f0e650f 100644 (file)
@@ -1369,11 +1369,7 @@ stopsensor:
        /*
         * ISP work around, need to reset isp
         * Is it correct time to reset ISP when first node does streamoff?
-        */
-       if (isp->isp_timeout)
-               dev_err(isp->dev, "%s: Resetting with WA activated",
-                       __func__);
-       /*
+        *
         * It is possible that the other asd stream is in the stage
         * that v4l2_setfmt is just get called on it, which will
         * create css stream on that stream. But at this point, there
@@ -1403,7 +1399,6 @@ stopsensor:
                }
        }
 
-       isp->isp_timeout = false;
 out_unlock:
        mutex_unlock(&isp->mutex);
 }