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: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com>
Signed-off-by: Akshay Gupta <akshay.gupta@amd.com>
Link: https://lore.kernel.org/r/20250428063034.2145566-6-akshay.gupta@amd.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Akshay Gupta
2025-04-28 06:30:29 +00:00
committed by Greg Kroah-Hartman
parent 013f7e7131
commit 587d2c6251

View File

@@ -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;
goto exit_unlock;
}
if (sw_status & SW_ALERT_MASK)
break;
usleep_range(50, 100);
} while (retry--);
if (retry < 0) {
ret = -EIO;
ret = regmap_read_poll_timeout(data->regmap, SBRMI_STATUS, sw_status,
sw_status & SW_ALERT_MASK, 500, 2000000);
if (ret)
goto exit_unlock;
}
/*
* For a read operation, the initiator (BMC) reads the firmware