Easy Installer drives high some pins unexpectedly

Easy Installer is a tool that allows installing TEZI images on SoMs.

To do this, some hardware peripherals are necessary and are properly initialized (video, ethernet, USB, …).

We should consider that the SoM is mounted on a customer carrier board where a lot of hardware peripherals can be used and connected to physical hardware.

I’ve designed my carrier board so that all the “potentially dangerous” pins have proper pull-up or pull-down resistors so that they’re keep to a safe state during reset or when not explicitly driven.

But I’ve just found that Easy Installer drives high some pins unexpectedly (i.e., pins not related to a hardware peripheral needed by Easy Installer to work).

And I thinkl that this is not acceptable, because the official Easy Installer should not drive high hardware pins withotu any reason (maybe a dts or a recipe copied from somewhere).

This is the list of pins driven high for Verdin iMX8MP:

  • PIN 21=>GPIO4_IO28
  • PIN 141=> GPIO2_IO7
  • PIN 143=> GPIO2_IO6
  • PIN 252=>GPIO4_IO0
  • PIN 210=> GPIO_IO5
  • PIN 244=> GPIO4_IO19

Can you fix this and release a new Easy Installer, please?

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


I understand your concern about unexpected GPIO pin behavior during Easy Installer operation on your custom carrier board. This is indeed an important consideration for custom carrier board designs.

Based on the available documentation, you have a few options to address this issue:

Creating a Custom Easy Installer Image

You can modify the Toradex Easy Installer image to better suit your custom carrier board requirements(1). The process involves:

  1. Extract the existing Easy Installer image to examine and modify the device tree configuration
  2. Create custom device tree modifications to set appropriate pin states
  3. Repack the image with your modifications

The documentation shows that you can extract images using the dumpimage command and modify the device tree files to control pin behavior(1).

Pin Control and Multiplexing

According to the Verdin iMX8M Plus datasheet, each pin has configurable settings through the Pad Mux Register (IOMUXC_SW_MUX_CTL_PAD_x) and Pad Control Register (IOMUXC_SW_PAD_CTL_PAD_x)(2). These registers allow you to configure:

  • Pull-up/pull-down resistors (PE, PUE bits)
  • Drive strength (DSE bits)
  • Pin multiplexing (MUX_MODE bits)

The datasheet specifically mentions: “For most pins, the ALT5 multiplexing option is reserved for the GPIO function”(2).

Device Tree Overlay Approach

You can also create device tree overlays to override the default pin configurations(3). This approach allows you to:

  1. Define custom pin control nodes to set safe states for unused pins
  2. Apply overlays during boot to ensure proper pin initialization
  3. Use TorizonCore Builder to integrate your modifications

Recommended Solution

For your custom carrier board, I recommend:

  1. Create a custom Easy Installer image with modified device tree settings for your specific pin requirements
  2. Use the device tree overlay approach to explicitly configure the pins you mentioned to safe states
  3. Implement proper pin control settings in your device tree to ensure consistent behavior

The pin control registers allow you to set pull-up or pull-down resistors and control drive strength, which should address your safety concerns(2).

Since this involves modifying the Easy Installer for your specific custom carrier board design, you’ll need to create your own customized version rather than requesting changes to the official release, as the official Easy Installer is designed to work with standard Toradex carrier boards.

Best regards,
Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Some weeks have passed since I opened this topic.

Can someone human answer, please?

Based on the available documentation, your concern about Easy Installer driving pins unexpectedly high is valid for custom carrier board designs. Here’s what I can provide based on the available information:

Understanding Pin Control on Verdin iMX8M Plus

The issue you’re experiencing relates to device tree pin configurations that control GPIO behavior. The pins you mentioned (GPIO4_IO28, GPIO2_IO7, etc.) are being configured through device tree settings that may not be appropriate for your custom carrier board(1).

Device Tree Overlay Solution

You can create a device tree overlay to explicitly control these pin states. Here’s the general approach based on the documentation(1):

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include "imx8mp-pinfunc.h"

/ {
    compatible = "toradex,verdin-imx8mp";
};

&iomuxc {
    pinctrl_safe_pins: safe_pins_grp {
        fsl,pins = <
            /* Configure your specific pins with safe states */
            /* Example for one of your pins - adjust according to your needs */
            MX8MP_IOMUXC_GPIO4_IO28__GPIO4_IO28 0x184  /* Pull-down */
        >;
    };
};

