Fuzev2: fix backlight brightness

PMU registers are write-only

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25377 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Rafaël Carré 2010-03-29 12:10:43 +00:00
parent 05ace8e095
commit 60cfc1ddff
2 changed files with 11 additions and 21 deletions

View file

@ -117,14 +117,14 @@
/* Main LCD backlight brightness range and defaults */ /* Main LCD backlight brightness range and defaults */
#define MIN_BRIGHTNESS_SETTING 1 #define MIN_BRIGHTNESS_SETTING 1
#define MAX_BRIGHTNESS_SETTING 12 #define MAX_BRIGHTNESS_SETTING 25
#define DEFAULT_BRIGHTNESS_SETTING 6 #define DEFAULT_BRIGHTNESS_SETTING 6
/* define this if you have a light associated with the buttons */ /* define this if you have a light associated with the buttons */
#define HAVE_BUTTON_LIGHT #define HAVE_BUTTON_LIGHT
/* Which backlight fading type? */ /* 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 this if the unit uses a scrollwheel for navigation */
//#define HAVE_SCROLLWHEEL //#define HAVE_SCROLLWHEEL

View file

@ -28,48 +28,38 @@
int buttonlight_is_on = 0; int buttonlight_is_on = 0;
static int brightness_internal = 0;
/* not functional */
void _backlight_set_brightness(int brightness) 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(0x1c, 8|2); // sub register
ascodec_write(0x1b, brightness_internal|0xff); ascodec_write(0x1b, brightness * 10);
} }
bool _backlight_init(void) bool _backlight_init(void)
{ {
GPIOB_DIR |= 1<<5; /* for buttonlight, stuff below seems to be needed GPIOB_DIR |= 1<<5; /* for buttonlight, stuff below seems to be needed
for buttonlight as well*/ for buttonlight as well*/
ascodec_write(0x1c, 8|1); // sub register 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; return true;
} }
/* not functional */
void _backlight_on(void) void _backlight_on(void)
{ {
#ifdef HAVE_LCD_ENABLE #ifdef HAVE_LCD_ENABLE
lcd_enable(true); /* power on lcd + visible display */ lcd_enable(true); /* power on lcd + visible display */
#endif #endif
#if (CONFIG_BACKLIGHT_FADING != BACKLIGHT_FADING_SW_SETTING) /* in bootloader/sim */ ascodec_write(0x1c, 8|1); // sub register
/* if we set the brightness to the settings value, then fading up ascodec_write(0x1b, 0x80);
* is glitchy */
ascodec_write(0x1c, 8|2); // sub register
ascodec_write(0x1b, brightness_internal);
#endif
} }
/* not functional */
void _backlight_off(void) void _backlight_off(void)
{ {
ascodec_write(0x1c, 8|1); // sub register ascodec_write(0x1c, 8|1); // sub register
ascodec_write(0x1b, ascodec_read(0x1b) & ~0x80); ascodec_write(0x1b, 0);
#ifdef HAVE_LCD_ENABLE #ifdef HAVE_LCD_ENABLE
lcd_enable(false); /* power off visible display */ lcd_enable(false); /* power off visible display */
#endif #endif