]> git.sur5r.net Git - u-boot/blob - drivers/serial/serial_rockchip.c
Merge branch 'master' of git://git.denx.de/u-boot-socfpga
[u-boot] / drivers / serial / serial_rockchip.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Copyright (c) 2015 Google, Inc
4  */
5
6 #include <common.h>
7 #include <debug_uart.h>
8 #include <dm.h>
9 #include <dt-structs.h>
10 #include <ns16550.h>
11 #include <serial.h>
12 #include <asm/arch/clock.h>
13
14 #if defined(CONFIG_ROCKCHIP_RK3188)
15 struct rockchip_uart_platdata {
16         struct dtd_rockchip_rk3188_uart dtplat;
17         struct ns16550_platdata plat;
18 };
19 struct dtd_rockchip_rk3188_uart *dtplat, s_dtplat;
20 #elif defined(CONFIG_ROCKCHIP_RK3288)
21 struct rockchip_uart_platdata {
22         struct dtd_rockchip_rk3288_uart dtplat;
23         struct ns16550_platdata plat;
24 };
25 struct dtd_rockchip_rk3288_uart *dtplat, s_dtplat;
26 #endif
27
28 static int rockchip_serial_probe(struct udevice *dev)
29 {
30         struct rockchip_uart_platdata *plat = dev_get_platdata(dev);
31
32         /* Create some new platform data for the standard driver */
33         plat->plat.base = plat->dtplat.reg[0];
34         plat->plat.reg_shift = plat->dtplat.reg_shift;
35         plat->plat.clock = plat->dtplat.clock_frequency;
36         plat->plat.fcr = UART_FCR_DEFVAL;
37         dev->platdata = &plat->plat;
38
39         return ns16550_serial_probe(dev);
40 }
41
42 U_BOOT_DRIVER(rockchip_rk3188_uart) = {
43         .name   = "rockchip_rk3188_uart",
44         .id     = UCLASS_SERIAL,
45         .priv_auto_alloc_size = sizeof(struct NS16550),
46         .platdata_auto_alloc_size = sizeof(struct rockchip_uart_platdata),
47         .probe  = rockchip_serial_probe,
48         .ops    = &ns16550_serial_ops,
49         .flags  = DM_FLAG_PRE_RELOC,
50 };
51
52 U_BOOT_DRIVER(rockchip_rk3288_uart) = {
53         .name   = "rockchip_rk3288_uart",
54         .id     = UCLASS_SERIAL,
55         .priv_auto_alloc_size = sizeof(struct NS16550),
56         .platdata_auto_alloc_size = sizeof(struct rockchip_uart_platdata),
57         .probe  = rockchip_serial_probe,
58         .ops    = &ns16550_serial_ops,
59         .flags  = DM_FLAG_PRE_RELOC,
60 };