summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233/button-lradc-imx233.h
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2013-09-25 14:15:41 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2013-09-25 14:31:39 +0200
commit59094381936bba343708b26ff73593e08a0f88e9 (patch)
tree15c1fae5df2adcd254628b083bfdcc2b50bf44f1 /firmware/target/arm/imx233/button-lradc-imx233.h
parent2f5f2ba91dfe5a41551d54b7af33be42e7a27c5d (diff)
downloadrockbox-59094381936bba343708b26ff73593e08a0f88e9.tar.gz
rockbox-59094381936bba343708b26ff73593e08a0f88e9.zip
imx233: improve button lradc driver
The driver can now handle HOLD in several ways, including using a GPIO. Also add a debug routine to read the raw value of the adc. Change-Id: Ide2cb1ac58e759b4bc464e606b432f2c150ee36f
Diffstat (limited to 'firmware/target/arm/imx233/button-lradc-imx233.h')
-rw-r--r--firmware/target/arm/imx233/button-lradc-imx233.h26
1 files changed, 24 insertions, 2 deletions
diff --git a/firmware/target/arm/imx233/button-lradc-imx233.h b/firmware/target/arm/imx233/button-lradc-imx233.h
index d3e6ad8326..eac5517adf 100644
--- a/firmware/target/arm/imx233/button-lradc-imx233.h
+++ b/firmware/target/arm/imx233/button-lradc-imx233.h
@@ -29,10 +29,27 @@
29 * and variables: 29 * and variables:
30 * - imx233_button_lradc_mapping: target-defined table of adc values and mapping 30 * - imx233_button_lradc_mapping: target-defined table of adc values and mapping
31 * - IMX233_BUTTON_LRADC_CHANNEL: lradc channel to use 31 * - IMX233_BUTTON_LRADC_CHANNEL: lradc channel to use
32 * - IMX233_BUTTON_LRADC_HOLD_DET: define hold detection method (ignored if !HAS_BUTTON_HOLD)
33 *
34 * The available values of IMX233_BUTTON_LRADC_HOLD are:
35 * - BLH_ADC: detect hold using adc
36 * - BLH_EXT: target button driver implements imx233_button_lradc_hold() using
37 * any external method of its choice
38 * - BLH_GPIO: detect hold using a GPIO, needs to define additional defines:
39 * + BLH_GPIO_BANK: pin bank
40 * + BLH_GPIO_PIN: pin in bank
41 * + BLH_GPIO_INVERTED: define if inverted, default is active high
42 * + BLH_GPIO_PULLUP: define if pins needs pullup
32 */ 43 */
33 44
34/* special value for btn to handle HOLD */ 45/* hold detect method */
46#define BLH_ADC 0
47#define BLH_EXT 1
48#define BLH_GPIO 2
49
50/* special value for btn to indicate end of list */
35#define IMX233_BUTTON_LRADC_END -1 51#define IMX233_BUTTON_LRADC_END -1
52/* special value for btn to handle HOLD */
36#define IMX233_BUTTON_LRADC_HOLD -2 53#define IMX233_BUTTON_LRADC_HOLD -2
37 54
38struct imx233_button_lradc_mapping_t 55struct imx233_button_lradc_mapping_t
@@ -50,7 +67,12 @@ struct imx233_button_lradc_mapping_t
50extern struct imx233_button_lradc_mapping_t imx233_button_lradc_mapping[]; 67extern struct imx233_button_lradc_mapping_t imx233_button_lradc_mapping[];
51 68
52void imx233_button_lradc_init(void); 69void imx233_button_lradc_init(void);
53int imx233_button_lradc_read(void); 70/* others gives the bitmask of other buttons: the function will OR the result
71 * with them except if hold is detected in which case 0 is always returned */
72int imx233_button_lradc_read(int others);
73#ifdef HAS_BUTTON_HOLD
54bool imx233_button_lradc_hold(void); 74bool imx233_button_lradc_hold(void);
75#endif
76int imx233_button_lradc_read_raw(void); // return raw adc value
55 77
56#endif /* __button_lradc_imx233__ */ 78#endif /* __button_lradc_imx233__ */