* [PATCH v3] i2c: aspeed: Reset the i2c controller when timeout occurs
@ 2023-09-06 0:49 ` Tommy Huang
0 siblings, 0 replies; 8+ messages in thread
From: Tommy Huang @ 2023-09-06 0:49 UTC (permalink / raw)
To: brendan.higgins, andi.shyti, p.zabel, linux-i2c, openbmc
Cc: benh, joel, andrew, linux-arm-kernel, linux-aspeed, linux-kernel,
BMC-SW, jae.hyun.yoo, stable
Reset the i2c controller when an i2c transfer timeout occurs.
The remaining interrupts and device should be reset to avoid
unpredictable controller behavior.
Fixes: 2e57b7cebb98 ("i2c: aspeed: Add multi-master use case support")
Cc: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Cc: <stable@vger.kernel.org> # v5.1+
Signed-off-by: Tommy Huang <tommy_huang@aspeedtech.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
---
V3: Submit this patch for clearing patch style typo.
---
drivers/i2c/busses/i2c-aspeed.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
index 2e5acfeb76c8..5a416b39b818 100644
--- a/drivers/i2c/busses/i2c-aspeed.c
+++ b/drivers/i2c/busses/i2c-aspeed.c
@@ -698,13 +698,16 @@ static int aspeed_i2c_master_xfer(struct i2c_adapter *adap,
if (time_left == 0) {
/*
- * If timed out and bus is still busy in a multi master
- * environment, attempt recovery at here.
+ * In a multi-master setup, if a timeout occurs, attempt
+ * recovery. But if the bus is idle, we still need to reset the
+ * i2c controller to clear the remaining interrupts.
*/
if (bus->multi_master &&
(readl(bus->base + ASPEED_I2C_CMD_REG) &
ASPEED_I2CD_BUS_BUSY_STS))
aspeed_i2c_recover_bus(bus);
+ else
+ aspeed_i2c_reset(bus);
/*
* If timed out and the state is still pending, drop the pending
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3] i2c: aspeed: Reset the i2c controller when timeout occurs
@ 2023-09-06 0:49 ` Tommy Huang
0 siblings, 0 replies; 8+ messages in thread
From: Tommy Huang @ 2023-09-06 0:49 UTC (permalink / raw)
To: brendan.higgins, andi.shyti, p.zabel, linux-i2c, openbmc
Cc: BMC-SW, jae.hyun.yoo, linux-aspeed, andrew, linux-kernel, stable,
joel, linux-arm-kernel
Reset the i2c controller when an i2c transfer timeout occurs.
The remaining interrupts and device should be reset to avoid
unpredictable controller behavior.
Fixes: 2e57b7cebb98 ("i2c: aspeed: Add multi-master use case support")
Cc: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Cc: <stable@vger.kernel.org> # v5.1+
Signed-off-by: Tommy Huang <tommy_huang@aspeedtech.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
---
V3: Submit this patch for clearing patch style typo.
---
drivers/i2c/busses/i2c-aspeed.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
index 2e5acfeb76c8..5a416b39b818 100644
--- a/drivers/i2c/busses/i2c-aspeed.c
+++ b/drivers/i2c/busses/i2c-aspeed.c
@@ -698,13 +698,16 @@ static int aspeed_i2c_master_xfer(struct i2c_adapter *adap,
if (time_left == 0) {
/*
- * If timed out and bus is still busy in a multi master
- * environment, attempt recovery at here.
+ * In a multi-master setup, if a timeout occurs, attempt
+ * recovery. But if the bus is idle, we still need to reset the
+ * i2c controller to clear the remaining interrupts.
*/
if (bus->multi_master &&
(readl(bus->base + ASPEED_I2C_CMD_REG) &
ASPEED_I2CD_BUS_BUSY_STS))
aspeed_i2c_recover_bus(bus);
+ else
+ aspeed_i2c_reset(bus);
/*
* If timed out and the state is still pending, drop the pending
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3] i2c: aspeed: Reset the i2c controller when timeout occurs
@ 2023-09-06 0:49 ` Tommy Huang
0 siblings, 0 replies; 8+ messages in thread
From: Tommy Huang @ 2023-09-06 0:49 UTC (permalink / raw)
To: brendan.higgins, andi.shyti, p.zabel, linux-i2c, openbmc
Cc: benh, joel, andrew, linux-arm-kernel, linux-aspeed, linux-kernel,
BMC-SW, jae.hyun.yoo, stable
Reset the i2c controller when an i2c transfer timeout occurs.
The remaining interrupts and device should be reset to avoid
unpredictable controller behavior.
Fixes: 2e57b7cebb98 ("i2c: aspeed: Add multi-master use case support")
Cc: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Cc: <stable@vger.kernel.org> # v5.1+
Signed-off-by: Tommy Huang <tommy_huang@aspeedtech.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
---
V3: Submit this patch for clearing patch style typo.
---
drivers/i2c/busses/i2c-aspeed.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
index 2e5acfeb76c8..5a416b39b818 100644
--- a/drivers/i2c/busses/i2c-aspeed.c
+++ b/drivers/i2c/busses/i2c-aspeed.c
@@ -698,13 +698,16 @@ static int aspeed_i2c_master_xfer(struct i2c_adapter *adap,
if (time_left == 0) {
/*
- * If timed out and bus is still busy in a multi master
- * environment, attempt recovery at here.
+ * In a multi-master setup, if a timeout occurs, attempt
+ * recovery. But if the bus is idle, we still need to reset the
+ * i2c controller to clear the remaining interrupts.
*/
if (bus->multi_master &&
(readl(bus->base + ASPEED_I2C_CMD_REG) &
ASPEED_I2CD_BUS_BUSY_STS))
aspeed_i2c_recover_bus(bus);
+ else
+ aspeed_i2c_reset(bus);
/*
* If timed out and the state is still pending, drop the pending
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3] i2c: aspeed: Reset the i2c controller when timeout occurs
2023-09-06 0:49 ` Tommy Huang
(?)
(?)
@ 2023-09-13 9:05 ` Wolfram Sang
-1 siblings, 0 replies; 8+ messages in thread
From: Wolfram Sang @ 2023-09-13 9:05 UTC (permalink / raw)
To: linux-aspeed
On Wed, Sep 06, 2023 at 08:49:10AM +0800, Tommy Huang wrote:
> Reset the i2c controller when an i2c transfer timeout occurs.
> The remaining interrupts and device should be reset to avoid
> unpredictable controller behavior.
>
> Fixes: 2e57b7cebb98 ("i2c: aspeed: Add multi-master use case support")
> Cc: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
> Cc: <stable@vger.kernel.org> # v5.1+
> Signed-off-by: Tommy Huang <tommy_huang@aspeedtech.com>
> Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Applied to for-current, thanks!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linux-aspeed/attachments/20230913/72017358/attachment.sig>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v3] i2c: aspeed: Reset the i2c controller when timeout occurs
@ 2023-09-13 9:05 ` Wolfram Sang
0 siblings, 0 replies; 8+ messages in thread
From: Wolfram Sang @ 2023-09-13 9:05 UTC (permalink / raw)
To: Tommy Huang
Cc: brendan.higgins, andi.shyti, p.zabel, linux-i2c, openbmc, benh,
joel, andrew, linux-arm-kernel, linux-aspeed, linux-kernel,
BMC-SW, jae.hyun.yoo, stable
[-- Attachment #1.1: Type: text/plain, Size: 545 bytes --]
On Wed, Sep 06, 2023 at 08:49:10AM +0800, Tommy Huang wrote:
> Reset the i2c controller when an i2c transfer timeout occurs.
> The remaining interrupts and device should be reset to avoid
> unpredictable controller behavior.
>
> Fixes: 2e57b7cebb98 ("i2c: aspeed: Add multi-master use case support")
> Cc: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
> Cc: <stable@vger.kernel.org> # v5.1+
> Signed-off-by: Tommy Huang <tommy_huang@aspeedtech.com>
> Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Applied to for-current, thanks!
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v3] i2c: aspeed: Reset the i2c controller when timeout occurs
@ 2023-09-13 9:05 ` Wolfram Sang
0 siblings, 0 replies; 8+ messages in thread
From: Wolfram Sang @ 2023-09-13 9:05 UTC (permalink / raw)
To: Tommy Huang
Cc: BMC-SW, jae.hyun.yoo, andi.shyti, linux-aspeed, andrew, openbmc,
linux-kernel, stable, brendan.higgins, linux-i2c, p.zabel,
linux-arm-kernel, joel
[-- Attachment #1: Type: text/plain, Size: 545 bytes --]
On Wed, Sep 06, 2023 at 08:49:10AM +0800, Tommy Huang wrote:
> Reset the i2c controller when an i2c transfer timeout occurs.
> The remaining interrupts and device should be reset to avoid
> unpredictable controller behavior.
>
> Fixes: 2e57b7cebb98 ("i2c: aspeed: Add multi-master use case support")
> Cc: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
> Cc: <stable@vger.kernel.org> # v5.1+
> Signed-off-by: Tommy Huang <tommy_huang@aspeedtech.com>
> Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Applied to for-current, thanks!
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v3] i2c: aspeed: Reset the i2c controller when timeout occurs
@ 2023-09-13 9:05 ` Wolfram Sang
0 siblings, 0 replies; 8+ messages in thread
From: Wolfram Sang @ 2023-09-13 9:05 UTC (permalink / raw)
To: Tommy Huang
Cc: brendan.higgins, andi.shyti, p.zabel, linux-i2c, openbmc, benh,
joel, andrew, linux-arm-kernel, linux-aspeed, linux-kernel,
BMC-SW, jae.hyun.yoo, stable
[-- Attachment #1: Type: text/plain, Size: 545 bytes --]
On Wed, Sep 06, 2023 at 08:49:10AM +0800, Tommy Huang wrote:
> Reset the i2c controller when an i2c transfer timeout occurs.
> The remaining interrupts and device should be reset to avoid
> unpredictable controller behavior.
>
> Fixes: 2e57b7cebb98 ("i2c: aspeed: Add multi-master use case support")
> Cc: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
> Cc: <stable@vger.kernel.org> # v5.1+
> Signed-off-by: Tommy Huang <tommy_huang@aspeedtech.com>
> Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Applied to for-current, thanks!
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread