Difference between revisions of "DESK-MX6-L/Pheripherals/GPIOs"

From DAVE Developer's Wiki
Jump to: navigation, search
Line 1: Line 1:
 
<section begin="History" />
 
<section begin="History" />
 
{| style="border-collapse:collapse; "
 
{| style="border-collapse:collapse; "
! colspan="4" style="width:100%; text-align:left" ; border-bottom:solid 2px #ededed" |History
+
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
 
|-  
 
|-  
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white" |Version
+
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|ID#
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white" |Issue Date
+
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white" |Notes
+
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
|-
 
|-
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |{{oldid|14083|1.0.0}}
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|{{oldid|14083|14083}}
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |Oct 2020
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|16/07/2021
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |First DESK release
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|First DESK release
 +
|-
 +
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |{{oldid|17005|17005}}
 +
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |03/03/2022
 +
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |DESK 3.0.0 release
 
|-
 
|-
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |2.0.0
 
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |Feb 2022
 
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |DESK 3.0.0 release
 
 
|}
 
|}
 
<section end="History" />
 
<section end="History" />

Revision as of 10:29, 5 September 2022

History
ID# Issue Date Notes

14083

16/07/2021 First DESK release

17005

03/03/2022 DESK 3.0.0 release


Peripheral GPIOs[edit | edit source]

i.MX6 can handle external pins in many different ways and most of them can be configured as GPIOs. When a pin is set as a GPIO, it is possible to read its value, change its direction or change output value directly from the shell.

Device tree configuration[edit | edit source]

Here below an example of device tree configuration for using the RS-485 GPIOs used on standard DAVE's kit for the AXEL Lite SOM:

From imx6q-sbcx-cb0012.dts:

    leds {
        compatible = "gpio-leds";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rs232_485_422_1>;

        rs232_485_422 {
            gpios = <&gpio7 13 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "default-on";
        };

        rs232_on {
            gpios = <&gpio5 29 GPIO_ACTIVE_LOW>;
            linux,default-trigger = "default-on";
        };
    };
};

From mx6qdl-sbcx-revb-common.dtsi:

    rs232_485_422 {
        pinctrl_rs232_485_422_1: pinctrl_rs232_485_422_grp-1 {
            fsl,pins = <
                MX6QDL_PAD_GPIO_18__GPIO7_IO13      0x1b0b1 /* UART5_485/232 */
                MX6QDL_PAD_CSI0_DAT11__GPIO5_IO29   0x1b0b1 /* UART5_ON */
            >;
        };
    };

Accessing the peripheral[edit | edit source]

Linux messages at boot time[edit | edit source]

With the previous leds configuration for the GPIOs, it is possible to find them on sysfs under /sys/class/leds sub-directory:

root@desk-mx6:~# ls -la /sys/class/leds/
total 0
drwxr-xr-x  2 root root 0 Apr  2  2020 .
drwxr-xr-x 54 root root 0 Apr  2  2020 ..
lrwxrwxrwx  1 root root 0 Apr  2  2020 mmc0:: -> ../../devices/soc0/soc/2100000.aips-bus/2190000.usdhc/leds/mmc0::
lrwxrwxrwx  1 root root 0 Apr  2  2020 mmc1:: -> ../../devices/soc0/soc/2100000.aips-bus/2194000.usdhc/leds/mmc1::
lrwxrwxrwx  1 root root 0 Apr  2  2020 rs232_485_422 -> ../../devices/soc0/leds/leds/rs232_485_422
lrwxrwxrwx  1 root root 0 Apr  2  2020 rs232_on -> ../../devices/soc0/leds/leds/rs232_on
root@desk-mx6:~#

Usage with sysfs[edit | edit source]

  • set EIM_D26 (MX6QDL_PAD_EIM_D26__GPIO3_IO26) as output GPIO
    • GPIO3_IO26 => (n-1)*32 + IO = (3-1)*32+26 = 90
root@desk-mx6:~# echo 90 > /sys/class/gpio/export
root@desk-mx6:~# echo out > /sys/class/gpio/gpio90/direction
root@desk-mx6:~# echo 1 > /sys/class/gpio/gpio90/value
root@desk-mx6:~#
  • set EIM_D27 (MX6QDL_PAD_EIM_D27__GPIO3_IO27) as input GPIO
root@desk-mx6:~# echo 91 > /sys/class/gpio/export
root@desk-mx6:~# echo in > /sys/class/gpio/gpio91/direction
root@desk-mx6:~# cat /sys/class/gpio/gpio91/value
1
root@desk-mx6:~#

Additional information[edit | edit source]

Information about GPIOs usage under sysfs directory https://www.kernel.org/doc/Documentation/gpio/sysfs.txt


Warning-icon.png sysfs GPIO ABI has been deprecated. See more inofrmation here about it. A character device access has to be used, more information here Warning-icon.png

Information about GPIOs library libgpiod - C library and tools - can be found on git.kernel.org