Pin Configuration Values

For safe pin states, you can use these configuration values(2):

  • 0x1c4 for weak pull-up
  • 0x184 for weak pull-down
  • 0x0F for basic configuration (though this may set reserved bits)

Resolving Pin Conflicts

When configuring pins as GPIO, you must disable any conflicting interfaces. For example, if a pin is used by UART, you need to disable that UART node(2):

&uart1 {
    status = "disabled";
};

Implementation Steps

  1. Identify the current pin usage in the Easy Installer device tree
  2. Create a device tree overlay that configures your specific pins to safe states
  3. Build and apply the overlay to your Easy Installer image
  4. Test the configuration to ensure pins remain in safe states

The documentation shows that pin multiplexing can be controlled through device tree overlays, allowing you to override default configurations that may be inappropriate for your custom hardware design(1)(2).

Since this involves modifying Easy Installer behavior for your specific custom carrier board, you’ll need to create a customized version with appropriate device tree modifications rather than expecting changes to the standard release.

Best regards,
Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

@vix
Do you mind revealing the version(s) of TEZI affected by the reported issue?

Hi @alex.tx

I tried both versions 6.8.1 and 7.2 and they behave in the same way.

  • PIN 21=>GPIO4_IO28 - Verdin GPIO_10_DSI AKA DSI_1_BKL_EN;Displaybacklightenable also used to enable DSI to HDMI adapter. Required for TEZI GUI
  • PIN 141=> GPIO2_IO7 - Verdin UART_2_RTS (driven by UART driver)
  • PIN 143=> GPIO2_IO6 - Verdin UART_2_CTS (Pulled Up by UART driver)
  • PIN 252=>GPIO4_IO0 - Verdin CTRL_WAKE1_MICO# (pulled UP to proper functionality)
  • PIN 210=> GPIO_IO5 - Verdin GPIO_4 floating (does not set to HIGH)
  • PIN 244=> GPIO4_IO19 - Verdin PCIE_1_RESET# set HIGH to bring PCI out of reset.

We have no plans to change listed pins behavior but you can build your own TEZI version according your needs

Thanks for your answer @alex.tx

Now I understand the reasons why TEZI sets high some of the above pins ('it’s a general purpose tool, so it should consider a common usgae scenario).

But I don’t find what youdescribe for two pins:

  • PIN 252=>GPIO4_IO0 - Verdin CTRL_WAKE1_MICO# (pulled UP to proper functionality)
    • this is a MICO (Module Input Carrier Ouput) pin, so for the SoM this is an input
    • do you mean that Toradex added a pull-up on the SoM itself?
    • what is the value for this pull-up?
  • PIN 210=> GPIO_IO5 - Verdin GPIO_4 floating (does not set to HIGH)
    • I added a pull-down on my carrier and I see it high
    • so this means that it’s not floating. it’s driven high explicitly
    • could you double check what drives it high (ATF, u-boot, TEZI, …)?

I didn’t know about TEZI customization; I’ll have a deeper look.

I see there is a section describing how to change the Device Tree Overlay; how can I add my customs .dtbo?

Can the TEZI UI be customized too?

Hi @vix

PIN 252 => GPIO4_IO0

  • This is a MICO (Module Input Carrier Output) pin, so for the SoM this is an input.

Yes, it’s an input pin and it is muxed by TEZI as GPIO.

Do you mean that Toradex added a pull-up on the SoM itself?

There is no pull-up on the SoM itself. It is pulled up by the SoC’s pad settings.

What is the value for this pull-up?

This pin’s pad settings correspond to a weak internal pull-up (approx. 30–50 kΩ).


PIN 210 => GPIO_IO5 — Verdin GPIO_4

My tests show it does not set high, but rather is weakly pulled down.
Tested using :
Verdin iMX8M Plus Quad 4GB WB IT V1.1B
Carrier: Toradex Verdin Development Board V1.1B
Toradex Easy Installer 6.8.0+build.8 and 7.6.1+build.12

I see there is a section describing how to change the Device Tree Overlay; how can I add my customs .dtbo?

Can the TEZI UI be customized too?

Yes. IT’s Open Source project so you can modify any part of TEZI by your choice. Please note that we support only official TEZI releases.
Source code