U-Boot UART Driver


U-Boot Configuration

For Zynq

CONFIG_DEBUG_UART_BASE=0xe0001000
CONFIG_DEBUG_UART_CLOCK=50000000
CONFIG_DEBUG_UART=y
CONFIG_DEBUG_UART_ZYNQ=y

For Zynqmp

CONFIG_DEBUG_UART_BASE=0xff000000
CONFIG_DEBUG_UART_CLOCK=100000000
CONFIG_DEBUG_UART=y
CONFIG_DEBUG_UART_ZYNQ=y
CONFIG_DEBUG_UART_ANNOUNCE=y


Device tree

For zynq

uart0: serial@e0000000 {
	compatible = "xlnx,xuartps", "cdns,uart-r1p8";
	status = "okay";
	clocks = <&clkc 23>, <&clkc 40>;
	clock-names = "uart_clk", "pclk";
	reg = <0xE0000000 0x1000>;
	interrupts = <0 27 4>;
};

uart1: serial@e0001000 {
	compatible = "xlnx,xuartps", "cdns,uart-r1p8";
	status = "okay";
	clocks = <&clkc 24>, <&clkc 41>;
	clock-names = "uart_clk", "pclk";
	reg = <0xE0001000 0x1000>;
	interrupts = <0 50 4>;
};


For Zynqmp

uart0: serial@ff000000 {
	u-boot,dm-pre-reloc;
	compatible = "cdns,uart-r1p12", "xlnx,xuartps";
	status = "okay";
	interrupt-parent = <&gic>;
	interrupts = <0 21 4>;
	reg = <0x0 0xff000000 0x0 0x1000>;
	clock-names = "uart_clk", "pclk";
	power-domains = <&zynqmp_firmware PD_UART_0>;
};

uart1: serial@ff010000 {
	u-boot,dm-pre-reloc;
	compatible = "cdns,uart-r1p12", "xlnx,xuartps";
	status = "okay";
	interrupt-parent = <&gic>;
	interrupts = <0 22 4>;
	reg = <0x0 0xff010000 0x0 0x1000>;
	clock-names = "uart_clk", "pclk";
	power-domains = <&zynqmp_firmware PD_UART_1>;
};


Test procedure

None