summaryrefslogtreecommitdiffstats
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.tar.bz2
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 @@
* and variables:
* - imx233_button_lradc_mapping: target-defined table of adc values and mapping
* - IMX233_BUTTON_LRADC_CHANNEL: lradc channel to use
+ * - IMX233_BUTTON_LRADC_HOLD_DET: define hold detection method (ignored if !HAS_BUTTON_HOLD)
+ *
+ * The available values of IMX233_BUTTON_LRADC_HOLD are:
+ * - BLH_ADC: detect hold using adc
+ * - BLH_EXT: target button driver implements imx233_button_lradc_hold() using
+ * any external method of its choice
+ * - BLH_GPIO: detect hold using a GPIO, needs to define additional defines:
+ * + BLH_GPIO_BANK: pin bank
+ * + BLH_GPIO_PIN: pin in bank
+ * + BLH_GPIO_INVERTED: define if inverted, default is active high
+ * + BLH_GPIO_PULLUP: define if pins needs pullup
*/
-/* special value for btn to handle HOLD */
+/* hold detect method */
+#define BLH_ADC 0
+#define BLH_EXT 1
+#define BLH_GPIO 2
+
+/* special value for btn to indicate end of list */
#define IMX233_BUTTON_LRADC_END -1
+/* special value for btn to handle HOLD */
#define IMX233_BUTTON_LRADC_HOLD -2
struct imx233_button_lradc_mapping_t
@@ -50,7 +67,12 @@ struct imx233_button_lradc_mapping_t
extern struct imx233_button_lradc_mapping_t imx233_button_lradc_mapping[];
void imx233_button_lradc_init(void);
-int imx233_button_lradc_read(void);
+/* others gives the bitmask of other buttons: the function will OR the result
+ * with them except if hold is detected in which case 0 is always returned */
+int imx233_button_lradc_read(int others);
+#ifdef HAS_BUTTON_HOLD
bool imx233_button_lradc_hold(void);
+#endif
+int imx233_button_lradc_read_raw(void); // return raw adc value
#endif /* __button_lradc_imx233__ */