Commit 587d2c62 authored by Akshay Gupta's avatar Akshay Gupta Committed by Greg Kroah-Hartman
Browse files

misc: amd-sbi: Optimize the wait condition for mailbox command completion



- optimize the wait condition to indicate command completion
  by replacing the do while loop with regmap subsystem API
  regmap_read_poll_timeout()

Reviewed-by: default avatarNaveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com>
Signed-off-by: default avatarAkshay Gupta <akshay.gupta@amd.com>
Link: https://lore.kernel.org/r/20250428063034.2145566-6-akshay.gupta@amd.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 013f7e71
Loading
Loading
Loading
Loading
+4 −15
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ int rmi_mailbox_xfer(struct sbrmi_data *data,
		     struct sbrmi_mailbox_msg *msg)
{
	unsigned int bytes;
	int i, ret, retry = 10;
	int i, ret;
	int sw_status;
	u8 byte;

@@ -64,21 +64,10 @@ int rmi_mailbox_xfer(struct sbrmi_data *data,
	 * an ALERT (if enabled) to initiator (BMC) to indicate completion
	 * of the requested command
	 */
	do {
		ret = regmap_read(data->regmap, SBRMI_STATUS, &sw_status);
		if (sw_status < 0) {
			ret = sw_status;
	ret = regmap_read_poll_timeout(data->regmap, SBRMI_STATUS, sw_status,
				       sw_status & SW_ALERT_MASK, 500, 2000000);
	if (ret)
		goto exit_unlock;
		}
		if (sw_status & SW_ALERT_MASK)
			break;
		usleep_range(50, 100);
	} while (retry--);

	if (retry < 0) {
		ret = -EIO;
		goto exit_unlock;
	}

	/*
	 * For a read operation, the initiator (BMC) reads the firmware