soc: microchip: mpfs: simplify error handling in mpfs_blocking_transaction()

The error handling has a kinda weird nested-if setup that is not really
adding anything. Switch it to more of an early return arrangement as a
predatory step for adding different handing for timeouts and failed
services.

Tested-by: Valentina Fernandez <valentina.fernandezalanis@microchip.com>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
This commit is contained in:
Conor Dooley 2023-03-07 20:22:57 +00:00
parent 4f739af193
commit 7606f4dfff
1 changed files with 13 additions and 14 deletions

View File

@ -32,28 +32,27 @@ struct mpfs_sys_controller {
int mpfs_blocking_transaction(struct mpfs_sys_controller *sys_controller, struct mpfs_mss_msg *msg)
{
unsigned long timeout = msecs_to_jiffies(MPFS_SYS_CTRL_TIMEOUT_MS);
int ret, err;
int ret;
err = mutex_lock_interruptible(&transaction_lock);
if (err)
return err;
ret = mutex_lock_interruptible(&transaction_lock);
if (ret)
return ret;
reinit_completion(&sys_controller->c);
ret = mbox_send_message(sys_controller->chan, msg);
if (ret >= 0) {
if (wait_for_completion_timeout(&sys_controller->c, timeout)) {
ret = 0;
} else {
ret = -ETIMEDOUT;
dev_warn(sys_controller->client.dev,
"MPFS sys controller transaction timeout\n");
}
if (ret < 0)
goto out;
if (!wait_for_completion_timeout(&sys_controller->c, timeout)) {
ret = -ETIMEDOUT;
dev_warn(sys_controller->client.dev, "MPFS sys controller transaction timeout\n");
} else {
dev_err(sys_controller->client.dev,
"mpfs sys controller transaction returned %d\n", ret);
/* mbox_send_message() returns positive integers on success */
ret = 0;
}
out:
mutex_unlock(&transaction_lock);
return ret;