[PATCH 6/9] serdev: Skip registering serdev devices from DT is external connector is used

From: Manivannan Sadhasivam via B4 Relay

Date: Wed Nov 12 2025 - 09:45:31 EST


From: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxxxxxxxx>

If an external connector like M.2 is connected to the serdev controller
in DT, then the serdev devices will be created dynamically by the connector
driver. So skip registering devices from DT node as there will be no
statically defined devices.

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxxxxxxxx>
---
drivers/tty/serdev/core.c | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c
index 8c2a40a537d93f4b9353a2f128cdf51b521929b1..1378587d386356ca4415fa455b2ee722b5e44d3e 100644
--- a/drivers/tty/serdev/core.c
+++ b/drivers/tty/serdev/core.c
@@ -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>
@@ -560,6 +561,15 @@ static int of_serdev_register_devices(struct serdev_controller *ctrl)
int err;
bool found = false;

+ /*
+ * When the serdev controller is connected to an external connector like
+ * M.2 in DT, then the serdev devices will be created dynamically by the
+ * connector driver. So skip looking for devices in DT node as there will
+ * be no statically defined devices.
+ */
+ if (of_graph_is_present(ctrl->dev.of_node))
+ return 0;
+
for_each_available_child_of_node(ctrl->dev.of_node, node) {
if (!of_property_present(node, "compatible"))
continue;

--
2.48.1