diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2016-05-02 21:41:02 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2016-05-28 17:19:48 +0200 |
commit | d245b7a2a1113b6dbdbfb10f5ee984a00c987844 (patch) | |
tree | e3e65496c688fb34adfc65f95130199c9a088deb | |
parent | a25700e4a04145fcf59e4674a88f55dd088a9c08 (diff) | |
download | rockbox-d245b7a.tar.gz rockbox-d245b7a.zip |
imx233: fix system_exception_wait()
The old code used button_get() to read the button status and wait for a
key to leave the panic screen. This is broken since when IRQ are disable,
the button mask is not updated anymore for touchpad and adc buttons. For
now, only use pswitch: this should be good enough for all targets.
Change-Id: I0ae179e24555ac20c3d2bf2d267c1bb0e2ceded0
-rw-r--r-- | firmware/target/arm/imx233/system-imx233.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/firmware/target/arm/imx233/system-imx233.c b/firmware/target/arm/imx233/system-imx233.c index 1174d1c93c..2264f7cacd 100644 --- a/firmware/target/arm/imx233/system-imx233.c +++ b/firmware/target/arm/imx233/system-imx233.c @@ -124,17 +124,15 @@ void system_exception_wait(void) lcd_update(); backlight_hw_on(); backlight_hw_brightness(DEFAULT_BRIGHTNESS_SETTING); - /* wait until button release (if a button is pressed) */ -#ifdef HAVE_BUTTON_DATA - int data; - while(button_read_device(&data)); - /* then wait until next button press */ - while(!button_read_device(&data)); -#else - while(button_read_device()); - /* then wait until next button press */ - while(!button_read_device()); -#endif + /* wait until button release (if a button is pressed) + * NOTE at this point, interrupts are off so that rules out touchpad and + * ADC, so we are pretty much left with PSWITCH only. If other buttons are + * wanted, it is possible to implement a busy polling version of button + * reading for GPIO and ADC in button-imx233 but this is not done at the + * moment. */ + while(imx233_power_read_pswitch() != 0) {} + while(imx233_power_read_pswitch() == 0) {} + while(imx233_power_read_pswitch() != 0) {} } int system_memory_guard(int newmode) |