From 87319afb96973213ec0a76270d93696f3b8d6743 Mon Sep 17 00:00:00 2001 From: Volodymyr Babchuk Date: Tue, 8 Feb 2022 11:23:55 +0000 Subject: [PATCH] xen/serial: scif: add support for HSCIF HSCIF is a high-speed variant of Renesas SCIF serial interface. From Xen point of view, they almost the same, only difference is in FIFO size. Signed-off-by: Volodymyr Babchuk Reviewed-by: Oleksandr Tyshchenko Acked-by: Julien Grall --- xen/drivers/char/scif-uart.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c index ee204a11a4..2fccafe340 100644 --- a/xen/drivers/char/scif-uart.c +++ b/xen/drivers/char/scif-uart.c @@ -1,8 +1,8 @@ /* * xen/drivers/char/scif-uart.c * - * Driver for SCIF(A) (Serial communication interface with FIFO (A)) - * compatible UART. + * Driver for (H)SCIF(A) ((High-speed) Serial communication interface + * with FIFO (A)) compatible UART. * * Oleksandr Tyshchenko * Copyright (C) 2014, Globallogic. @@ -47,6 +47,7 @@ enum port_types { SCIF_PORT, SCIFA_PORT, + HSCIF_PORT, NR_PORTS, }; @@ -88,6 +89,17 @@ static const struct port_params port_params[NR_PORTS] = SCASCR_BRIE, .fifo_size = 64, }, + [HSCIF_PORT] = + { + .status_reg = SCIF_SCFSR, + .tx_fifo_reg = SCIF_SCFTDR, + .rx_fifo_reg = SCIF_SCFRDR, + .overrun_reg = SCIF_SCLSR, + .overrun_mask = SCLSR_ORER, + .error_mask = SCFSR_PER | SCFSR_FER | SCFSR_BRK | SCFSR_ER, + .irq_flags = SCSCR_RIE | SCSCR_TIE | SCSCR_REIE, + .fifo_size = 128, + }, }; static void scif_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs) @@ -288,6 +300,7 @@ static const struct dt_device_match scif_uart_dt_match[] __initconst = { { .compatible = "renesas,scif", .data = &port_params[SCIF_PORT] }, { .compatible = "renesas,scifa", .data = &port_params[SCIFA_PORT] }, + { .compatible = "renesas,hscif", .data = &port_params[HSCIF_PORT] }, { /* sentinel */ }, }; -- 2.30.2