On 14/4/17 5:31 am, Daniel Hellstrom wrote: > From: Martin Aberg <mab...@gaisler.com> > > Utilize the APBUART RX delayed interrupt if available. It also > enables RX FIFO interrupt when used. > > The APBUART RX delayed interrupt is supported by the GR740. > --- > c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c | 44 > +++++++++++++++++++++-- > 1 file changed, 42 insertions(+), 2 deletions(-) > > diff --git a/c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c > b/c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c > index b070db5..e6cbd82 100644 > --- a/c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c > +++ b/c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c > @@ -50,6 +50,11 @@ extern void apbuart_outbyte_polled( > extern int apbuart_inbyte_nonblocking(struct apbuart_regs *regs); > extern struct apbuart_regs *dbg_uart; /* The debug UART */
A minor nit, this name pollutes the application namespace. > > +/* Probed hardware capabilities */ > +enum { > + CAP_FIFO = 0x01, /* FIFO available */ > + CAP_DI = 0x02, /* RX delayed interrupt available */ > +}; > struct apbuart_priv { > struct console_dev condev; > struct drvmgr_dev *dev; > @@ -58,6 +63,7 @@ struct apbuart_priv { > char devName[32]; > volatile int sending; > int mode; > + int cap; > }; > > /* Getters for different interfaces. It happens to be just casting which we > do > @@ -186,6 +192,30 @@ static const rtems_termios_device_handler handler_polled > = { > .mode = TERMIOS_POLLED > }; > > +/* > + * APBUART hardware instantiation is flexible. Probe features here and driver > + * can select appropriate routines for the hardware. probecap() return value > + * is a CAP_ bitmask. > + */ > +static int probecap(volatile struct apbuart_regs *regs) Why is there a volatile in this decl? I do not see volatile used like this else where in the patches. Chris _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel