| From 2b0d2b441dcc08640ef2b7f0245affafcf76e300 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 13 Jan 2026 09:26:42 +0200 |
| Subject: i3c: mipi-i3c-hci: Reset RING_OPERATION1 fields during init |
| |
| From: Adrian Hunter <adrian.hunter@intel.com> |
| |
| [ Upstream commit 78f63ae4a82db173f93adca462e63d11ba06b126 ] |
| |
| The MIPI I3C HCI specification does not define reset values for |
| RING_OPERATION1 fields, and some controllers (e.g., Intel) do not clear |
| them during a software reset. Ensure the ring pointers are explicitly |
| set to zero during bus initialization to avoid inconsistent state. |
| |
| Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> |
| Reviewed-by: Frank Li <Frank.Li@nxp.com> |
| Link: https://patch.msgid.link/20260113072702.16268-2-adrian.hunter@intel.com |
| Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/i3c/master/mipi-i3c-hci/dma.c | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| diff --git a/drivers/i3c/master/mipi-i3c-hci/dma.c b/drivers/i3c/master/mipi-i3c-hci/dma.c |
| index c401a9425cdc5..951abfea5a6fd 100644 |
| --- a/drivers/i3c/master/mipi-i3c-hci/dma.c |
| +++ b/drivers/i3c/master/mipi-i3c-hci/dma.c |
| @@ -342,6 +342,14 @@ static int hci_dma_init(struct i3c_hci *hci) |
| rh_reg_write(INTR_SIGNAL_ENABLE, regval); |
| |
| ring_ready: |
| + /* |
| + * The MIPI I3C HCI specification does not document reset values for |
| + * RING_OPERATION1 fields and some controllers (e.g. Intel controllers) |
| + * do not reset the values, so ensure the ring pointers are set to zero |
| + * here. |
| + */ |
| + rh_reg_write(RING_OPERATION1, 0); |
| + |
| rh_reg_write(RING_CONTROL, RING_CTRL_ENABLE | |
| RING_CTRL_RUN_STOP); |
| } |
| -- |
| 2.51.0 |
| |