Skip to content

Commit

Permalink
serial/aspeed-vuart: Disable host TX discard mode during init
Browse files Browse the repository at this point in the history
If host TX discard mode is enabled, we don't see the LSR[RBR} bit
getting set on new characters written on the host side. This makes the
VUART a little useless.

This change set this bit during VUART initialisation, to disable host
TX discard.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Joel Stanley <joel@jms.id.au>
  • Loading branch information
Jeremy Kerr authored and Joel Stanley committed Feb 10, 2016
1 parent f4d3023 commit 558a38d
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion drivers/tty/serial/aspeed-vuart.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
#include "8250/8250.h"

#define AST_VUART_GCRA 0x20
#define AST_VUART_GCRA_VUART_EN 0x1
#define AST_VUART_GCRA_VUART_EN 0x01
#define AST_VUART_GCRA_HOST_TX_DISCARD 0x20
#define AST_VUART_GCRB 0x24
#define AST_VUART_GCRB_HOST_SIRQ_MASK 0xf0
#define AST_VUART_GCRB_HOST_SIRQ_SHIFT 4
Expand Down Expand Up @@ -143,6 +144,17 @@ static ssize_t ast_vuart_set_sirq(struct device *dev,
static DEVICE_ATTR(sirq, S_IWUSR | S_IRUGO,
ast_vuart_show_sirq, ast_vuart_set_sirq);

static void ast_vuart_setup(struct ast_vuart *vuart)
{
u8 reg;

/* disable TX discard mode */
reg = readb(vuart->regs + AST_VUART_GCRA);
reg |= AST_VUART_GCRA_HOST_TX_DISCARD;
writeb(reg, vuart->regs + AST_VUART_GCRA);
}


/**
* The device tree parsinc code here is heavily based on that of the of_serial
* driver, but we have a few core differences, as we need to use our own
Expand Down Expand Up @@ -261,6 +273,7 @@ static int ast_vuart_probe(struct platform_device *pdev)

vuart->line = rc;
platform_set_drvdata(pdev, vuart);
ast_vuart_setup(vuart);

/* extra sysfs control */
rc = device_create_file(&pdev->dev, &dev_attr_lpc_address);
Expand Down

0 comments on commit 558a38d

Please sign in to comment.