[PATCH v2 18/31] fsi: aspeed: Only read result register for successful read

From: Eddie James
Date: Mon Feb 26 2024 - 11:59:06 EST


No reason to read the result in the error path, and remove the
null pointer check on the output, as it should never be null.

Signed-off-by: Eddie James <eajames@xxxxxxxxxxxxx>
---
drivers/fsi/fsi-master-aspeed.c | 29 +++++++++++++----------------
1 file changed, 13 insertions(+), 16 deletions(-)

diff --git a/drivers/fsi/fsi-master-aspeed.c b/drivers/fsi/fsi-master-aspeed.c
index 64a5407a15ec..83f84ee6d6f4 100644
--- a/drivers/fsi/fsi-master-aspeed.c
+++ b/drivers/fsi/fsi-master-aspeed.c
@@ -175,8 +175,6 @@ static int __opb_read(struct fsi_master_aspeed *aspeed, uint32_t addr,
writel(OPB0_XFER_ACK_EN, base + OPB_IRQ_STATUS);
status = readl(base + OPB0_STATUS);

- result = readl(base + OPB0_FSI_DATA_R);
-
/* Return error when poll timed out */
if (ret) {
trace_fsi_master_aspeed_timeout(reg, status, true);
@@ -187,21 +185,20 @@ static int __opb_read(struct fsi_master_aspeed *aspeed, uint32_t addr,
if (status & STATUS_ERR_ACK)
return -EIO;

- if (out) {
- switch (transfer_size) {
- case XFER_BYTE:
- *(u8 *)out = result;
- break;
- case XFER_HALFWORD:
- *(u16 *)out = result;
- break;
- case XFER_FULLWORD:
- *(u32 *)out = result;
- break;
- default:
- return -EINVAL;
- }
+ result = readl(base + OPB0_FSI_DATA_R);

+ switch (transfer_size) {
+ case XFER_BYTE:
+ *(u8 *)out = result;
+ break;
+ case XFER_HALFWORD:
+ *(u16 *)out = result;
+ break;
+ case XFER_FULLWORD:
+ *(u32 *)out = result;
+ break;
+ default:
+ return -EINVAL;
}

trace_fsi_master_aspeed_opb_xfer(addr, transfer_size + 1, result, true);
--
2.39.3