Skip to contentSkip to conversation

Moving Uartlite to DM

PATCH New Michal Simek 1 participant 4 messages Dec 18, 2015

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

v3 cover Moving Uartlite to DM

Hi,

This patch series depends on microblaze cleanup series. All these patches will be available in
git://git.denx.de/u-boot-microblaze.git
also with patches which I am going to send now.

Thanks,
Michal

Changes in v3:
- Use BIT macros
- Fix logic in pending() for output direction
- Add static inline to _debug_uart_init

Changes in v2:
- Remove unneeded headers
- Use get_dev_addr instead of fdtdec_get_addr
- Use platdata instead of private data
- Add opb compatible string to be in sync with Linux
- Add binding documentation
- Add needed header from the first patch
- Remove WATCHDOG_RESET call
- Extend commit description

Michal Simek (3):
serial: uartlite: Move driver to DM
serial: uartlite: Add support for debug console
serial: uartlite: Add uartlite to Kconfig

 arch/microblaze/Kconfig                            |   1 +
 board/xilinx/microblaze-generic/xparameters.h      |   4 -
 configs/microblaze-generic_defconfig               |   3 +
 .../serial/xilinx_uartlite.txt                     |  13 ++
 doc/driver-model/serial-howto.txt                  |   1 -
 drivers/serial/Kconfig                             |  14 ++
 drivers/serial/serial_xuartlite.c                  | 194 +++++++++------------
 include/configs/microblaze-generic.h               |   7 +-
 8 files changed, 119 insertions(+), 118 deletions(-)
 create mode 100644 doc/device-tree-bindings/serial/xilinx_uartlite.txt
Signature · 1 line
1.9.1
#1 lore raw

PATCH v3 1/3 serial: uartlite: Move driver to DM

Enable SPL DM too.

---

Changes in v3:
- Use BIT macros
- Fix logic in pending() for output direction

Changes in v2:
- Remove unneeded headers
- Use get_dev_addr instead of fdtdec_get_addr
- Use platdata instead of private data
- Add opb compatible string to be in sync with Linux
- Add binding documentation

 arch/microblaze/Kconfig                            |   1 +
 configs/microblaze-generic_defconfig               |   2 +
 .../serial/xilinx_uartlite.txt                     |  13 ++
 doc/driver-model/serial-howto.txt                  |   1 -
 drivers/serial/serial_xuartlite.c                  | 176 ++++++++-------------
 5 files changed, 81 insertions(+), 112 deletions(-)
 create mode 100644 doc/device-tree-bindings/serial/xilinx_uartlite.txt
arch/microblaze/Kconfig +1 -0
index 604f6815af5b..30ea484f48aa 100644
@@ -13,6 +13,7 @@ config TARGET_MICROBLAZE_GENERIC
 	select SUPPORT_SPL
 	select OF_CONTROL
 	select DM
+	select DM_SERIAL
 
 endchoice
 
configs/microblaze-generic_defconfig +2 -0
index 54aa3ef3d26f..5df080b6a87c 100644
@@ -1,9 +1,11 @@
 CONFIG_MICROBLAZE=y
 CONFIG_SPL_SYS_MALLOC_SIMPLE=y
+CONFIG_SPL_DM=y
 CONFIG_TARGET_MICROBLAZE_GENERIC=y
 CONFIG_DEFAULT_DEVICE_TREE="microblaze-generic"
 CONFIG_SPL=y
 CONFIG_SYS_PROMPT="U-Boot-mONStR> "
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_SPL_OF_CONTROL=y
 CONFIG_OF_EMBED=y
doc/device-tree-bindings/serial/xilinx_uartlite.txt new file +13 -0
new file mode 100644
index 000000000000..d15753c8c380
@@ -0,0 +1,13 @@
+Binding for Xilinx Uartlite Controller
+
+Required properties:
+- compatible : should be "xlnx,xps-uartlite-1.00.a", or "xlnx,opb-uartlite-1.00.b"
+- reg: Should contain UART controller registers location and length.
+- interrupts: Should contain UART controller interrupts.
+
+Example:
+	serial at 40600000 {
+		compatible = "xlnx,xps-uartlite-1.00.a";
+		interrupts = <1 0>;
+		reg = <0x40600000 0x10000>;
+	};
doc/driver-model/serial-howto.txt +0 -1
index 76ad629ef9cb..381a2a084562 100644
@@ -18,7 +18,6 @@ is time for maintainers to start converting over the remaining serial drivers:
    serial_pxa.c
    serial_s3c24x0.c
    serial_sa1100.c
-   serial_xuartlite.c
    usbtty.c
 
 You should complete this by the end of January 2016.
drivers/serial/serial_xuartlite.c +65 -111

218 lines not on this page · raw message

Signature · 1 line
1.9.1
#2 lore raw

PATCH v3 2/3 serial: uartlite: Add support for debug console

In reply to Michal Simek

Add support for debug console.

---

Changes in v3:
- Add static inline to _debug_uart_init

Changes in v2:
- Add needed header from the first patch
- Remove WATCHDOG_RESET call
- Extend commit description

 drivers/serial/Kconfig            |  7 +++++++
 drivers/serial/serial_xuartlite.c | 26 ++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)
