* [PATCH 1/3] serial: 8250_uniphier: remove unused "fifo-size" property
2018-09-19 5:28 [PATCH 0/3] serial: 8250_uniphier: remove unused code and add auto-flow-control Masahiro Yamada
@ 2018-09-19 5:28 ` Masahiro Yamada
2018-09-19 5:28 ` [PATCH 2/3] serial: 8250_uniphier: flatten probe function Masahiro Yamada
2018-09-19 5:28 ` [PATCH 3/3] serial: 8250_uniphier: add auto-flow-control support Masahiro Yamada
2 siblings, 0 replies; 4+ messages in thread
From: Masahiro Yamada @ 2018-09-19 5:28 UTC (permalink / raw)
To: Greg KH, linux-serial
Cc: devicetree, Rob Herring, Dai Okamura, Masahiro Yamada,
Jiri Slaby, linux-kernel, Mark Rutland, linux-arm-kernel
The FIFO size of the UART devices is 64 on almost all UniPhier SoCs
with the exception Pro4TV SoC (MN2WS0230), which used 128 FIFO size.
However, Pro4TV SoC was never upstreamed, and out of production.
So, this property has never been used in a useful way.
Let's remove old unused code.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---
Documentation/devicetree/bindings/serial/uniphier-uart.txt | 4 ----
drivers/tty/serial/8250/8250_uniphier.c | 10 +---------
2 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/Documentation/devicetree/bindings/serial/uniphier-uart.txt b/Documentation/devicetree/bindings/serial/uniphier-uart.txt
index 0b3892a..811c479 100644
--- a/Documentation/devicetree/bindings/serial/uniphier-uart.txt
+++ b/Documentation/devicetree/bindings/serial/uniphier-uart.txt
@@ -6,9 +6,6 @@ Required properties:
- interrupts: a single interrupt specifier.
- clocks: phandle to the input clock.
-Optional properties:
-- fifo-size: the RX/TX FIFO size. Defaults to 64 if not specified.
-
Example:
aliases {
serial0 = &serial0;
@@ -19,5 +16,4 @@ Example:
reg = <0x54006800 0x40>;
interrupts = <0 33 4>;
clocks = <&uart_clk>;
- fifo-size = <64>;
};
diff --git a/drivers/tty/serial/8250/8250_uniphier.c b/drivers/tty/serial/8250/8250_uniphier.c
index 28d88ccf..d292654 100644
--- a/drivers/tty/serial/8250/8250_uniphier.c
+++ b/drivers/tty/serial/8250/8250_uniphier.c
@@ -12,9 +12,6 @@
#include "8250.h"
-/* Most (but not all) of UniPhier UART devices have 64-depth FIFO. */
-#define UNIPHIER_UART_DEFAULT_FIFO_SIZE 64
-
/*
* This hardware is similar to 8250, but its register map is a bit different:
* - MMIO32 (regshift = 2)
@@ -185,12 +182,6 @@ static int uniphier_of_serial_setup(struct device *dev, struct uart_port *port,
port->uartclk = clk_get_rate(priv->clk);
- /* Check for fifo size */
- if (of_property_read_u32(np, "fifo-size", &prop) == 0)
- port->fifosize = prop;
- else
- port->fifosize = UNIPHIER_UART_DEFAULT_FIFO_SIZE;
-
return 0;
}
@@ -241,6 +232,7 @@ static int uniphier_uart_probe(struct platform_device *pdev)
up.port.type = PORT_16550A;
up.port.iotype = UPIO_MEM32;
+ up.port.fifosize = 64;
up.port.regshift = UNIPHIER_UART_REGSHIFT;
up.port.flags = UPF_FIXED_PORT | UPF_FIXED_TYPE;
up.capabilities = UART_CAP_FIFO;
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] serial: 8250_uniphier: flatten probe function
2018-09-19 5:28 [PATCH 0/3] serial: 8250_uniphier: remove unused code and add auto-flow-control Masahiro Yamada
2018-09-19 5:28 ` [PATCH 1/3] serial: 8250_uniphier: remove unused "fifo-size" property Masahiro Yamada
@ 2018-09-19 5:28 ` Masahiro Yamada
2018-09-19 5:28 ` [PATCH 3/3] serial: 8250_uniphier: add auto-flow-control support Masahiro Yamada
2 siblings, 0 replies; 4+ messages in thread
From: Masahiro Yamada @ 2018-09-19 5:28 UTC (permalink / raw)
To: Greg KH, linux-serial
Cc: devicetree, Rob Herring, Dai Okamura, Masahiro Yamada,
Jiri Slaby, linux-kernel, linux-arm-kernel
Currently, the DT-related settings are split out to
uniphier_of_serial_setup(), but it turned out to be not nice.
The next commit will add a DT property, but it will not fit in
the helper. Merge the helper into the probe function.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---
drivers/tty/serial/8250/8250_uniphier.c | 49 ++++++++++++---------------------
1 file changed, 17 insertions(+), 32 deletions(-)
diff --git a/drivers/tty/serial/8250/8250_uniphier.c b/drivers/tty/serial/8250/8250_uniphier.c
index d292654..1028c02 100644
--- a/drivers/tty/serial/8250/8250_uniphier.c
+++ b/drivers/tty/serial/8250/8250_uniphier.c
@@ -155,36 +155,6 @@ static void uniphier_serial_dl_write(struct uart_8250_port *up, int value)
writel(value, up->port.membase + UNIPHIER_UART_DLR);
}
-static int uniphier_of_serial_setup(struct device *dev, struct uart_port *port,
- struct uniphier8250_priv *priv)
-{
- int ret;
- u32 prop;
- struct device_node *np = dev->of_node;
-
- ret = of_alias_get_id(np, "serial");
- if (ret < 0) {
- dev_err(dev, "failed to get alias id\n");
- return ret;
- }
- port->line = ret;
-
- /* Get clk rate through clk driver */
- priv->clk = devm_clk_get(dev, NULL);
- if (IS_ERR(priv->clk)) {
- dev_err(dev, "failed to get clock\n");
- return PTR_ERR(priv->clk);
- }
-
- ret = clk_prepare_enable(priv->clk);
- if (ret < 0)
- return ret;
-
- port->uartclk = clk_get_rate(priv->clk);
-
- return 0;
-}
-
static int uniphier_uart_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
@@ -217,9 +187,24 @@ static int uniphier_uart_probe(struct platform_device *pdev)
memset(&up, 0, sizeof(up));
- ret = uniphier_of_serial_setup(dev, &up.port, priv);
- if (ret < 0)
+ ret = of_alias_get_id(dev->of_node, "serial");
+ if (ret < 0) {
+ dev_err(dev, "failed to get alias id\n");
return ret;
+ }
+ up.port.line = ret;
+
+ priv->clk = devm_clk_get(dev, NULL);
+ if (IS_ERR(priv->clk)) {
+ dev_err(dev, "failed to get clock\n");
+ return PTR_ERR(priv->clk);
+ }
+
+ ret = clk_prepare_enable(priv->clk);
+ if (ret)
+ return ret;
+
+ up.port.uartclk = clk_get_rate(priv->clk);
spin_lock_init(&priv->atomic_write_lock);
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] serial: 8250_uniphier: add auto-flow-control support
2018-09-19 5:28 [PATCH 0/3] serial: 8250_uniphier: remove unused code and add auto-flow-control Masahiro Yamada
2018-09-19 5:28 ` [PATCH 1/3] serial: 8250_uniphier: remove unused "fifo-size" property Masahiro Yamada
2018-09-19 5:28 ` [PATCH 2/3] serial: 8250_uniphier: flatten probe function Masahiro Yamada
@ 2018-09-19 5:28 ` Masahiro Yamada
2 siblings, 0 replies; 4+ messages in thread
From: Masahiro Yamada @ 2018-09-19 5:28 UTC (permalink / raw)
To: Greg KH, linux-serial
Cc: devicetree, Rob Herring, Dai Okamura, Masahiro Yamada,
Jiri Slaby, linux-kernel, Mark Rutland, linux-arm-kernel
From: Dai Okamura <okamura.dai@socionext.com>
Add selective auto-flow-control support for UniPhier serial driver.
Signed-off-by: Dai Okamura <okamura.dai@socionext.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---
Documentation/devicetree/bindings/serial/uniphier-uart.txt | 3 +++
drivers/tty/serial/8250/8250_uniphier.c | 3 +++
2 files changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/serial/uniphier-uart.txt b/Documentation/devicetree/bindings/serial/uniphier-uart.txt
index 811c479..7a1bf02 100644
--- a/Documentation/devicetree/bindings/serial/uniphier-uart.txt
+++ b/Documentation/devicetree/bindings/serial/uniphier-uart.txt
@@ -6,6 +6,9 @@ Required properties:
- interrupts: a single interrupt specifier.
- clocks: phandle to the input clock.
+Optional properties:
+-auto-flow-control: enable automatic flow control support.
+
Example:
aliases {
serial0 = &serial0;
diff --git a/drivers/tty/serial/8250/8250_uniphier.c b/drivers/tty/serial/8250/8250_uniphier.c
index 1028c02..164ba13 100644
--- a/drivers/tty/serial/8250/8250_uniphier.c
+++ b/drivers/tty/serial/8250/8250_uniphier.c
@@ -222,6 +222,9 @@ static int uniphier_uart_probe(struct platform_device *pdev)
up.port.flags = UPF_FIXED_PORT | UPF_FIXED_TYPE;
up.capabilities = UART_CAP_FIFO;
+ if (of_property_read_bool(dev->of_node, "auto-flow-control"))
+ up.capabilities |= UART_CAP_AFE;
+
up.port.serial_in = uniphier_serial_in;
up.port.serial_out = uniphier_serial_out;
up.dl_read = uniphier_serial_dl_read;
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread