* [PATCH v3 0/2] drivers: serial: Aspeed VUART driver @ 2017-04-10 3:59 Joel Stanley [not found] ` <20170410035904.29443-1-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org> 0 siblings, 1 reply; 3+ messages in thread From: Joel Stanley @ 2017-04-10 3:59 UTC (permalink / raw) To: Greg Kroah-Hartman, Jiri Slaby, Mark Rutland, Rob Herring Cc: linux-serial, linux-kernel, devicetree, openbmc, Andy Shevchenko, Benjamin Herrenschmidt, Jeremy Kerr This is v3 of a driver for the Aspeed VUART. This version addresses feedback from Andy and Greg, and includes Rob's ack for the bindings change. The VUART is a serial device on the BMC side of the LPC bus that connects a BMC to it's host processor. We add a flag to the serial core to allow the driver to skip probing of the THRE irq behaviour, which could hang due to the host not reading bytes out of the buffer. We've been using this on systems for over a year, so it has seen a good amount of testing. Cheers, Joel Jeremy Kerr (1): drivers/serial: Add driver for Aspeed virtual UART Joel Stanley (1): serial: 8250: Add flag so drivers can avoid THRE probe Documentation/ABI/stable/sysfs-driver-aspeed-vuart | 15 + Documentation/devicetree/bindings/serial/8250.txt | 2 + drivers/tty/serial/8250/8250_aspeed_vuart.c | 323 +++++++++++++++++++++ drivers/tty/serial/8250/8250_port.c | 2 +- drivers/tty/serial/8250/Kconfig | 10 + drivers/tty/serial/8250/Makefile | 1 + include/linux/serial_core.h | 1 + 7 files changed, 353 insertions(+), 1 deletion(-) create mode 100644 Documentation/ABI/stable/sysfs-driver-aspeed-vuart create mode 100644 drivers/tty/serial/8250/8250_aspeed_vuart.c -- 2.11.0 ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <20170410035904.29443-1-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>]
* [PATCH v3 1/2] serial: 8250: Add flag so drivers can avoid THRE probe [not found] ` <20170410035904.29443-1-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org> @ 2017-04-10 3:59 ` Joel Stanley 0 siblings, 0 replies; 3+ messages in thread From: Joel Stanley @ 2017-04-10 3:59 UTC (permalink / raw) To: Greg Kroah-Hartman, Jiri Slaby, Mark Rutland, Rob Herring Cc: linux-serial-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Andy Shevchenko, Benjamin Herrenschmidt, Jeremy Kerr, openbmc-uLR06cmDAlY/bJ5BZ2RsiQ The probing of THRE irq behaviour assumes the other end will be reading bytes out of the buffer in order to probe the port at driver init. In some cases the other end cannot be relied upon to read these bytes, so provide a flag for them to skip this step. Bit 19 was chosen as the flags are a int and the top bits are taken. Acked-by: Benjamin Herrenschmidt <benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org> Signed-off-by: Joel Stanley <joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org> --- v3: - Correct the bit number in the changelog v2: - No change drivers/tty/serial/8250/8250_port.c | 2 +- include/linux/serial_core.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index 6119516ef5fc..60a6c247340f 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -2229,7 +2229,7 @@ int serial8250_do_startup(struct uart_port *port) } } - if (port->irq) { + if (port->irq && !(up->port.flags & UPF_NO_THRE_TEST)) { unsigned char iir1; /* * Test for UARTs that do not reassert THRE when the diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 58484fb35cc8..260245deec94 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -195,6 +195,7 @@ struct uart_port { #define UPF_NO_TXEN_TEST ((__force upf_t) (1 << 15)) #define UPF_MAGIC_MULTIPLIER ((__force upf_t) ASYNC_MAGIC_MULTIPLIER /* 16 */ ) +#define UPF_NO_THRE_TEST ((__force upf_t) (1 << 19)) /* Port has hardware-assisted h/w flow control */ #define UPF_AUTO_CTS ((__force upf_t) (1 << 20)) #define UPF_AUTO_RTS ((__force upf_t) (1 << 21)) -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v3 0/2] drivers: serial: Aspeed VUART driver @ 2017-04-10 4:03 Joel Stanley [not found] ` <20170410040400.5509-1-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org> 0 siblings, 1 reply; 3+ messages in thread From: Joel Stanley @ 2017-04-10 4:03 UTC (permalink / raw) To: Greg Kroah-Hartman, Jiri Slaby, Mark Rutland, Rob Herring Cc: linux-serial-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, openbmc-uLR06cmDAlY/bJ5BZ2RsiQ, Andy Shevchenko, Benjamin Herrenschmidt, Jeremy Kerr This is v3 of a driver for the Aspeed VUART. This version addresses feedback from Andy and Greg, and includes Rob's ack for the bindings change. The VUART is a serial device on the BMC side of the LPC bus that connects a BMC to it's host processor. We add a flag to the serial core to allow the driver to skip probing of the THRE irq behaviour, which could hang due to the host not reading bytes out of the buffer. We've been using this on systems for over a year, so it has seen a good amount of testing. Cheers, Joel Jeremy Kerr (1): drivers/serial: Add driver for Aspeed virtual UART Joel Stanley (1): serial: 8250: Add flag so drivers can avoid THRE probe Documentation/ABI/stable/sysfs-driver-aspeed-vuart | 15 + Documentation/devicetree/bindings/serial/8250.txt | 2 + drivers/tty/serial/8250/8250_aspeed_vuart.c | 323 +++++++++++++++++++++ drivers/tty/serial/8250/8250_port.c | 2 +- drivers/tty/serial/8250/Kconfig | 10 + drivers/tty/serial/8250/Makefile | 1 + include/linux/serial_core.h | 1 + 7 files changed, 353 insertions(+), 1 deletion(-) create mode 100644 Documentation/ABI/stable/sysfs-driver-aspeed-vuart create mode 100644 drivers/tty/serial/8250/8250_aspeed_vuart.c -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <20170410040400.5509-1-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>]
* [PATCH v3 1/2] serial: 8250: Add flag so drivers can avoid THRE probe [not found] ` <20170410040400.5509-1-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org> @ 2017-04-10 4:03 ` Joel Stanley 0 siblings, 0 replies; 3+ messages in thread From: Joel Stanley @ 2017-04-10 4:03 UTC (permalink / raw) To: Greg Kroah-Hartman, Jiri Slaby, Mark Rutland, Rob Herring Cc: linux-serial-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Andy Shevchenko, Benjamin Herrenschmidt, Jeremy Kerr, openbmc-uLR06cmDAlY/bJ5BZ2RsiQ The probing of THRE irq behaviour assumes the other end will be reading bytes out of the buffer in order to probe the port at driver init. In some cases the other end cannot be relied upon to read these bytes, so provide a flag for them to skip this step. Bit 19 was chosen as the flags are a int and the top bits are taken. Acked-by: Benjamin Herrenschmidt <benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org> Signed-off-by: Joel Stanley <joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org> --- v3: - Correct the bit number in the changelog v2: - No change drivers/tty/serial/8250/8250_port.c | 2 +- include/linux/serial_core.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index 6119516ef5fc..60a6c247340f 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -2229,7 +2229,7 @@ int serial8250_do_startup(struct uart_port *port) } } - if (port->irq) { + if (port->irq && !(up->port.flags & UPF_NO_THRE_TEST)) { unsigned char iir1; /* * Test for UARTs that do not reassert THRE when the diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 58484fb35cc8..260245deec94 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -195,6 +195,7 @@ struct uart_port { #define UPF_NO_TXEN_TEST ((__force upf_t) (1 << 15)) #define UPF_MAGIC_MULTIPLIER ((__force upf_t) ASYNC_MAGIC_MULTIPLIER /* 16 */ ) +#define UPF_NO_THRE_TEST ((__force upf_t) (1 << 19)) /* Port has hardware-assisted h/w flow control */ #define UPF_AUTO_CTS ((__force upf_t) (1 << 20)) #define UPF_AUTO_RTS ((__force upf_t) (1 << 21)) -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-04-10 4:03 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-04-10 3:59 [PATCH v3 0/2] drivers: serial: Aspeed VUART driver Joel Stanley [not found] ` <20170410035904.29443-1-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org> 2017-04-10 3:59 ` [PATCH v3 1/2] serial: 8250: Add flag so drivers can avoid THRE probe Joel Stanley -- strict thread matches above, loose matches on Subject: below -- 2017-04-10 4:03 [PATCH v3 0/2] drivers: serial: Aspeed VUART driver Joel Stanley [not found] ` <20170410040400.5509-1-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org> 2017-04-10 4:03 ` [PATCH v3 1/2] serial: 8250: Add flag so drivers can avoid THRE probe Joel Stanley
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).