Colibri iMX6DL - GPIO issue

Hi toradex community,

I’m having an issue with one specific GPIO on my Colibri iMX6DL board: MX6QDL_PAD_EIM_D19__GPIO3_IO19
I also do have about 15 other GPIO pins configured that I can control, but not this one.

        #include <dt-bindings/gpio/gpio.h>
        #include <dt-bindings/leds/common.h>
        #include "imx6dl.dtsi"
        #include "imx6qdl-colibri.dtsi"

         
       ...
       ...
      &uart1 {
          status = "disabled";
      };
      ...
      ...
	pinctrl_gpio3 {
		fsl,pins = <
			MX6QDL_PAD_EIM_D24__GPIO3_IO24 0x10b0 /* RF_IO_3 */
			MX6QDL_PAD_EIM_D25__GPIO3_IO25 0x10b0 /* RF_IO_1 */
			MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x10b0 /* RF_IO_2 */
			MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x10b0 /* RF_SLF_TST */
			MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x10b0 /* RF_RST */
		>;
	};

the MX6QDL_PAD_EIM_D19__GPIO3_IO19 is not being used anywhere else in the device tree.
This is what I get after boot:

root@colibri-imx6dl-emmc-runwise-11370867:~# gpioinfo | grep SODIMM_25
        line  19:  "SODIMM_25"       unused   input  active-high
root@colibri-imx6dl-emmc-runwise-11370867:~#

It is configured exactly as I expected. I can set it as output and toggle this pin using gpiod or sysfs and see it changing, but not electrically. Even if I remove the components connected to it and leave the SODIMM25 pin electrically floating, It is always set in a voltage close to 0V (not 0V, just close to it)
I am using gpio83 via sysfs, and as I said I am able to control all the other pins except this one.

I don’t really understand what I’m missing here. Could this be in use by the uart? I have it disabled on my device tree and I even tried removing the imx6qdl-colibri include. I always get the same behaviour.

Any suggestion?

Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


Hello,

It seems you’re encountering an issue with the GPIO pin MX6QDL_PAD_EIM_D19__GPIO3_IO19 on your Colibri iMX6DL board, where it is not behaving as expected electrically, despite being controllable via software. Here are a few steps to help troubleshoot and resolve this issue:

  1. Device Tree Configuration: Double-check your device tree configuration to ensure that the pin is correctly set as a GPIO. Make sure there are no conflicting settings that might be overriding your configuration. Since you mentioned disabling UART, ensure that the pin is not being used by any other peripheral or function.

  2. Pin Muxing: Verify that the pin is correctly muxed as a GPIO in the device tree. Incorrect pin muxing can lead to the pin not functioning as expected. Ensure that the pin is not being used by any other function in the system.

  3. Use of libgpiod: Since the sysfs interface is deprecated, consider using the libgpiod tools for GPIO control. This can provide more reliable and modern control over GPIO pins. You can use commands like gpioset to set the pin state and gpioget to read it.

  4. Electrical Connections: While focusing on software, ensure that your device tree and software configurations are correct, as these can affect the pin’s behavior. If possible, measure the voltage directly at the pin to confirm its state.

By following these steps, you should be able to identify and resolve the issue with the GPIO pin. If the problem persists, further investigation into the software configuration may be necessary.

Best regards,
Toradex AI Assistant

Please, also check if these links can help you solve your problem:

GPIO configuration on IMX.6.

unfortunately this does not help

The MX6QDL_PAD_EIM_D19 corresponds to Colibri iMX6 X1 pin 25, whose primary function is UART_A_CTS. By default, UART_A is configured as the Debug UART (Serial Console), and we do not recommend using UART_A for any other purpose. Please try to choose any other unused X1 pin as a GPIO.