Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Adrian Hunter and committed by
Alexandre Belloni
3c3de680 f2b5d43c

+10 -3
+9 -3
drivers/i3c/master/mipi-i3c-hci/core.c
··· 114 114 return container_of(m, struct i3c_hci, master); 115 115 } 116 116 117 + static void i3c_hci_set_master_dyn_addr(struct i3c_hci *hci) 118 + { 119 + reg_write(MASTER_DEVICE_ADDR, 120 + MASTER_DYNAMIC_ADDR(hci->dyn_addr) | MASTER_DYNAMIC_ADDR_VALID); 121 + } 122 + 117 123 static int i3c_hci_bus_init(struct i3c_master_controller *m) 118 124 { 119 125 struct i3c_hci *hci = to_i3c_hci(m); ··· 135 129 ret = i3c_master_get_free_addr(m, 0); 136 130 if (ret < 0) 137 131 return ret; 138 - reg_write(MASTER_DEVICE_ADDR, 139 - MASTER_DYNAMIC_ADDR(ret) | MASTER_DYNAMIC_ADDR_VALID); 132 + hci->dyn_addr = ret; 133 + i3c_hci_set_master_dyn_addr(hci); 140 134 memset(&info, 0, sizeof(info)); 141 - info.dyn_addr = ret; 135 + info.dyn_addr = hci->dyn_addr; 142 136 ret = i3c_master_set_info(m, &info); 143 137 if (ret) 144 138 return ret;
+1
drivers/i3c/master/mipi-i3c-hci/hci.h
··· 62 62 u8 version_major; 63 63 u8 version_minor; 64 64 u8 revision; 65 + u8 dyn_addr; 65 66 u32 vendor_mipi_id; 66 67 u32 vendor_version_id; 67 68 u32 vendor_product_id;