Commit 0b060eefd951fc111ecb77c7b1932b158e6a4f2c
Committed by
Tom Rini
1 parent
79fd928188
Exists in
v2017.01-smarct4x
and in
25 other branches
serial: 16550: Add Ingenic JZ4780 support
Add compatibility string for the Ingenic JZ4780 SoC, the necessary UART enable bit into FCR and register shift. Neither are encoded in the DTS coming from Linux, so we need to support it this way. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Tom Rini <trini@konsulko.com> Cc: Simon Glass <sjg@chromium.org> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: Paul Burton <paul.burton@imgtec.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Showing 2 changed files with 8 additions and 0 deletions Side-by-side Diff
drivers/serial/ns16550.c
... | ... | @@ -363,6 +363,7 @@ |
363 | 363 | #if CONFIG_IS_ENABLED(OF_CONTROL) |
364 | 364 | enum { |
365 | 365 | PORT_NS16550 = 0, |
366 | + PORT_JZ4780, | |
366 | 367 | }; |
367 | 368 | #endif |
368 | 369 | |
... | ... | @@ -370,6 +371,7 @@ |
370 | 371 | int ns16550_serial_ofdata_to_platdata(struct udevice *dev) |
371 | 372 | { |
372 | 373 | struct ns16550_platdata *plat = dev->platdata; |
374 | + const u32 port_type = dev_get_driver_data(dev); | |
373 | 375 | fdt_addr_t addr; |
374 | 376 | struct clk clk; |
375 | 377 | int err; |
... | ... | @@ -439,6 +441,8 @@ |
439 | 441 | } |
440 | 442 | |
441 | 443 | plat->fcr = UART_FCRVAL; |
444 | + if (port_type == PORT_JZ4780) | |
445 | + plat->fcr |= UART_FCR_UME; | |
442 | 446 | |
443 | 447 | return 0; |
444 | 448 | } |
... | ... | @@ -461,6 +465,7 @@ |
461 | 465 | static const struct udevice_id ns16550_serial_ids[] = { |
462 | 466 | { .compatible = "ns16550", .data = PORT_NS16550 }, |
463 | 467 | { .compatible = "ns16550a", .data = PORT_NS16550 }, |
468 | + { .compatible = "ingenic,jz4780-uart", .data = PORT_JZ4780 }, | |
464 | 469 | { .compatible = "nvidia,tegra20-uart", .data = PORT_NS16550 }, |
465 | 470 | { .compatible = "snps,dw-apb-uart", .data = PORT_NS16550 }, |
466 | 471 | { .compatible = "ti,omap2-uart", .data = PORT_NS16550 }, |
include/ns16550.h
... | ... | @@ -118,6 +118,9 @@ |
118 | 118 | #define UART_FCR_RXSR 0x02 /* Receiver soft reset */ |
119 | 119 | #define UART_FCR_TXSR 0x04 /* Transmitter soft reset */ |
120 | 120 | |
121 | +/* Ingenic JZ47xx specific UART-enable bit. */ | |
122 | +#define UART_FCR_UME 0x10 | |
123 | + | |
121 | 124 | /* |
122 | 125 | * These are the definitions for the Modem Control Register |
123 | 126 | */ |