Commit 7606f4df authored by Conor Dooley's avatar Conor Dooley
Browse files

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: default avatarValentina Fernandez <valentina.fernandezalanis@microchip.com>
Signed-off-by: default avatarConor Dooley <conor.dooley@microchip.com>
parent 4f739af1
Loading
Loading
Loading
Loading
+13 −14
Original line number Diff line number Diff line
@@ -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 {
	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");
		}
		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;