Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: sun4i: Allow to use the PH6 pin for GPIO on pcDuino1/2

The pcDuino1 board does not use any power switches at all for its
two USB host ports and the VBUS pins are always connected to 5V.

The pcDuino2 board uses the RT9701GB power switch for its single
USB host port, but the USB_EN pin (PD2) is pulled up with a 10K
resistor. So that the USB power is still enabled by default,
resulting in the same behaviour as pcDuino1 if nobody touches
the PD2 pin. This minor difference is going to be handled in a
follow-up patch, introducing a separate dts file for pcDuino2.

The primary reason for this fix is that the current dts file
unnecessarily meddles with the PH3 and PH6 pins. But the PH6 pin
is available on the Arduino-compatible expansion header and may
have a better use for other purposes. This patch fixes the
problem and now the PH6 pin can be used with the GPIO sysfs
interface. Tested on a pcDuino2 board with a multimeter:

echo 230 > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio230/direction
echo 0 > /sys/class/gpio/gpio230/value
echo 1 > /sys/class/gpio/gpio230/value

USB still works as expected too.

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>

authored by

Siarhei Siamashka and committed by
Maxime Ripard
96521b72 dcfd8443

+2 -10
+2 -10
arch/arm/boot/dts/sun4i-a10-pcduino.dts
··· 180 180 }; 181 181 }; 182 182 183 - &reg_usb1_vbus { 184 - status = "okay"; 185 - }; 186 - 187 - &reg_usb2_vbus { 188 - status = "okay"; 189 - }; 190 - 191 183 #include "axp209.dtsi" 192 184 193 185 &reg_dcdc2 { ··· 214 222 }; 215 223 216 224 &usbphy { 217 - usb1_vbus-supply = <&reg_usb1_vbus>; 218 - usb2_vbus-supply = <&reg_usb2_vbus>; 225 + usb1_vbus-supply = <&reg_vcc5v0>; /* USB1 VBUS is always on */ 226 + usb2_vbus-supply = <&reg_vcc5v0>; /* USB2 VBUS is always on */ 219 227 status = "okay"; 220 228 };