* [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes
@ 2023-10-18 15:48 Frank Li
2023-10-18 15:48 ` [PATCH v2 1/6] master reduce clock Frank Li
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Frank Li @ 2023-10-18 15:48 UTC (permalink / raw)
To: miquel.raynal
Cc: Frank.Li, alexandre.belloni, conor.culhane, imx, joe, linux-i3c,
linux-kernel
Each patch is indepedents. See commit message for detail.
Change from v1 to v2.
See each patch notes
Frank Li (6):
master reduce clock
i3c: master: svc: fix race condition in ibi work thread
i3c: master: svc: fix wrong data return when IBI happen during start
frame
i3c: master: svc: fix ibi may not return mandatory data byte
i3c: master: svc: fix check wrong status register in irq handler
i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen
drivers/i3c/master/svc-i3c-master.c | 49 +++++++++++++++++++++++++++--
1 file changed, 46 insertions(+), 3 deletions(-)
--
2.34.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/6] master reduce clock
2023-10-18 15:48 [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
@ 2023-10-18 15:48 ` Frank Li
2023-10-18 15:48 ` [PATCH v2 2/6] i3c: master: svc: fix race condition in ibi work thread Frank Li
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Frank Li @ 2023-10-18 15:48 UTC (permalink / raw)
To: miquel.raynal
Cc: Frank.Li, alexandre.belloni, conor.culhane, imx, joe, linux-i3c,
linux-kernel
---
drivers/i3c/master/svc-i3c-master.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
index e307ba2b965e6..d29de5fe533e6 100644
--- a/drivers/i3c/master/svc-i3c-master.c
+++ b/drivers/i3c/master/svc-i3c-master.c
@@ -511,7 +511,7 @@ static int svc_i3c_master_bus_init(struct i3c_master_controller *m)
* Using I3C Push-Pull mode, target is 12.5MHz/80ns period.
* Simplest configuration is using a 50% duty-cycle of 40ns.
*/
- ppbaud = DIV_ROUND_UP(40, fclk_period_ns) - 1;
+ ppbaud = DIV_ROUND_UP(500, fclk_period_ns) - 1;
pplow = 0;
/*
@@ -521,7 +521,7 @@ static int svc_i3c_master_bus_init(struct i3c_master_controller *m)
*/
odhpp = 1;
high_period_ns = (ppbaud + 1) * fclk_period_ns;
- odbaud = DIV_ROUND_UP(240 - high_period_ns, high_period_ns) - 1;
+ odbaud = DIV_ROUND_UP(540 - high_period_ns, high_period_ns) - 1;
od_low_period_ns = (odbaud + 1) * high_period_ns;
switch (bus->mode) {
--
2.34.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/6] i3c: master: svc: fix race condition in ibi work thread
2023-10-18 15:48 [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
2023-10-18 15:48 ` [PATCH v2 1/6] master reduce clock Frank Li
@ 2023-10-18 15:48 ` Frank Li
2023-10-18 15:48 ` [PATCH v2 3/6] i3c: master: svc: fix wrong data return when IBI happen during start frame Frank Li
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Frank Li @ 2023-10-18 15:48 UTC (permalink / raw)
To: miquel.raynal
Cc: Frank.Li, alexandre.belloni, conor.culhane, imx, joe, linux-i3c,
linux-kernel
The ibi work thread operates asynchronously with other transfers, such as
svc_i3c_master_priv_xfers(). Introduce mutex protection to ensure the
completion of the entire i3c/i2c transaction.
Fixes: dd3c52846d59 ("i3c: master: svc: Add Silvaco I3C master driver")
Cc: stable@vger.kernel.org
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Notes:
Change from v1 to v2
- update commit message
- Add Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/i3c/master/svc-i3c-master.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
index d29de5fe533e6..8cd708c965085 100644
--- a/drivers/i3c/master/svc-i3c-master.c
+++ b/drivers/i3c/master/svc-i3c-master.c
@@ -174,6 +174,7 @@ struct svc_i3c_regs_save {
* @ibi.slots: Available IBI slots
* @ibi.tbq_slot: To be queued IBI slot
* @ibi.lock: IBI lock
+ * @lock: Transfer lock, protect between IBI work thread and callbacks from master
*/
struct svc_i3c_master {
struct i3c_master_controller base;
@@ -202,6 +203,7 @@ struct svc_i3c_master {
/* Prevent races within IBI handlers */
spinlock_t lock;
} ibi;
+ struct mutex lock;
};
/**
@@ -383,6 +385,7 @@ static void svc_i3c_master_ibi_work(struct work_struct *work)
u32 status, val;
int ret;
+ mutex_lock(&master->lock);
/* Acknowledge the incoming interrupt with the AUTOIBI mechanism */
writel(SVC_I3C_MCTRL_REQUEST_AUTO_IBI |
SVC_I3C_MCTRL_IBIRESP_AUTO,
@@ -459,6 +462,7 @@ static void svc_i3c_master_ibi_work(struct work_struct *work)
reenable_ibis:
svc_i3c_master_enable_interrupts(master, SVC_I3C_MINT_SLVSTART);
+ mutex_unlock(&master->lock);
}
static irqreturn_t svc_i3c_master_irq_handler(int irq, void *dev_id)
@@ -1203,9 +1207,11 @@ static int svc_i3c_master_send_bdcast_ccc_cmd(struct svc_i3c_master *master,
cmd->read_len = 0;
cmd->continued = false;
+ mutex_lock(&master->lock);
svc_i3c_master_enqueue_xfer(master, xfer);
if (!wait_for_completion_timeout(&xfer->comp, msecs_to_jiffies(1000)))
svc_i3c_master_dequeue_xfer(master, xfer);
+ mutex_unlock(&master->lock);
ret = xfer->ret;
kfree(buf);
@@ -1249,9 +1255,11 @@ static int svc_i3c_master_send_direct_ccc_cmd(struct svc_i3c_master *master,
cmd->read_len = read_len;
cmd->continued = false;
+ mutex_lock(&master->lock);
svc_i3c_master_enqueue_xfer(master, xfer);
if (!wait_for_completion_timeout(&xfer->comp, msecs_to_jiffies(1000)))
svc_i3c_master_dequeue_xfer(master, xfer);
+ mutex_unlock(&master->lock);
if (cmd->read_len != xfer_len)
ccc->dests[0].payload.len = cmd->read_len;
@@ -1308,9 +1316,11 @@ static int svc_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
cmd->continued = (i + 1) < nxfers;
}
+ mutex_lock(&master->lock);
svc_i3c_master_enqueue_xfer(master, xfer);
if (!wait_for_completion_timeout(&xfer->comp, msecs_to_jiffies(1000)))
svc_i3c_master_dequeue_xfer(master, xfer);
+ mutex_unlock(&master->lock);
ret = xfer->ret;
svc_i3c_master_free_xfer(xfer);
@@ -1346,9 +1356,11 @@ static int svc_i3c_master_i2c_xfers(struct i2c_dev_desc *dev,
cmd->continued = (i + 1 < nxfers);
}
+ mutex_lock(&master->lock);
svc_i3c_master_enqueue_xfer(master, xfer);
if (!wait_for_completion_timeout(&xfer->comp, msecs_to_jiffies(1000)))
svc_i3c_master_dequeue_xfer(master, xfer);
+ mutex_unlock(&master->lock);
ret = xfer->ret;
svc_i3c_master_free_xfer(xfer);
@@ -1539,6 +1551,8 @@ static int svc_i3c_master_probe(struct platform_device *pdev)
INIT_WORK(&master->hj_work, svc_i3c_master_hj_work);
INIT_WORK(&master->ibi_work, svc_i3c_master_ibi_work);
+ mutex_init(&master->lock);
+
ret = devm_request_irq(dev, master->irq, svc_i3c_master_irq_handler,
IRQF_NO_SUSPEND, "svc-i3c-irq", master);
if (ret)
--
2.34.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 3/6] i3c: master: svc: fix wrong data return when IBI happen during start frame
2023-10-18 15:48 [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
2023-10-18 15:48 ` [PATCH v2 1/6] master reduce clock Frank Li
2023-10-18 15:48 ` [PATCH v2 2/6] i3c: master: svc: fix race condition in ibi work thread Frank Li
@ 2023-10-18 15:48 ` Frank Li
2023-10-18 15:48 ` [PATCH v2 4/6] i3c: master: svc: fix ibi may not return mandatory data byte Frank Li
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Frank Li @ 2023-10-18 15:48 UTC (permalink / raw)
To: miquel.raynal
Cc: Frank.Li, alexandre.belloni, conor.culhane, imx, joe, linux-i3c,
linux-kernel
┌─────┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┌─────
SCL: ┘ └─────┛ └──┛ └──┛ └──┛ └──┛ └──┛ └──┛ └──┛ └──┘
───┐ ┌─────┐ ┌─────┐ ┌───────────┐
SDA: └───────────────────────┘ └─────┘ └─────┘ └─────
xxx╱ ╲╱ ╲╱ ╲╱ ╲╱ ╲
: xxx╲IBI ╱╲ Addr(0x0a) ╱╲ RW ╱╲NACK╱╲ S ╱
If an In-Band Interrupt (IBI) occurs and IBI work thread is not immediately
scheduled, When svc_i3c_master_priv_xfers() initiates the I3C transfer and
attempts to send address 0x7e, the target interprets it as an
IBI handler and returns the target address 0x0a.
However, svc_i3c_master_priv_xfers() does not handle this case and proceeds
with other transfers, resulting in incorrect data being returned.
Add IBIWON check in svc_i3c_master_xfer(). In case this situation occurs,
return a failure to the driver.
Fixes: dd3c52846d59 ("i3c: master: svc: Add Silvaco I3C master driver")
Cc: stable@vger.kernel.org
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Notes:
Change from v1 to v2
- update commit message
- fix typo yeild and falure
drivers/i3c/master/svc-i3c-master.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
index 8cd708c965085..abebef666b2bb 100644
--- a/drivers/i3c/master/svc-i3c-master.c
+++ b/drivers/i3c/master/svc-i3c-master.c
@@ -1010,6 +1010,9 @@ static int svc_i3c_master_xfer(struct svc_i3c_master *master,
u32 reg;
int ret;
+ /* clean SVC_I3C_MINT_IBIWON w1c bits */
+ writel(SVC_I3C_MINT_IBIWON, master->regs + SVC_I3C_MSTATUS);
+
writel(SVC_I3C_MCTRL_REQUEST_START_ADDR |
xfer_type |
SVC_I3C_MCTRL_IBIRESP_NACK |
@@ -1028,6 +1031,23 @@ static int svc_i3c_master_xfer(struct svc_i3c_master *master,
goto emit_stop;
}
+ /*
+ * According to I3C spec ver 1.1.1, 5.1.2.2.3 Consequence of Controller Starting a Frame
+ * with I3C Target Address.
+ *
+ * The I3C Controller normally should start a Frame, the Address may be arbitrated, and so
+ * the Controller shall monitor to see whether an In-Band Interrupt request, a Controller
+ * Role Request (i.e., Secondary Controller requests to become the Active Controller), or
+ * a Hot-Join Request has been made.
+ *
+ * If missed IBIWON check, the wrong data will be return. When IBIWON happen, return failure
+ * and yield the above events handler.
+ */
+ if (SVC_I3C_MSTATUS_IBIWON(reg)) {
+ ret = -ENXIO;
+ goto emit_stop;
+ }
+
if (rnw)
ret = svc_i3c_master_read(master, in, xfer_len);
else
--
2.34.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 4/6] i3c: master: svc: fix ibi may not return mandatory data byte
2023-10-18 15:48 [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
` (2 preceding siblings ...)
2023-10-18 15:48 ` [PATCH v2 3/6] i3c: master: svc: fix wrong data return when IBI happen during start frame Frank Li
@ 2023-10-18 15:48 ` Frank Li
2023-10-18 15:48 ` [PATCH v2 5/6] i3c: master: svc: fix check wrong status register in irq handler Frank Li
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Frank Li @ 2023-10-18 15:48 UTC (permalink / raw)
To: miquel.raynal
Cc: Frank.Li, alexandre.belloni, conor.culhane, imx, joe, linux-i3c,
linux-kernel
MSTATUS[RXPEND] is only updated after the data transfer cycle started. This
creates an issue when the I3C clock is slow, and the CPU is running fast
enough that MSTATUS[RXPEND] may not be updated when the code reach checking
point. As a result, mandatory data are being missed.
Add a wait for MSTATUS[COMPLETE] to ensure that all mandatory data is
already in FIFO.
Fixes: dd3c52846d59 ("i3c: master: svc: Add Silvaco I3C master driver")
Cc: stable@vger.kernel.org
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Notes:
Change from v1 to v2
- update commit message
it also works without mandatory bytes
drivers/i3c/master/svc-i3c-master.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
index abebef666b2bb..dd06b7c9333f1 100644
--- a/drivers/i3c/master/svc-i3c-master.c
+++ b/drivers/i3c/master/svc-i3c-master.c
@@ -332,6 +332,7 @@ static int svc_i3c_master_handle_ibi(struct svc_i3c_master *master,
struct i3c_ibi_slot *slot;
unsigned int count;
u32 mdatactrl;
+ int ret, val;
u8 *buf;
slot = i3c_generic_ibi_get_free_slot(data->ibi_pool);
@@ -341,6 +342,13 @@ static int svc_i3c_master_handle_ibi(struct svc_i3c_master *master,
slot->len = 0;
buf = slot->data;
+ ret = readl_relaxed_poll_timeout(master->regs + SVC_I3C_MSTATUS, val,
+ SVC_I3C_MSTATUS_COMPLETE(val), 0, 1000);
+ if (ret) {
+ dev_err(master->dev, "Timeout when polling for COMPLETE\n");
+ return ret;
+ }
+
while (SVC_I3C_MSTATUS_RXPEND(readl(master->regs + SVC_I3C_MSTATUS)) &&
slot->len < SVC_I3C_FIFO_SIZE) {
mdatactrl = readl(master->regs + SVC_I3C_MDATACTRL);
--
2.34.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 5/6] i3c: master: svc: fix check wrong status register in irq handler
2023-10-18 15:48 [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
` (3 preceding siblings ...)
2023-10-18 15:48 ` [PATCH v2 4/6] i3c: master: svc: fix ibi may not return mandatory data byte Frank Li
@ 2023-10-18 15:48 ` Frank Li
2023-10-18 15:48 ` [PATCH v2 6/6] i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen Frank Li
2023-10-18 16:03 ` [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
6 siblings, 0 replies; 8+ messages in thread
From: Frank Li @ 2023-10-18 15:48 UTC (permalink / raw)
To: miquel.raynal
Cc: Frank.Li, alexandre.belloni, conor.culhane, imx, joe, linux-i3c,
linux-kernel
svc_i3c_master_irq_handler() wrong check register SVC_I3C_MINTMASKED. It
should be SVC_I3C_MSTATUS.
Fixes: dd3c52846d59 ("i3c: master: svc: Add Silvaco I3C master driver")
Cc: stable@vger.kernel.org
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Notes:
Change from v1 to v2
- Add Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/i3c/master/svc-i3c-master.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
index dd06b7c9333f1..b113460f059c3 100644
--- a/drivers/i3c/master/svc-i3c-master.c
+++ b/drivers/i3c/master/svc-i3c-master.c
@@ -476,7 +476,7 @@ static void svc_i3c_master_ibi_work(struct work_struct *work)
static irqreturn_t svc_i3c_master_irq_handler(int irq, void *dev_id)
{
struct svc_i3c_master *master = (struct svc_i3c_master *)dev_id;
- u32 active = readl(master->regs + SVC_I3C_MINTMASKED);
+ u32 active = readl(master->regs + SVC_I3C_MSTATUS);
if (!SVC_I3C_MSTATUS_SLVSTART(active))
return IRQ_NONE;
--
2.34.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 6/6] i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen
2023-10-18 15:48 [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
` (4 preceding siblings ...)
2023-10-18 15:48 ` [PATCH v2 5/6] i3c: master: svc: fix check wrong status register in irq handler Frank Li
@ 2023-10-18 15:48 ` Frank Li
2023-10-18 16:03 ` [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
6 siblings, 0 replies; 8+ messages in thread
From: Frank Li @ 2023-10-18 15:48 UTC (permalink / raw)
To: miquel.raynal
Cc: Frank.Li, alexandre.belloni, conor.culhane, imx, joe, linux-i3c,
linux-kernel
If IBIWON timeout happen, SDA line will always keep low because miss emit
stop.
Call svc_i3c_master_emit_stop() to let i3c bus come back to idle statue
when IBIWON timeout happen.
Fixes: dd3c52846d59 ("i3c: master: svc: Add Silvaco I3C master driver")
Cc: stable@vger.kernel.org
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Notes:
Change from v1 to v2
- Update commite message
drivers/i3c/master/svc-i3c-master.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c
index b113460f059c3..1a57fdebaa26d 100644
--- a/drivers/i3c/master/svc-i3c-master.c
+++ b/drivers/i3c/master/svc-i3c-master.c
@@ -404,6 +404,7 @@ static void svc_i3c_master_ibi_work(struct work_struct *work)
SVC_I3C_MSTATUS_IBIWON(val), 0, 1000);
if (ret) {
dev_err(master->dev, "Timeout when polling for IBIWON\n");
+ svc_i3c_master_emit_stop(master);
goto reenable_ibis;
}
--
2.34.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes
2023-10-18 15:48 [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
` (5 preceding siblings ...)
2023-10-18 15:48 ` [PATCH v2 6/6] i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen Frank Li
@ 2023-10-18 16:03 ` Frank Li
6 siblings, 0 replies; 8+ messages in thread
From: Frank Li @ 2023-10-18 16:03 UTC (permalink / raw)
To: miquel.raynal
Cc: alexandre.belloni, conor.culhane, imx, joe, linux-i3c,
linux-kernel
On Wed, Oct 18, 2023 at 11:48:03AM -0400, Frank Li wrote:
> Each patch is indepedents. See commit message for detail.
Sorry, mistake sent patch "master reduce clock"
Please discard this patches.
Please check "v2-Resent"!
>
> Change from v1 to v2.
> See each patch notes
>
> Frank Li (6):
> master reduce clock
> i3c: master: svc: fix race condition in ibi work thread
> i3c: master: svc: fix wrong data return when IBI happen during start
> frame
> i3c: master: svc: fix ibi may not return mandatory data byte
> i3c: master: svc: fix check wrong status register in irq handler
> i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen
>
> drivers/i3c/master/svc-i3c-master.c | 49 +++++++++++++++++++++++++++--
> 1 file changed, 46 insertions(+), 3 deletions(-)
>
> --
> 2.34.1
>
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-10-18 16:18 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-18 15:48 [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
2023-10-18 15:48 ` [PATCH v2 1/6] master reduce clock Frank Li
2023-10-18 15:48 ` [PATCH v2 2/6] i3c: master: svc: fix race condition in ibi work thread Frank Li
2023-10-18 15:48 ` [PATCH v2 3/6] i3c: master: svc: fix wrong data return when IBI happen during start frame Frank Li
2023-10-18 15:48 ` [PATCH v2 4/6] i3c: master: svc: fix ibi may not return mandatory data byte Frank Li
2023-10-18 15:48 ` [PATCH v2 5/6] i3c: master: svc: fix check wrong status register in irq handler Frank Li
2023-10-18 15:48 ` [PATCH v2 6/6] i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen Frank Li
2023-10-18 16:03 ` [PATCH v2 0/6] i3c: master: svc: collection of bugs fixes Frank Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox