Rockbox General > Rockbox General Discussion

Decrease in battery life after installing 3.11

<< < (3/4) > >>

bertrik:
My analysis so far, is that the si4700 tuner chip stays in some kind neither-on-or-off state, because it doesn't receive a clock signal. The part of the code that enabled the clock was moved from the radio init sequence to the si4700_sleep sequence, so the clock is never enabled unless the tuner is explicitly woken up.

The tuner has two power-related bits in register 2 (ENABLE at bit 0, and DISABLE at bit 6). Normally, setting one of these would bring some kind of internal state machine in motion to either start a powerup or powerdown sequence and these bits would auto-clear.

What I see in these bits on my clip v1 (with an si4702) instead:
* just after startup (radio has not played yet): 0x0041 - > ENABLE=1, DISABLE=1
* after starting the radio: 0x4001 - > ENABLE=1, DISABLE=0
* after muting the radio : 0x0001 - > ENABLE=1, DISABLE=0
* after turning the radio off: 0x0000 - > ENABLE=0, DISABLE=0

I think the neither-on-or-off state just after startup is consuming the extra power.

One quick and simple solution would be to move the internal clock signal initialisation back to the radio init code.

saratoga:
If you post a patch, I'll do the battery bench.

bertrik:
Can you try this:

diff --git a/firmware/drivers/tuner/si4700.c b/firmware/drivers/tuner/si4700.c
index 16ec136..c41129b 100644
--- a/firmware/drivers/tuner/si4700.c
+++ b/firmware/drivers/tuner/si4700.c
@@ -371,6 +371,8 @@ void si4700_init(void)
 #ifdef HAVE_RDS_CAP
         si4700_rds_init();
 #endif
+        si4700_sleep(0);
+        si4700_sleep(1);
     }
 }
 
This explicitly turns on the radio to get the internal oscillator to work (so it doesn't get stuck in a neither-on-or-off state), then powers it down again.

saratoga:
Sure, running it now.

saratoga:
Patch:  14:08

Push it when you're ready.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version