[U-Boot] [PATCH] serial: ns16550: Add support for the BayTrail internal HS UART
Bin Meng
bmeng.cn at gmail.com
Thu Jul 14 02:52:11 CEST 2016
Hi Stefan,
On Wed, Jul 13, 2016 at 2:03 PM, Stefan Roese <sr at denx.de> wrote:
> To support the BayTrail internal SIO HS UART, the internal UART clock
> needs to get configured. This patch adds support for this clock
> configuration which will be done, if a compatible DT node is found.
>
> Signed-off-by: Stefan Roese <sr at denx.de>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Bin Meng <bmeng.cn at gmail.com>
> ---
> drivers/serial/ns16550.c | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
> index c6cb3eb..12499ec 100644
> --- a/drivers/serial/ns16550.c
> +++ b/drivers/serial/ns16550.c
> @@ -94,6 +94,13 @@ static inline int serial_in_shift(void *addr, int shift)
> #define CONFIG_SYS_NS16550_CLK 0
> #endif
>
> +/* Intel BayTrail defines */
> +#define BYT_PRV_CLK 0x800
> +#define BYT_PRV_CLK_EN (1 << 0)
> +#define BYT_PRV_CLK_M_VAL_SHIFT 1
> +#define BYT_PRV_CLK_N_VAL_SHIFT 16
> +#define BYT_PRV_CLK_UPDATE (1 << 31)
> +
> static void ns16550_writeb(NS16550_t port, int offset, int value)
> {
> struct ns16550_platdata *plat = port->plat;
> @@ -381,6 +388,25 @@ int ns16550_serial_ofdata_to_platdata(struct udevice *dev)
> return ret;
>
> addr = bar;
> +
> + /* Setup BayTrail UART clock */
> + ret = fdt_node_check_compatible(gd->fdt_blob, dev->of_offset,
> + "baytrail-hs-uart");
> + if (ret == 0) {
> + u32 m, n, reg;
> +
> + /*
> + * Configure the BayTrail UART clock for the internal
> + * HS UARTs (PCI devices) to 58982400 Hz
> + */
> + m = 0x2400;
> + n = 0x3d09;
> + reg = (m << BYT_PRV_CLK_M_VAL_SHIFT) |
> + (n << BYT_PRV_CLK_N_VAL_SHIFT);
> + writel(reg, bar + BYT_PRV_CLK);
> + reg |= BYT_PRV_CLK_EN | BYT_PRV_CLK_UPDATE;
> + writel(reg, bar + BYT_PRV_CLK);
> + }
> }
> #endif
I prefer moving these clock setup codes to the SoC codes
(arch/x86/cpu/baytrail/). Is that possible?
Regards,
Bin
More information about the U-Boot
mailing list