Skip to content

Commit 18c662b

Browse files
ahunter6gregkh
authored andcommitted
i3c: mipi-i3c-hci: Add missing TID field to no-op command descriptor
commit ec3cfd8 upstream. 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: 9ad9a52 ("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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 0d28064 commit 18c662b

2 files changed

Lines changed: 2 additions & 1 deletion

File tree

drivers/i3c/master/mipi-i3c-hci/cmd.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#define CMD_0_TOC W0_BIT_(31)
1818
#define CMD_0_ROC W0_BIT_(30)
1919
#define CMD_0_ATTR W0_MASK(2, 0)
20+
#define CMD_0_TID W0_MASK(6, 3)
2021

2122
/*
2223
* Response Descriptor Structure

drivers/i3c/master/mipi-i3c-hci/dma.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ static bool hci_dma_dequeue_xfer(struct i3c_hci *hci,
510510
u32 *ring_data = rh->xfer + rh->xfer_struct_sz * idx;
511511

512512
/* store no-op cmd descriptor */
513-
*ring_data++ = FIELD_PREP(CMD_0_ATTR, 0x7);
513+
*ring_data++ = FIELD_PREP(CMD_0_ATTR, 0x7) | FIELD_PREP(CMD_0_TID, xfer->cmd_tid);
514514
*ring_data++ = 0;
515515
if (hci->cmd == &mipi_i3c_hci_cmd_v2) {
516516
*ring_data++ = 0;

0 commit comments

Comments
 (0)