diff options
| author | Mihail Zenkov <mihail.zenkov@gmail.com> | 2016-02-20 03:36:26 +0000 |
|---|---|---|
| committer | Mihail Zenkov <mihail.zenkov@gmail.com> | 2016-04-05 01:55:38 +0000 |
| commit | c7daef36c5c75b8541d38cec4793826ab085d5ad (patch) | |
| tree | 7a690b321d942ad4f12a88682a0689d253c4eb7c /firmware/drivers | |
| parent | ce90c0481a6c7a5a455791e4e7366c589e52b68c (diff) | |
| download | rockbox-c7daef36c5c75b8541d38cec4793826ab085d5ad.zip rockbox-c7daef36c5c75b8541d38cec4793826ab085d5ad.tar.gz rockbox-c7daef36c5c75b8541d38cec4793826ab085d5ad.tar.bz2 rockbox-c7daef36c5c75b8541d38cec4793826ab085d5ad.tar.xz | |
as3525: reverting I2C2 to non-interrupts version
Interrupts version is cause of freeze on USB extraction.
Also non-interrupts version much simpler and faster.
Change-Id: I30a2993cdcaa85abfba77ca06bfacd5b6b4353e2
Diffstat (limited to 'firmware/drivers')
| -rw-r--r-- | firmware/drivers/adc-as3514.c | 32 |
1 files changed, 5 insertions, 27 deletions
diff --git a/firmware/drivers/adc-as3514.c b/firmware/drivers/adc-as3514.c index 8c661eb..3b411a3 100644 --- a/firmware/drivers/adc-as3514.c +++ b/firmware/drivers/adc-as3514.c @@ -26,40 +26,18 @@ /* Read 10-bit channel data */ unsigned short adc_read(int channel) { - unsigned short data = 0; - - if ((unsigned)channel >= NUM_ADC_CHANNELS) - return 0; + unsigned char buf[2]; ascodec_lock(); /* Select channel */ - if (ascodec_write(AS3514_ADC_0, (channel << 4)) >= 0) - { - unsigned char buf[2]; - - /* - * The AS3514 ADC will trigger an interrupt when the conversion - * is finished, if the corresponding enable bit in IRQ_ENRD2 - * is set. - * Previously the code did not wait and this apparently did - * not pose any problems, but this should be more correct. - * Without the wait the data read back may be completely or - * partially (first one of the two bytes) stale. - */ - ascodec_wait_adc_finished(); + ascodec_write(AS3514_ADC_0, (channel << 4)); - - /* Read data */ - if (ascodec_readbytes(AS3514_ADC_0, 2, buf) >= 0) - { - data = (((buf[0] & 0x3) << 8) | buf[1]); - } - } + ascodec_readbytes(AS3514_ADC_0, 2, buf); ascodec_unlock(); - - return data; + + return (((buf[0] & 0x3) << 8) | buf[1]); } void adc_init(void) |