[U-Boot] [PATCH 06/14] serial: 16550: Add Ingenic JZ4780 support
Simon Glass
sjg at chromium.org
Sun Nov 27 18:03:01 CET 2016
Hi Marex,
On 25 November 2016 at 15:32, Marek Vasut <marex at denx.de> wrote:
> 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 at denx.de>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Daniel Schwierzeck <daniel.schwierzeck at gmail.com>
> Cc: Paul Burton <paul.burton at imgtec.com>
> ---
> drivers/serial/ns16550.c | 7 +++++++
> include/ns16550.h | 3 +++
> 2 files changed, 10 insertions(+)
>
> diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
> index 3130a1d..d00161c 100644
> --- a/drivers/serial/ns16550.c
> +++ b/drivers/serial/ns16550.c
> @@ -363,6 +363,7 @@ int ns16550_serial_probe(struct udevice *dev)
> #if CONFIG_IS_ENABLED(OF_CONTROL)
> enum {
> PORT_NS16550 = 0,
> + PORT_JZ4780,
> };
> #endif
>
> @@ -370,6 +371,7 @@ enum {
> int ns16550_serial_ofdata_to_platdata(struct udevice *dev)
> {
> struct ns16550_platdata *plat = dev->platdata;
> + const u32 port_type = dev_get_driver_data(dev);
> fdt_addr_t addr;
> struct clk clk;
> int err;
> @@ -439,6 +441,10 @@ int ns16550_serial_ofdata_to_platdata(struct udevice *dev)
> }
>
> plat->fcr = UART_FCRVAL;
> + if (port_type == PORT_JZ4780) {
> + plat->fcr |= UART_FCR_UME;
> + plat->reg_shift = 2;
This should be in the device tree, shouldn't it?
> + }
>
> return 0;
> }
> @@ -461,6 +467,7 @@ const struct dm_serial_ops ns16550_serial_ops = {
> static const struct udevice_id ns16550_serial_ids[] = {
> { .compatible = "ns16550", .data = PORT_NS16550 },
> { .compatible = "ns16550a", .data = PORT_NS16550 },
> + { .compatible = "ingenic,jz4780-uart", .data = PORT_JZ4780 },
> { .compatible = "nvidia,tegra20-uart", .data = PORT_NS16550 },
> { .compatible = "snps,dw-apb-uart", .data = PORT_NS16550 },
> { .compatible = "ti,omap2-uart", .data = PORT_NS16550 },
> diff --git a/include/ns16550.h b/include/ns16550.h
> index 45fd68b..7c97036 100644
> --- a/include/ns16550.h
> +++ b/include/ns16550.h
> @@ -118,6 +118,9 @@ typedef struct NS16550 *NS16550_t;
> #define UART_FCR_RXSR 0x02 /* Receiver soft reset */
> #define UART_FCR_TXSR 0x04 /* Transmitter soft reset */
>
> +/* Ingenic JZ47xx specific UART-enable bit. */
> +#define UART_FCR_UME 0x10
> +
> /*
> * These are the definitions for the Modem Control Register
> */
> --
> 2.10.2
>
Regards,
Simon
More information about the U-Boot
mailing list