From: Adrian Hunter <adrian.hunter@intel.com>
To: alexandre.belloni@bootlin.com
Cc: Frank.Li@nxp.com, Wolfram Sang <wsa+renesas@sang-engineering.com>,
Aniket <aniketmaurya@google.com>,
linux-i3c@lists.infradead.org
Subject: [PATCH 12/17] i3c: mipi-i3c-hci: Refactor PIO register initialization
Date: Fri, 19 Dec 2025 16:45:29 +0200 [thread overview]
Message-ID: <20251219144534.84391-13-adrian.hunter@intel.com> (raw)
In-Reply-To: <20251219144534.84391-1-adrian.hunter@intel.com>
Move the PIO register setup logic out of hci_pio_init() into a new
helper, __hci_pio_init(). This refactoring prepares for Runtime PM
support by allowing PIO registers to be reinitialized independently
after resume.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
drivers/i3c/master/mipi-i3c-hci/pio.c | 45 +++++++++++++++++----------
1 file changed, 28 insertions(+), 17 deletions(-)
diff --git a/drivers/i3c/master/mipi-i3c-hci/pio.c b/drivers/i3c/master/mipi-i3c-hci/pio.c
index 3d633abf6099..52d9f01d9ca9 100644
--- a/drivers/i3c/master/mipi-i3c-hci/pio.c
+++ b/drivers/i3c/master/mipi-i3c-hci/pio.c
@@ -135,27 +135,14 @@ struct hci_pio_data {
u32 enabled_irqs;
};
-static int hci_pio_init(struct i3c_hci *hci)
+static void __hci_pio_init(struct i3c_hci *hci, u32 *size_val_ptr)
{
- struct hci_pio_data *pio;
u32 val, size_val, rx_thresh, tx_thresh, ibi_val;
-
- pio = devm_kzalloc(hci->master.dev.parent, sizeof(*pio), GFP_KERNEL);
- if (!pio)
- return -ENOMEM;
-
- hci->io_data = pio;
- spin_lock_init(&pio->lock);
+ struct hci_pio_data *pio = hci->io_data;
size_val = pio_reg_read(QUEUE_SIZE);
- dev_dbg(&hci->master.dev, "CMD/RESP FIFO = %ld entries\n",
- FIELD_GET(CR_QUEUE_SIZE, size_val));
- dev_dbg(&hci->master.dev, "IBI FIFO = %ld bytes\n",
- 4 * FIELD_GET(IBI_STATUS_SIZE, size_val));
- dev_dbg(&hci->master.dev, "RX data FIFO = %d bytes\n",
- 4 * (2 << FIELD_GET(RX_DATA_BUFFER_SIZE, size_val)));
- dev_dbg(&hci->master.dev, "TX data FIFO = %d bytes\n",
- 4 * (2 << FIELD_GET(TX_DATA_BUFFER_SIZE, size_val)));
+ if (size_val_ptr)
+ *size_val_ptr = size_val;
/*
* Let's initialize data thresholds to half of the actual FIFO size.
@@ -201,6 +188,30 @@ static int hci_pio_init(struct i3c_hci *hci)
/* Always accept error interrupts (will be activated on first xfer) */
pio->enabled_irqs = STAT_ALL_ERRORS;
+}
+
+static int hci_pio_init(struct i3c_hci *hci)
+{
+ struct hci_pio_data *pio;
+ u32 size_val;
+
+ pio = devm_kzalloc(hci->master.dev.parent, sizeof(*pio), GFP_KERNEL);
+ if (!pio)
+ return -ENOMEM;
+
+ hci->io_data = pio;
+ spin_lock_init(&pio->lock);
+
+ __hci_pio_init(hci, &size_val);
+
+ dev_dbg(&hci->master.dev, "CMD/RESP FIFO = %ld entries\n",
+ FIELD_GET(CR_QUEUE_SIZE, size_val));
+ dev_dbg(&hci->master.dev, "IBI FIFO = %ld bytes\n",
+ 4 * FIELD_GET(IBI_STATUS_SIZE, size_val));
+ dev_dbg(&hci->master.dev, "RX data FIFO = %d bytes\n",
+ 4 * (2 << FIELD_GET(RX_DATA_BUFFER_SIZE, size_val)));
+ dev_dbg(&hci->master.dev, "TX data FIFO = %d bytes\n",
+ 4 * (2 << FIELD_GET(TX_DATA_BUFFER_SIZE, size_val)));
return 0;
}
--
2.51.0
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
next prev parent reply other threads:[~2025-12-19 14:46 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-19 14:45 [PATCH 00/17] i3c: mipi-i3c-hci-pci: Add Runtime PM support Adrian Hunter
2025-12-19 14:45 ` [PATCH 01/17] i3c: mipi-i3c-hci: Reset RING_OPERATION1 fields during init Adrian Hunter
2025-12-19 16:12 ` Frank Li
2025-12-19 14:45 ` [PATCH 02/17] i3c: mipi-i3c-hci: Ensure proper bus clean-up Adrian Hunter
2025-12-19 16:22 ` Frank Li
2025-12-19 14:45 ` [PATCH 03/17] i3c: master: Update hot-join flag only on success Adrian Hunter
2025-12-19 16:23 ` Frank Li
2025-12-19 14:45 ` [PATCH 04/17] i3c: master: Replace WARN_ON() with dev_err() in i3c_dev_free_ibi_locked() Adrian Hunter
2025-12-19 16:25 ` Frank Li
2025-12-19 14:45 ` [PATCH 05/17] i3c: mipi-i3c-hci: Switch DAT bitmap allocation to devm_bitmap_zalloc() Adrian Hunter
2025-12-19 16:27 ` Frank Li
2025-12-19 14:45 ` [PATCH 06/17] i3c: mipi-i3c-hci: Switch PIO data allocation to devm_kzalloc() Adrian Hunter
2025-12-19 16:28 ` Frank Li
2025-12-19 14:45 ` [PATCH 07/17] i3c: mipi-i3c-hci: Manage DMA deallocation via devres action Adrian Hunter
2025-12-19 16:32 ` Frank Li
2026-01-08 8:04 ` Adrian Hunter
2025-12-19 14:45 ` [PATCH 08/17] i3c: mipi-i3c-hci: Cache DAT in memory for Runtime PM restore Adrian Hunter
2025-12-19 16:36 ` Frank Li
2025-12-19 14:45 ` [PATCH 09/17] i3c: mipi-i3c-hci: Introduce helper to restore DAT Adrian Hunter
2025-12-19 16:37 ` Frank Li
2025-12-19 14:45 ` [PATCH 10/17] i3c: mipi-i3c-hci: Extract ring initialization from hci_dma_init() Adrian Hunter
2025-12-19 16:41 ` Frank Li
2025-12-19 14:45 ` [PATCH 11/17] i3c: mipi-i3c-hci: Add DMA suspend and resume support Adrian Hunter
2025-12-19 16:42 ` Frank Li
2025-12-19 14:45 ` Adrian Hunter [this message]
2025-12-19 16:46 ` [PATCH 12/17] i3c: mipi-i3c-hci: Refactor PIO register initialization Frank Li
2025-12-19 14:45 ` [PATCH 13/17] i3c: mipi-i3c-hci: Add PIO suspend and resume support Adrian Hunter
2025-12-19 16:46 ` Frank Li
2025-12-19 14:45 ` [PATCH 14/17] i3c: mipi-i3c-hci: Factor out software reset into helper Adrian Hunter
2025-12-19 16:49 ` Frank Li
2025-12-19 14:45 ` [PATCH 15/17] i3c: master: Introduce optional Runtime PM support Adrian Hunter
2025-12-19 17:08 ` Frank Li
2025-12-19 20:11 ` Frank Li
2025-12-20 14:50 ` Adrian Hunter
2025-12-19 14:45 ` [PATCH 16/17] i3c: mipi-i3c-hci: Add " Adrian Hunter
2025-12-19 17:16 ` Frank Li
2025-12-19 14:45 ` [PATCH 17/17] i3c: mipi-i3c-hci-pci: Add " Adrian Hunter
2025-12-19 17:21 ` Frank Li
2025-12-20 15:10 ` Adrian Hunter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251219144534.84391-13-adrian.hunter@intel.com \
--to=adrian.hunter@intel.com \
--cc=Frank.Li@nxp.com \
--cc=alexandre.belloni@bootlin.com \
--cc=aniketmaurya@google.com \
--cc=linux-i3c@lists.infradead.org \
--cc=wsa+renesas@sang-engineering.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox