summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
authorMihail Zenkov <mihail.zenkov@gmail.com>2016-02-20 03:36:26 +0000
committerMihail Zenkov <mihail.zenkov@gmail.com>2016-04-05 01:55:38 +0000
commitc7daef36c5c75b8541d38cec4793826ab085d5ad (patch)
tree7a690b321d942ad4f12a88682a0689d253c4eb7c /firmware/drivers
parentce90c0481a6c7a5a455791e4e7366c589e52b68c (diff)
downloadrockbox-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.c32
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)