diff options
| -rw-r--r-- | drivers/tty/serdev/core.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c index bf88b95f7458..e9d044a331b0 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> @@ -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; |
