I would like to use SODIMM pin 144 (aka SCU_GPIO0_00) as a standard GPIO on a iMX8DualX Colibri module.
I have configured it via dtb using IMX8QXP_SCU_GPIO0_00_LSIO_GPIO2_IO03 0x6000021 in corresponding pinctrl, but the GPIO seems to be connected to GND even if on my custom carrier board, it is floating.
My question is: is it possible to use this SODIMM pin as a standard GPIO and can it be done via dtb customization or did it requires to change the SCFW ?
Would you need to use this specific pin for your application or could you foresee another pin? There are other GPIO’s that are enabled by default that you could use or maybe other pins that you can toggle only by device tree changing. Could you please share with us the device tree you implemented?
In fact, I’m already successfully using other GPIOs via dtb customization, but the first revision of our custom carrier board is already started and I try to evaluate the cost of a new revision of the carrier board compared to the cost of changing the SCFW.
From our point of view it is simpler to use another GPIO instead. Of course we understand that since you already triggered the first revision of the carrier it is a bit unfortunate.
We can offer you also to schedule a call with some of our experts, they might be able to tell you what the changes in the SCFW would be and how much effort it would be to implement these changes.
Yes, it could be very nice to have a deeper view of the impact with one of your expert.
We are in early development, so there is a high probability to have another revision due to other problem, but if only this GPIO is the issue a software option can be great.
Thanks for the update. Actually we discussed with our team and this explanation on the device tree and on the page seems to be a bit misleading and I’m sorry that I contributed for this error. I’ve just compiled a new Colibri iMX8X image with the following change on the imx8x-colibri.dtsi file:
The pin mux is already available on the iomuxc node and therefore you just need to add it to the pinctrl. The test was validated by a Multimeter connected to the pin output on the Evaluation Board. Therefore, there is no need to change the SCFW for this pin to work as a GPIO in the end.
Thanks a lot for the update.
Following your instructions, I’m able to drive the SODIMM 144 properly.
However I have enabled the pull-up, so I’m expecting to read “1” when the IO is floating and in that case I get “0”.
pinconf-pins gives 0x20000020 setting for pin 129 (IMX8QXP_SCU_GPIO0_00), so I think the IO is properly configured with the pull-up.
Did I miss something to properly configure the pull-up?
Can you please share the resulting files with us so that we can check the pin set after all the changes you’ve made to enable it and also check the resulting device tree?
I have sent you the link to download pinconf-pins output and the dtb file used.
Here is exactly the behavior I have:
# while sleep 1; do gpioget 2 3; done
1
1
1
0 < Here I just have touched the gpio with a probe, but the probe is still floating.
0
0 < Here I have released fully the gpio (no more probe) and the signal remains low
0
Thanks for sharing the links with us. As this may also help other people, I’m writing it back on the main thread.
Even though the pin is properly configured on the device tree to be a PU with the 0x20 set (see the following screenshot from NXP Reference Manual - 0x20 = 0100000b), there are some level shifters on the SoM level that make it behave differently than other pins like SODIMM133 that really do behave as PU like expected. These level shifters seem to be causing SODIMM144 to behave as a latch and are needed to regulate the voltage values on the module.
Therefore, we’d like to know if you’d really need to have this specific pin as PU or if you could work with it as it’s today or if you could use another GPIO. What would be the most suitable option for you? If it is to really use this specific pin as PU we’d need to look for an HW workaround and we may need some time to present you with a proper solution.
Not being able to use this GPIO as an input with a pull-up is an issue for us.
As previously said, this is our first revision of the carrier board. Currently that is the only problem we have identified so if we can save a new revision we would be happy, but we have other GPIOs available that we can use on a new revision.
What could be the HW workaround ? You mean on the Colibri module, on the carrier board ?
I understand that it can be problematic to update the carrier board design. I’m checking with the team about what can be done in that case. We’ll come back to you once we do have more information.
At the end we have other problems on the carrier board so we will change the design and use other sodimm.
One comment : it can be a good improvement to update the Colibri iMX8X Datasheet manual and add more explicit warning about limitations (not usable as input, …) of the Sodimm pins connected to SCU.