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 <jbx6...@gmail.com>
Reviewed-by: Simon Glass <s...@chromium.org>
Reviewed-by: Kever Yang <kever.y...@rock-chips.com>
---

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)
-- 
2.20.1

Reply via email to