OSDN Git Service

i3c: transfer pid from boardinfo to device info
authorJack Chen <zenghuchen@google.com>
Thu, 5 Jan 2023 21:29:52 +0000 (16:29 -0500)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Sat, 25 Feb 2023 22:03:51 +0000 (23:03 +0100)
I3C device PID could be defined in device tree and stored in
i3c_dev_boardinfo. It should be passed to i3c_device_info when
allocating a i3c_dev_desc.
Rational behind this change is: when users decide to use SETDASA to
assign a dynamic address with exactly the original static address, in
step of i3c_master_reattach_i3c_dev, this address is checked to be
taken. Then device information retrieving step is skipped. As a result,
though the i3c device is registered correctly, its device driver could
not be probed.

Tested: Tested with a I3C device. If assigned-address is set to be the
device's static address, without this change, its device driver could
not probed. And with this change, its driver is probed successfully.

Signed-off-by: Jack Chen <zenghuchen@google.com>
Link: https://lore.kernel.org/r/20230105212952.56321-1-zenghuchen@google.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master.c

index d7e6f6c..4dad803 100644 (file)
@@ -1438,6 +1438,7 @@ static int i3c_master_early_i3c_dev_add(struct i3c_master_controller *master,
 {
        struct i3c_device_info info = {
                .static_addr = boardinfo->static_addr,
+               .pid = boardinfo->pid,
        };
        struct i3c_dev_desc *i3cdev;
        int ret;