From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Anderson Date: Wed, 16 Dec 2020 10:22:04 -0500 Subject: [PATCH v5 2/2] drivers: serial: probe all uart devices In-Reply-To: <1607490724-6447-3-git-send-email-vabhav.sharma@oss.nxp.com> References: <1607490724-6447-1-git-send-email-vabhav.sharma@oss.nxp.com> <1607490724-6447-3-git-send-email-vabhav.sharma@oss.nxp.com> Message-ID: <3e9095e4-ee9d-d92d-2c58-e2ae9418991c@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 12/9/20 12:12 AM, Vabhav Sharma wrote: > From: Vabhav Sharma > > U-Boot DM model probe only single device at a time > which is enabled and configured using device tree > or platform data method. > > PL011 UART IP is SBSA compliant and firmware does the > serial port set-up, initialization and let the kernel use > UART port for sending and receiving characters. > > Normally software talk to one serial port time but some > LayerScape platform require all the UART devices enabled > in Linux for various use case. > > Adding support to probe all enabled serial devices like SBSA > compliant PL011 UART ports probe and initialization by firmware. > > Signed-off-by: Vabhav Sharma > Reviewed-by: Stefan Roese > Reviewed-by: Simon Glass > -- > v5: > Incorporated review comments from Sean Anderson > - Modified the macro description > - Added error check > > v3: > Incorporated Simon and Stephan review comment > - Define generic function uclass_probe_all(enum uclass_id) > in drivers/core/uclass.c > - Added the function in caller of serial_find_console_or_panic() > - Removed repeated sequence with generic function call uclass_probe_all() > - Dependent on other patch [PATCH] dm: core: add function uclass_probe_all() > to probe all devices > > v2: > Incorporated Stefan review comment, Update #ifdef with macro > if (IS_ENABLED).. > --- > drivers/serial/Kconfig | 16 ++++++++++++++++ > drivers/serial/serial-uclass.c | 9 +++++++++ > 2 files changed, 25 insertions(+) > > diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig > index b4805a2..1294943 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 Nit: "and" or "to" but not both > + 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 f3c25d4..48e0080 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(); > } > Reviewed-by: Sean Anderson