summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2026-01-13 09:26:59 +0200
committerAlexandre Belloni <alexandre.belloni@bootlin.com>2026-01-14 17:21:10 +0100
commit3c3de6803a7d90faba0387ba248ac71e627ca827 (patch)
tree857d4b306c5b532486a9b7ef0c1f2d9ac13a7255
parentf2b5d43c93e0a642f7bba970dbc5a24c9605ecd3 (diff)
i3c: mipi-i3c-hci: Factor out master dynamic address setting into helper
Prepare for future reuse. Move master dynamic address setting logic from i3c_hci_bus_init() into a dedicated helper function, i3c_hci_set_master_dyn_addr(). Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Link: https://patch.msgid.link/20260113072702.16268-19-adrian.hunter@intel.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
-rw-r--r--drivers/i3c/master/mipi-i3c-hci/core.c12
-rw-r--r--drivers/i3c/master/mipi-i3c-hci/hci.h1
2 files changed, 10 insertions, 3 deletions
diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
index fc0a47a36961..ec5425f07635 100644
--- a/drivers/i3c/master/mipi-i3c-hci/core.c
+++ b/drivers/i3c/master/mipi-i3c-hci/core.c
@@ -114,6 +114,12 @@ static inline struct i3c_hci *to_i3c_hci(struct i3c_master_controller *m)
return container_of(m, struct i3c_hci, master);
}
+static void i3c_hci_set_master_dyn_addr(struct i3c_hci *hci)
+{
+ reg_write(MASTER_DEVICE_ADDR,
+ MASTER_DYNAMIC_ADDR(hci->dyn_addr) | MASTER_DYNAMIC_ADDR_VALID);
+}
+
static int i3c_hci_bus_init(struct i3c_master_controller *m)
{
struct i3c_hci *hci = to_i3c_hci(m);
@@ -129,10 +135,10 @@ static int i3c_hci_bus_init(struct i3c_master_controller *m)
ret = i3c_master_get_free_addr(m, 0);
if (ret < 0)
return ret;
- reg_write(MASTER_DEVICE_ADDR,
- MASTER_DYNAMIC_ADDR(ret) | MASTER_DYNAMIC_ADDR_VALID);
+ hci->dyn_addr = ret;
+ i3c_hci_set_master_dyn_addr(hci);
memset(&info, 0, sizeof(info));
- info.dyn_addr = ret;
+ info.dyn_addr = hci->dyn_addr;
ret = i3c_master_set_info(m, &info);
if (ret)
return ret;
diff --git a/drivers/i3c/master/mipi-i3c-hci/hci.h b/drivers/i3c/master/mipi-i3c-hci/hci.h
index 38f927685d3b..ed89228ea971 100644
--- a/drivers/i3c/master/mipi-i3c-hci/hci.h
+++ b/drivers/i3c/master/mipi-i3c-hci/hci.h
@@ -62,6 +62,7 @@ struct i3c_hci {
u8 version_major;
u8 version_minor;
u8 revision;
+ u8 dyn_addr;
u32 vendor_mipi_id;
u32 vendor_version_id;
u32 vendor_product_id;