Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1668663 > unrolled thread

Re: [PATCH v4 09/28] tty: serial: Add Actions Semi Owl UART earlycon

Started byAndreas Färber <afaerber@suse.de>
First post2017-06-18 23:50 +0200
Last post2017-06-19 04:30 +0200
Articles 7 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH v4 09/28] tty: serial: Add Actions Semi Owl UART earlycon Andreas Färber <afaerber@suse.de> - 2017-06-18 23:50 +0200
    Re: [PATCH v4 09/28] tty: serial: Add Actions Semi Owl UART earlycon Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-19 03:20 +0200
      Re: [PATCH v4 09/28] tty: serial: Add Actions Semi Owl UART earlycon Andreas Färber <afaerber@suse.de> - 2017-06-19 03:30 +0200
        [PATCH v5 07/26] dt-bindings: serial: Document Actions Semi Owl UARTs Andreas Färber <afaerber@suse.de> - 2017-06-19 03:50 +0200
          [PATCH v5 08/26] tty: serial: Add Actions Semi Owl UART earlycon Andreas Färber <afaerber@suse.de> - 2017-06-19 03:50 +0200
        Re: [PATCH v4 09/28] tty: serial: Add Actions Semi Owl UART earlycon Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-19 04:20 +0200
          Re: [PATCH v4 09/28] tty: serial: Add Actions Semi Owl UART earlycon Andreas Färber <afaerber@suse.de> - 2017-06-19 04:30 +0200

#1668663 — Re: [PATCH v4 09/28] tty: serial: Add Actions Semi Owl UART earlycon

FromAndreas Färber <afaerber@suse.de>
Date2017-06-18 23:50 +0200
SubjectRe: [PATCH v4 09/28] tty: serial: Add Actions Semi Owl UART earlycon
Message-ID<tTQeZ-269-5@gated-at.bofh.it>
Greg,

Am 06.06.2017 um 02:54 schrieb Andreas Färber:
> This implements an earlycon for Actions Semi S500/S900 SoCs.
> 
> Based on LeMaker linux-actions tree.
> 
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> ---
>  v3 -> v4: Unchanged
>  
>  v2 -> v3:
>  * Adopted BIT() macro
>  
>  v1 -> v2:
>  * Extended Kconfig help to mention earlycon (Arnd)
>  * Spelled out Actions Semiconductor in Kconfig help
>  * Adopted "actions" vendor prefix
>  
>  drivers/tty/serial/Kconfig    |  19 ++++++
>  drivers/tty/serial/Makefile   |   1 +
>  drivers/tty/serial/owl-uart.c | 135 ++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 155 insertions(+)
>  create mode 100644 drivers/tty/serial/owl-uart.c

The DT vendor prefix is applied to my linux-actions.git tree now, and
the serial binding has been ack'ed by Rob.

Is there anything keeping you from adding this patch, the preceding DT
binding (08/28) and the following documentation patch (10/28) to your
tree for 4.13?

The full serial driver (16/28) needs another spin and may miss 4.13, but
earlycon would prove the rest is working.

Thanks,
Andreas

-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)

[toc] | [next] | [standalone]


#1668695

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-19 03:20 +0200
Message-ID<tTTwd-4hF-1@gated-at.bofh.it>
In reply to#1668663
On Sun, Jun 18, 2017 at 11:45:28PM +0200, Andreas Färber wrote:
> Greg,
> 
> Am 06.06.2017 um 02:54 schrieb Andreas Färber:
> > This implements an earlycon for Actions Semi S500/S900 SoCs.
> > 
> > Based on LeMaker linux-actions tree.
> > 
> > Signed-off-by: Andreas Färber <afaerber@suse.de>
> > ---
> >  v3 -> v4: Unchanged
> >  
> >  v2 -> v3:
> >  * Adopted BIT() macro
> >  
> >  v1 -> v2:
> >  * Extended Kconfig help to mention earlycon (Arnd)
> >  * Spelled out Actions Semiconductor in Kconfig help
> >  * Adopted "actions" vendor prefix
> >  
> >  drivers/tty/serial/Kconfig    |  19 ++++++
> >  drivers/tty/serial/Makefile   |   1 +
> >  drivers/tty/serial/owl-uart.c | 135 ++++++++++++++++++++++++++++++++++++++++++
> >  3 files changed, 155 insertions(+)
> >  create mode 100644 drivers/tty/serial/owl-uart.c
> 
> The DT vendor prefix is applied to my linux-actions.git tree now, and
> the serial binding has been ack'ed by Rob.
> 
> Is there anything keeping you from adding this patch, the preceding DT
> binding (08/28) and the following documentation patch (10/28) to your
> tree for 4.13?

