1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
commit 892a15c6f0b7c2c4d52e238b9702f198b945131c
Author: Rafaël Carré <[email protected]>
Date:   Mon Mar 29 13:31:38 2010 +0200

    Fuzev2: fix backlight brightness
    
    PMU registers are write-only

diff --git a/firmware/export/config/sansafuzev2.h b/firmware/export/config/sansafuzev2.h
index 7a3296d..b42a0d1 100644
--- a/firmware/export/config/sansafuzev2.h
+++ b/firmware/export/config/sansafuzev2.h
@@ -117,14 +117,14 @@
 
 /* Main LCD backlight brightness range and defaults */
 #define MIN_BRIGHTNESS_SETTING      1
-#define MAX_BRIGHTNESS_SETTING     12
+#define MAX_BRIGHTNESS_SETTING     25
 #define DEFAULT_BRIGHTNESS_SETTING  6
 
 /* define this if you have a light associated with the buttons */
 #define HAVE_BUTTON_LIGHT
 
 /* Which backlight fading type? */
-//#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
+#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
 
 /* define this if the unit uses a scrollwheel for navigation */
 //#define HAVE_SCROLLWHEEL
diff --git a/firmware/target/arm/as3525/sansa-fuzev2/backlight-fuzev2.c b/firmware/target/arm/as3525/sansa-fuzev2/backlight-fuzev2.c
index 87f3418..7e21460 100644
--- a/firmware/target/arm/as3525/sansa-fuzev2/backlight-fuzev2.c
+++ b/firmware/target/arm/as3525/sansa-fuzev2/backlight-fuzev2.c
@@ -28,48 +28,38 @@
 
 int buttonlight_is_on = 0;
 
-static int brightness_internal = 0;
-
-/* not functional */
 void _backlight_set_brightness(int brightness)
 {
-    //ascodec_write(AS3514_DCDC15, brightness);
-    brightness_internal = brightness << 2;
-    brightness_internal += brightness + 5;
-    brightness_internal <<= 25;
-    brightness_internal >>= 24;
     ascodec_write(0x1c, 8|2); // sub register
-    ascodec_write(0x1b, brightness_internal|0xff);
+    ascodec_write(0x1b, brightness * 10);
 }
 
 bool _backlight_init(void)
 {
     GPIOB_DIR |= 1<<5; /* for buttonlight, stuff below seems to be needed
                           for buttonlight as well*/
+
     ascodec_write(0x1c, 8|1); // sub register
-    ascodec_write(0x1b, ascodec_read(0x1b)|0x80);
+    ascodec_write(0x1b, 0x80);
+
+    ascodec_write(0x1c, 8|2); // sub register
+    ascodec_write(0x1b, backlight_brightness * 10);
     return true;
 }
 
-/* not functional */
 void _backlight_on(void)
 {
 #ifdef HAVE_LCD_ENABLE
     lcd_enable(true); /* power on lcd + visible display */
 #endif
-#if (CONFIG_BACKLIGHT_FADING != BACKLIGHT_FADING_SW_SETTING) /* in bootloader/sim */
-    /* if we set the brightness to the settings value, then fading up
-     * is glitchy */
-    ascodec_write(0x1c, 8|2); // sub register
-    ascodec_write(0x1b, brightness_internal);
-#endif
+    ascodec_write(0x1c, 8|1); // sub register
+    ascodec_write(0x1b, 0x80);
 }
 
-/* not functional */
 void _backlight_off(void)
 {
     ascodec_write(0x1c, 8|1); // sub register
-    ascodec_write(0x1b, ascodec_read(0x1b) & ~0x80);
+    ascodec_write(0x1b, 0);
 #ifdef HAVE_LCD_ENABLE
     lcd_enable(false); /* power off visible display */
 #endif