i2c: amd: Switch to guard(mutex)
authorShyam Sundar S K <Shyam-sundar.S-k@amd.com>
Mon, 17 Feb 2025 12:47:08 +0000 (18:17 +0530)
committerAndi Shyti <andi.shyti@kernel.org>
Tue, 18 Mar 2025 20:53:53 +0000 (21:53 +0100)
Instead of using the 'goto label; mutex_unlock()' pattern use
'guard(mutex)' which will release the mutex when it goes out of scope.

Co-developed-by: Sanket Goswami <Sanket.Goswami@amd.com>
Signed-off-by: Sanket Goswami <Sanket.Goswami@amd.com>
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250217124709.3121848-1-Shyam-sundar.S-k@amd.com
drivers/i2c/busses/i2c-designware-amdpsp.c

index 8fbd2a10c31aad77da627517ea25041b5a3e12fb..404571ad61a86e8fd3db13243af279d1bf5e8631 100644 (file)
@@ -151,19 +151,16 @@ static void release_bus(void)
 
 static void psp_release_i2c_bus_deferred(struct work_struct *work)
 {
-       mutex_lock(&psp_i2c_access_mutex);
+       guard(mutex)(&psp_i2c_access_mutex);
 
        /*
         * If there is any pending transaction, cannot release the bus here.
         * psp_release_i2c_bus() will take care of this later.
         */
        if (psp_i2c_access_count)
-               goto cleanup;
+               return;
 
        release_bus();
-
-cleanup:
-       mutex_unlock(&psp_i2c_access_mutex);
 }
 static DECLARE_DELAYED_WORK(release_queue, psp_release_i2c_bus_deferred);
 
@@ -171,11 +168,11 @@ static int psp_acquire_i2c_bus(void)
 {
        int status;
 
-       mutex_lock(&psp_i2c_access_mutex);
+       guard(mutex)(&psp_i2c_access_mutex);
 
        /* Return early if mailbox malfunctioned */
        if (psp_i2c_mbox_fail)
-               goto cleanup;
+               return 0;
 
        psp_i2c_access_count++;
 
@@ -184,11 +181,11 @@ static int psp_acquire_i2c_bus(void)
         * reservation period.
         */
        if (psp_i2c_sem_acquired)
-               goto cleanup;
+               return 0;
 
        status = psp_send_i2c_req(PSP_I2C_REQ_ACQUIRE);
        if (status)
-               goto cleanup;
+               return 0;
 
        psp_i2c_sem_acquired = jiffies;
 
@@ -201,18 +198,16 @@ static int psp_acquire_i2c_bus(void)
         * communication with PSP. At any case i2c bus is granted to the caller,
         * thus always return success.
         */
-cleanup:
-       mutex_unlock(&psp_i2c_access_mutex);
        return 0;
 }
 
 static void psp_release_i2c_bus(void)
 {
-       mutex_lock(&psp_i2c_access_mutex);
+       guard(mutex)(&psp_i2c_access_mutex);
 
        /* Return early if mailbox was malfunctioned */
        if (psp_i2c_mbox_fail)
-               goto cleanup;
+               return;
 
        /*
         * If we are last owner of PSP semaphore, need to release arbitration
@@ -220,7 +215,7 @@ static void psp_release_i2c_bus(void)
         */
        psp_i2c_access_count--;
        if (psp_i2c_access_count)
-               goto cleanup;
+               return;
 
        /*
         * Send a release command to PSP if the semaphore reservation timeout
@@ -228,9 +223,6 @@ static void psp_release_i2c_bus(void)
         */
        if (!delayed_work_pending(&release_queue))
                release_bus();
-
-cleanup:
-       mutex_unlock(&psp_i2c_access_mutex);
 }
 
 /*