[PATCH] pxa/hx4700: Reduce sleep mode power consumption by 35%

Paul Parsons lost.distance at yahoo.com
Sat Mar 10 17:05:08 EST 2012


--- On Sat, 10/3/12, Russell King - ARM Linux <linux at arm.linux.org.uk> wrote:
> > Drive the two Bluetooth UART output GPIOs
> (GPIO43_BTUART_TXD,
> > GPIO45_BTUART_RTS) LOW during sleep mode instead of
> HIGH. This
> > reduces sleep mode power consumption from approximately
> 46 mA/h
> > to approximately 30 mA/h.
> 
> What are you saying here?  I think you're confusing
> power with current.
> Also, current is measured in amps, not amps per second (or a
> scaled
> version of that.)

Apologies for the sloppy nomenclature; evidently electronics is not my
thing.
The figures I quoted were the reduction in accumulated current (charge)
over time. For example in the second case, the charge reduced from 1853500
µAh to 1782750 µAh over 8610 seconds = 29.58 mA.
If that seems high it is: it should be nearer 4.7 mA.

> >      /* BTUART */
> >      GPIO42_BTUART_RXD,
> > -    GPIO43_BTUART_TXD,
> > +    GPIO43_GPIO | MFP_AF2 |
> MFP_LPM_DRIVE_LOW,
> 
> I don't believe that's right.
> 
> This expands to:
> 
>     MFP_CFG_IN(GPIO43, AF0) | MFP_AF2 |
> MFP_LPM_DRIVE_LOW
> 
> and:
> 
>     (MFP_CFG_DEFAULT & ~(MFP_AF_MASK |
> MFP_DIR_MASK)) |
>     (MFP_PIN(MFP_PIN_GPIO43) | MFP_AF0 |
> MFP_DIR_IN)
>     | MFP_AF2 | MFP_LPM_DRIVE_LOW
> 
> Note the presence of both MFP_AF2 and MFP_AF0 in there.
> 
> The default for GPIO43_BTUART_TXD is:
> 
>     MFP_CFG_OUT(GPIO43, AF2, DRIVE_HIGH)
> 
> and I'd suggest defining a new GPIO43_BTUART_TXD_LPM_LOW to
> cover your
> case.

It wasn't right but it evaluated to the correct value because MFP_AF0 = 0.
What I intended was: MFP_PIN_GPIO43 | MFP_AF2 | MFP_LPM_DRIVE_LOW
But I'll add the new values to <mach/mfp-pxa27x.h> if that's preferable.

Oddly the absence of direction didn't seem to matter; GPIO43 and GPIO45
default to input here, yet are still being driven as outputs in low power
mode contrary to what the manual says.



More information about the linux-arm-kernel mailing list