]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
i3c: mipi-i3c-hci: Factor out master dynamic address setting into helper
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 13 Jan 2026 07:26:59 +0000 (09:26 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Wed, 14 Jan 2026 16:21:10 +0000 (17:21 +0100)
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>
drivers/i3c/master/mipi-i3c-hci/core.c
drivers/i3c/master/mipi-i3c-hci/hci.h

index fc0a47a369610f9a4fac2e21f1fd69dbb4916a2b..ec5425f076352311ab94d5beb353f6560662b22d 100644 (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;
index 38f927685d3b1cd742fc244713190318996db309..ed89228ea9719c65b3855cdae801d22c663e23da 100644 (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;