[Gta04-owner] GTA04 suspend power consumption
H. Nikolaus Schaller
hns at goldelico.com
Wed Dec 16 18:51:02 CET 2015
Hi all,
we have good news finding where the problem is located.
It is not yet solved, but just one driver file.
Am 18.11.2015 um 20:49 schrieb Andreas Kemnade <andreas at kemnade.info>:
> On Thu, 12 Nov 2015 22:26:10 +0100
> "H. Nikolaus Schaller" <hns at goldelico.com> wrote:
>
>> Hi,
>>
>> Am 02.11.2015 um 08:05 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>
>>>
>>> Am 30.10.2015 um 19:18 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>>
>>>> Hi,
>>>> I have aquired a thermographic camera and made some pictures of a running GTA04
>>>> (without case and battery connected through external cables so that it does not cover
>>>> the chips on the PCB).
>>>>
>>>> Here are some first findings and conclusions (which may be wrong):
>>>>
>>>> running from battery:
>>>> <http://download.goldelico.com/gta04/images/FLIR00003.bmp>
>>>>
>>>> USB charging:
>>>> <http://download.goldelico.com/gta04/images/FLIR00004.bmp>
>>>>
>>>> suspended (power LED still on):
>>>> <http://download.goldelico.com/gta04/images/FLIR00007.bmp>
>>>>
>>>> tps65950 during suspend:
>>>> <http://download.goldelico.com/gta04/images/FLIR00012.bmp>
this image shows that the heat source is in the "upper left" area.
>>>>
>>>> resumed:
>>>> <http://download.goldelico.com/gta04/images/FLIR00013.bmp>
>>>>
>>>> chip placement to compare:
>>>> <http://download.goldelico.com/gta04/images/DSC01393.jpg>
>>>>
>>>> During operation it is visible that the TPS65950, the charging control FETs, the
>>>> CPU+PoP and the USB3322 are "hot spots".
>>>>
>>>> During suspend it was really unexpected. The TPS65950 stays at around 30°C
>>>> (23°C surrounding temperature) which means quite some energy is "consumed".
>>>>
>>>> And, it is visible that the chip has 4 "quadrants". Looking up the quadrants deeply
>>>> in the board layout and TI documentation (BGA ball assignment) makes me think
>>>> it is the VDD2 regulator which drives VDD_CORE of the OMAP3.
this was wrong. Since the tps65950 is just the DC/DC converter and the OMAP3 is
the consumer of the energy delivered to VDD_CORE it would be the OMAP which should
get hot as well.
So I looked again in what BGA balls are in that area and I found the OTG/USB-PHY interface.
>>>>
>>>> VDD_CORE drives all the peripherals, GPU and some other components of the
>>>> OMAP3 SoC while VDD_MPU drives the Cortex A8 and 1V8 drives the DRAM.
>>>>
>>>> What I don't exactly know is which power rail is driving the built-in DSP and camera
>>>> image signal processor.
>>>>
>>>> So my first conclusion would be that the 25 mA beyond 3.7 optimization we still
>>>> see comes from a GPU or DSP that is not properly suspended or disabled.
>>>>
>>>> Well, we have no drivers for that...
>>>>
>>>> We don't have them on a 3.7 kernel either, but 3.7 might handle some minor
>>>> clock/enables/resets differently to get a better situation.
>>>>
>>>> So this are first results. More experiments may be able to prove or disprove this
>>>> idea. But kernel developers may be able to build on this and better focus their
>>>> search for the missing bit.
>>>>
>>>> If I find time, I can try to prepare (restore) an old µSD to boot 3.7 and do a
>>>> comparable experiment.
>>>
>>>
>>> Ok, yesterday I found some time. Didn't need as much as expected.
>>>
>>> I just had to recompile and install the old 3.7-neil-plus kernel [1] and remove the
>>> device tree binary so that u-boot starts the kernel with platform data.
>>>
>>> Results are again very interesting and confirm what I already was assuming:
>>>
>>> 3.7-neil-plus running from battery:
>>> <http://download.goldelico.com/gta04/images/FLIR00015.bmp>
>>>
>>> 3.7-neil-plus suspended (power LED still on):
>>> <http://download.goldelico.com/gta04/images/FLIR00017.bmp>
>>>
>>> Note: the rs232 driver is also not suspended as you can easily spot.
>>> The reason is that the ./measure-suspend script can not find the controlling
>>> GPIO on the 3.7 kernel at the same location.
>>>
>>> 3.7-neil-plus resumed:
>>> <http://download.goldelico.com/gta04/images/FLIR00018.bmp>
>>>
>>> There is no hot spot in the tps65950 during suspend!
>>>
>>> So it might also be an issue with the twl4030/tps65950 suspend control.
>>> Or the sound subsystem (e.g. speaker amplifiers not turned off?).
>>> Or the OTG port remaining active?
Looks as if it is "just" the OTG port within the twl4030/tps65950.
It can be easily identified by:
mv /lib/modules/4.4.0-rc5-letux+/kernel/drivers/phy/phy-twl4030-usb.ko /lib/modules/4.4.0-rc5-letux+/kernel/drivers/phy/phy-twl4030-usb.ko.off
depmod -a
reboot
./measure-suspend
and the tps65950 remains cold (in operation and suspend).
mv /lib/modules/4.4.0-rc5-letux+/kernel/drivers/phy/phy-twl4030-usb.ko.off /lib/modules/4.4.0-rc5-letux+/kernel/drivers/phy/phy-twl4030-usb.ko
depmod -a
reboot
./measure-suspend
the temperatures are again similar to
>>>> <http://download.goldelico.com/gta04/images/FLIR00012.bmp>
So I guess the power management of this particular driver is broken.
And indeed there are recent patches on LKML:
<https://lkml.org/lkml/2015/12/1/7>
although it is related to load/reload the module (which we are not
doing). But it might also fix the overall power state control of the tps65950.
Also note that Tony talks about 65 mW which is approx. 20-25 mA
(depending on voltage) we are trying to get down. Note that the
N900/RX51 also uses this chip so there are developers in the broader
Linux community who also work on this issue.
Unfortunately in the letux-4.4-rc5 kernel, the hdq battery driver is
broken and does not report reasonable or any values. So I can't
report real power consumption with/without the driver or after
trying to apply Tony's patch.
But in general, we have a good chance to improve suspend current
back to the level we did have in 3.7 kernels soon.
BR,
Nikolaus
More information about the Gta04-owner
mailing list