diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2012-05-19 13:36:23 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2012-05-19 16:10:52 +0200 |
commit | 55e01b8de46555929f62a9eb762d7791786ccc58 (patch) | |
tree | 71c657f38d4d5c461803caf8bda362728284fa01 /firmware/target/arm/imx233/lradc-imx233.h | |
parent | 01216c5ad3f2996d16cd7279387d2df859ec019b (diff) | |
download | rockbox-55e01b8de46555929f62a9eb762d7791786ccc58.tar.gz rockbox-55e01b8de46555929f62a9eb762d7791786ccc58.zip |
imx233: enhance lradc driver with touchscreen specific stuff
Change-Id: I83759a00257274c0cbde5a78306256abd2c83800
Diffstat (limited to 'firmware/target/arm/imx233/lradc-imx233.h')
-rw-r--r-- | firmware/target/arm/imx233/lradc-imx233.h | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/firmware/target/arm/imx233/lradc-imx233.h b/firmware/target/arm/imx233/lradc-imx233.h index b661fa8aa4..f71843b3db 100644 --- a/firmware/target/arm/imx233/lradc-imx233.h +++ b/firmware/target/arm/imx233/lradc-imx233.h | |||
@@ -31,12 +31,19 @@ | |||
31 | #define HW_LRADC_BASE 0x80050000 | 31 | #define HW_LRADC_BASE 0x80050000 |
32 | 32 | ||
33 | #define HW_LRADC_CTRL0 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x0)) | 33 | #define HW_LRADC_CTRL0 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x0)) |
34 | #define HW_LRADC_CTRL0__XPLUS_ENABLE (1 << 16) | ||
35 | #define HW_LRADC_CTRL0__YPLUS_ENABLE (1 << 17) | ||
36 | #define HW_LRADC_CTRL0__XMINUS_ENABLE (1 << 18) | ||
37 | #define HW_LRADC_CTRL0__YMINUS_ENABLE (1 << 19) | ||
38 | #define HW_LRADC_CTRL0__TOUCH_DETECT_ENABLE (1 << 20) | ||
34 | #define HW_LRADC_CTRL0__ONCHIP_GROUNDREF (1 << 21) | 39 | #define HW_LRADC_CTRL0__ONCHIP_GROUNDREF (1 << 21) |
35 | #define HW_LRADC_CTRL0__SCHEDULE(x) (1 << (x)) | 40 | #define HW_LRADC_CTRL0__SCHEDULE(x) (1 << (x)) |
36 | 41 | ||
37 | #define HW_LRADC_CTRL1 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x10)) | 42 | #define HW_LRADC_CTRL1 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x10)) |
38 | #define HW_LRADC_CTRL1__LRADCx_IRQ(x) (1 << (x)) | 43 | #define HW_LRADC_CTRL1__LRADCx_IRQ(x) (1 << (x)) |
39 | #define HW_LRADC_CTRL1__LRADCx_IRQ_EN(x) (1 << ((x) + 16)) | 44 | #define HW_LRADC_CTRL1__TOUCH_DETECT_IRQ (1 << 8) |
45 | #define HW_LRADC_CTRL1__LRADCx_IRQ_EN(x) (1 << ((x) + 16)) | ||
46 | #define HW_LRADC_CTRL1__TOUCH_DETECT_IRQ_EN (1 << 24) | ||
40 | 47 | ||
41 | #define HW_LRADC_CTRL2 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x20)) | 48 | #define HW_LRADC_CTRL2 (*(volatile uint32_t *)(HW_LRADC_BASE + 0x20)) |
42 | #define HW_LRADC_CTRL2__TEMP_ISRC1_BP 4 | 49 | #define HW_LRADC_CTRL2__TEMP_ISRC1_BP 4 |
@@ -63,6 +70,7 @@ | |||
63 | #define HW_LRADC_CTRL3__CYCLE_TIME__2MHz (3 << 8) | 70 | #define HW_LRADC_CTRL3__CYCLE_TIME__2MHz (3 << 8) |
64 | 71 | ||
65 | #define HW_LRADC_STATUS (*(volatile uint32_t *)(HW_LRADC_BASE + 0x40)) | 72 | #define HW_LRADC_STATUS (*(volatile uint32_t *)(HW_LRADC_BASE + 0x40)) |
73 | #define HW_LRADC_STATUS__TOUCH_DETECT_RAW (1 << 0) | ||
66 | 74 | ||
67 | #define HW_LRADC_CHx(x) (*(volatile uint32_t *)(HW_LRADC_BASE + 0x50 + (x) * 0x10)) | 75 | #define HW_LRADC_CHx(x) (*(volatile uint32_t *)(HW_LRADC_BASE + 0x50 + (x) * 0x10)) |
68 | #define HW_LRADC_CHx__NUM_SAMPLES_BM (0x1f << 24) | 76 | #define HW_LRADC_CHx__NUM_SAMPLES_BM (0x1f << 24) |
@@ -100,6 +108,10 @@ | |||
100 | #define HW_LRADC_NUM_DELAYS 4 | 108 | #define HW_LRADC_NUM_DELAYS 4 |
101 | 109 | ||
102 | #define HW_LRADC_CHANNEL(x) (x) | 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) | ||
103 | #define HW_LRADC_CHANNEL_VDDIO HW_LRADC_CHANNEL(6) | 115 | #define HW_LRADC_CHANNEL_VDDIO HW_LRADC_CHANNEL(6) |
104 | #define HW_LRADC_CHANNEL_BATTERY HW_LRADC_CHANNEL(7) | 116 | #define HW_LRADC_CHANNEL_BATTERY HW_LRADC_CHANNEL(7) |
105 | #define HW_LRADC_CHANNEL_PMOS_THIN HW_LRADC_CHANNEL(8) | 117 | #define HW_LRADC_CHANNEL_PMOS_THIN HW_LRADC_CHANNEL(8) |
@@ -112,10 +124,16 @@ | |||
112 | #define HW_LRADC_CHANNEL_VBG HW_LRADC_CHANNEL(14) | 124 | #define HW_LRADC_CHANNEL_VBG HW_LRADC_CHANNEL(14) |
113 | #define HW_LRADC_CHANNEL_5V HW_LRADC_CHANNEL(15) | 125 | #define HW_LRADC_CHANNEL_5V HW_LRADC_CHANNEL(15) |
114 | 126 | ||
127 | typedef void (*lradc_irq_fn_t)(int chan); | ||
128 | |||
115 | void imx233_lradc_init(void); | 129 | void imx233_lradc_init(void); |
116 | void imx233_lradc_setup_channel(int channel, bool div2, bool acc, int nr_samples, int src); | 130 | void imx233_lradc_setup_channel(int channel, bool div2, bool acc, int nr_samples, int src); |
117 | void imx233_lradc_setup_delay(int dchan, int trigger_lradc, int trigger_delays, | 131 | void imx233_lradc_setup_delay(int dchan, int trigger_lradc, int trigger_delays, |
118 | int loop_count, int delay); | 132 | int loop_count, int delay); |
133 | void imx233_lradc_clear_channel_irq(int channel); | ||
134 | bool imx233_lradc_read_channel_irq(int channel); | ||
135 | void imx233_lradc_enable_channel_irq(int channel, bool enable); | ||
136 | void imx233_lradc_set_channel_irq_callback(int channel, lradc_irq_fn_t cb); | ||
119 | void imx233_lradc_kick_channel(int channel); | 137 | void imx233_lradc_kick_channel(int channel); |
120 | void imx233_lradc_kick_delay(int dchan); | 138 | void imx233_lradc_kick_delay(int dchan); |
121 | void imx233_lradc_wait_channel(int channel); | 139 | void imx233_lradc_wait_channel(int channel); |
@@ -132,6 +150,13 @@ int imx233_lradc_acquire_delay(int timeout); | |||
132 | void imx233_lradc_reserve_delay(int dchannel); | 150 | void imx233_lradc_reserve_delay(int dchannel); |
133 | void imx233_lradc_release_delay(int dchan); | 151 | void imx233_lradc_release_delay(int dchan); |
134 | 152 | ||
153 | /* Setup touch x/yminus pull donws and x/yplus pull ups */ | ||
154 | void imx233_lradc_setup_touch(bool xminus_enable, bool yminus_enable, | ||
155 | bool xplus_enable, bool yplus_enable, bool touch_detect); | ||
156 | void imx233_lradc_enable_touch_detect_irq(bool enable); | ||
157 | void imx233_lradc_clear_touch_detect_irq(void); | ||
158 | bool imx233_lradc_read_touch_detect(void); | ||
159 | |||
135 | /* enable sensing and return temperature in kelvin, | 160 | /* enable sensing and return temperature in kelvin, |
136 | * channels needs not to be configured */ | 161 | * channels needs not to be configured */ |
137 | int imx233_lradc_sense_die_temperature(int nmos_chan, int pmos_chan); | 162 | int imx233_lradc_sense_die_temperature(int nmos_chan, int pmos_chan); |