summaryrefslogtreecommitdiff
path: root/drivers/serial
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2021-01-18 07:55:54 -0500
committerTom Rini <[email protected]>2021-01-18 07:55:54 -0500
commit19c5fdffdc41bfd606b455b46e834d1bff4b2c1e (patch)
treedb1c5abebf12e9aaef80d8e22a472357027b5287 /drivers/serial
parent14ea1b3635b4af8d9e283e3671f7ee872d50b859 (diff)
parentad80a8d0877922db95fd0410314504c840d9d850 (diff)
Merge branch '2021-01-16-assorted-improvements'
- Assorted testing improvements and fixes - Assorted code cleanups
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/Kconfig16
-rw-r--r--drivers/serial/serial-uclass.c9
2 files changed, 25 insertions, 0 deletions
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index b4805a2e4ea..129494322ce 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -134,6 +134,22 @@ config SERIAL_SEARCH_ALL
If unsure, say N.
+config SERIAL_PROBE_ALL
+ bool "Probe all available serial devices"
+ depends on DM_SERIAL
+ default n
+ help
+ The serial subsystem only probes for a single serial device,
+ but does not probe for other remaining serial devices.
+ With this option set, we make probing and searching for
+ all available devices optional.
+ Normally, U-Boot talks to one serial port at a time, but SBSA
+ compliant UART devices like PL011 require initialization
+ by firmware and to let the kernel use serial port for sending
+ and receiving the characters.
+
+ If unsure, say N.
+
config SPL_DM_SERIAL
bool "Enable Driver Model for serial drivers in SPL"
depends on DM_SERIAL && SPL_DM
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
index 58a6541d8cc..ead0193ad44 100644
--- a/drivers/serial/serial-uclass.c
+++ b/drivers/serial/serial-uclass.c
@@ -172,6 +172,15 @@ int serial_init(void)
/* Called after relocation */
int serial_initialize(void)
{
+ /* Scanning uclass to probe devices */
+ if (IS_ENABLED(CONFIG_SERIAL_PROBE_ALL)) {
+ int ret;
+
+ ret = uclass_probe_all(UCLASS_SERIAL);
+ if (ret)
+ return ret;
+ }
+
return serial_init();
}