Yeah, I don't have it in my queue anymore :)

Can you resend it just as a single patch?

thanks,

greg k-h

[toc] | [prev] | [next] | [standalone]


#1668699

FromAndreas Färber <afaerber@suse.de>
Date2017-06-19 03:30 +0200
Message-ID<tTTFT-4kN-1@gated-at.bofh.it>
In reply to#1668695
Am 19.06.2017 um 03:16 schrieb Greg Kroah-Hartman:
> On Sun, Jun 18, 2017 at 11:45:28PM +0200, Andreas Färber wrote:
>> Greg,
>>
>> Am 06.06.2017 um 02:54 schrieb Andreas Färber:
>>> This implements an earlycon for Actions Semi S500/S900 SoCs.
>>>
>>> Based on LeMaker linux-actions tree.
>>>
>>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>>
>> The DT vendor prefix is applied to my linux-actions.git tree now, and
>> the serial binding has been ack'ed by Rob.
>>
>> Is there anything keeping you from adding this patch, the preceding DT
>> binding (08/28) and the following documentation patch (10/28) to your
>> tree for 4.13?
> 
> Yeah, I don't have it in my queue anymore :)
> 
> Can you resend it just as a single patch?

Do you mean squash the documentation into this tty patch? As you wish.
But the DT binding is supposed to be a separate patch - I can queue it
in my tree if you prefer.

Cheers,
Andreas

-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)

[toc] | [prev] | [next] | [standalone]


#1668705 — [PATCH v5 07/26] dt-bindings: serial: Document Actions Semi Owl UARTs

FromAndreas Färber <afaerber@suse.de>
Date2017-06-19 03:50 +0200
Subject[PATCH v5 07/26] dt-bindings: serial: Document Actions Semi Owl UARTs
Message-ID<tTTZf-4r4-17@gated-at.bofh.it>
In reply to#1668699
This UART is found on S500 and S900 SoCs.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 v2 -> v3 -> v4 -> v5: Unchanged
 
 v1 -> v2:
 * Adopted "actions" vendor prefix
 
 .../devicetree/bindings/serial/actions,owl-uart.txt      | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/serial/actions,owl-uart.txt

diff --git a/Documentation/devicetree/bindings/serial/actions,owl-uart.txt b/Documentation/devicetree/bindings/serial/actions,owl-uart.txt
new file mode 100644
index 000000000000..aa873eada02d
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/actions,owl-uart.txt
@@ -0,0 +1,16 @@
+Actions Semi Owl UART
+
+Required properties:
+- compatible :  "actions,s500-uart", "actions,owl-uart" for S500
+                "actions,s900-uart", "actions,owl-uart" for S900
+- reg        :  Offset and length of the register set for the device.
+- interrupts :  Should contain UART interrupt.
+
+
+Example:
+
+		uart3: serial@b0126000 {
+			compatible = "actions,s500-uart", "actions,owl-uart";
+			reg = <0xb0126000 0x1000>;
+			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+		};
-- 
2.12.3

[toc] | [prev] | [next] | [standalone]


#1668706 — [PATCH v5 08/26] tty: serial: Add Actions Semi Owl UART earlycon

