Hi Team,
We are using LSDK 18.09 for LS2088A custom board,
How we can add gpio in uboot dts and kernel dts to make gpio high and low. can we get example for this
Hello pradeep TG,
LS2088 platform could use GPIO driver for PowerPC architecture. In Linux Kernel, please configure "CONFIG_ARCH_LAYERSCAPE=y" then configure "CONFIG_GPIO_MPC8XXX=y" in Linux Kernel configuration file and rebuild Kernel image.
GPIO has already been defined in Linux Kernel dts file as the following.
gpio0: gpio@2300000 {
compatible = "fsl,ls2080a-gpio", "fsl,qoriq-gpio";
reg = <0x0 0x2300000 0x0 0x10000>;
interrupts = <0 36 0x4>; /* Level high type */
gpio-controller;
little-endian;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio1: gpio@2310000 {
compatible = "fsl,ls2080a-gpio", "fsl,qoriq-gpio";
reg = <0x0 0x2310000 0x0 0x10000>;
interrupts = <0 36 0x4>; /* Level high type */
gpio-controller;
little-endian;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio2: gpio@2320000 {
compatible = "fsl,ls2080a-gpio", "fsl,qoriq-gpio";
reg = <0x0 0x2320000 0x0 0x10000>;
interrupts = <0 37 0x4>; /* Level high type */
gpio-controller;
little-endian;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio3: gpio@2330000 {
compatible = "fsl,ls2080a-gpio", "fsl,qoriq-gpio";
reg = <0x0 0x2330000 0x0 0x10000>;
interrupts = <0 37 0x4>; /* Level high type */
gpio-controller;
little-endian;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
After boot up Linux system, you will get similar information as the following.
root@localhost:~# ls /sys/class/gpio/
export gpiochip384 gpiochip416 gpiochip448 gpiochip480 unexport
root@localhost:~# cat /sys/kernel/debug/gpio
GPIOs 384-415, parent: platform/2330000.gpio, 2330000.gpio:
GPIOs 416-447, parent: platform/2320000.gpio, 2320000.gpio:
GPIOs 448-479, parent: platform/2310000.gpio, 2310000.gpio:
GPIOs 480-511, parent: platform/2300000.gpio, 2300000.gpio:
GPIO424(416+8) corresponds with GPIO3_8, GPIO426(416+10) corresponds with GPIO3_10.
root@localhost:~# cd /sys/class/gpio/
root@localhost:/sys/class/gpio# echo 424 > export
root@localhost:/sys/class/gpio# echo 426 > export
root@localhost:/sys/class/gpio# ls
export gpio424 gpio426 gpiochip384 gpiochip416 gpiochip448 gpiochip480 unexport
root@localhost:/sys/class/gpio#
root@localhost:/sys/class/gpio# echo "out" > gpio424/direction
root@localhost:/sys/class/gpio# echo 1 > gpio424/value
root@localhost:/sys/class/gpio# ls gpio424/
active_low device direction edge subsystem uevent value
For more detailed information about GPIO on ARMv8 platforms, please refer to LS1043 GPIO support in Linux SDK .
Thanks,
Yiping