summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c
index 913deab..076c06b 100644
--- a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c
+++ b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c
@@ -28,9 +28,10 @@
#define BUTTONLIGHT_MENU (SC606_LED_B1)
#define BUTTONLIGHT_ALL (SC606_LED_B1 | SC606_LED_B2 | SC606_LED_C1 | SC606_LED_C2)
+static const int log_brightness[12] = {0,1,2,3,5,7,10,15,22,31,44,63};
+
#ifndef BOOTLOADER
static void led_control_service(void);
-const int log_brightness[12] = {0,1,2,3,5,7,10,15,22,31,44,63};
static enum sc606_states
{
@@ -390,8 +391,11 @@ void _buttonlight_off(void)
void _buttonlight_set_brightness(int brightness)
{
+ /* clamp the brightness value */
+ brightness = MAX(1, MIN(12, brightness));
+ /* stop the interrupt from messing us up */
buttonlight_control = BUTTONLIGHT_CONTROL_IDLE;
- buttonlight_brightness = brightness;
+ buttonlight_brightness = log_brightness[brightness - 1];
buttonlight_control = BUTTONLIGHT_CONTROL_SET;
}