Re: Power saving / Power usage of the OMAP5

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

* Michael Mrozek <EvilDragon@xxxxxxxxxxxxxxx> [160328 16:16]:
> Hi,
> 
> as we now have the first prototypes running so far, I was able to do
> some testings with them.
> 
> Right now, the OMAP5 seems to eat quite a bit of power, even when
> basically doing nothing (a LOT more than the DM3730 or OMAP3 uses).
> 
> Having it idling around doesn't use less power than running LibreOffice
> and typing a text, for example.
> 
> Right now, I get about 6 - 7 hours of usage with a 6000mAh battery (and
> everything enabled), whereas I have about 8 hours with a 4400mAh
> battery (and also everything enabled) on the Pandora.
> 
> I think Nikolaus mentioned at some time that power saving features for
> the OMAP5 are missing in the kernel (SmartReflex maybe?), so I wanted
> to check for the status about that and what can be improved.

Well some PM features work for omap4, so getting to the same point
with omap5 should be doable. We need to check the various IDLEST
registers to make sure various devices are idled, and then the hardware
should start entering deeper idle states depending what support is
implemented for the SoC.

The device drivers for most part already idle things using kernel
PM runtime. And roughly the steps to get the device to hitting deeper
idle states is:

1. Disconnect USB cable(s)

2. Unload ehci-omap and ohci-omap3

4. Configure UART timeouts

5. Blank the display

And then it's up to what is implemented for the SoC to for the idle
modes, which certainly needs work for omap5.

The autoidle timeouts for UARTs can be enabled with something
like:

#!/bin/bash
uarts=$(find /sys/class/tty/tty[SO]*/device/power/ -type d)
for uart in $uarts; do
	echo 3000 > $uart/autosuspend_delay_ms 2>&1
done
uarts=$(find /sys/class/tty/tty[SO]*/power/ -type d 2>/dev/null)
for uart in $uarts; do
	echo enabled > $uart/wakeup 2>&1
	echo auto > $uart/control 2>&1
done
echo 1 > /sys/kernel/debug/pm_debug/enable_off_mode

> In theory, the OMAP5 should use less power for the same tasks the
> DM3730 or OMAP4 can do, but use more power for more CPU usage (which
> sounds logical).
> 
> Right now, it seems the kernel is fixed to 1GHz and 1,5GHz (or 500Mhz
> and 1GHz on our kernel, as we changed the settings).
> 
> If I understood correctly, it only uses these settings.
> Does that mean it will always use at least the power it needs to run at
> 500Mhz? AFAIR, the DM3730 / OMAP3 can go down to around 30Mhz.

The dm3730 can do < 10 mW while running and idle with WLAN connected
with the mainline kernel.. But not with libertas_sdio, that seems to
have no PM support :)

Not sure what kind of numbers omap5 should be able to get, but my
guess is we should reasonably easily get to 500 mW with LCD blanked
and device idle as listed above. That's what omap4 pandaboard es
seems to measure at with current mainline kernel, so I don't see why
omap5 could not do the same.

> So the question is, how can we improve that?
> 
> * Add more voltages so it can scale better? (how low can the OMAP5 go?)
> * Is SmartReflex active, can this be checked? Is that something that
>   can be improved?
> 
> Idling around, the Pandora can hold up to 40 hours... so the Pyra
> should be able to do more with a 6000mAh battery.
> 
> And at least my Smartphone with an OMAP4 can idle for over 20 hours with
> a 1500mAh battery, the OMAP5 can't be that much different.
> 
> What are we missing here?

I've added linux-omap, Tero and Nishanth to Cc as they may be able to
provide some more info.

Cheers,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux