Instantly share code, notes, and snippets.
Last active
May 27, 2016 13:12
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save pamaury/fd089eca8f54b5eed4bbfcecaacd3dc7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/firmware/target/arm/imx233/button-imx233.c b/firmware/target/arm/imx233/button-imx233.c | |
index 4ebba41..15188f3 100644 | |
--- a/firmware/target/arm/imx233/button-imx233.c | |
+++ b/firmware/target/arm/imx233/button-imx233.c | |
@@ -89,7 +89,21 @@ static bool imx233_button_read_cooked(int idx) | |
int rel = MAP[idx].u.lradc.relative; | |
if(rel != -1) | |
raw = (raw * MAP[rel].u.lradc.value) / imx233_button_read_raw(rel); | |
- res = abs(raw - MAP[idx].u.lradc.value) <= 30; | |
+ switch(MAP[idx].u.lradc.op) | |
+ { | |
+ case IMX233_BUTTON_EQ: | |
+ res = abs(raw - MAP[idx].u.lradc.value) <= MAP[idx].u.lradc.margin; | |
+ break; | |
+ case IMX233_BUTTON_GT: | |
+ res = raw > MAP[idx].u.lradc.value; | |
+ break; | |
+ case IMX233_BUTTON_LT: | |
+ res = raw < MAP[idx].u.lradc.value; | |
+ break; | |
+ default: | |
+ res = false; | |
+ break; | |
+ } | |
} | |
else if(MAP[idx].periph == IMX233_BUTTON_PSWITCH) | |
{ | |
@@ -227,6 +241,9 @@ void imx233_button_init(void) | |
imx233_lradc_set_channel_irq_callback(src_map[src], button_lradc_irq); | |
src_mask |= 1 << src; | |
chan_mask |= 1 << src_map[src]; | |
+ /* use default value for margin */ | |
+ if(MAP[i].u.lradc.margin == 0) | |
+ MAP[i].u.lradc.margin = 30; | |
} | |
#ifdef HAS_BUTTON_HOLD | |
if(MAP[i].btn == IMX233_BUTTON_HOLD) | |
diff --git a/firmware/target/arm/imx233/button-imx233.h b/firmware/target/arm/imx233/button-imx233.h | |
index 61adff8..f165967 100644 | |
--- a/firmware/target/arm/imx233/button-imx233.h | |
+++ b/firmware/target/arm/imx233/button-imx233.h | |
@@ -42,6 +42,11 @@ | |
#define IMX233_BUTTON_INVERTED (1 << 0) /* invert button detection */ | |
#define IMX233_BUTTON_PULLUP (1 << 1) /* pin needs a pullup (GPIO) */ | |
+/* values for the .op field */ | |
+#define IMX233_BUTTON_EQ 0 /* channel is equal to value up to error margin */ | |
+#define IMX233_BUTTON_GT 1 /* channel is greater than value */ | |
+#define IMX233_BUTTON_LT 2 /* channel is less than value */ | |
+ | |
/** target-defined | |
* NOTE for proper operation: | |
* - the table must end which a dummy entry of type IMX233_BUTTON_END | |
@@ -68,7 +73,9 @@ struct imx233_button_map_t | |
struct | |
{ | |
int src; /* source channel */ | |
- int value; /* expected value */ | |
+ int value; /* comparison value */ | |
+ int op; /* comparison operation */ | |
+ int margin; /* error margin for equal operation (0 means default) */ | |
int relative; /* button to which it is relative or -1 if none */ | |
}lradc; | |
struct | |
@@ -84,12 +91,17 @@ struct imx233_button_map_t | |
int threshold; /* round threshold for acceptance */ | |
}; | |
-/* macros for the common cases */ | |
+/* macros for the common cases (see below for explanation) */ | |
+ | |
#define IMX233_BUTTON_PATH_GPIO(bank_, pin_) .periph = IMX233_BUTTON_GPIO, \ | |
.u = {.gpio = {.bank = bank_, .pin = pin_}} | |
-#define IMX233_BUTTON_PATH_LRADC_REL(src_, val_, rel_) .periph = IMX233_BUTTON_LRADC, \ | |
- .u = {.lradc = {.src = src_, .value = val_, .relative = rel_}} | |
-#define IMX233_BUTTON_PATH_LRADC(src_, val_) IMX233_BUTTON_PATH_LRADC_REL(src_, val_, -1) | |
+#define IMX233_BUTTON_PATH_LRADC_EX(src_, op_, val_, rel_, margin_) .periph = IMX233_BUTTON_LRADC, \ | |
+ .u = {.lradc = {.src = src_, .value = val_, .relative = rel_, .margin = margin_, \ | |
+ .op = IMX233_BUTTON_##op_}} | |
+#define IMX233_BUTTON_PATH_LRADC_REL(src_, val_, rel_) \ | |
+ IMX233_BUTTON_PATH_LRADC_EX(src_, EQ, val_, rel_, 0) | |
+#define IMX233_BUTTON_PATH_LRADC(src_, val_) \ | |
+ IMX233_BUTTON_PATH_LRADC_REL(src_, val_, -1) | |
#define IMX233_BUTTON_PATH_PSWITCH(lvl_) .periph = IMX233_BUTTON_PSWITCH, \ | |
.u = {.pswitch = {.level = lvl_}} | |
#define IMX233_BUTTON_PATH_END() .periph = -1 | |
diff --git a/firmware/target/arm/imx233/creative-zenxfi3/button-zenxfi3.c b/firmware/target/arm/imx233/creative-zenxfi3/button-zenxfi3.c | |
index 7d657a1..756231a 100644 | |
--- a/firmware/target/arm/imx233/creative-zenxfi3/button-zenxfi3.c | |
+++ b/firmware/target/arm/imx233/creative-zenxfi3/button-zenxfi3.c | |
@@ -34,10 +34,10 @@ | |
struct imx233_button_map_t imx233_button_map[] = | |
{ | |
[I_VDDIO] = IMX233_BUTTON_(VDDIO, VDDIO(3640), "vddio"), /* we need VDDIO for relative */ | |
- IMX233_BUTTON_(HOLD, GPIO(0, 4), "jack", INVERTED), | |
+ IMX233_BUTTON_(HOLD, GPIO(0, 4), "hold", INVERTED), | |
IMX233_BUTTON(VOL_DOWN, GPIO(2, 7), "vol_down", INVERTED), | |
IMX233_BUTTON(VOL_UP, GPIO(2, 8), "vol_up", INVERTED), | |
- IMX233_BUTTON_(JACK, LRADC_REL(5, 3520, I_VDDIO), "jack"), | |
+ IMX233_BUTTON_(JACK, LRADC_EX(5, GT, 2000, I_VDDIO, 0), "jack"), | |
IMX233_BUTTON(POWER, PSWITCH(1), "power"), | |
IMX233_BUTTON_(END, END(), "") | |
}; | |
diff --git a/tools/rockboxdev.sh b/tools/rockboxdev.sh | |
index 34ecfce..6232546 100755 | |
--- a/tools/rockboxdev.sh | |
+++ b/tools/rockboxdev.sh | |
@@ -211,7 +211,7 @@ build() { | |
./configure --prefix=$prefix $configure_params | |
;; | |
*) | |
- CFLAGS=-U_FORTIFY_SOURCE ../$toolname-$version/configure --target=$target --prefix=$prefix --enable-languages=c --disable-libssp --disable-docs $configure_params | |
+ CFLAGS="-U_FORTIFY_SOURCE -fgnu89-inline" ../$toolname-$version/configure --target=$target --prefix=$prefix --enable-languages=c --disable-libssp --disable-docs $configure_params | |
;; | |
esac | |
@@ -366,12 +366,8 @@ do | |
;; | |
[Ii]) | |
- build "binutils" "mipsel-elf" "2.17" "" "--disable-werror" | |
- patch="" | |
- if [ "$system" = "Interix" ]; then | |
- patch="gcc-4.1.2-interix.diff" | |
- fi | |
- build "gcc" "mipsel-elf" "4.1.2" "$patch" | |
+ build "binutils" "mipsel-elf" "2.22" "" "--disable-werror" | |
+ build "gcc" "mipsel-elf" "4.6.3" "" "MAKEINFO=missing" "gmp mpfr mpc" | |
;; | |
[Mm]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment