[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 2/2] xen/char: implement suspend/resume calls for SCIF driver
Hi Ayan On Fri, Jun 13, 2025 at 5:36 PM Ayan Kumar Halder <ayankuma@xxxxxxx> wrote: > > Hi Mykola, > > On 06/06/2025 11:11, Mykola Kvach wrote: > > CAUTION: This message has originated from an External Source. Please use > > proper judgment and caution when opening attachments, clicking links, or > > responding to this email. > > > > > > From: Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx> > > > > The changes have been tested only on the Renesas R-Car H3 Starter Kit board. > > The commit message need to explain what the change is and why it is needed. Thanks for the feedback. I thought the information from the commit message title would be enough. I will add a few more words to clarify what the change is and why it's needed to the commit message body. > > Also ... > > > > > Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx> > > Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx> > > Signed-off-by: Mykola Kvach <mykola_kvach@xxxxxxxx> > > --- > > In patch v2, I just added a CONFIG_SYSTEM_SUSPEND check around > > the suspend/resume functions in the SCIF driver. > > --- > > xen/drivers/char/scif-uart.c | 40 ++++++++++++++++++++++++++++++++++-- > > 1 file changed, 38 insertions(+), 2 deletions(-) > > > > diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c > > index 757793ca45..888821a3b8 100644 > > --- a/xen/drivers/char/scif-uart.c > > +++ b/xen/drivers/char/scif-uart.c > > @@ -139,9 +139,8 @@ static void scif_uart_interrupt(int irq, void *data) > > } > > } > > > > -static void __init scif_uart_init_preirq(struct serial_port *port) > > +static void scif_uart_disable(struct scif_uart *uart) > > { > > - struct scif_uart *uart = port->uart; > > const struct port_params *params = uart->params; > > > > /* > > @@ -155,6 +154,14 @@ static void __init scif_uart_init_preirq(struct > > serial_port *port) > > > > /* Reset TX/RX FIFOs */ > > scif_writew(uart, SCIF_SCFCR, SCFCR_RFRST | SCFCR_TFRST); > > +} > > + > > +static void scif_uart_init_preirq(struct serial_port *port) > > +{ > > + struct scif_uart *uart = port->uart; > > + const struct port_params *params = uart->params; > > + > > + scif_uart_disable(uart); > > > > /* Clear all errors and flags */ > > scif_readw(uart, params->status_reg); > > @@ -271,6 +278,31 @@ static void scif_uart_stop_tx(struct serial_port *port) > > scif_writew(uart, SCIF_SCSCR, scif_readw(uart, SCIF_SCSCR) & > > ~SCSCR_TIE); > > } > > > > +#ifdef CONFIG_SYSTEM_SUSPEND > > + > > +static void scif_uart_suspend(struct serial_port *port) > > +{ > > + struct scif_uart *uart = port->uart; > > + > > + scif_uart_stop_tx(port); > > + scif_uart_disable(uart); > > +} > > + > > +static void scif_uart_resume(struct serial_port *port) > > +{ > > + struct scif_uart *uart = port->uart; > > + const struct port_params *params = uart->params; > > + uint16_t ctrl; > > + > > + scif_uart_init_preirq(port); > > + > > + /* Enable TX/RX and Error Interrupts */ > > + ctrl = scif_readw(uart, SCIF_SCSCR); > > + scif_writew(uart, SCIF_SCSCR, ctrl | params->irq_flags); > > If you can give reference to a public doc which describe these > registers, it will be great. I don't think I can share documentation for the board I used for testing this commit. However, I searched for Linux boards that use the same driver and SCIF register set with available documentation, and I found a few boards with open documentation, for example, RZ/G1H or RZ/G1M: https://www.renesas.com/en/products/microcontrollers-microprocessors/rz-mpus/rzg1m-ultra-high-performance-microprocessors-15ghz-dual-core-arm-cortex-a15-cpus-3d-graphics-and-video > > Otherwise, the changes look ok to me. > > > +} > > + > > +#endif /* CONFIG_SYSTEM_SUSPEND */ > > + > > static struct uart_driver __read_mostly scif_uart_driver = { > > .init_preirq = scif_uart_init_preirq, > > .init_postirq = scif_uart_init_postirq, > > @@ -281,6 +313,10 @@ static struct uart_driver __read_mostly > > scif_uart_driver = { > > .start_tx = scif_uart_start_tx, > > .stop_tx = scif_uart_stop_tx, > > .vuart_info = scif_vuart_info, > > +#ifdef CONFIG_SYSTEM_SUSPEND > > + .suspend = scif_uart_suspend, > > + .resume = scif_uart_resume, > > +#endif > > }; > > > > static const struct dt_device_match scif_uart_dt_match[] __initconst = > - Ayan > > -- > > 2.48.1 > > > > Best regards, Mykola
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |