POWER_ENABLE_MOCI not switched off afer shutdown

I’m using an Apalis IMX6 board mounted on an Ixora board and need to use the POWER_ENABLE_MOCI signal to shut down some custom peripheral.
I have use a Yocto 1.5 Linux a long time an the POWER_ENABLE_MOCI signal worked fine.
Because of some design changed i have to switch to a Linux system based on the Yocto 2.6 build system with the linux-toradex kernel version 4.14.170-3.0.4+gbaa6c24240a4. But now the POWER_ENABLE_MOCI signal is not working anymore.
Due to some software limitations i am fixed to this system and kernel version and can not use an newer one.

If i shut down the system via the command line (with poweroff or shutdown) the system reached the halt state, but the signal line is not tied low.

[  515.358077] sd 0:0:0:0: [sda] Stopping disk
[  515.378732] ci_hdrc ci_hdrc.1: remove, state 4
[  515.383234] usb usb2: USB disconnect, device number 1
[  515.388295] usb 2-1: USB disconnect, device number 2
[  515.394840] ci_hdrc ci_hdrc.1: USB bus 2 deregistered
[  515.400552] ci_hdrc ci_hdrc.0: remove, state 1
[  515.405051] usb usb1: USB disconnect, device number 1
[  515.410115] usb 1-1: USB disconnect, device number 2
[  515.574257] ci_hdrc ci_hdrc.0: USB bus 1 deregistered
[  515.579646] reboot: System halted

I have enabled the the CONFIG_POWER_RESET_GPIO config in the defconfig file and added a

	poweroff {
		compatible = "regulator-poweroff";
		cpu-supply = <&vgen2_reg>;
	};

block in the imx6qdl-apalis.dtsi file.
But none of this have worked.

Has someone a hint what’s wrong with my system?

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? :+1: :-1:


Hello! Thank you for your detailed description. Let’s review your setup and see what might be causing the issue with the POWER_ENABLE_MOCI signal no longer working for system shutdown.

Key Points:

  1. Kernel Configuration:
    You did the right thing by enabling CONFIG_POWER_RESET_GPIO in your kernel. This is required for GPIO-based shutdown behavior.

  2. Device Tree Configuration:
    The device tree node you posted uses compatible = "regulator-poweroff";. However, for your use-case (GPIO signal toggle on shutdown), you need to use
    compatible = "gpio-poweroff";
    instead of regulator-poweroff.
    Reference: Toradex GPIO Power Off Documentation

    Your device tree snippet should look like:

    gpio-poweroff {
        compatible = "gpio-poweroff";
        gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
    };
    

    Replace <&gpio3 23 GPIO_ACTIVE_LOW>; with the correct GPIO controller and pin number for POWER_ENABLE_MOCI.

  3. Known Hardware Issue:
    There is a known erratum with the Apalis iMX6: after shutdown, the POWER_ENABLE_MOCI line may remain between 1.0V and 1.4V instead of being fully tied low. This is a hardware limitation and is documented here:
    Apalis iMX6 Hardware Errata

If your design is sensitive to this signal being fully low, some hardware changes on your carrier board (like a voltage divider circuit) may be necessary. However, software-wise, the above device tree change is what ensures the GPIO should be toggled low at shutdown.

Checklist:

  • Verify CONFIG_POWER_RESET_GPIO is set in your kernel config.
  • Replace regulator-poweroff with gpio-poweroff in your device tree as shown above.
  • Confirm you’re using the correct GPIO pin for POWER_ENABLE_MOCI in your device tree.

Extra Steps:

  • After applying these changes, rebuild your device tree and deploy the updated image.
  • You can monitor the GPIO line during shutdown to see if it is being toggled as expected.
  • If the voltage does not go fully low, check if you’re hitting the voltage issue described in the errata above.

If you need help identifying the GPIO number for POWER_ENABLE_MOCI, let me know which exact carrier board revision and SoM variant you are using.

Best regards,
Toradex AI Assistant.

GPIO Power-Off Documentation
Apalis iMX6 Hardware Module

Hi @Philipp2!

We had a similar issue a while back, but it was solved on our BSP 6 and BSP 7. Could you please test with BSP 7 (the newest version), which uses kernel 6.6, and see if it works?

If you are not familiar with how to build and image with our BSPs, please follow this article. I also recommend updating your Yocto, since 2.6 is a very old version and it is considered obsolete.

Best regards.

Hi Lucas,
to test it with a newer BSP would be possible but it would not solve my problem.
I’m fixed to the Yocto 2.6 since i have some software components which don’t run with newer OS systems.
Is there no way to solve the problem?
As far as I know now, the POWER_ENABLE_MOCI signal is generated by the PMIC on the apalis board and should be switched off by the mentioned defconfig item above. I dig a little bit in the kernel source and found that the 4.14.170 kernel does not have support for the regulator-poweroff (not matching driver source).
So is there another way?

Ok, i got it.
I had to remove the CONFIG_POWER_RESET_GPIO from the defconfig file, now it works as expected.

Hi @Philipp2!

I’m glad to hear that you solved it.

Best regards.