Allwinner A20 overlay for serial port

Manuel Bouyer <[email protected]>
Newsgroups gmane.os.netbsd.ports.arm
Message-ID <[email protected]>
[Resent, this didn't make it to the list - with the attachement inline
this time]

Hello
I'm trying to configure 2 extra UARTs on a A20 board, using a DTS
overlay (see attahced) The ports are configured at boot, but it seems
that the GPIO mux is not: the GPIO seems to both remain in input state
and I can't get chars in either directions.
With SUNXI_GPIO_DEBUG, I can see the GPIOs for UART0 (the console)
being configured but not for UART2 and UART5:
sunxigpio0: PB22 cfg 22002200 -> 22002200
sunxigpio0: PB23 cfg 22002200 -> 22002200
com0 at simplebus1: DesignWare APB UART, 64-byte FIFO
com0: console
com0: interrupting on GIC irq 33
com1 at simplebus1: DesignWare APB UART, 64-byte FIFO
com1: interrupting on GIC irq 35
com2 at simplebus1: DesignWare APB UART, 64-byte FIFO
com2: interrupting on GIC irq 50

(PB22 and PB23 are indeed what's configured in the dts for UART0).
I couldn't find how sunxi_gpio_setfunc() ends up being called when
a snps,dw-apb-uart device is found.

The i2c4 device configured in the same overlay is working (confirmed with
a device connected to the pins):
sunxigpio0: PI02 cfg 00000000 -> 00000300
sunxigpio0: PI03 cfg 00000300 -> 00003300
sunxitwi2 at simplebus1: Marvell TWSI controller
sunxitwi2: interrupting on GIC irq 121
iic2 at sunxitwi2: I2C bus

Any idea what could be missing here ?

I used extra UARTs on A20 boards in the past but it was before EFI and
overlays, and the device tree changed a bit since then


-- 
Manuel Bouyer <[email protected]>
     NetBSD: 26 ans d'experience feront toujours la difference
--

/*
 * Overlay for the controle board
 */

/dts-v1/;
/plugin/;

/ {
	compatible = "olimex,a20-olinuxino-lime2", "olimex,a20-olinuxino-lime2-emmc";

	fragment@0 {
		target = <&pio>;
		__overlay__ {
			i2c4_pins: i2c4-pins {
				pins = "PI2", "PI3";
				function = "i2c4";
			};
			uart2_pi_pins: uart2-pi-pins {
				pins = "PI18", "PI19";
				function = "uart2";
			};
			uart5_pi_pins: uart5-pi-pins {
				pins = "PI10", "PI11";
				function = "uart5";
			};
		};
	};

	fragment@1 {
		target = <&i2c4>;
		__overlay__ {
			pinctrl-names = "default";
			pinctrl-0 = <&i2c4_pins>;
			status = "okay";
		};
	};

	fragment@2 {
		target = <&uart2>;
		__overlay__ {
			pinctrl-names = "default";
			pinctrl-0 = <&uart2_pi_pins>;
			status = "okay";
		};
	};

	fragment@3 {
		target = <&uart5>;
		__overlay__ {
			pinctrl-names = "default";
			pinctrl-0 = <&uart5_pi_pins>;
			status = "okay";
		};
	};

};
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.