]>
Commit | Line | Data |
---|---|---|
2fc24d53 SG |
1 | /* |
2 | * Copyright (c) 2015 Google, Inc | |
3 | * | |
4 | * SPDX-License-Identifier: GPL-2.0+ | |
5 | */ | |
6 | ||
7 | #include <common.h> | |
8 | #include <debug_uart.h> | |
9 | #include <dm.h> | |
10 | #include <dt-structs.h> | |
11 | #include <ns16550.h> | |
12 | #include <serial.h> | |
13 | #include <asm/arch/clock.h> | |
14 | ||
15 | struct rockchip_uart_platdata { | |
16 | struct dtd_rockchip_rk3288_uart dtplat; | |
17 | struct ns16550_platdata plat; | |
18 | }; | |
19 | ||
20 | struct dtd_rockchip_rk3288_uart *dtplat, s_dtplat; | |
21 | ||
22 | static int rockchip_serial_probe(struct udevice *dev) | |
23 | { | |
24 | struct rockchip_uart_platdata *plat = dev_get_platdata(dev); | |
25 | ||
26 | /* Create some new platform data for the standard driver */ | |
27 | plat->plat.base = plat->dtplat.reg[0]; | |
28 | plat->plat.reg_shift = plat->dtplat.reg_shift; | |
29 | plat->plat.clock = plat->dtplat.clock_frequency; | |
30 | dev->platdata = &plat->plat; | |
31 | ||
32 | return ns16550_serial_probe(dev); | |
33 | } | |
34 | ||
35 | U_BOOT_DRIVER(rockchip_rk3288_uart) = { | |
36 | .name = "rockchip_rk3288_uart", | |
37 | .id = UCLASS_SERIAL, | |
38 | .priv_auto_alloc_size = sizeof(struct NS16550), | |
39 | .platdata_auto_alloc_size = sizeof(struct rockchip_uart_platdata), | |
40 | .probe = rockchip_serial_probe, | |
41 | .ops = &ns16550_serial_ops, | |
42 | .flags = DM_FLAG_PRE_RELOC, | |
43 | }; |