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>
This commit is contained in:
Adrian Hunter 2026-01-13 09:26:59 +02:00 committed by Alexandre Belloni
parent f2b5d43c93
commit 3c3de6803a
2 changed files with 10 additions and 3 deletions

View File

@ -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;

View File

@ -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;