summaryrefslogtreecommitdiff
path: root/firmware/target/arm/sandisk/sansa-e200/adc-e200.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/sandisk/sansa-e200/adc-e200.c')
-rw-r--r--firmware/target/arm/sandisk/sansa-e200/adc-e200.c24
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 */
24unsigned short adc_read(int channel) 24unsigned 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