* [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART
@ 2017-01-05 18:54 David Lechner
2017-01-05 18:54 ` [PATCH v3 1/4] doc: DT: Add ti,da830-uart to serial/8250 bindings David Lechner
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: David Lechner @ 2017-01-05 18:54 UTC (permalink / raw)
To: Greg Kroah-Hartman, Sekhar Nori, Santosh Shilimkar
Cc: David Lechner, Franklin S Cooper Jr, Rob Herring, Mark Rutland,
Kevin Hilman, Axel Haslam, Alexandre Bailon, Bartosz Golaszewski,
Jiri Slaby, linux-serial-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
This series adds a new UART port type for TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x
UART. These SoCs have a non-standard register for UART power management that
needs special handling in the UART driver.
Greg, the first two patches will need to go through your tree. Sekhar and
Santosh will pick up the 3 and 4 patches respectively.
v3 changes:
* Shortened list of SoCs to "DA8xx/66AK2x"
v2 changes:
* Added references to C66x SoC in various places, which I assume is an OK
shorthand for TI Keystone processors.
* New patch for Keystone device tree. This is untested as I don't have any
Keystone boards.
David Lechner (4):
doc: DT: Add ti,da830-uart to serial/8250 bindings
serial: 8250: Add new port type for TI DA8xx/66AK2x
ARM: da850: Add ti,da830-uart compatible for serial ports
ARM: dts: keystone: Add "ti,da830-uart" compatible string
Documentation/devicetree/bindings/serial/8250.txt | 1 +
arch/arm/boot/dts/da850.dtsi | 9 ++++++---
arch/arm/boot/dts/keystone-k2g.dtsi | 2 +-
arch/arm/boot/dts/keystone-k2l.dtsi | 4 ++--
arch/arm/boot/dts/keystone.dtsi | 4 ++--
drivers/tty/serial/8250/8250_of.c | 1 +
drivers/tty/serial/8250/8250_port.c | 22 ++++++++++++++++++++++
include/uapi/linux/serial_core.h | 3 ++-
include/uapi/linux/serial_reg.h | 8 ++++++++
9 files changed, 45 insertions(+), 9 deletions(-)
--
2.7.4
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v3 1/4] doc: DT: Add ti,da830-uart to serial/8250 bindings 2017-01-05 18:54 [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART David Lechner @ 2017-01-05 18:54 ` David Lechner [not found] ` <1483642460-6891-1-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org> ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: David Lechner @ 2017-01-05 18:54 UTC (permalink / raw) To: Greg Kroah-Hartman, Sekhar Nori, Santosh Shilimkar Cc: David Lechner, Franklin S Cooper Jr, Rob Herring, Mark Rutland, Kevin Hilman, Axel Haslam, Alexandre Bailon, Bartosz Golaszewski, Jiri Slaby, linux-serial, devicetree, linux-kernel, linux-arm-kernel This adds the ti,da830-uart compatible string to serial 8250 UART bindings. Signed-off-by: David Lechner <david@lechnology.com> Acked-by: Rob Herring <robh@kernel.org> --- v3 changes: * None v2 changes: * picked up Acked-by: Documentation/devicetree/bindings/serial/8250.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/serial/8250.txt b/Documentation/devicetree/bindings/serial/8250.txt index f86bb06..10276a4 100644 --- a/Documentation/devicetree/bindings/serial/8250.txt +++ b/Documentation/devicetree/bindings/serial/8250.txt @@ -19,6 +19,7 @@ Required properties: - "altr,16550-FIFO128" - "fsl,16550-FIFO64" - "fsl,ns16550" + - "ti,da830-uart" - "serial" if the port type is unknown. - reg : offset and length of the register set for the device. - interrupts : should contain uart interrupt. -- 2.7.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <1483642460-6891-1-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org>]
* [PATCH v3 2/4] serial: 8250: Add new port type for TI DA8xx/66AK2x [not found] ` <1483642460-6891-1-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org> @ 2017-01-05 18:54 ` David Lechner 0 siblings, 0 replies; 6+ messages in thread From: David Lechner @ 2017-01-05 18:54 UTC (permalink / raw) To: Greg Kroah-Hartman, Sekhar Nori, Santosh Shilimkar Cc: David Lechner, Franklin S Cooper Jr, Rob Herring, Mark Rutland, Kevin Hilman, Axel Haslam, Alexandre Bailon, Bartosz Golaszewski, Jiri Slaby, linux-serial-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r This adds a new UART port type for TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x. These SoCs have standard 8250 registers plus some extra non-standard registers. The UART will not function unless the non-standard Power and Emulation Management Register (PWREMU_MGMT) is configured correctly. This is currently handled in arch/arm/mach-davinci/serial.c for non-device-tree boards. Making this part of the UART driver will allow UART to work on device-tree boards as well and the mach code can eventually be removed. Signed-off-by: David Lechner <david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org> Acked-by: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org> --- v3 changes: * Changed list of SoCs to "DA8xx/66AK2x" v2 changes: * Added C66x to list of SoCs drivers/tty/serial/8250/8250_of.c | 1 + drivers/tty/serial/8250/8250_port.c | 22 ++++++++++++++++++++++ include/uapi/linux/serial_core.h | 3 ++- include/uapi/linux/serial_reg.h | 8 ++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/8250/8250_of.c b/drivers/tty/serial/8250/8250_of.c index d25ab1c..5281252 100644 --- a/drivers/tty/serial/8250/8250_of.c +++ b/drivers/tty/serial/8250/8250_of.c @@ -332,6 +332,7 @@ static const struct of_device_id of_platform_serial_table[] = { .data = (void *)PORT_ALTR_16550_F128, }, { .compatible = "mrvl,mmp-uart", .data = (void *)PORT_XSCALE, }, + { .compatible = "ti,da830-uart", .data = (void *)PORT_DA830, }, { /* end of list */ }, }; MODULE_DEVICE_TABLE(of, of_platform_serial_table); diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index fe4399b..3f0c994 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -273,6 +273,15 @@ static const struct serial8250_config uart_config[] = { .rxtrig_bytes = {1, 4, 8, 14}, .flags = UART_CAP_FIFO, }, + [PORT_DA830] = { + .name = "TI DA8xx/66AK2x", + .fifo_size = 16, + .tx_loadsz = 16, + .fcr = UART_FCR_DMA_SELECT | UART_FCR_ENABLE_FIFO | + UART_FCR_R_TRIG_10, + .rxtrig_bytes = {1, 4, 8, 14}, + .flags = UART_CAP_FIFO | UART_CAP_AFE, + }, }; /* Uart divisor latch read */ @@ -2118,6 +2127,19 @@ int serial8250_do_startup(struct uart_port *port) serial_port_out(port, UART_LCR, 0); } + if (port->type == PORT_DA830) { + /* Reset the port */ + serial_port_out(port, UART_IER, 0); + serial_port_out(port, UART_DA830_PWREMU_MGMT, 0); + mdelay(10); + + /* Enable Tx, Rx and free run mode */ + serial_port_out(port, UART_DA830_PWREMU_MGMT, + UART_DA830_PWREMU_MGMT_UTRST | + UART_DA830_PWREMU_MGMT_URRST | + UART_DA830_PWREMU_MGMT_FREE); + } + #ifdef CONFIG_SERIAL_8250_RSA /* * If this is an RSA port, see if we can kick it up to the diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h index 99dbed8..9ec741b 100644 --- a/include/uapi/linux/serial_core.h +++ b/include/uapi/linux/serial_core.h @@ -56,7 +56,8 @@ #define PORT_ALTR_16550_F128 28 /* Altera 16550 UART with 128 FIFOs */ #define PORT_RT2880 29 /* Ralink RT2880 internal UART */ #define PORT_16550A_FSL64 30 /* Freescale 16550 UART with 64 FIFOs */ -#define PORT_MAX_8250 30 /* max port ID */ +#define PORT_DA830 31 /* TI DA8xx/66AK2x */ +#define PORT_MAX_8250 31 /* max port ID */ /* * ARM specific type numbers. These are not currently guaranteed diff --git a/include/uapi/linux/serial_reg.h b/include/uapi/linux/serial_reg.h index b4c0484..274d8fc 100644 --- a/include/uapi/linux/serial_reg.h +++ b/include/uapi/linux/serial_reg.h @@ -327,6 +327,14 @@ #define SERIAL_RSA_BAUD_BASE (921600) #define SERIAL_RSA_BAUD_BASE_LO (SERIAL_RSA_BAUD_BASE / 8) +/* Extra registers for TI DA8xx/66AK2x */ +#define UART_DA830_PWREMU_MGMT 12 + +/* PWREMU_MGMT register bits */ +#define UART_DA830_PWREMU_MGMT_FREE (1 << 0) /* Free-running mode */ +#define UART_DA830_PWREMU_MGMT_URRST (1 << 13) /* Receiver reset/enable */ +#define UART_DA830_PWREMU_MGMT_UTRST (1 << 14) /* Transmitter reset/enable */ + /* * Extra serial register definitions for the internal UARTs * in TI OMAP processors. -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 3/4] ARM: da850: Add ti,da830-uart compatible for serial ports 2017-01-05 18:54 [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART David Lechner 2017-01-05 18:54 ` [PATCH v3 1/4] doc: DT: Add ti,da830-uart to serial/8250 bindings David Lechner [not found] ` <1483642460-6891-1-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org> @ 2017-01-05 18:54 ` David Lechner 2017-01-05 18:54 ` [PATCH v3 4/4] ARM: dts: keystone: Add "ti,da830-uart" compatible string David Lechner 2017-01-11 8:06 ` [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART Greg Kroah-Hartman 4 siblings, 0 replies; 6+ messages in thread From: David Lechner @ 2017-01-05 18:54 UTC (permalink / raw) To: Greg Kroah-Hartman, Sekhar Nori, Santosh Shilimkar Cc: David Lechner, Franklin S Cooper Jr, Rob Herring, Mark Rutland, Kevin Hilman, Axel Haslam, Alexandre Bailon, Bartosz Golaszewski, Jiri Slaby, linux-serial, devicetree, linux-kernel, linux-arm-kernel TI DA8xx/OMAPL13x/AM17xx/AM18xx SoCs have extra UART registers beyond the standard 8250 registers, so we need a new compatible string to indicate this. Also, at least one of these registers uses the full 32 bits, so we need to specify reg-io-width in addition to reg-shift. "ns16550a" is left in the compatible specification since it does work as long as the bootloader configures the SoC UART power management registers. Signed-off-by: David Lechner <david@lechnology.com> --- v3 changes: * None v2 changes: * None arch/arm/boot/dts/da850.dtsi | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi index 104155d..f6cd212 100644 --- a/arch/arm/boot/dts/da850.dtsi +++ b/arch/arm/boot/dts/da850.dtsi @@ -266,22 +266,25 @@ interrupt-names = "edm3_tcerrint"; }; serial0: serial@42000 { - compatible = "ns16550a"; + compatible = "ti,da830-uart", "ns16550a"; reg = <0x42000 0x100>; + reg-io-width = <4>; reg-shift = <2>; interrupts = <25>; status = "disabled"; }; serial1: serial@10c000 { - compatible = "ns16550a"; + compatible = "ti,da830-uart", "ns16550a"; reg = <0x10c000 0x100>; + reg-io-width = <4>; reg-shift = <2>; interrupts = <53>; status = "disabled"; }; serial2: serial@10d000 { - compatible = "ns16550a"; + compatible = "ti,da830-uart", "ns16550a"; reg = <0x10d000 0x100>; + reg-io-width = <4>; reg-shift = <2>; interrupts = <61>; status = "disabled"; -- 2.7.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 4/4] ARM: dts: keystone: Add "ti,da830-uart" compatible string 2017-01-05 18:54 [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART David Lechner ` (2 preceding siblings ...) 2017-01-05 18:54 ` [PATCH v3 3/4] ARM: da850: Add ti,da830-uart compatible for serial ports David Lechner @ 2017-01-05 18:54 ` David Lechner 2017-01-11 8:06 ` [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART Greg Kroah-Hartman 4 siblings, 0 replies; 6+ messages in thread From: David Lechner @ 2017-01-05 18:54 UTC (permalink / raw) To: Greg Kroah-Hartman, Sekhar Nori, Santosh Shilimkar Cc: David Lechner, Franklin S Cooper Jr, Rob Herring, Mark Rutland, Kevin Hilman, Axel Haslam, Alexandre Bailon, Bartosz Golaszewski, Jiri Slaby, linux-serial, devicetree, linux-kernel, linux-arm-kernel The TI Keystone SoCs have extra UART registers beyond the standard 8250 registers, so we need a new compatible string to indicate this. Also, at least one of these registers uses the full 32 bits, so we need to specify reg-io-width in addition to reg-shift. "ns16550a" is left in the compatible specification since it does work as long as the bootloader configures the SoC UART power management registers. Signed-off-by: David Lechner <david@lechnology.com> --- v3 changes: * None v2 changes: * This is a new patch in v2 arch/arm/boot/dts/keystone-k2g.dtsi | 2 +- arch/arm/boot/dts/keystone-k2l.dtsi | 4 ++-- arch/arm/boot/dts/keystone.dtsi | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm/boot/dts/keystone-k2g.dtsi b/arch/arm/boot/dts/keystone-k2g.dtsi index 63c7cf0c..7d7b9a8 100644 --- a/arch/arm/boot/dts/keystone-k2g.dtsi +++ b/arch/arm/boot/dts/keystone-k2g.dtsi @@ -90,7 +90,7 @@ }; uart0: serial@02530c00 { - compatible = "ns16550a"; + compatible = "ti,da830-uart", "ns16550a"; current-speed = <115200>; reg-shift = <2>; reg-io-width = <4>; diff --git a/arch/arm/boot/dts/keystone-k2l.dtsi b/arch/arm/boot/dts/keystone-k2l.dtsi index 0c5e74e..e91633f 100644 --- a/arch/arm/boot/dts/keystone-k2l.dtsi +++ b/arch/arm/boot/dts/keystone-k2l.dtsi @@ -35,7 +35,7 @@ /include/ "keystone-k2l-clocks.dtsi" uart2: serial@02348400 { - compatible = "ns16550a"; + compatible = "ti,da830-uart", "ns16550a"; current-speed = <115200>; reg-shift = <2>; reg-io-width = <4>; @@ -45,7 +45,7 @@ }; uart3: serial@02348800 { - compatible = "ns16550a"; + compatible = "ti,da830-uart", "ns16550a"; current-speed = <115200>; reg-shift = <2>; reg-io-width = <4>; diff --git a/arch/arm/boot/dts/keystone.dtsi b/arch/arm/boot/dts/keystone.dtsi index 02708ba..9152610 100644 --- a/arch/arm/boot/dts/keystone.dtsi +++ b/arch/arm/boot/dts/keystone.dtsi @@ -98,7 +98,7 @@ /include/ "keystone-clocks.dtsi" uart0: serial@02530c00 { - compatible = "ns16550a"; + compatible = "ti,da830-uart", "ns16550a"; current-speed = <115200>; reg-shift = <2>; reg-io-width = <4>; @@ -108,7 +108,7 @@ }; uart1: serial@02531000 { - compatible = "ns16550a"; + compatible = "ti,da830-uart", "ns16550a"; current-speed = <115200>; reg-shift = <2>; reg-io-width = <4>; -- 2.7.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART 2017-01-05 18:54 [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART David Lechner ` (3 preceding siblings ...) 2017-01-05 18:54 ` [PATCH v3 4/4] ARM: dts: keystone: Add "ti,da830-uart" compatible string David Lechner @ 2017-01-11 8:06 ` Greg Kroah-Hartman 4 siblings, 0 replies; 6+ messages in thread From: Greg Kroah-Hartman @ 2017-01-11 8:06 UTC (permalink / raw) To: David Lechner Cc: Mark Rutland, devicetree, Axel Haslam, Kevin Hilman, Jiri Slaby, Sekhar Nori, linux-kernel, Bartosz Golaszewski, Rob Herring, Alexandre Bailon, linux-serial, Santosh Shilimkar, Franklin S Cooper Jr, linux-arm-kernel On Thu, Jan 05, 2017 at 12:54:16PM -0600, David Lechner wrote: > This series adds a new UART port type for TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x > UART. These SoCs have a non-standard register for UART power management that > needs special handling in the UART driver. > > Greg, the first two patches will need to go through your tree. Sekhar and > Santosh will pick up the 3 and 4 patches respectively. Ok, I've now taken those two. thanks, greg k-h ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-01-11 8:06 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-05 18:54 [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART David Lechner
2017-01-05 18:54 ` [PATCH v3 1/4] doc: DT: Add ti,da830-uart to serial/8250 bindings David Lechner
[not found] ` <1483642460-6891-1-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org>
2017-01-05 18:54 ` [PATCH v3 2/4] serial: 8250: Add new port type for TI DA8xx/66AK2x David Lechner
2017-01-05 18:54 ` [PATCH v3 3/4] ARM: da850: Add ti,da830-uart compatible for serial ports David Lechner
2017-01-05 18:54 ` [PATCH v3 4/4] ARM: dts: keystone: Add "ti,da830-uart" compatible string David Lechner
2017-01-11 8:06 ` [PATCH v3 0/4] TI DA8xx/OMAPL13x/AM17xx/AM18xx/66AK2x UART Greg Kroah-Hartman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).