Hi, I’m the Toradex AI Assistant.
I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.
Did you like my answer?

Hello Loris,
Thank you for your detailed description.
The desired CTRL_SLEEP_MOCI# behavior (high when the SoM is running, low in sleep) is supported as of BSP 6.4+. Since you are using a recent kernel and the Scarthgap Yocto (BSP 7.x.y), you should be able to achieve this, but a few critical points should be adjusted in your device tree.
Main Factors for CTRL_SLEEP_MOCI# Operation
- GPIO Polarity:
CTRL_SLEEP_MOCI# (note the #) means “active low.” The SoM asserts this pin low in sleep mode.
- The physical behavior: High in run, Low (asserted) in sleep
- Device Tree Regulator Configuration:
You want the regulator to be disabled (output low) during system suspend and enabled (output high) during normal operation.
- Pinmux and GPIO Configuration:
The pin must remain configured as output and under kernel control for sleep transitions.
1. Regulator Configuration
Current State:
You are using
enable-active-high;
gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
regulator-always-on;
regulator-boot-on;
regulator-always-on
keeps the regulator always ON; it will never go off in suspend.
Fix:
Remove regulator-always-on
and (optionally) regulator-boot-on
.
- DO NOT set
regulator-always-on
if you want the pin to drop in suspend.
Use this:
reg_force_sleep_moci: regulator-force-sleep-moci {
compatible = "regulator-fixed";
enable-active-high;
/* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
regulator-name = "CTRL_SLEEP_MOCI#";
/* regulator-always-on; <-- REMOVE THIS */
/* regulator-boot-on; <-- REMOVE THIS */
};
This way, the driver is allowed to disable the GPIO (= assert low) during suspend.
2. Pinmux
Your pinmux is correct, just ensure nothing else overrides this pin.
pinctrl_ctrl_sleep_moci: ctrlsleepmocigrp {
fsl,pins =
<MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29 0x1c4>; /* SODIMM 256 */
};
3. Regulator Consumers
The proper functioning depends on something marking the regulator as required only during normal operation, and letting the kernel disable it during suspend.
Example:
4. Kernel Power Management
The kernel’s power management must be enabled and SoM must actually suspend for the pin to change.
- Use
echo mem > /sys/power/state
to test sleep.
- The CTRL_SLEEP_MOCI# pin should go low when suspended and return high when resumed.
Summary of Your Required Device Tree Changes
- Remove
regulator-always-on;
and regulator-boot-on;
from reg_force_sleep_moci
.
- Ensure the
gpio
line is correct and pinmux is configured as output.
- Make sure any critical peripherals on your carrier depend on
reg_force_sleep_moci
.
- Confirm sleep state is working (i.e., SoM actually enters suspend).
Useful Links
Would you like a complete example device tree overlay or more details on how to test the state change in Linux?
Best regards,
Toradex AI Assistant.