FromAndreas Färber <afaerber@suse.de>
Date2017-06-19 03:50 +0200
Subject[PATCH v5 08/26] tty: serial: Add Actions Semi Owl UART earlycon
Message-ID<tTTZg-4r4-21@gated-at.bofh.it>
In reply to#1668705
This implements an earlycon for Actions Semi S500/S900 SoCs.

Based on LeMaker linux-actions tree.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 v4 -> v5:
 * Squashed documentation (Greg)
 
 v3 -> v4: Unchanged
 
 v2 -> v3:
 * Adopted BIT() macro
 
 v1 -> v2:
 * Extended Kconfig help to mention earlycon (Arnd)
 * Spelled out Actions Semiconductor in Kconfig help
 * Adopted "actions" vendor prefix
 
 Documentation/admin-guide/kernel-parameters.txt |   6 ++
 drivers/tty/serial/Kconfig                      |  19 ++++
 drivers/tty/serial/Makefile                     |   1 +
 drivers/tty/serial/owl-uart.c                   | 135 ++++++++++++++++++++++++
 4 files changed, 161 insertions(+)
 create mode 100644 drivers/tty/serial/owl-uart.c

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index fb311bdccb7b..cc8a6bfcb299 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -961,6 +961,12 @@
 			must already be setup and configured. Options are not
 			yet supported.
 
+		owl,<addr>
+			Start an early, polled-mode console on a serial port
+			of an Actions Semi SoC, such as S500 or S900, at the
+			specified address. The serial port must already be
+			setup and configured. Options are not yet supported.
+
 		smh	Use ARM semihosting calls for early console.
 
 		s3c2410,<addr>
diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
index 07812a7ea2a4..1f096e2bb398 100644
--- a/drivers/tty/serial/Kconfig
+++ b/drivers/tty/serial/Kconfig
@@ -1688,6 +1688,25 @@ config SERIAL_MVEBU_CONSOLE
 	  and warnings and which allows logins in single user mode)
 	  Otherwise, say 'N'.
 
+config SERIAL_OWL
+	bool "Actions Semi Owl serial port support"
+	depends on ARCH_ACTIONS || COMPILE_TEST
+	select SERIAL_CORE
+	help
+	  This driver is for Actions Semiconductor S500/S900 SoC's UART.
+	  Say 'Y' here if you wish to use the on-board serial port.
+	  Otherwise, say 'N'.
+
+config SERIAL_OWL_CONSOLE
+	bool "Console on Actions Semi Owl serial port"
+	depends on SERIAL_OWL=y
+	select SERIAL_CORE_CONSOLE
+	select SERIAL_EARLYCON
+	default y
+	help
+	  Say 'Y' here if you wish to use Actions Semiconductor S500/S900 UART
+	  as the system console. Only earlycon is implemented currently.
+
 endmenu
 
 config SERIAL_MCTRL_GPIO
diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile
index 53c03e005132..fe88a75d9a59 100644
--- a/drivers/tty/serial/Makefile
+++ b/drivers/tty/serial/Makefile
@@ -92,6 +92,7 @@ obj-$(CONFIG_SERIAL_STM32)	+= stm32-usart.o
 obj-$(CONFIG_SERIAL_MVEBU_UART)	+= mvebu-uart.o
 obj-$(CONFIG_SERIAL_PIC32)	+= pic32_uart.o
 obj-$(CONFIG_SERIAL_MPS2_UART)	+= mps2-uart.o
+obj-$(CONFIG_SERIAL_OWL)	+= owl-uart.o
 
 # GPIOLIB helpers for modem control lines
 obj-$(CONFIG_SERIAL_MCTRL_GPIO)	+= serial_mctrl_gpio.o
diff --git a/drivers/tty/serial/owl-uart.c b/drivers/tty/serial/owl-uart.c
new file mode 100644
index 000000000000..1b8008797a1b
--- /dev/null
+++ b/drivers/tty/serial/owl-uart.c
@@ -0,0 +1,135 @@
+/*
+ * Actions Semi Owl family serial console
+ *
+ * Copyright 2013 Actions Semi Inc.
+ * Author: Actions Semi, Inc.
+ *
+ * Copyright (c) 2016-2017 Andreas Färber
+ *
+ * This program is free software; you can redistribute  it and/or modify it
+ * under  the terms of  the GNU General  Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <linux/console.h>
+#include <linux/delay.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/serial.h>
+#include <linux/serial_core.h>
+
+#define OWL_UART_CTL	0x000
+#define OWL_UART_TXDAT	0x008
+#define OWL_UART_STAT	0x00c
+
+#define OWL_UART_CTL_TRFS_TX		BIT(14)
+#define OWL_UART_CTL_EN			BIT(15)
+#define OWL_UART_CTL_RXIE		BIT(18)
+#define OWL_UART_CTL_TXIE		BIT(19)
+
+#define OWL_UART_STAT_RIP		BIT(0)
+#define OWL_UART_STAT_TIP		BIT(1)
+#define OWL_UART_STAT_TFFU		BIT(6)
+#define OWL_UART_STAT_TRFL_MASK		(0x1f << 11)
+#define OWL_UART_STAT_UTBB		BIT(17)
+
+static inline void owl_uart_write(struct uart_port *port, u32 val, unsigned int off)
+{
+	writel(val, port->membase + off);
+}
+
+static inline u32 owl_uart_read(struct uart_port *port, unsigned int off)
+{
+	return readl(port->membase + off);
+}
+
+#ifdef CONFIG_SERIAL_OWL_CONSOLE
+
+static void owl_console_putchar(struct uart_port *port, int ch)
+{
+	if (!port->membase)
+		return;
+
+	while (owl_uart_read(port, OWL_UART_STAT) & OWL_UART_STAT_TFFU)
+		cpu_relax();
+
+	owl_uart_write(port, ch, OWL_UART_TXDAT);
+}
+
+static void owl_uart_port_write(struct uart_port *port, const char *s,
+				u_int count)
+{
+	u32 old_ctl, val;
+	unsigned long flags;
+	int locked;
+
+	local_irq_save(flags);
+
+	if (port->sysrq)
+		locked = 0;
+	else if (oops_in_progress)
+		locked = spin_trylock(&port->lock);
+	else {
+		spin_lock(&port->lock);
+		locked = 1;
+	}
+
+	old_ctl = owl_uart_read(port, OWL_UART_CTL);
+	val = old_ctl | OWL_UART_CTL_TRFS_TX;
+	/* disable IRQ */
+	val &= ~(OWL_UART_CTL_RXIE | OWL_UART_CTL_TXIE);
+	owl_uart_write(port, val, OWL_UART_CTL);
+
+	uart_console_write(port, s, count, owl_console_putchar);
+
+	/* wait until all contents have been sent out */
+	while (owl_uart_read(port, OWL_UART_STAT) & OWL_UART_STAT_TRFL_MASK)
+		cpu_relax();
+
+	/* clear IRQ pending */
+	val = owl_uart_read(port, OWL_UART_STAT);
+	val |= OWL_UART_STAT_TIP | OWL_UART_STAT_RIP;
+	owl_uart_write(port, val, OWL_UART_STAT);
+
+	owl_uart_write(port, old_ctl, OWL_UART_CTL);
+
+	if (locked)
+		spin_unlock(&port->lock);
+
+	local_irq_restore(flags);
+}
+
+static void owl_uart_early_console_write(struct console *co,
+					 const char *s,
+					 u_int count)
+{
+	struct earlycon_device *dev = co->data;
+
+	owl_uart_port_write(&dev->port, s, count);
+}
+
+static int __init
+owl_uart_early_console_setup(struct earlycon_device *device, const char *opt)
+{
+	if (!device->port.membase)
+		return -ENODEV;
+
+	device->con->write = owl_uart_early_console_write;
+
+	return 0;
+}
+OF_EARLYCON_DECLARE(owl, "actions,owl-uart",
+		    owl_uart_early_console_setup);
+
+#endif /* CONFIG_SERIAL_OWL_CONSOLE */
-- 
2.12.3

