Hi Patrick

On 2/25/21 1:37 PM, Patrick Delaunay wrote:
> The command "stm32prog serial <dev>" can directly use the device sequence
> number of serial uclass as this sequence number is egual to alias when it
> exist; this assumption simplify the code and avoid access to gd->fdt_blob
> and the device tree parsing.
> 
> Signed-off-by: Patrick Delaunay <patrick.delau...@foss.st.com>
> ---
> 
>  .../cmd_stm32prog/stm32prog_serial.c          | 29 ++++---------------
>  arch/arm/mach-stm32mp/cpu.c                   | 11 +++----
>  2 files changed, 10 insertions(+), 30 deletions(-)
> 
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c 
> b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
> index 373ca20886..a51e5e3ec8 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
> @@ -187,36 +187,19 @@ static int stm32prog_read(struct stm32prog_data *data, 
> u8 phase, u32 offset,
>  int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
>  {
>       struct udevice *dev = NULL;
> -     int node;
> -     char alias[10];
> -     const char *path;
>       struct dm_serial_ops *ops;
>       /* no parity, 8 bits, 1 stop */
>       u32 serial_config = SERIAL_DEFAULT_CONFIG;
>  
>       down_serial_dev = NULL;
>  
> -     sprintf(alias, "serial%d", link_dev);
> -     path = fdt_get_alias(gd->fdt_blob, alias);
> -     if (!path) {
> -             log_err("%s alias not found", alias);
> -             return -ENODEV;
> -     }
> -     node = fdt_path_offset(gd->fdt_blob, path);
> -     if (!uclass_get_device_by_of_offset(UCLASS_SERIAL, node,
> -                                         &dev)) {
> -             down_serial_dev = dev;
> -     } else if (node > 0 &&
> -                !lists_bind_fdt(gd->dm_root, offset_to_ofnode(node),
> -                                &dev, false)) {
> -             if (!device_probe(dev))
> -                     down_serial_dev = dev;
> -     }
> -     if (!down_serial_dev) {
> -             log_err("%s = %s device not found", alias, path);
> +     if (uclass_get_device_by_seq(UCLASS_SERIAL, link_dev, &dev)) {
> +             log_err("serial %d device not found\n", link_dev);
>               return -ENODEV;
>       }
>  
> +     down_serial_dev = dev;
> +
>       /* force silent console on uart only when used */
>       if (gd->cur_serial_dev == down_serial_dev)
>               gd->flags |= GD_FLG_DISABLE_CONSOLE | GD_FLG_SILENT;
> @@ -226,11 +209,11 @@ int stm32prog_serial_init(struct stm32prog_data *data, 
> int link_dev)
>       ops = serial_get_ops(down_serial_dev);
>  
>       if (!ops) {
> -             log_err("%s = %s missing ops", alias, path);
> +             log_err("serial %d = %s missing ops\n", link_dev, dev->name);
>               return -ENODEV;
>       }
>       if (!ops->setconfig) {
> -             log_err("%s = %s missing setconfig", alias, path);
> +             log_err("serial %d = %s missing setconfig\n", link_dev, 
> dev->name);
>               return -ENODEV;
>       }
>  
> diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
> index 527b6290de..9a76b5633b 100644
> --- a/arch/arm/mach-stm32mp/cpu.c
> +++ b/arch/arm/mach-stm32mp/cpu.c
> @@ -466,7 +466,6 @@ static void setup_boot_mode(void)
>       unsigned int instance = (boot_mode & TAMP_BOOT_INSTANCE_MASK) - 1;
>       u32 forced_mode = (boot_ctx & TAMP_BOOT_FORCED_MASK);
>       struct udevice *dev;
> -     int alias;
>  
>       log_debug("%s: boot_ctx=0x%x => boot_mode=%x, instance=%d forced=%x\n",
>                 __func__, boot_ctx, boot_mode, instance, forced_mode);
> @@ -474,20 +473,18 @@ static void setup_boot_mode(void)
>       case BOOT_SERIAL_UART:
>               if (instance > ARRAY_SIZE(serial_addr))
>                       break;
> -             /* serial : search associated alias in devicetree */
> +             /* serial : search associated node in devicetree */
>               sprintf(cmd, "serial@%x", serial_addr[instance]);
> -             if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev) ||
> -                 fdtdec_get_alias_seq(gd->fdt_blob, "serial",
> -                                      dev_of_offset(dev), &alias)) {
> +             if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev)) {
>                       /* restore console on error */
>                       if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL))
>                               gd->flags &= ~(GD_FLG_SILENT |
>                                              GD_FLG_DISABLE_CONSOLE);
> -                     printf("serial%d = %s not found in device tree!\n",
> +                     printf("uart%d = %s not found in device tree!\n",
>                              instance, cmd);
>                       break;
>               }
> -             sprintf(cmd, "%d", alias);
> +             sprintf(cmd, "%d", dev_seq(dev));
>               env_set("boot_device", "serial");
>               env_set("boot_instance", cmd);
>  
> 

Reviewed-by: Patrice Chotard <patrice.chot...@foss.st.com>

Thanks
Patrice

Reply via email to