diff options
Diffstat (limited to 'firmware/target/arm/sandisk/sansa-e200/adc-e200.c')
-rw-r--r-- | firmware/target/arm/sandisk/sansa-e200/adc-e200.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/firmware/target/arm/sandisk/sansa-e200/adc-e200.c b/firmware/target/arm/sandisk/sansa-e200/adc-e200.c index b3206d68d1..5e57e4bec5 100644 --- a/firmware/target/arm/sandisk/sansa-e200/adc-e200.c +++ b/firmware/target/arm/sandisk/sansa-e200/adc-e200.c | |||
@@ -18,23 +18,25 @@ | |||
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | #include "adc.h" | 19 | #include "adc.h" |
20 | #include "i2c-pp.h" | 20 | #include "i2c-pp.h" |
21 | #include "logf.h" | 21 | #include "as3514.h" |
22 | 22 | ||
23 | /* Read 10-bit channel data */ | 23 | /* Read 10-bit channel data */ |
24 | unsigned short adc_read(int channel) | 24 | unsigned short adc_read(int channel) |
25 | { | 25 | { |
26 | unsigned char bat[2]; | 26 | unsigned char buf[2]; |
27 | unsigned short data = 0; | 27 | unsigned short data = 0; |
28 | 28 | ||
29 | switch( channel) | 29 | /* Select channel */ |
30 | { | 30 | pp_i2c_send( AS3514_I2C_ADDR, ADC_0, (channel << 4)); |
31 | case ADC_UNREG_POWER: | 31 | |
32 | pp_i2c_send( 0x46, 0x2e, 0x0); | 32 | /* Wait for conversion to be complete */ |
33 | pp_i2c_send( 0x46, 0x27, 0x1); | 33 | pp_i2c_send( AS3514_I2C_ADDR, IRQ_ENRD2, 0x1); |
34 | i2c_readbytes( 0x46, 0x2e, 2, bat); | 34 | while( (i2c_readbyte( AS3514_I2C_ADDR, IRQ_ENRD2) & 0x1) == 0); |
35 | data = ((bat[0]<<8) | bat[1]); | 35 | |
36 | break; | 36 | /* Read data */ |
37 | } | 37 | i2c_readbytes( AS3514_I2C_ADDR, ADC_0, 2, buf); |
38 | data = (((buf[0] & 0x3) << 8) | buf[1]); | ||
39 | |||
38 | return data; | 40 | return data; |
39 | } | 41 | } |
40 | 42 | ||