[toc] | [prev] | [next] | [standalone]


#1668724

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-19 04:20 +0200
Message-ID<tTUsi-4VS-17@gated-at.bofh.it>
In reply to#1668699
On Mon, Jun 19, 2017 at 03:24:44AM +0200, Andreas Färber wrote:
> Am 19.06.2017 um 03:16 schrieb Greg Kroah-Hartman:
> > On Sun, Jun 18, 2017 at 11:45:28PM +0200, Andreas Färber wrote:
> >> Greg,
> >>
> >> Am 06.06.2017 um 02:54 schrieb Andreas Färber:
> >>> This implements an earlycon for Actions Semi S500/S900 SoCs.
> >>>
> >>> Based on LeMaker linux-actions tree.
> >>>
> >>> Signed-off-by: Andreas Färber <afaerber@suse.de>
> >>
> >> The DT vendor prefix is applied to my linux-actions.git tree now, and
> >> the serial binding has been ack'ed by Rob.
> >>
> >> Is there anything keeping you from adding this patch, the preceding DT
> >> binding (08/28) and the following documentation patch (10/28) to your
> >> tree for 4.13?
> > 
> > Yeah, I don't have it in my queue anymore :)
> > 
> > Can you resend it just as a single patch?
> 
> Do you mean squash the documentation into this tty patch? As you wish.
> But the DT binding is supposed to be a separate patch - I can queue it
> in my tree if you prefer.

No, just send me what ever you want me to apply to my tree.  If you want
me to pick some random patch out of the middle of a series, um, that's a
bit hard for me to know what to do, right?

Make it very very obvious please :)

thanks,

greg k-h

[toc] | [prev] | [next] | [standalone]


#1668727

FromAndreas Färber <afaerber@suse.de>
Date2017-06-19 04:30 +0200
Message-ID<tTUBY-4Zs-5@gated-at.bofh.it>
In reply to#1668724
Am 19.06.2017 um 04:12 schrieb Greg Kroah-Hartman:
> On Mon, Jun 19, 2017 at 03:24:44AM +0200, Andreas Färber wrote:
>> Am 19.06.2017 um 03:16 schrieb Greg Kroah-Hartman:
>>> On Sun, Jun 18, 2017 at 11:45:28PM +0200, Andreas Färber wrote:
>>>> Am 06.06.2017 um 02:54 schrieb Andreas Färber:
>>>>> This implements an earlycon for Actions Semi S500/S900 SoCs.
>>>>>
>>>>> Based on LeMaker linux-actions tree.
>>>>>
>>>>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>>>>
>>>> The DT vendor prefix is applied to my linux-actions.git tree now, and
>>>> the serial binding has been ack'ed by Rob.
>>>>
>>>> Is there anything keeping you from adding this patch, the preceding DT
>>>> binding (08/28) and the following documentation patch (10/28) to your
>>>> tree for 4.13?
>>>
>>> Yeah, I don't have it in my queue anymore :)
>>>
>>> Can you resend it just as a single patch?
>>
>> Do you mean squash the documentation into this tty patch? As you wish.
>> But the DT binding is supposed to be a separate patch - I can queue it
>> in my tree if you prefer.
> 
> No, just send me what ever you want me to apply to my tree.  If you want
> me to pick some random patch out of the middle of a series, um, that's a
> bit hard for me to know what to do, right?

Well, I thought that would be obvious from subject, diff stat and CC...
Only dependencies were ARCH_ACTIONS and actions vendor prefix, which
should be in linux-next by tomorrow.

> 
> Make it very very obvious please :)

I already resent the now two patches as v5 with you as only To.

Thanks,
Andreas

-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web