From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [PATCH] pl011: assert RTS signal in case the receiver uses flow control Date: Tue, 03 Sep 2013 08:07:04 +0200 Message-ID: <52257C88.6030601@linaro.org> References: <1378133505-3348-1-git-send-email-andre.przywara@linaro.org> <5224B462.4020701@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <5224B462.4020701@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall Cc: xen-devel@lists.xen.org, Ian.Campbell@citrix.com, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org On 09/02/2013 05:53 PM, Julien Grall wrote: > On 09/02/2013 03:51 PM, Andre Przywara wrote: >> Although we do not support hardware flow control in the Xen driver >> for the PL011 UART, the other end may be configured to use it. >> In this case it waits in vain for the RTS signal to be asserted by >> the host and will never transmit any characters. >> This fixes the UART input on Calxeda Midway, which uses hardware >> flow control for the serial-over-LAN functionality. >> >> Signed-off-by: Andre Przywara >> --- >> xen/drivers/char/pl011.c | 4 ++-- >> xen/include/asm-arm/pl011-uart.h | 4 ++++ >> 2 files changed, 6 insertions(+), 2 deletions(-) >> >> diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c >> index 3ec6e10..e340961 100644 >> --- a/xen/drivers/char/pl011.c >> +++ b/xen/drivers/char/pl011.c >> @@ -120,8 +120,8 @@ static void __init pl011_init_preirq(struct serial_port *port) >> pl011_write(uart, IMSC, 0); >> pl011_write(uart, ICR, ALLI); >> >> - /* Enable the UART for RX and TX; no flow ctrl */ >> - pl011_write(uart, CR, RXE | TXE | UARTEN); >> + /* Enable the UART for RX and TX; assert RTS in case the other end cares */ >> + pl011_write(uart, CR, RTS | RXE | TXE | UARTEN); >> } > > Instead of overriding CR can we read CR and enable the necessary bit? > It seems that Linux doesn't set RTS but keep the level from the previous > register value. Right, that is the way to do it. In fact u-boot already cares about this: http://git.denx.de/?p=u-boot.git;a=commit;h=10501df05e2d2eef501c92483c134d5f7c9da150 Will send a new version. > BTW, this patch works on the versatile express :). Nice, thanks for testing. Andre.