summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233/lradc-imx233.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx233/lradc-imx233.h')
-rw-r--r--firmware/target/arm/imx233/lradc-imx233.h129
1 files changed, 34 insertions, 95 deletions
diff --git a/firmware/target/arm/imx233/lradc-imx233.h b/firmware/target/arm/imx233/lradc-imx233.h
index f71843b3db..d1529f4266 100644
--- a/firmware/target/arm/imx233/lradc-imx233.h
+++ b/firmware/target/arm/imx233/lradc-imx233.h
@@ -28,101 +28,40 @@
28#include "system.h" 28#include "system.h"
29#include "system-target.h" 29#include "system-target.h"
30 30
31#define HW_LRADC_BASE 0x80050000 31#include "regs/regs-lradc.h"
32 32
33#define HW_LRADC_CTRL0 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x0)) 33/** additional defines */
34#define HW_LRADC_CTRL0__XPLUS_ENABLE (1 << 16) 34#define BP_LRADC_CTRL4_LRADCxSELECT(x) (4 * (x))
35#define HW_LRADC_CTRL0__YPLUS_ENABLE (1 << 17) 35#define BM_LRADC_CTRL4_LRADCxSELECT(x) (0xf << (4 * (x)))
36#define HW_LRADC_CTRL0__XMINUS_ENABLE (1 << 18) 36
37#define HW_LRADC_CTRL0__YMINUS_ENABLE (1 << 19) 37#define BP_LRADC_CTRL1_LRADCx_IRQ(x) (x)
38#define HW_LRADC_CTRL0__TOUCH_DETECT_ENABLE (1 << 20) 38#define BM_LRADC_CTRL1_LRADCx_IRQ(x) (1 << (x))
39#define HW_LRADC_CTRL0__ONCHIP_GROUNDREF (1 << 21) 39
40#define HW_LRADC_CTRL0__SCHEDULE(x) (1 << (x)) 40#define BP_LRADC_CTRL1_LRADCx_IRQ_EN(x) (16 + (x))
41 41#define BM_LRADC_CTRL1_LRADCx_IRQ_EN(x) (1 << (16 + (x)))
42#define HW_LRADC_CTRL1 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x10)) 42
43#define HW_LRADC_CTRL1__LRADCx_IRQ(x) (1 << (x)) 43#define LRADC_NUM_CHANNELS 8
44#define HW_LRADC_CTRL1__TOUCH_DETECT_IRQ (1 << 8) 44#define LRADC_NUM_DELAYS 4
45#define HW_LRADC_CTRL1__LRADCx_IRQ_EN(x) (1 << ((x) + 16)) 45
46#define HW_LRADC_CTRL1__TOUCH_DETECT_IRQ_EN (1 << 24) 46#define LRADC_SRC(x) (x)
47 47#define LRADC_SRC_XPLUS LRADC_SRC(2)
48#define HW_LRADC_CTRL2 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x20)) 48#define LRADC_SRC_YPLUS LRADC_SRC(3)
49#define HW_LRADC_CTRL2__TEMP_ISRC1_BP 4 49#define LRADC_SRC_XMINUS LRADC_SRC(4)
50#define HW_LRADC_CTRL2__TEMP_ISRC1_BM 0xf0 50#define LRADC_SRC_YMINUS LRADC_SRC(5)
51#define HW_LRADC_CTRL2__TEMP_ISRC0_BP 0 51#define LRADC_SRC_VDDIO LRADC_SRC(6)
52#define HW_LRADC_CTRL2__TEMP_ISRC0_BM 0xf 52#define LRADC_SRC_BATTERY LRADC_SRC(7)
53#define HW_LRADC_CTRL2__TEMP_ISRCx_BP(x) (4 * (x)) 53#define LRADC_SRC_PMOS_THIN LRADC_SRC(8)
54#define HW_LRADC_CTRL2__TEMP_ISRCx_BM(x) (0xf << (4 * (x))) 54#define LRADC_SRC_NMOS_THIN LRADC_SRC(9)
55#define HW_LRADC_CTRL2__TEMP_ISRC__0uA 0 55#define LRADC_SRC_NMOS_THICK LRADC_SRC(10)
56#define HW_LRADC_CTRL2__TEMP_ISRC__20uA 1 56#define LRADC_SRC_PMOS_THICK LRADC_SRC(11)
57#define HW_LRADC_CTRL2__TEMP_ISRC__300uA 15 57#define LRADC_SRC_PMOS_THICK LRADC_SRC(11)
58#define HW_LRADC_CTRL2__TEMP_SENSOR_IENABLE0 (1 << 8) 58#define LRADC_SRC_USB_DP LRADC_SRC(12)
59#define HW_LRADC_CTRL2__TEMP_SENSOR_IENABLE1 (1 << 9) 59#define LRADC_SRC_USB_DN LRADC_SRC(13)
60#define HW_LRADC_CTRL2__TEMP_SENSOR_IENABLEx(x) (1 << (8 + (x))) 60#define LRADC_SRC_VBG LRADC_SRC(14)
61#define HW_LRADC_CTRL2__TEMPSENSE_PWD (1 << 15) 61#define LRADC_SRC_5V LRADC_SRC(15)
62#define HW_LRADC_CTRL2__DIVIDE_BY_TWO(x) (1 << ((x) + 24)) 62
63 63/* frequency of the delay counter */
64#define HW_LRADC_CTRL3 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x30)) 64#define LRADC_DELAY_FREQ 2000
65#define HW_LRADC_CTRL3__CYCLE_TIME_BM 0x300
66#define HW_LRADC_CTRL3__CYCLE_TIME_BP 8
67#define HW_LRADC_CTRL3__CYCLE_TIME__6MHz (0 << 8)
68#define HW_LRADC_CTRL3__CYCLE_TIME__4MHz (1 << 8)
69#define HW_LRADC_CTRL3__CYCLE_TIME__3MHz (2 << 8)
70#define HW_LRADC_CTRL3__CYCLE_TIME__2MHz (3 << 8)
71
72#define HW_LRADC_STATUS (*(volatile uint32_t *)(HW_LRADC_BASE + 0x40))
73#define HW_LRADC_STATUS__TOUCH_DETECT_RAW (1 << 0)
74
75#define HW_LRADC_CHx(x) (*(volatile uint32_t *)(HW_LRADC_BASE + 0x50 + (x) * 0x10))
76#define HW_LRADC_CHx__NUM_SAMPLES_BM (0x1f << 24)
77#define HW_LRADC_CHx__NUM_SAMPLES_BP 24
78#define HW_LRADC_CHx__ACCUMULATE 29
79#define HW_LRADC_CHx__VALUE_BM 0x3ffff
80#define HW_LRADC_CHx__VALUE_BP 0
81
82#define HW_LRADC_DELAYx(x) (*(volatile uint32_t *)(HW_LRADC_BASE + 0xD0 + (x) * 0x10))
83#define HW_LRADC_DELAYx__DELAY_BP 0
84#define HW_LRADC_DELAYx__DELAY_BM 0x7ff
85#define HW_LRADC_DELAYx__LOOP_COUNT_BP 11
86#define HW_LRADC_DELAYx__LOOP_COUNT_BM (0x1f << 11)
87#define HW_LRADC_DELAYx__TRIGGER_DELAYS_BP 16
88#define HW_LRADC_DELAYx__TRIGGER_DELAYS_BM (0xf << 16)
89#define HW_LRADC_DELAYx__KICK (1 << 20)
90#define HW_LRADC_DELAYx__TRIGGER_LRADCS_BP 24
91#define HW_LRADC_DELAYx__TRIGGER_LRADCS_BM (0xff << 24)
92
93#define HW_LRADC_CONVERSION (*(volatile uint32_t *)(HW_LRADC_BASE + 0x130))
94#define HW_LRADC_CONVERSION__SCALED_BATT_VOLTAGE_BP 0
95#define HW_LRADC_CONVERSION__SCALED_BATT_VOLTAGE_BM 0x3ff
96#define HW_LRADC_CONVERSION__SCALE_FACTOR_BM (3 << 16)
97#define HW_LRADC_CONVERSION__SCALE_FACTOR_BP 16
98#define HW_LRADC_CONVERSION__SCALE_FACTOR__LI_ION (2 << 16)
99#define HW_LRADC_CONVERSION__AUTOMATIC (1 << 20)
100
101#define HW_LRADC_CTRL4 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x140))
102#define HW_LRADC_CTRL4__LRADCxSELECT_BM(x) (0xf << ((x) * 4))
103#define HW_LRADC_CTRL4__LRADCxSELECT_BP(x) ((x) * 4)
104
105#define HW_LRADC_VERSION (*(volatile uint32_t *)(HW_LRADC_BASE + 0x150))
106
107#define HW_LRADC_NUM_CHANNELS 8
108#define HW_LRADC_NUM_DELAYS 4
109
110#define HW_LRADC_CHANNEL(x) (x)
111#define HW_LRADC_CHANNEL_XPLUS HW_LRADC_CHANNEL(2)
112#define HW_LRADC_CHANNEL_YPLUS HW_LRADC_CHANNEL(3)
113#define HW_LRADC_CHANNEL_XMINUS HW_LRADC_CHANNEL(4)
114#define HW_LRADC_CHANNEL_YMINUS HW_LRADC_CHANNEL(5)
115#define HW_LRADC_CHANNEL_VDDIO HW_LRADC_CHANNEL(6)
116#define HW_LRADC_CHANNEL_BATTERY HW_LRADC_CHANNEL(7)
117#define HW_LRADC_CHANNEL_PMOS_THIN HW_LRADC_CHANNEL(8)
118#define HW_LRADC_CHANNEL_NMOS_THIN HW_LRADC_CHANNEL(9)
119#define HW_LRADC_CHANNEL_NMOS_THICK HW_LRADC_CHANNEL(10)
120#define HW_LRADC_CHANNEL_PMOS_THICK HW_LRADC_CHANNEL(11)
121#define HW_LRADC_CHANNEL_PMOS_THICK HW_LRADC_CHANNEL(11)
122#define HW_LRADC_CHANNEL_USB_DP HW_LRADC_CHANNEL(12)
123#define HW_LRADC_CHANNEL_USB_DN HW_LRADC_CHANNEL(13)
124#define HW_LRADC_CHANNEL_VBG HW_LRADC_CHANNEL(14)
125#define HW_LRADC_CHANNEL_5V HW_LRADC_CHANNEL(15)
126 65
127typedef void (*lradc_irq_fn_t)(int chan); 66typedef void (*lradc_irq_fn_t)(int chan);
128 67