[Gta04-owner] Modem off

NeilBrown neilb at suse.de
Sat Nov 9 05:12:26 CET 2013


On Fri, 8 Nov 2013 15:49:50 +0100 Andreas Kemnade <andreas at kemnade.info>
wrote:

> On Fri, 8 Nov 2013 14:07:13 +1100
> NeilBrown <neilb at suse.de> wrote:
> 
> > On Tue, 5 Nov 2013 15:02:34 +0100 Andreas Kemnade <andreas at kemnade.info>
> > wrote:
> > 
> > > Hi,
> > > 
> > > On Tue, 5 Nov 2013 08:51:26 +0100
> > > Radek Polak <psonek2 at seznam.cz> wrote:
> > > 
> > > > On Monday, November 04, 2013 11:09:27 PM Andreas Kemnade wrote:
> > > > > Hi,
> > > > > 
> > > > > On Sat, 2013-09-21 at 08:19 +1000, NeilBrown wrote:
> > > > > > I've experimented with "rmmod ehci_hcd" just before suspend, and
> > > > > > "modprobe" on resume, but so far that has just caused a mess.
> > > > > > I've looked at the code, and it is rather complex.
> > > > > > It has also changed a lot in 3.10.  So I'm going to defer exploring this
> > > > > > more until I start on 3.10+ again, probably in a couple of weeks.
> > > > > 
> > > > > In 3.12 I get also around 15mA more current in suspend with modem off.
> > > > > than with modem on. (suspend does not work reliable with that kernel for
> > > > > me and I have 60mA/85mA current consumption)
> > > > > 
> > > > > In 3.7 with enabled modem
> > > > > doing "echo ehci-omap.0 >unbind" in
> > > > > /sys/bus/platform/drivers/ehci-omap
> > > > > also increases current. (I get 40mA then)
> > > > > doing "echo echi-omap.0 >bind"
> > > > > decreases it again to around 20mA.
> > > > > That is also strange.
> > > > > 
> > > btw: what is different in doing rmmod/modprobe and doing the unbind/bind?
> > 
> > There should be no difference.
> > Both 'modprobe' and 'bind' will run the 'probe' function of the driver.
> > Both 'rmmod' and 'unbind' will run the 'remove' function.
> > 
> 
> Hmm, there might be a difference. The order of things being called is
> different. If we use unbind/bind
> and have ehci-hcd compiled in, the probe function is called earlier. 
> > [...]
> > This is at least very clear evidence that the USB port together with the
> > transceiver account for a substantial portion of the power usage.
> > 
> > Figuring out why and fixing it is a somewhat different story....
> > 
> Hmm, that is taming another usb phy. Should it be more difficult than
> the otg one? I think I know what I will do the next days...
> 

I look forward to hearing of your results.
Meanwhile, here is a result that turned out more effective than I expected....

I've automated some parts of my power-usage-monitoring a bit more.  With my
phone running normally with USB enabled etc with my current 3.7 kernel, the
average-current-over-5-minutes frequency histogram looks like:

23727 44
25884 120
28056 31
30207 6
32358 1
36684 1
51699 1
75488 1

First number is a current in uA.  Second it the number of 5 minute periods
when the average was within 1mA of that number.

So most often I get 26mA  plus or minus 2.1mA

But now to my interesting result.  I noticed that the OMAP3 pins which
drive the internal USB were configured with PULLDOWN, even though they are
bi-directional pins.  With the patch below which disconnects the pull-down
resistors I get

17259 1
19401 9
21599 13
23722 3
25886 5
34520 1
36626 2
73162 1

(over a shorter time period) which shows a mean over 4mA less.  That is a 16%
improvement in battery life!

I wonder if there are more of these to find...

NeilBrown

diff --git a/arch/arm/mach-omap2/usb-host.c b/arch/arm/mach-omap2/usb-host.c
index 3c434498e12e..060d0bc109da 100644
--- a/arch/arm/mach-omap2/usb-host.c
+++ b/arch/arm/mach-omap2/usb-host.c
@@ -107,24 +107,24 @@ static void __init setup_ehci_io_mux(const enum usbhs_omap_port_mode *port_mode)
 	case OMAP_EHCI_PORT_MODE_PHY:
 		omap_mux_init_signal("hsusb2_stp", OMAP_PIN_OUTPUT);
 		omap_mux_init_signal("hsusb2_clk", OMAP_PIN_OUTPUT);
-		omap_mux_init_signal("hsusb2_dir", OMAP_PIN_INPUT_PULLDOWN);
-		omap_mux_init_signal("hsusb2_nxt", OMAP_PIN_INPUT_PULLDOWN);
+		omap_mux_init_signal("hsusb2_dir", OMAP_PIN_INPUT);
+		omap_mux_init_signal("hsusb2_nxt", OMAP_PIN_INPUT);
 		omap_mux_init_signal("hsusb2_data0",
-			OMAP_PIN_INPUT_PULLDOWN);
+			OMAP_PIN_INPUT);
 		omap_mux_init_signal("hsusb2_data1",
-			OMAP_PIN_INPUT_PULLDOWN);
+			OMAP_PIN_INPUT);
 		omap_mux_init_signal("hsusb2_data2",
-			OMAP_PIN_INPUT_PULLDOWN);
+			OMAP_PIN_INPUT);
 		omap_mux_init_signal("hsusb2_data3",
-			OMAP_PIN_INPUT_PULLDOWN);
+			OMAP_PIN_INPUT);
 		omap_mux_init_signal("hsusb2_data4",
-			OMAP_PIN_INPUT_PULLDOWN);
+			OMAP_PIN_INPUT);
 		omap_mux_init_signal("hsusb2_data5",
-			OMAP_PIN_INPUT_PULLDOWN);
+			OMAP_PIN_INPUT);
 		omap_mux_init_signal("hsusb2_data6",
-			OMAP_PIN_INPUT_PULLDOWN);
+			OMAP_PIN_INPUT);
 		omap_mux_init_signal("hsusb2_data7",
-			OMAP_PIN_INPUT_PULLDOWN);
+			OMAP_PIN_INPUT);
 		break;
 	case OMAP_EHCI_PORT_MODE_TLL:
 		omap_mux_init_signal("hsusb2_tll_stp",
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 828 bytes
Desc: not available
URL: <http://lists.goldelico.com/pipermail/gta04-owner/attachments/20131109/2696bd3c/attachment.bin>


More information about the Gta04-owner mailing list