rockchip: serial: restyle the serial_rockchip.c driver
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@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user