summaryrefslogtreecommitdiffstats
path: root/drivers/serial/serial_uniphier.c
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2014-11-03 12:43:42 -0500
committerTom Rini <trini@ti.com>2014-11-03 12:43:42 -0500
commita8b972bfa82c0391aaba809f29e351507fd28215 (patch)
tree3d8361220256d45bc0bdc7225f40b225ab6b5e7e /drivers/serial/serial_uniphier.c
parent130aec779ad9a2e28dc9d42ca5b367b957f311d7 (diff)
parentd9bc8fd1cb35feb2802ac1d4d39a1deabf0c3d79 (diff)
downloadblackbird-obmc-uboot-a8b972bfa82c0391aaba809f29e351507fd28215.tar.gz
blackbird-obmc-uboot-a8b972bfa82c0391aaba809f29e351507fd28215.zip
Merge branch 'master' of git://git.denx.de/u-boot-uniphier
Diffstat (limited to 'drivers/serial/serial_uniphier.c')
-rw-r--r--drivers/serial/serial_uniphier.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/serial/serial_uniphier.c b/drivers/serial/serial_uniphier.c
index 9114b3ed60..3f3d415213 100644
--- a/drivers/serial/serial_uniphier.c
+++ b/drivers/serial/serial_uniphier.c
@@ -55,7 +55,7 @@ struct uniphier_serial_private_data {
#define uniphier_serial_port(dev) \
((struct uniphier_serial_private_data *)dev_get_priv(dev))->membase
-int uniphier_serial_setbrg(struct udevice *dev, int baudrate)
+static int uniphier_serial_setbrg(struct udevice *dev, int baudrate)
{
struct uniphier_serial_platform_data *plat = dev_get_platdata(dev);
struct uniphier_serial __iomem *port = uniphier_serial_port(dev);
@@ -93,7 +93,17 @@ static int uniphier_serial_putc(struct udevice *dev, const char c)
return 0;
}
-int uniphier_serial_probe(struct udevice *dev)
+static int uniphier_serial_pending(struct udevice *dev, bool input)
+{
+ struct uniphier_serial __iomem *port = uniphier_serial_port(dev);
+
+ if (input)
+ return readb(&port->lsr) & UART_LSR_DR;
+ else
+ return !(readb(&port->lsr) & UART_LSR_THRE);
+}
+
+static int uniphier_serial_probe(struct udevice *dev)
{
struct uniphier_serial_private_data *priv = dev_get_priv(dev);
struct uniphier_serial_platform_data *plat = dev_get_platdata(dev);
@@ -106,7 +116,7 @@ int uniphier_serial_probe(struct udevice *dev)
return 0;
}
-int uniphier_serial_remove(struct udevice *dev)
+static int uniphier_serial_remove(struct udevice *dev)
{
unmap_sysmem(uniphier_serial_port(dev));
@@ -134,6 +144,7 @@ static const struct dm_serial_ops uniphier_serial_ops = {
.setbrg = uniphier_serial_setbrg,
.getc = uniphier_serial_getc,
.putc = uniphier_serial_putc,
+ .pending = uniphier_serial_pending,
};
U_BOOT_DRIVER(uniphier_serial) = {
OpenPOWER on IntegriCloud