[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240226165321.91976-22-eajames@linux.ibm.com>
Date: Mon, 26 Feb 2024 10:53:11 -0600
From: Eddie James <eajames@...ux.ibm.com>
To: linux-fsi@...ts.ozlabs.org
Cc: linux-kernel@...r.kernel.org, linux-i2c@...r.kernel.org,
devicetree@...r.kernel.org, andi.shyti@...nel.org,
eajames@...ux.ibm.com, alistair@...ple.id.au, joel@....id.au,
jk@...abs.org, robh@...nel.org, krzysztof.kozlowski+dt@...aro.org,
conor+dt@...nel.org, lakshmiy@...ibmcom
Subject: [PATCH v2 21/31] fsi: aspeed: Use common master error handler
This will do the correct mmode manipulation to do the master
reset.
Signed-off-by: Eddie James <eajames@...ux.ibm.com>
---
drivers/fsi/fsi-master-aspeed.c | 27 ++++-----------------------
1 file changed, 4 insertions(+), 23 deletions(-)
diff --git a/drivers/fsi/fsi-master-aspeed.c b/drivers/fsi/fsi-master-aspeed.c
index 92b47bc9917a..ac8835e4d1f8 100644
--- a/drivers/fsi/fsi-master-aspeed.c
+++ b/drivers/fsi/fsi-master-aspeed.c
@@ -220,27 +220,6 @@ static int opb_readb(struct fsi_master_aspeed *aspeed, uint32_t addr, u8 *out)
return __opb_read(aspeed, addr, XFER_BYTE, (void *)out);
}
-static int check_errors(struct fsi_master_aspeed *aspeed, int err)
-{
- int ret;
-
- if (err == -EIO) {
- /* Check MAEB (0x70) ? */
-
- /* Then clear errors in master */
- ret = opb_writel(aspeed, ctrl_base + FSI_MRESP0,
- cpu_to_be32(FSI_MRESP_RST_ALL_MASTER));
- if (ret) {
- /* TODO: log? return different code? */
- return ret;
- }
- /* TODO: confirm that 0x70 was okay */
- }
-
- /* This will pass through timeout errors */
- return err;
-}
-
static int aspeed_master_read(struct fsi_master *master, int link,
uint8_t id, uint32_t addr, void *val, size_t size)
{
@@ -271,7 +250,8 @@ static int aspeed_master_read(struct fsi_master *master, int link,
goto done;
}
- ret = check_errors(aspeed, ret);
+ if (ret == -EIO)
+ fsi_master_error(&aspeed->master, link);
done:
spin_unlock_irqrestore(&aspeed->lock, flags);
return ret;
@@ -307,7 +287,8 @@ static int aspeed_master_write(struct fsi_master *master, int link,
goto done;
}
- ret = check_errors(aspeed, ret);
+ if (ret == -EIO)
+ fsi_master_error(&aspeed->master, link);
done:
spin_unlock_irqrestore(&aspeed->lock, flags);
return ret;
--
2.39.3
Powered by blists - more mailing lists