diff options
author | Cástor Muñoz <cmvidal@gmail.com> | 2017-03-03 22:46:57 +0100 |
---|---|---|
committer | Cástor Muñoz <cmvidal@gmail.com> | 2017-03-03 22:50:38 +0100 |
commit | 1ba5ef716d37a9fe7f0863caed2fab8570b2c7c4 (patch) | |
tree | 2e209052bc802183b73a705f77ebc552250c9353 /firmware/target/arm/s5l8702/ipod6g/adc-6g.c | |
parent | 8ff1b6b6033aad55fadf076f066da5d8b7d2e631 (diff) | |
download | rockbox-1ba5ef716d37a9fe7f0863caed2fab8570b2c7c4.tar.gz rockbox-1ba5ef716d37a9fe7f0863caed2fab8570b2c7c4.zip |
ipod6g: rename some target files
As preparation to add new targets to the s5l8702 directory,
rename files as:
s5l8702/ipod6g/*-ipod6g.c -> s5l8702/ipod6g/*-6g.c
Change-Id: I0cd03d6bcf39b2aa198235f9014cb6948bbafcd5
Diffstat (limited to 'firmware/target/arm/s5l8702/ipod6g/adc-6g.c')
-rw-r--r-- | firmware/target/arm/s5l8702/ipod6g/adc-6g.c | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/firmware/target/arm/s5l8702/ipod6g/adc-6g.c b/firmware/target/arm/s5l8702/ipod6g/adc-6g.c new file mode 100644 index 0000000000..fbe5ef805e --- /dev/null +++ b/firmware/target/arm/s5l8702/ipod6g/adc-6g.c | |||
@@ -0,0 +1,117 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id: adc-s5l8700.c 21775 2009-07-11 14:12:02Z bertrik $ | ||
9 | * | ||
10 | * Copyright (C) 2009 by Bertrik Sikken | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | #include "config.h" | ||
23 | |||
24 | #include "inttypes.h" | ||
25 | #include "s5l8702.h" | ||
26 | #include "adc.h" | ||
27 | #include "adc-target.h" | ||
28 | #include "pmu-target.h" | ||
29 | #include "kernel.h" | ||
30 | |||
31 | |||
32 | /* MS_TO_TICKS converts a milisecond time period into the | ||
33 | * corresponding amount of ticks. If the time period cannot | ||
34 | * be accurately measured in ticks it will round up. | ||
35 | */ | ||
36 | #define MS_PER_HZ (1000/HZ) | ||
37 | #define MS_TO_TICKS(x) (((x)+MS_PER_HZ-1)/MS_PER_HZ) | ||
38 | |||
39 | static const struct pmu_adc_channel adc_channels[] = | ||
40 | { | ||
41 | [ADC_BATTERY] = | ||
42 | { | ||
43 | .name = "Battery", | ||
44 | .adcc1 = PCF5063X_ADCC1_MUX_BATSNS_SUBTR | ||
45 | | PCF5063X_ADCC1_AVERAGE_4 | ||
46 | | PCF5063X_ADCC1_RES_10BIT, | ||
47 | }, | ||
48 | |||
49 | [ADC_USBDATA] = | ||
50 | { | ||
51 | .name = "USB D+/D-", | ||
52 | .adcc1 = PCF5063X_ADCC1_MUX_ADCIN2_RES | ||
53 | | PCF5063X_ADCC1_AVERAGE_16 | ||
54 | | PCF5063X_ADCC1_RES_10BIT, | ||
55 | .adcc3 = PCF5063X_ADCC3_RES_DIV_THREE, | ||
56 | }, | ||
57 | |||
58 | [ADC_ACCESSORY] = | ||
59 | { | ||
60 | .name = "Accessory", | ||
61 | .adcc1 = PCF5063X_ADCC1_MUX_ADCIN1 | ||
62 | | PCF5063X_ADCC1_AVERAGE_16 | ||
63 | | PCF5063X_ADCC1_RES_10BIT, | ||
64 | .adcc2 = PCF5063X_ADCC2_RATIO_ADCIN1 | ||
65 | | PCF5063X_ADCC2_RATIOSETTL_10US, | ||
66 | .adcc3 = PCF5063X_ADCC3_ACCSW_EN, | ||
67 | .bias_dly = MS_TO_TICKS(50), | ||
68 | }, | ||
69 | }; | ||
70 | |||
71 | const char *adc_name(int channel) | ||
72 | { | ||
73 | return adc_channels[channel].name; | ||
74 | } | ||
75 | |||
76 | unsigned short adc_read_millivolts(int channel) | ||
77 | { | ||
78 | const struct pmu_adc_channel *ch = &adc_channels[channel]; | ||
79 | return pmu_adc_raw2mv(ch, pmu_read_adc(ch)); | ||
80 | } | ||
81 | |||
82 | /* Returns battery voltage [millivolts] */ | ||
83 | unsigned int adc_read_battery_voltage(void) | ||
84 | { | ||
85 | return adc_read_millivolts(ADC_BATTERY); | ||
86 | } | ||
87 | |||
88 | /* Returns USB D+/D- voltage from ADC [millivolts] */ | ||
89 | unsigned int adc_read_usbdata_voltage(bool dp) | ||
90 | { | ||
91 | unsigned int mvolts; | ||
92 | int gpio = dp ? 0xb0300 : 0xb0200; /* select D+/D- */ | ||
93 | GPIOCMD = gpio | 0xf; /* route to ADCIN2 */ | ||
94 | mvolts = adc_read_millivolts(ADC_USBDATA); | ||
95 | GPIOCMD = gpio | 0xe; /* unroute */ | ||
96 | return mvolts; | ||
97 | } | ||
98 | |||
99 | /* Returns resistor connected to "Accessory identify" pin [ohms] */ | ||
100 | #define IAP_DEVICE_RESISTOR 100000 /* ohms */ | ||
101 | int adc_read_accessory_resistor(void) | ||
102 | { | ||
103 | int raw = pmu_read_adc(&adc_channels[ADC_ACCESSORY]); | ||
104 | return (1023-raw) ? raw * IAP_DEVICE_RESISTOR / (1023-raw) | ||
105 | : -1 /* open circuit */; | ||
106 | } | ||
107 | |||
108 | |||
109 | /* API functions */ | ||
110 | unsigned short adc_read(int channel) | ||
111 | { | ||
112 | return pmu_read_adc(&adc_channels[channel]); | ||
113 | } | ||
114 | |||
115 | void adc_init(void) | ||
116 | { | ||
117 | } | ||