mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
i3c: mipi-i3c-hci: Add missing TID field to no-op command descriptor
The internal control command descriptor used for no-op commands includes a
Transaction ID (TID) field, but the no-op command constructed in
hci_dma_dequeue_xfer() omitted it. As a result, the hardware receives a
no-op descriptor without the expected TID.
This bug has gone unnoticed because the TID is currently not validated in
the no-op completion path, but the descriptor format requires it to be
present.
Add the missing TID field when generating a no-op descriptor so that its
layout matches the defined command structure.
Fixes: 9ad9a52cce ("i3c/master: introduce the mipi-i3c-hci driver")
Cc: stable@vger.kernel.org
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260306072451.11131-10-adrian.hunter@intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
committed by
Alexandre Belloni
parent
b795e68bf3
commit
ec3cfd835f
@@ -17,6 +17,7 @@
|
||||
#define CMD_0_TOC W0_BIT_(31)
|
||||
#define CMD_0_ROC W0_BIT_(30)
|
||||
#define CMD_0_ATTR W0_MASK(2, 0)
|
||||
#define CMD_0_TID W0_MASK(6, 3)
|
||||
|
||||
/*
|
||||
* Response Descriptor Structure
|
||||
|
||||
@@ -582,7 +582,7 @@ static bool hci_dma_dequeue_xfer(struct i3c_hci *hci,
|
||||
u32 *ring_data = rh->xfer + rh->xfer_struct_sz * idx;
|
||||
|
||||
/* store no-op cmd descriptor */
|
||||
*ring_data++ = FIELD_PREP(CMD_0_ATTR, 0x7);
|
||||
*ring_data++ = FIELD_PREP(CMD_0_ATTR, 0x7) | FIELD_PREP(CMD_0_TID, xfer->cmd_tid);
|
||||
*ring_data++ = 0;
|
||||
if (hci->cmd == &mipi_i3c_hci_cmd_v2) {
|
||||
*ring_data++ = 0;
|
||||
|
||||
Reference in New Issue
Block a user