drivers/serial/Kconfig +7 -0
index 1fc287ee98ec..f1e221799b81 100644
@@ -92,6 +92,13 @@ config DEBUG_UART_S5P
 	  will need to provide parameters to make this work. The driver will
 	  be available until the real driver-model serial is running.
 
+config DEBUG_UART_UARTLITE
+	bool "Xilinx Uartlite"
+	help
+	  Select this to enable a debug UART using the serial_uartlite driver.
+	  You will need to provide parameters to make this work. The driver will
+	  be available until the real driver-model serial is running.
+
 config DEBUG_UART_ZYNQ
 	bool "Xilinx Zynq"
 	help
drivers/serial/serial_xuartlite.c +26 -0
index 157e14dedc4f..a2e930392571 100644
@@ -114,3 +114,29 @@ U_BOOT_DRIVER(serial_uartlite) = {
 	.ops	= &uartlite_serial_ops,
 	.flags = DM_FLAG_PRE_RELOC,
 };
+
+#ifdef CONFIG_DEBUG_UART_UARTLITE
+
+#include <debug_uart.h>
+
+static inline void _debug_uart_init(void)
+{
+	struct uartlite *regs = (struct uartlite *)CONFIG_DEBUG_UART_BASE;
+
+	out_be32(&regs->control, 0);
+	out_be32(&regs->control, ULITE_CONTROL_RST_RX | ULITE_CONTROL_RST_TX);
+	in_be32(&regs->control);
+}
+
+static inline void _debug_uart_putc(int ch)
+{
+	struct uartlite *regs = (struct uartlite *)CONFIG_DEBUG_UART_BASE;
+
+	while (in_be32(&regs->status) & SR_TX_FIFO_FULL)
+		;
+
+	out_be32(&regs->tx_fifo, ch & 0xff);
+}
+
+DEBUG_UART_FUNCS
+#endif
Signature · 1 line
1.9.1
#3 lore raw

PATCH v3 3/3 serial: uartlite: Add uartlite to Kconfig

In reply to Michal Simek

- Move config option out of board file.
- Remove uartlite address from config file

---

Changes in v3: None
Changes in v2: None

 board/xilinx/microblaze-generic/xparameters.h | 4 ----
 configs/microblaze-generic_defconfig          | 1 +
 drivers/serial/Kconfig                        | 7 +++++++
 include/configs/microblaze-generic.h          | 7 +------
 4 files changed, 9 insertions(+), 10 deletions(-)
board/xilinx/microblaze-generic/xparameters.h +0 -4
index 8ba146cb88db..11b3c9a4846e 100644
@@ -28,10 +28,6 @@
 #define XILINX_TIMER_BASEADDR	0x41c00000
 #define XILINX_TIMER_IRQ	0
 
-/* Uart pheriphery is RS232_Uart */
-#define XILINX_UARTLITE_BASEADDR	0x40600000
-#define XILINX_UARTLITE_BAUDRATE	115200
-
 /* IIC pheriphery is IIC_EEPROM */
 #define XILINX_IIC_0_BASEADDR	0x40800000
 #define XILINX_IIC_0_FREQ	100000
configs/microblaze-generic_defconfig +1 -0
index 5df080b6a87c..9a7bb915466f 100644
@@ -9,3 +9,4 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_SPL_OF_CONTROL=y
 CONFIG_OF_EMBED=y
+CONFIG_XILINX_UARTLITE=y
drivers/serial/Kconfig +7 -0
index f1e221799b81..ddf49ba9cef3 100644
@@ -230,4 +230,11 @@ config UNIPHIER_SERIAL
 	  If you have a UniPhier based board and want to use the on-chip
 	  serial ports, say Y to this option. If unsure, say N.
 
+config XILINX_UARTLITE
+	bool "Xilinx Uarlite support"
+	depends on DM_SERIAL && (MICROBLAZE || ARCH_ZYNQ || ARCH_ZYNQMP)
+	help
+	  If you have a Xilinx based board and want to use the uartlite
+	  serial ports, say Y to this option. If unsure, say N.
+
 endmenu
include/configs/microblaze-generic.h +1 -6
index 10ac8328b8ff..6e3c80b14350 100644
@@ -37,10 +37,7 @@
 # define CONFIG_SYS_BAUDRATE_TABLE \
 	{300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400}
 
-#ifdef XILINX_UARTLITE_BASEADDR
-# define CONFIG_XILINX_UARTLITE
-# define CONFIG_SERIAL_BASE	XILINX_UARTLITE_BASEADDR
-#elif XILINX_UART16550_BASEADDR
+#if XILINX_UART16550_BASEADDR
 # define CONFIG_SYS_NS16550_SERIAL
 # if defined(__MICROBLAZEEL__)
 #  define CONFIG_SYS_NS16550_REG_SIZE	-4
@@ -51,8 +48,6 @@
 # define CONFIG_SYS_NS16550_COM1 \
 		((XILINX_UART16550_BASEADDR & ~0xF) + 0x1000)
 # define CONFIG_SYS_NS16550_CLK	XILINX_UART16550_CLOCK_HZ
-#else
-# error Undefined uart
 #endif
 
 /* setting reset address */
Signature · 1 line
1.9.1