IMX7D power saving?

I’m trying to reduce the power consumption of the imx7d+iris or imx7d+viola.
What could i disable/alter in the device tree or userspace?
I’ve read in another thread that reducing the frequency of the cpu’s doesn’t make any worthwhile difference.
Governor is set to powersave

Functionality not used

  • headless (disabled lcdif)
  • adc, pwm, sai (already disabled those)
  • audio
  • flexcan
  • usb (except for recovery mode)
  • caam (not sure what to disable for this)
  • gpmi (unless this is also used by emmc instead of just nand?)

Related question, how do i remove a pinctrl group? (so have my dts undo the pinmux from anothe dts(i))

Hi @Michielt ,

Thanks for using the Toradex Community.

There are different methods you could try. Some are easier, while others might be a bit more complex.

  • You could remove certain drivers, which you do not need at all, completely from the kernel.
  • It is also recommended to set unused pins into a fixed state (either pull up or pull down) You will need to do some experimenting to figure out which of the two states uses less power.
  • A more extreme approach would be to avoid the A7 core altogether and transfer everything over to the M4 core. This is definitely not trivial, but there is the possibility that this would have a great impact.
  • I would also suggest you contract NXP directly, they might have some additional tips and how to further lower the power consumption.

Do you have specific pinctrl groups in mind?

Best Regards
Kevin

Made a mistake in my listing ‘functionality not used’ → headless, meant to say it’s headless so functionality not used is gpu etc.

  • How would removing drivers that aren’t used in the kernel attribute to power consumption?
  • Aren’t gpio’s defaulted to weak pull up?
  • Moving everything to the M4 core isn’t feasable. If i could do that i wouldn’t use a IMX7D.

The answer i was looking for was more along the lines of “You can disable x in the device tree” but i’ll post the question in the nxp forum.

Regarding the pinctrl, i don’t have a specific group in mind, just wondered how to ‘undo’ a pinctrl group.
Like /delete-property/ is used to remove a specific property.

Hi @Michielt

Made a mistake in my listing ‘functionality not used’ → headless, meant to say it’s headless so functionality not used is gpu etc.

Anyway there is no GPU in iMX7, so you don’t need to turn it off, but you can disable the rgb interface.

How would removing drivers that aren’t used in the kernel attribute to power consumption?

This is with the combination of not using the devices in the devicetree.

Aren’t gpio’s defaulted to weak pull up?

It depends on the pin muxing, some are already assigned for a function. The reset state of every Pin can be found in the Datasheet of the SoM or the reference Manual.

Moving everything to the M4 core isn’t feasable. If i could do that i wouldn’t use a IMX7D

The idea was more to only use A5 when needed and run the system on M4 to save Power.

The answer i was looking for was more along the lines of “You can disable x in the device tree” but i’ll post the question in the nxp forum.

Yes, this is a good way to go. Let us know what you found out.

Regarding the pinctrl, i don’t have a specific group in mind, just wondered how to ‘undo’ a pinctrl group.
Like /delete-property/ is used to remove a specific property.

For trying you can use the /delete-property/ but at the end its the best to remove everything what is not needed from the devicetree.

Best regards,
Jaski

  • How do i disable the RGB interface (google didn’t help)?
  • I know the easiest would be to just remove it from the device tree but i’m not starting from the full decompiled one but rather the final dts that uses all the dtsi. So i’m trying to overwrite the dtsi. But i’ll try starting from the decompiled one.

Related question:

So this was tested on a imx7d 1GB on a Viola running the lasted minimal reference image.

  • Before: 0,77W (with cable), 0,58W (without)
  • After ifconfig eth0 down: 0,86W (with cable) 0,68W (without)

The powersupply went down to 0,46W for a second or so before going up to 0,86W

Hi @Michielt

How do i disable the RGB interface (google didn’t help)?
You can disable the corresponding interface in devicetree.

Is it a known issue that ifconfig eth0 down doesn’t work on the imx7d (power consumption
Yes, this is a hardware issue from the phy.

Best regards,
Jaski

Hi Jaski,

Which one exactly is 'the rgb interface" the only thing i found similar is lcdif and i had already disabled that.

The odd thing was that trying to take it down with connmanctl actually worked (once) it took the power consumption down to 0,5W (with cable attached) and 0,3W without so that was promising. Odd thing was that at the same time i somehow messed something else up which made me unable to login anymore (even via debug port) so i had to reset to most recent backup.
Since then the connmanctl way didn’t work anymore either…

I thought that maybe switching to the imx6ull was the only option, but the same phy is used. How much is the idle power usage of a imx6ull one a viola with the reference minimum image and ip active?

Hi @Michielt

Odd thing was that at the same time i somehow messed something else up which made me unable to login anymore (even via debug port) so i had to reset to most recent backup.
Since then the connmanctl way didn’t work anymore either…

Thats really strange.

I thought that maybe switching to the imx6ull was the only option, but the same phy is used. How much is the idle power usage of a imx6ull one a viola with the reference minimum image and ip active?

You can find the data about the power consumption here: https://developer.toradex.com/knowledge-base/imx6ull-power-consumption

Best regards,
Jaski

Not much difference there…
Anything i can solder off (besides the ethernet chip) so see what the effect would be on the imx7d if the sleep was working properly?

Hi @Michielt ,

could you please send us the software version you have currently installed?
So we can have a closer look.

Best Regards
Kevin

Kernel: 5.4.129-5.4.0-devel+git.022cb949c6ec
The minimal reference image associated with it, with one modification to the kernel for support for the spi to uart chip.

Hi @Michielt ,

I have a suggestion for a possible device tree change with the effect of turning off the ethernet phy.
This is achieved by turning of the voltage regulator providing power to the phy.

Attached you see a device tree include file. In it you will see the following change:

 410                        reg_LDO1: LDO1 { /* PWR_EN_+V3.3_ETH */
 411                                 regulator-min-microvolt = <1800000>;
 412                                 regulator-max-microvolt = <3300000>;
 413                         //      regulator-boot-on;
 414                         };

By commenting out line 413. The regulator is turned off on boot. After this you would have to rebuild your device tree to see the effect of the change.

Please give this a try and let me know if it had any effect.

imx7-colibri.dtsi (27.8 KB)

Best Regards
Kevin