[PATCH V2 17/20] i3c: mipi-i3c-hci: Factor out master dynamic address setting into helper
Frank Li
Frank.li at nxp.com
Thu Jan 8 07:28:50 PST 2026
On Thu, Jan 08, 2026 at 10:05:55AM +0200, Adrian Hunter wrote:
> 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 at intel.com>
> ---
>
>
> Changes in V2:
>
> New patch
>
>
> 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 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;
look original code also correct.
Reviewed-by: Frank Li <Frank.Li at nxp.com>
> 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;
> --
> 2.51.0
>
>
> --
> linux-i3c mailing list
> linux-i3c at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-i3c
More information about the linux-i3c
mailing list