[PATCH v4 19/40] fsi: aspeed: Only read result register for successful read
From: Eddie James
Date: Wed Jun 05 2024 - 17:25:52 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 f840c7c4a56b9..10ca23cf58c2e 100644
--- a/drivers/fsi/fsi-master-aspeed.c
+++ b/drivers/fsi/fsi-master-aspeed.c
@@ -181,8 +181,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);
@@ -193,21 +191,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