Multiplexing at boot for GPIO does not appear to be working

My current setup is WEC2013, bootloader 1.1b2, OS 1.1b2 and running on an iMX6 DL IT.

I am attempting to configure colibri pin 23 as a GPIO at startup via the multiplexing functionality that is available during boot. (Pin multiplexing for drivers | Toradex Developer Center )

To configure the registry I am importing the following information in a .reg file using RegEdit.

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPIOMux]

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPIOMux]

“colibripin_23”=“altfn=-1 dir=in pull=none”

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\COM1]

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\COM1]

“DoMultiplexing”=dword:0

When I import this file and power cycle the device, the new config is visible in RegEdit. I.e. the pullup state is displayed as ‘none’. However, when I read the GPIO config for pin 23 using the Toradex CE library I get the following:

dir=in,lvl=0,altfn=7,pull=up,strength=6,outmode=std,inmode=schmitt,slew=slow,speed=rsvd,irqtrig=none,sion=normal

Now when I set the pullup state using the Toradex CE library instead, I get the following when I read back the configuration:

dir=in,lvl=1,altfn=5,pull=none,strength=6,outmode=std,inmode=schmitt,slew=slow,speed=rsvd,irqtrig=low,sion=normal

The code I am using to set the pin and read back the state is the following:

HANDLE hGpio = NULL;
hGpio = Gpio_Init(NULL);
Gpio_Open(hGpio);

uIo io = COLIBRI_PIN(23);

Gpio_ConfigureAsGpio(hGpio, io);  
Gpio_SetDir(hGpio, io, ioInput);  
io = Gpio_NormalizeIo(hGpio, io); 

Gpio_SetConfigString(hGpio, io, NULL, L"pull=none", StoreVolatile);

TCHAR buffer[1024];

Gpio_GetConfigString(hGpio, io, NULL, buffer, 1024 * sizeof(TCHAR));
wprintf(buffer);

My goal is to disable the internal pullup using the multiplexing at boot functionality, not having to do it in code. Am I missing something in my configuration?

To have those settings applied at boot by the mux driver you need to store them under a subkey named Pinout_* where the ‘*’ can be default or a code string, as described here:

Entries under the HKLM\Drivers\GPIOMUX entry are not considered.
For the libraries, I’m checking the code to understand if there are issue in the handling of that parameter.
I’ll update this thread as soon as I make some progress.
Sorry for the issue.

Sorry, I realize that there is no issue reading the state, it’s just not set from the registry and this happens because the registry entries are not under a Pinout_* key.

I’ve added the subkey and that has resolved the issue. Thanks for your help!