diff options
author | Michael Sparmann <theseven@rockbox.org> | 2010-02-17 15:54:48 +0000 |
---|---|---|
committer | Michael Sparmann <theseven@rockbox.org> | 2010-02-17 15:54:48 +0000 |
commit | 8f33879fed408e13f7dee050a1c2dc8fa53496fb (patch) | |
tree | cd005e358122660007d2e2cb3cadc5f0abdb4d28 /firmware/target/arm/s5l8700/ipodnano2g/pmu-nano2g.c | |
parent | 48e38b87591e671c9d572f91ec00f6e863a54619 (diff) | |
download | rockbox-8f33879fed408e13f7dee050a1c2dc8fa53496fb.tar.gz rockbox-8f33879fed408e13f7dee050a1c2dc8fa53496fb.zip |
Enable iPod Nano 2G boosting (without undervolting for now)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24721 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/s5l8700/ipodnano2g/pmu-nano2g.c')
-rw-r--r-- | firmware/target/arm/s5l8700/ipodnano2g/pmu-nano2g.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/pmu-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/pmu-nano2g.c index be026a8cf4..aea9b79b55 100644 --- a/firmware/target/arm/s5l8700/ipodnano2g/pmu-nano2g.c +++ b/firmware/target/arm/s5l8700/ipodnano2g/pmu-nano2g.c | |||
@@ -24,16 +24,15 @@ | |||
24 | #include "i2c-s5l8700.h" | 24 | #include "i2c-s5l8700.h" |
25 | 25 | ||
26 | static struct mutex pmu_adc_mutex; | 26 | static struct mutex pmu_adc_mutex; |
27 | int pmu_initialized = 0; | ||
28 | 27 | ||
29 | void pmu_read_multiple(int address, int count, unsigned char* buffer) | 28 | int pmu_read_multiple(int address, int count, unsigned char* buffer) |
30 | { | 29 | { |
31 | i2c_read(0xe6, address, count, buffer); | 30 | return i2c_read(0xe6, address, count, buffer); |
32 | } | 31 | } |
33 | 32 | ||
34 | void pmu_write_multiple(int address, int count, unsigned char* buffer) | 33 | int pmu_write_multiple(int address, int count, unsigned char* buffer) |
35 | { | 34 | { |
36 | i2c_write(0xe6, address, count, buffer); | 35 | return i2c_write(0xe6, address, count, buffer); |
37 | } | 36 | } |
38 | 37 | ||
39 | unsigned char pmu_read(int address) | 38 | unsigned char pmu_read(int address) |
@@ -45,22 +44,19 @@ unsigned char pmu_read(int address) | |||
45 | return tmp; | 44 | return tmp; |
46 | } | 45 | } |
47 | 46 | ||
48 | void pmu_write(int address, unsigned char val) | 47 | int pmu_write(int address, unsigned char val) |
49 | { | 48 | { |
50 | pmu_write_multiple(address, 1, &val); | 49 | return pmu_write_multiple(address, 1, &val); |
51 | } | 50 | } |
52 | 51 | ||
53 | void pmu_init(void) | 52 | void pmu_init(void) |
54 | { | 53 | { |
55 | if (pmu_initialized) return; | ||
56 | mutex_init(&pmu_adc_mutex); | 54 | mutex_init(&pmu_adc_mutex); |
57 | pmu_initialized = 1; | ||
58 | } | 55 | } |
59 | 56 | ||
60 | int pmu_read_adc(unsigned int adc) | 57 | int pmu_read_adc(unsigned int adc) |
61 | { | 58 | { |
62 | int data = 0; | 59 | int data = 0; |
63 | if (!pmu_initialized) pmu_init(); | ||
64 | mutex_lock(&pmu_adc_mutex); | 60 | mutex_lock(&pmu_adc_mutex); |
65 | pmu_write(0x54, 5 | (adc << 4)); | 61 | pmu_write(0x54, 5 | (adc << 4)); |
66 | while ((data & 0x80) == 0) | 62 | while ((data & 0x80) == 0) |