[PATCH v5 2/2] drivers: serial: probe all uart devices

Sean Anderson seanga2 at gmail.com
Wed Dec 16 16:22:04 CET 2020


On 12/9/20 12:12 AM, Vabhav Sharma wrote:
> From: Vabhav Sharma <vabhav.sharma at nxp.com>
> 
> 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 <vabhav.sharma at nxp.com>
> Reviewed-by: Stefan Roese <sr at denx.de>
> Reviewed-by: Simon Glass <sjg at chromium.org>
> --
> 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 <seanga2 at gmail.com>


More information about the U-Boot mailing list