From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Date: Sun, 27 Nov 2016 10:03:01 -0700 Subject: [U-Boot] [PATCH 06/14] serial: 16550: Add Ingenic JZ4780 support In-Reply-To: <20161125223235.3434-6-marex@denx.de> References: <20161125223235.3434-1-marex@denx.de> <20161125223235.3434-6-marex@denx.de> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Marex, On 25 November 2016 at 15:32, Marek Vasut 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 > Cc: Tom Rini > Cc: Simon Glass > Cc: Daniel Schwierzeck > Cc: Paul Burton > --- > 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