Iris 2.0 LVDS setting help

Ive been running the T20 with Iris 1.1 to a 7" touch display and custom 20 pin LVDS cable. Iris 2.0 has added a 2 channel LVDS connector and I had to have a new cable made to accommodate.

Now, when powering up the module, the screen slowly lights up but no graphics appear. In looking at the data sheets, I found the “Migrate Iris from 1.1 to 2.0” article

Here it shows to add the following code, but being new to CE, I’m not sure where or how to add or modify this file… Any help or pointing to a direction would be tremendously appreciated…

Colibri T20

On Colibri T20 SODIMM 99 is an output with a buffer on the module. Check the datasheet Figure 4 for more details.

If you want to have LVDS output on Colibri T20 we need to do two things. First, we need to make sure that the buffer is tri-stated (High-Z) and the actual GPIO for SODIMM 99 driven high in order for the RGB-to-LVDS transceiver to turn on.

With the following code added, SODIMM 99 will by default be driven high. You can then change the output via sysfs in /sys/class/gpio/gpio203/value by writing a 0 or 1.

diff --git a/arch/arm/mach-tegra/board-colibri_t20-pinmux.c b/arch/arm/mach-tegra/board-colibri_t20-pinmux.c
index e2db57e783c4a..82a5ab9673cb0 100644
--- a/arch/arm/mach-tegra/board-colibri_t20-pinmux.c
+++ b/arch/arm/mach-tegra/board-colibri_t20-pinmux.c
@@ -368,15 +368,9 @@ int __init colibri_t20_pinmux_init(void)
        gpio_request(TEGRA_GPIO_PI4, "SODIMM 87 nRESET_OUT");
        gpio_direction_output(TEGRA_GPIO_PI4, 1);

-#if defined(CONFIG_CAN_SJA1000) || defined(CONFIG_CAN_SJA1000_MODULE)
-       /* not tri-stating GMI_WR_N on SODIMM pin 99 nPWE */
-       gpio_request(TEGRA_GPIO_PT5, "GMI_WR_N on 99");
-       gpio_direction_output(TEGRA_GPIO_PT5, 0);
        /* tri-stating GMI_WR_N on SODIMM pin 99 nPWE */
        gpio_request(TEGRA_GPIO_PT5, "no GMI_WR_N on 99");
        gpio_direction_output(TEGRA_GPIO_PT5, 1);
-#endif /* CONFIG_CAN_SJA1000 | CONFIG_CAN_SJA1000_MODULE */

        /* not tri-stating GMI_WR_N on SODIMM pin 93 RDnWR */
        gpio_request(TEGRA_GPIO_PT6, "GMI_WR_N on 93 RDnWR");
diff --git a/arch/arm/mach-tegra/board-colibri_t20.c b/arch/arm/mach-tegra/board-colibri_t20.c
index cd5b3e3c757f9..b9fa95d3ac86b 100644
--- a/arch/arm/mach-tegra/board-colibri_t20.c
+++ b/arch/arm/mach-tegra/board-colibri_t20.c
@@ -587,6 +587,7 @@ static struct gpio colibri_t20_gpios[] = {
        {TEGRA_GPIO_PX6,        GPIOF_IN,       "102, I X13 ForceOFF#"},
        {TEGRA_GPIO_PX7,        GPIOF_IN,       "104, I X14 ForceOFF#"},
        {TEGRA_GPIO_PZ2,        GPIOF_IN,       "SODIMM pin 156"},
+       {TEGRA_GPIO_PZ3,        GPIOF_OUT_INIT_HIGH, "LVDS PWRDN# pin 99"}
        {TEGRA_GPIO_PZ4,        GPIOF_IN,       "SODIMM pin 164"},
 #if !defined(GMI_32BIT) && !defined SDHCI_8BIT
        {TEGRA_GPIO_PAA4,       GPIOF_IN,       "SODIMM pin 166"},

Checking this and setting appropriate vidargs in U-Boot will make the LVDS screen work. For example for the Toradex Capacitive Touch Display 10.1" LVDS display: setenv vidargs video=tegrafb0:1280x800-16@60 && saveenv


Could you please specify OS you are using? Is Linux/Torizon or Win CE?
Article you mentioned is for Linux/Torizon.

You need to set X1 pin 99 HIGH to enable LVDS converter on Iris 2.x . If you are using WinCE you can do it using GPIO config block settings as described here - GPIO config block settings

Hi Alex,

Thanks for the quick reply.
It is Win CE. I apologize, I thought that article was under the windows heading. I never had to work with the GPIO config block settings.
I’m using a Colibri T20, in looking at the link you provided, Is this done through the serial port and bootloader? I dont think I can use the GPIO config tool.

Are there any links that you know of to help show proper syntax and method for this on the T20?

Thank you,

Hello Alex,

I have the bootloader figured out and connected via Tera Term. I am able to use “X” to get to the Command Prompt.

At this time, I enter "

set gpio.bootconf = "[gpio_99] altfn=-1 dir=out lvl=1 pull=up outmode=std"

I hit "Enter"

Then I type:
"save gpio" 

Is this correct?  I see no change and the LVDS still not working.
Please advise...

You can use GPIO tool together with Remote Display to set GPIO(s) interactively.

New LVDS converter on Iris 2.0 has additional configuration pins which are not present on Iris1.x.

SODIMM 99 PWRDN HIGH normal operation / LOW power down
SODIMM 63 6B/8b HIGH 6 bit per color / LOW8 bit per color
SODIMM 95 MAP Color Mapping
SODIMM 55 MODE HIGH single channel /LOW dual channel

To be compatible with Iris 1.x you need to check levels of corresponding GPIO


So I was finally able to get everything figured out and I’m posting this so maybe it can help someone else down the road.
So with the T20, there is not an option to use the GPIOConfig application to actually save the settings needed although it is handy for troubleshooting as well as cross referencing pin #'s. I then had to also use the ConfigBlockEditor to actually write the values and store them.
In my case, I had two issues to figure out. One was that the screen was not responding at all via LVDS and needed to be enabled. Once it was enabled and the screen started responding, the color mapping was way off and needed configured.

My first mistake was trying to configure my gpio’s with the wrong pin numbers. SODIMM_99 was indeed the correct number however this was not the gpio to configure. I had to look at the pin 99 in GPIOConfig program, then look to the far left pin column “#”, and note the value. In my case, this was “Z3”.

Now take Z3 and look up this number in the GPIO Alphanumeric to GPIO number reference here:
Down under the T20 heading, scroll down to find GPIO Z3 which crosses over to #203.

Now we can use this number successfully in the GPIOConfig program. The value we need to set is in *gpio >> bootconf.

[gpio_203] altfn=-1 dir=out lvl=1 pull=up - For the LVDS Enable
[gpio_69] altfn=-1 dir=out lvl=1 pull=up -for the color mapping
then click SetConfig and then SaveConfig.

Note, altfn=-1 sets the pin as gpio type, dir is Output, lvl is the setting of 1-HIGH or 0-LOW, pull is the pullup or pulldown setting.

I had to repeat the entire process for the color mapping and everything was set perfectly.

I hope this helps someone else, it was quite the adventure to figure this all out, but I sure learned a lot along the way…

All the best!!