From 3c3de6803a7d90faba0387ba248ac71e627ca827 Mon Sep 17 00:00:00 2001 From: Adrian Hunter Date: Tue, 13 Jan 2026 09:26:59 +0200 Subject: [PATCH] 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 Reviewed-by: Frank Li Link: https://patch.msgid.link/20260113072702.16268-19-adrian.hunter@intel.com Signed-off-by: Alexandre Belloni --- drivers/i3c/master/mipi-i3c-hci/core.c | 12 +++++++++--- drivers/i3c/master/mipi-i3c-hci/hci.h | 1 + 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 fc0a47a369610..ec5425f076352 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 38f927685d3b1..ed89228ea9719 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; -- 2.47.3