diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2014-01-05 15:20:41 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2014-01-21 18:52:28 +0100 |
commit | 69d0dae55bf3da2f356dbd03dba299c708133902 (patch) | |
tree | ff60084c40831c6f8f7b8806d54fe570c2d8955b /firmware/target/arm/imx233/creative-zen/button-zen.c | |
parent | b3abcb807b7f6202158a47668af7f2505b6dd25e (diff) | |
download | rockbox-69d0dae55bf3da2f356dbd03dba299c708133902.tar.gz rockbox-69d0dae55bf3da2f356dbd03dba299c708133902.zip |
Initial commit for the ZEN X-Fi Style
Change-Id: Ib25a357a7bafd2ef25f273cadff70fafbd8d4661
Diffstat (limited to 'firmware/target/arm/imx233/creative-zen/button-zen.c')
-rw-r--r-- | firmware/target/arm/imx233/creative-zen/button-zen.c | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/firmware/target/arm/imx233/creative-zen/button-zen.c b/firmware/target/arm/imx233/creative-zen/button-zen.c index 8f20961a57..c0e7205675 100644 --- a/firmware/target/arm/imx233/creative-zen/button-zen.c +++ b/firmware/target/arm/imx233/creative-zen/button-zen.c | |||
@@ -25,6 +25,14 @@ | |||
25 | #include "power-imx233.h" | 25 | #include "power-imx233.h" |
26 | #include "button-lradc-imx233.h" | 26 | #include "button-lradc-imx233.h" |
27 | 27 | ||
28 | #if defined(CREATIVE_ZENXFI) || defined(CREATIVE_ZENMOZAIC) | ||
29 | #define JACK_DET_BANK 2 | ||
30 | #define JACK_DET_PIN 8 | ||
31 | #elif defined(CREATIVE_ZENXFISTYLE) | ||
32 | #define JACK_DET_BANK 2 | ||
33 | #define JACK_DET_PIN 7 | ||
34 | #endif | ||
35 | |||
28 | struct imx233_button_lradc_mapping_t imx233_button_lradc_mapping[] = | 36 | struct imx233_button_lradc_mapping_t imx233_button_lradc_mapping[] = |
29 | { | 37 | { |
30 | #if defined(CREATIVE_ZEN) | 38 | #if defined(CREATIVE_ZEN) |
@@ -84,6 +92,18 @@ struct imx233_button_lradc_mapping_t imx233_button_lradc_mapping[] = | |||
84 | {2945, BUTTON_PLAYPAUSE}, | 92 | {2945, BUTTON_PLAYPAUSE}, |
85 | {3400, 0}, | 93 | {3400, 0}, |
86 | {0, IMX233_BUTTON_LRADC_END}, | 94 | {0, IMX233_BUTTON_LRADC_END}, |
95 | #elif defined(CREATIVE_ZENXFISTYLE) | ||
96 | {230, BUTTON_MENU}, | ||
97 | {480, BUTTON_SHORTCUT}, | ||
98 | {690, BUTTON_UP}, | ||
99 | {920, BUTTON_LEFT}, | ||
100 | {1120, BUTTON_RIGHT}, | ||
101 | {1335, BUTTON_DOWN}, | ||
102 | {1565, BUTTON_SELECT}, | ||
103 | {2850, BUTTON_BACK}, | ||
104 | {3110, BUTTON_PLAYPAUSE}, | ||
105 | {3620, 0}, | ||
106 | {0, IMX233_BUTTON_LRADC_END}, | ||
87 | #else | 107 | #else |
88 | #error wrong target | 108 | #error wrong target |
89 | #endif | 109 | #endif |
@@ -92,29 +112,43 @@ struct imx233_button_lradc_mapping_t imx233_button_lradc_mapping[] = | |||
92 | void button_init_device(void) | 112 | void button_init_device(void) |
93 | { | 113 | { |
94 | imx233_button_lradc_init(); | 114 | imx233_button_lradc_init(); |
95 | #if defined(CREATIVE_ZENXFI) || defined(CREATIVE_ZENMOZAIC) | 115 | #ifdef HAVE_HEADPHONE_DETECTION |
96 | imx233_pinctrl_acquire(2, 8, "jack_detect"); | 116 | imx233_pinctrl_acquire(JACK_DET_BANK, JACK_DET_PIN, "jack_detect"); |
97 | imx233_pinctrl_set_function(2, 8, PINCTRL_FUNCTION_GPIO); | 117 | imx233_pinctrl_set_function(JACK_DET_BANK, JACK_DET_PIN, PINCTRL_FUNCTION_GPIO); |
98 | imx233_pinctrl_enable_gpio(2, 8, false); | 118 | imx233_pinctrl_enable_gpio(JACK_DET_BANK, JACK_DET_PIN, false); |
119 | #endif | ||
120 | #ifdef CREATIVE_ZENXFISTYLE | ||
121 | imx233_pinctrl_acquire(0, 11, "power_detect"); | ||
122 | imx233_pinctrl_set_function(0, 11, PINCTRL_FUNCTION_GPIO); | ||
123 | imx233_pinctrl_enable_gpio(0, 11, false); | ||
99 | #endif | 124 | #endif |
100 | } | 125 | } |
101 | 126 | ||
127 | #ifdef HAS_BUTTON_HOLD | ||
102 | bool button_hold(void) | 128 | bool button_hold(void) |
103 | { | 129 | { |
104 | return imx233_button_lradc_hold(); | 130 | return imx233_button_lradc_hold(); |
105 | } | 131 | } |
132 | #endif | ||
106 | 133 | ||
107 | #if defined(CREATIVE_ZENXFI) || defined(CREATIVE_ZENMOZAIC) | 134 | #ifdef HAVE_HEADPHONE_DETECTION |
108 | bool headphones_inserted(void) | 135 | bool headphones_inserted(void) |
109 | { | 136 | { |
110 | return !imx233_pinctrl_get_gpio(2, 8); | 137 | return !imx233_pinctrl_get_gpio(JACK_DET_BANK, JACK_DET_PIN); |
111 | } | 138 | } |
112 | #endif | 139 | #endif |
113 | 140 | ||
114 | int button_read_device(void) | 141 | int button_read_device(void) |
115 | { | 142 | { |
116 | int btn = 0; | 143 | int btn = 0; |
144 | #ifdef CREATIVE_ZENXFISTYLE | ||
145 | /* The ZEN X-Fi Style uses a GPIO because both select and power are wired | ||
146 | * to PSWITCH resulting in slow and unreliable readings */ | ||
147 | if(!imx233_pinctrl_get_gpio(0, 11)) | ||
148 | btn |= BUTTON_POWER; | ||
149 | #else | ||
117 | if(imx233_power_read_pswitch() == 1) | 150 | if(imx233_power_read_pswitch() == 1) |
118 | btn |= BUTTON_POWER; | 151 | btn |= BUTTON_POWER; |
152 | #endif | ||
119 | return imx233_button_lradc_read(btn); | 153 | return imx233_button_lradc_read(btn); |
120 | } | 154 | } |