PortalPlayer PP502x Device Enable Registers
Overview
The
PortalPlayer PP502x
SoC have three device enable registers:
DEV_EN = 0x6000600c
DEV_EN2 = 0x60006010
DEV_EN3 = 0x60006044
Each bit in these registers enables and disables a particular part of the device. Hence, it is thought that this is the key to improving power usage and battery life on these devices. If we can figure out what each bit does, then we can selectively enable and disable bits that we're not using to give a nice battery life boost. This page collects all the information we know so far about these registers.
Known bits
The following bits are already known.
DEV_EN
Bit |
Function |
0 |
|
1 |
External Device Clocks (according to firmware/drivers/audio/as3514.c:154) |
2 |
System |
3 |
USB0, needs to be set for USB-initialization and when USB is inserted. Otherwise should be unset to save power. |
4 |
|
5 |
5G, nano: must be set, otherwise system freezes |
6 |
Serial 0 |
7 |
Serial 1 |
8 |
5G: enables GPIO? |
9 |
|
10 |
|
11 |
I2S |
12 |
I2C |
13 |
|
14 |
ATA |
15 |
|
16 |
OPTO/PIEZO |
17 |
4G: backlight PWM |
18 |
|
19 |
|
20 |
|
21 |
|
22 |
USB1, needs to be set for USB-initialization and when USB is inserted. Otherwise should be unset to save power. |
23 |
Firewire |
24 |
|
25 |
IDE0 |
26 |
LCD |
27 |
|
28 |
|
29 |
|
30 |
5G, nano: must be set, otherwise system freezes |
31 |
5G, nano: must be set at startup (otherwise doesn't start), can be unset later |
DEV_EN2
Bit |
Function |
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
PP5020: ADC |
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
nano, H10, 4G Color/Photo: LCD |
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
DEV_EN3
Bit |
Function |
0 |
5G: must be set, otherwise system freezes |
1 |
5G: must be set, otherwise system freezes |
2 |
5G: must be set, otherwise crash on playback |
3 |
5G: must be set at startup (otherise doesn't reboot into disk mode), can be unset later |
4 |
5G: must be set, otherwise system freezes / Doesn't Boot if unset |
5 |
5G: must be set, otherwise crash on playback |
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
DEV_INIT1
Bit |
Function |
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
H10: ADC remote, mrobe100: needed for startup |
9 |
|
10 |
|
11 |
|
12 |
H10: ADC wheel, mrobe100: needed for startup |
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
nano, 5G: needed for button detection (e.g. hold) |
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
e280: needed for LCD, H10, 4G Color/Photo: needed for startup |
27 |
nano: needed for LCD, H10, 4G Color/Photo: needed for startup |
28 |
e280: needed for LCD, H10, 4G Color/Photo: needed for startup |
29 |
nano: needed for LCD |
30 |
e280: needed for LCD, H10, 4G Color/Photo: needed for startup |
31 |
nano: needed for LCD, H10, 4G Color/Photo: needed for startup |
DEV_INIT2
Bit |
Function |
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
CDI/I2S for sansa c200/e200 I2C and I2S |
9 |
CDI/I2S for sansa c200/e200 I2C and I2S |
10 |
|
11 |
mystery amplification device for sansa C200 tuner |
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
PP502x: enable PLL |
31 |
PP502x: init USB |
Known values for devices
The following lists the values as obtained from the I/O ports debug screen for some devices (idle, no hold-button, no USB connected, not boosted):
Device |
DEV_EN |
DEV_EN2 |
DEV_EN3 |
DEV_INIT1 |
DEV_INIT2 |
iPod 4G Greyscale |
0xC2C3197F |
0x00000000 |
0x0007003F |
|
|
iPod Color |
0xC2C3197F |
0x00002000 |
0x0007003F |
|
|
iPod Mini 1G (svn < 16259) |
0xC2801977 |
0x00000000 |
0x0007003F |
0x00040000 |
0x00000000 |
iPod Mini 2G |
0xC2C1197F |
0x00000000 |
0x0007003F |
|
|
iPod Video (5.5G) |
0xC2C1197F |
0x00000000 |
0x0007003F |
|
|
iPod Video (5.5G) (svn >= 16259) |
0xC0011926 |
0x00000000 |
0x0000003F |
0x00040000 |
0x00000000 |
iriver H10 20GB |
0xC240197F |
0x00002020 |
0x0007003F |
|
|
iriver H10 6GB |
0xC240197F |
0x00002020 |
0x0007003F |
|
|
iiriver H10 6GB (5.5G) (svn >= 16259) |
0xC2001926 |
0x00002020 |
0x0000003F |
0xDC001100 |
0x00000000 |
Sansa c240 |
0xC040597F |
0x00000000 |
|
|
|
Sansa e280 |
0xC440597F |
0x00000000 |
0x0007003F |
|
|
Sansa e200 (svn >= 16259) |
0xC4005926 |
0x00000000 |
0x0000003F |
0x54000000 |
0x00000000 |
Sansa e250 (-radio) (JonathanGordon) |
0xC440597F |
0x00002000 |
0x0007003F |
|
|
Copyright © by the contributing authors.