]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
serdev: Do not return -ENODEV from of_serdev_register_devices() if external connector...
authorManivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Thu, 26 Mar 2026 08:06:31 +0000 (13:36 +0530)
committerBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Tue, 31 Mar 2026 07:48:43 +0000 (09:48 +0200)
If an external connector like M.2 is connected to the serdev controller
in DT, then the serdev devices may be created dynamically by the connector
driver. So do not return -ENODEV from of_serdev_register_devices() if the
static nodes are not found and the graph node is used.

Tested-by: Hans de Goede <johannes.goede@oss.qualcomm.com> # ThinkPad T14s gen6 (arm64)
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20260326-pci-m2-e-v7-3-43324a7866e6@oss.qualcomm.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
drivers/tty/serdev/core.c

index bf88b95f7458d1267bffd3d9690ec0763a5b5a83..e9d044a331b0371be919ce47888e7abca5d96b20 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/of.h>
+#include <linux/of_graph.h>
 #include <linux/of_device.h>
 #include <linux/pm_domain.h>
 #include <linux/pm_runtime.h>
@@ -561,7 +562,13 @@ static int of_serdev_register_devices(struct serdev_controller *ctrl)
                } else
                        found = true;
        }
-       if (!found)
+
+       /*
+        * When the serdev controller is connected to an external connector like
+        * M.2 in DT, then the serdev devices may be created dynamically by the
+        * connector driver.
+        */
+       if (!found && !of_graph_is_present(dev_of_node(&ctrl->dev)))
                return -ENODEV;
 
        return 0;