All GPIO pins becomes high in Recovery mode

Hi All,

I have noticed that all GPIO pin goes to high state during recovery mode.
Is it normal ? What is the recommendation to keep them in low while performing
recovery ?

Best regards

Hi @xdaco

Usually during recovery mode, the SOC will reset to serial bootloader mode and the Pins of the SOC will be in Reset state which is usually GPIO with 100k PD as described in the section 4.3 of the Datasheet of Colibri iMX7. There might be some pins which might be not configured as GPIO. Please check the section 4.4 of the Datasheet of Colibri iMX7 and further check also the Reference Manual of iMX7.

Best regards,
Jaski

Hi @jaski.tx

Thanks for your reply. So if I am not wrong, all these pins should be configured as GPIO in the bootloader itself . right ? I am using the Toradex Easy Installer recovery method. Once the bootloader loads the toradex easy installer, all the pins are pulled down. The problem arise for the period when it stays in the serial bootloader mode. Can you please guide me a little further on how to enable these pull down resistors in bootloader mode as well ? Else I have to use external pull down for all these GPIOs which I have used in my custom board.

Hi @xdaco

You are welcome.

So if I am not wrong, all these pins should be configured as GPIO in the bootloader itself . right ?

No, not all Pins. It depends on the Pins.

The problem arise for the period when it stays in the serial bootloader mode. Can you please guide me a little further on how to enable these pull down resistors in bootloader mode as well ?

This is controlled by SOC specific BOOTROM, this cannot be changed. You can only set the Pins once you started U-Boot or Linux Kernel.

Else I have to use external pull down for all these GPIOs which I have used in my custom board.

Can you please guide me a little further on how to enable these pull down resistors in bootloader mode as well ? Else I have to use external pull down for all these GPIOs which I have used in my custom board.

Can you tell us, which SODIMM Pins are you talking about?

Thanks and best regards,
Jaski

@jaski.tx

These are the pins which I am using as GPIO in device tree.

        MX7D_PAD_LCD_DATA00__GPIO3_IO5      0x14
        MX7D_PAD_LCD_DATA01__GPIO3_IO6      0x14
        MX7D_PAD_LCD_DATA02__GPIO3_IO7      0x14
        MX7D_PAD_LCD_DATA03__GPIO3_IO8      0x14
        MX7D_PAD_LCD_DATA04__GPIO3_IO9      0x14
        MX7D_PAD_LCD_DATA05__GPIO3_IO10     0x14
        MX7D_PAD_LCD_DATA06__GPIO3_IO11     0x14
        MX7D_PAD_LCD_DATA07__GPIO3_IO12     0x14
        MX7D_PAD_LCD_DATA08__GPIO3_IO13     0x14
        MX7D_PAD_LCD_DATA09__GPIO3_IO14     0x14
        MX7D_PAD_LCD_DATA10__GPIO3_IO15     0x14
        MX7D_PAD_LCD_DATA11__GPIO3_IO16     0x14
        MX7D_PAD_LCD_DATA12__GPIO3_IO17     0x14
        MX7D_PAD_LCD_DATA13__GPIO3_IO18     0x14
        MX7D_PAD_LCD_DATA14__GPIO3_IO19     0x14
        MX7D_PAD_LCD_DATA15__GPIO3_IO20     0x14
        MX7D_PAD_LCD_DATA16__GPIO3_IO21     0x14
        MX7D_PAD_LCD_DATA17__GPIO3_IO22     0x14
        MX7D_PAD_LCD_HSYNC__GPIO3_IO2       0x14
        MX7D_PAD_LCD_VSYNC__GPIO3_IO3       0x14

I am not using any lcd display in my device tree and these pins are purposed as GPIO . The problem goes away once the board is booted up completely.

My best guess is that these pins are configured as LCD data pins in Toradex Easy Installer. And then have not been configured with internal pull down.

Another observation is that pin MX7D_PAD_LCD_HSYNC__GPIO3_IO2 and MX7D_PAD_LCD_VSYNC__GPIO3_IO3 are taking much longer to be initialized as GPIO. These two pins are getting settled once the complete boot sequence is over. My guess is when uboot is active, these pin are being treated as LCD pins and uboot tries to initialize the display.

If this assumptions are correct, can you please guide me how to disable LCD pins inside uboot and Toradex Easy Installer?

Hi @xdaco

If you need to have specific level of GPIOs in recovery mode, then you should not rely on Software. Moreover you should design your custom carrier Board according to the requirement of your End System.

Being said that for changing the device tree of Toradex Easy Installer for the kernel please have a look at this answer.

Changing Pins in U-Boot for Toradex Easy Installer 1.8 would be more tricky, since you would need
compile U-Boot from the branch 2016.11 and from the git hash: 07edca0bb81857a339f26f3465d5c5602705a94d before changing this board file. The compiled U-boot binary, you can integrate in the Toradex Easy Installer Image.

Best regards,
Jaski

@jaski.tx

Thanks for your reply. In fact, we are using our own carrier board with our customized device tree.
I will have a loot at the Toradex Easy Installer device tree as you have suggested.

Ok, let us know your results.