summaryrefslogtreecommitdiff
path: root/firmware/target/arm/iriver/ifp7xx/adc-ifp7xx.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/iriver/ifp7xx/adc-ifp7xx.c')
-rw-r--r--firmware/target/arm/iriver/ifp7xx/adc-ifp7xx.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/firmware/target/arm/iriver/ifp7xx/adc-ifp7xx.c b/firmware/target/arm/iriver/ifp7xx/adc-ifp7xx.c
new file mode 100644
index 0000000000..79b1ad0fcb
--- /dev/null
+++ b/firmware/target/arm/iriver/ifp7xx/adc-ifp7xx.c
@@ -0,0 +1,57 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2006 by Barry Wardell
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19#include "config.h"
20#include "cpu.h"
21#include "system.h"
22#include "kernel.h"
23#include "thread.h"
24#include "adc.h"
25
26static unsigned short adcdata[NUM_ADC_CHANNELS];
27
28unsigned short adc_read(int channel)
29{
30 return adcdata[channel];
31}
32
33static void adc_tick(void)
34{
35 if (ADCST & 0x10) {
36 adcdata[0] = ADCCH0 & 0x3ff;
37 adcdata[1] = ADCCH1 & 0x3ff;
38 adcdata[2] = ADCCH2 & 0x3ff;
39 adcdata[3] = ADCCH3 & 0x3ff;
40 adcdata[4] = ADCCH4 & 0x3ff;
41 ADCST = 0xa;
42 }
43}
44
45void adc_init(void)
46{
47 ADCR24 = 0xaaaaa;
48 ADCR28 = 0;
49 ADCST = 2;
50 ADCST = 0xa;
51
52 while (!(ADCST & 0x10));
53 adc_tick();
54
55 tick_add_task(adc_tick);
56}
57