[PATCH v4 10/12] rockchip: serial: restyle the serial_rockchip.c driver

Kever Yang kever.yang at rock-chips.com
Wed Apr 6 16:51:46 CEST 2022


On 2022/4/4 07:06, Johan Jonker wrote:
> The ns16550.c driver has the following conditions for .of_match:
>
> CONFIG_IS_ENABLED(OF_REAL)
>
> For Rockchip SoCs with TPL/SPL and platform data that need serial
> support the serial_rockchip.c driver was made. It copies this data
> and then calls ns16550_serial_probe(). With the addition of yet an other
> SoC type this driver is in need for a little restyle.
> Simplify struct rockchip_uart_plat and add extra SoCs with
> DM_DRIVER_ALIAS(). Return -ENODEV when the ns16550.c driver
> probe function is available.
>
> Signed-off-by: Johan Jonker <jbx6244 at gmail.com>
> Reviewed-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>

Thanks,
- Kever
> ---
>
> Changed V4:
>    add empty line
> ---
>   drivers/serial/serial_rockchip.c | 37 +++++++++++++-------------------
>   1 file changed, 15 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/serial/serial_rockchip.c b/drivers/serial/serial_rockchip.c
> index 97d40869a2..f5ac705f4d 100644
> --- a/drivers/serial/serial_rockchip.c
> +++ b/drivers/serial/serial_rockchip.c
> @@ -12,22 +12,20 @@
>   #include <asm/arch-rockchip/clock.h>
>   #include <dm/device-internal.h>
>   
> -#if defined(CONFIG_ROCKCHIP_RK3188)
> -struct rockchip_uart_plat {
> -	struct dtd_rockchip_rk3188_uart dtplat;
> -	struct ns16550_plat plat;
> -};
> -struct dtd_rockchip_rk3188_uart *dtplat, s_dtplat;
> -#elif defined(CONFIG_ROCKCHIP_RK3288)
>   struct rockchip_uart_plat {
> +#if CONFIG_IS_ENABLED(OF_PLATDATA)
>   	struct dtd_rockchip_rk3288_uart dtplat;
> +#endif
>   	struct ns16550_plat plat;
>   };
> +
> +#if CONFIG_IS_ENABLED(OF_PLATDATA)
>   struct dtd_rockchip_rk3288_uart *dtplat, s_dtplat;
>   #endif
>   
>   static int rockchip_serial_probe(struct udevice *dev)
>   {
> +#if CONFIG_IS_ENABLED(OF_PLATDATA)
>   	struct rockchip_uart_plat *plat = dev_get_plat(dev);
>   
>   	/* Create some new platform data for the standard driver */
> @@ -38,24 +36,19 @@ static int rockchip_serial_probe(struct udevice *dev)
>   	dev_set_plat(dev, &plat->plat);
>   
>   	return ns16550_serial_probe(dev);
> +#else
> +	return -ENODEV;
> +#endif
>   }
>   
> -U_BOOT_DRIVER(rockchip_rk3188_uart) = {
> -	.name	= "rockchip_rk3188_uart",
> -	.id	= UCLASS_SERIAL,
> -	.priv_auto	= sizeof(struct ns16550),
> -	.plat_auto	= sizeof(struct rockchip_uart_plat),
> -	.probe	= rockchip_serial_probe,
> -	.ops	= &ns16550_serial_ops,
> -	.flags	= DM_FLAG_PRE_RELOC,
> -};
> -
>   U_BOOT_DRIVER(rockchip_rk3288_uart) = {
> -	.name	= "rockchip_rk3288_uart",
> -	.id	= UCLASS_SERIAL,
> +	.name		= "rockchip_rk3288_uart",
> +	.id		= UCLASS_SERIAL,
>   	.priv_auto	= sizeof(struct ns16550),
>   	.plat_auto	= sizeof(struct rockchip_uart_plat),
> -	.probe	= rockchip_serial_probe,
> -	.ops	= &ns16550_serial_ops,
> -	.flags	= DM_FLAG_PRE_RELOC,
> +	.probe		= rockchip_serial_probe,
> +	.ops		= &ns16550_serial_ops,
> +	.flags		= DM_FLAG_PRE_RELOC,
>   };
> +DM_DRIVER_ALIAS(rockchip_rk3288_uart, rockchip_rk3066_uart)
> +DM_DRIVER_ALIAS(rockchip_rk3288_uart, rockchip_rk3188_uart)


More information about the U-Boot mailing list