]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
i3c: mipi-i3c-hci: Move hci_dma_xfer_done() definition
authorAdrian Hunter <adrian.hunter@intel.com>
Wed, 3 Jun 2026 09:07:42 +0000 (12:07 +0300)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Sun, 14 Jun 2026 15:21:34 +0000 (17:21 +0200)
Move hci_dma_xfer_done() earlier in the file to avoid a forward
declaration needed by a subsequent change.

No functional change.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260603090754.16252-6-adrian.hunter@intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master/mipi-i3c-hci/dma.c

index 3b14bc87bdf6103fa60354f97592bc7121d92d99..ad47bb2890d64ed772e6d5d9a85d6b1c8ba090ae 100644 (file)
@@ -545,6 +545,55 @@ static int hci_dma_queue_xfer(struct i3c_hci *hci,
        return 0;
 }
 
+static void hci_dma_xfer_done(struct i3c_hci *hci, struct hci_rh_data *rh)
+{
+       u32 op1_val, op2_val, resp, *ring_resp;
+       unsigned int tid, done_ptr = rh->done_ptr;
+       unsigned int done_cnt = 0;
+       struct hci_xfer *xfer;
+
+       for (;;) {
+               op2_val = rh_reg_read(RING_OPERATION2);
+               if (done_ptr == FIELD_GET(RING_OP2_CR_DEQ_PTR, op2_val))
+                       break;
+
+               ring_resp = rh->resp + rh->resp_struct_sz * done_ptr;
+               resp = *ring_resp;
+               tid = RESP_TID(resp);
+               dev_dbg(&hci->master.dev, "resp = 0x%08x", resp);
+
+               xfer = rh->src_xfers[done_ptr];
+               if (!xfer) {
+                       dev_dbg(&hci->master.dev, "orphaned ring entry");
+               } else {
+                       hci_dma_unmap_xfer(hci, xfer, 1);
+                       rh->src_xfers[done_ptr] = NULL;
+                       xfer->ring_entry = -1;
+                       xfer->response = resp;
+                       if (tid != xfer->cmd_tid) {
+                               dev_err(&hci->master.dev,
+                                       "response tid=%d when expecting %d\n",
+                                       tid, xfer->cmd_tid);
+                               /* TODO: do something about it? */
+                       }
+                       if (xfer->completion)
+                               complete(xfer->completion);
+                       if (RESP_STATUS(resp))
+                               hci->enqueue_blocked = true;
+               }
+
+               done_ptr = (done_ptr + 1) % rh->xfer_entries;
+               rh->done_ptr = done_ptr;
+               done_cnt += 1;
+       }
+
+       rh->xfer_space += done_cnt;
+       op1_val = rh_reg_read(RING_OPERATION1);
+       op1_val &= ~RING_OP1_CR_SW_DEQ_PTR;
+       op1_val |= FIELD_PREP(RING_OP1_CR_SW_DEQ_PTR, done_ptr);
+       rh_reg_write(RING_OPERATION1, op1_val);
+}
+
 static void hci_dma_unblock_enqueue(struct i3c_hci *hci)
 {
        if (hci->enqueue_blocked) {
@@ -636,55 +685,6 @@ static int hci_dma_handle_error(struct i3c_hci *hci, struct hci_xfer *xfer_list,
        return hci_dma_dequeue_xfer(hci, xfer_list, n) ? -EIO : 0;
 }
 
-static void hci_dma_xfer_done(struct i3c_hci *hci, struct hci_rh_data *rh)
-{
-       u32 op1_val, op2_val, resp, *ring_resp;
-       unsigned int tid, done_ptr = rh->done_ptr;
-       unsigned int done_cnt = 0;
-       struct hci_xfer *xfer;
-
-       for (;;) {
-               op2_val = rh_reg_read(RING_OPERATION2);
-               if (done_ptr == FIELD_GET(RING_OP2_CR_DEQ_PTR, op2_val))
-                       break;
-
-               ring_resp = rh->resp + rh->resp_struct_sz * done_ptr;
-               resp = *ring_resp;
-               tid = RESP_TID(resp);
-               dev_dbg(&hci->master.dev, "resp = 0x%08x", resp);
-
-               xfer = rh->src_xfers[done_ptr];
-               if (!xfer) {
-                       dev_dbg(&hci->master.dev, "orphaned ring entry");
-               } else {
-                       hci_dma_unmap_xfer(hci, xfer, 1);
-                       rh->src_xfers[done_ptr] = NULL;
-                       xfer->ring_entry = -1;
-                       xfer->response = resp;
-                       if (tid != xfer->cmd_tid) {
-                               dev_err(&hci->master.dev,
-                                       "response tid=%d when expecting %d\n",
-                                       tid, xfer->cmd_tid);
-                               /* TODO: do something about it? */
-                       }
-                       if (xfer->completion)
-                               complete(xfer->completion);
-                       if (RESP_STATUS(resp))
-                               hci->enqueue_blocked = true;
-               }
-
-               done_ptr = (done_ptr + 1) % rh->xfer_entries;
-               rh->done_ptr = done_ptr;
-               done_cnt += 1;
-       }
-
-       rh->xfer_space += done_cnt;
-       op1_val = rh_reg_read(RING_OPERATION1);
-       op1_val &= ~RING_OP1_CR_SW_DEQ_PTR;
-       op1_val |= FIELD_PREP(RING_OP1_CR_SW_DEQ_PTR, done_ptr);
-       rh_reg_write(RING_OPERATION1, op1_val);
-}
-
 static int hci_dma_request_ibi(struct i3c_hci *hci, struct i3c_dev_desc *dev,
                               const struct i3c_ibi_setup *req)
 {