[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