? build-x5-N ? tata.patch.txt ? x5-backlight-brightness-fix.patch.txt ? tools/codepages ? tools/mkboot ? tools/rdf2binary Index: apps/settings.c =================================================================== RCS file: /cvsroot/rockbox/apps/settings.c,v retrieving revision 1.393 diff -u -r1.393 settings.c --- apps/settings.c 23 Jul 2006 22:18:32 -0000 1.393 +++ apps/settings.c 25 Jul 2006 05:32:31 -0000 @@ -347,7 +347,7 @@ "remote caption backlight", off_on }, #endif #ifdef HAVE_BACKLIGHT_BRIGHTNESS - {4, S_O(brightness), 9, "brightness", NULL }, + {4, S_O(brightness), DEFAULT_BRIGHTNESS_SETTING, "brightness", NULL }, #endif #ifdef HAVE_BACKLIGHT_PWM_FADING /* backlight fading */ Index: firmware/backlight.c =================================================================== RCS file: /cvsroot/rockbox/firmware/backlight.c,v retrieving revision 1.93 diff -u -r1.93 backlight.c --- firmware/backlight.c 23 Jul 2006 22:39:06 -0000 1.93 +++ firmware/backlight.c 25 Jul 2006 05:32:33 -0000 @@ -659,28 +659,26 @@ void backlight_set_brightness(int val) { #ifndef SIMULATOR - /* set H300 brightness by changing the PWM - accepts 0..15 but note that 0 and 1 give a black display! */ + /* set brightness by changing the PWM + * accepts 0..15 but note that 0 and 1 give a black display on H300! + * 0 is black on the X5. + */ /* disable IRQs while bitbanging */ int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); - val &= 0x0F; + /* Clamp setting to range */ if(valMAX_BRIGHTNESS_SETTING) + val=MAX_BRIGHTNESS_SETTING; - /* shift one bit left */ - val <<= 1; - - /* enable PWM */ - val |= 0x01; - - pcf50606_write(0x35, val); + pcf50606_write(0x35, (val << 1) | 0x01); /* 512Hz, Enable PWM */ /* enable IRQs again */ set_irq_level(old_irq_level); #else - val=0; + val=0; #endif } #endif Index: firmware/export/backlight.h =================================================================== RCS file: /cvsroot/rockbox/firmware/export/backlight.h,v retrieving revision 1.16 diff -u -r1.16 backlight.h --- firmware/export/backlight.h 1 Apr 2006 12:20:23 -0000 1.16 +++ firmware/export/backlight.h 25 Jul 2006 05:32:34 -0000 @@ -53,7 +53,16 @@ #endif #ifdef HAVE_BACKLIGHT_BRIGHTNESS -#define MIN_BRIGHTNESS_SETTING 2 -#define MAX_BRIGHTNESS_SETTING 15 +#ifdef IAUDIO_X5 +/* PFC50506 can output 0%-100% duty cycle but D305A expects %15-100%. */ +#define MIN_BRIGHTNESS_SETTING 1 /* 15/16 (93.75%) */ +#define MAX_BRIGHTNESS_SETTING 13 /* 3/16 (18.75%) */ +#define DEFAULT_BRIGHTNESS_SETTING 8 /* 8/16 (50.00%) = x5 boot default */ +#else +#define MIN_BRIGHTNESS_SETTING 2 /* 2/16 (12.50%) */ +#define MAX_BRIGHTNESS_SETTING 15 /* 15/16 (93.75%) */ +#define DEFAULT_BRIGHTNESS_SETTING 9 /* 9/16 (56.25%) */ +#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ + void backlight_set_brightness(int val); #endif Index: firmware/target/coldfire/iaudio/x5/backlight-x5.c =================================================================== RCS file: /cvsroot/rockbox/firmware/target/coldfire/iaudio/x5/backlight-x5.c,v retrieving revision 1.1 diff -u -r1.1 backlight-x5.c --- firmware/target/coldfire/iaudio/x5/backlight-x5.c 22 Mar 2006 14:17:45 -0000 1.1 +++ firmware/target/coldfire/iaudio/x5/backlight-x5.c 25 Jul 2006 05:32:34 -0000 @@ -25,14 +25,14 @@ void __backlight_on(void) { int level = set_irq_level(HIGHEST_IRQ_LEVEL); - pcf50606_write(0x38, 0x30); /* Backlight ON */ + pcf50606_write(0x38, 0xb0); /* Backlight ON, GPO1INV=1, GPO1ACT=011 */ set_irq_level(level); } void __backlight_off(void) { int level = set_irq_level(HIGHEST_IRQ_LEVEL); - pcf50606_write(0x38, 0x70); /* Backlight OFF */ + pcf50606_write(0x38, 0x80); /* Backlight OFF, GPO1INV=1, GPO1ACT=000 */ set_irq_level(level); } Index: firmware/target/coldfire/iaudio/x5/pcf50606-x5.c =================================================================== RCS file: /cvsroot/rockbox/firmware/target/coldfire/iaudio/x5/pcf50606-x5.c,v retrieving revision 1.2 diff -u -r1.2 pcf50606-x5.c --- firmware/target/coldfire/iaudio/x5/pcf50606-x5.c 23 Jul 2006 21:41:58 -0000 1.2 +++ firmware/target/coldfire/iaudio/x5/pcf50606-x5.c 25 Jul 2006 05:32:34 -0000 @@ -169,6 +169,12 @@ pcf50606_write(0x39, 0x00); /* GPOOD0 = green led OFF */ pcf50606_write(0x3a, 0x00); /* GPOOD1 = red led OFF */ - pcf50606_write(0x35, 0xf1); /* Backlight PWM = 7kHz 8/16 */ - pcf50606_write(0x38, 0x30); /* Backlight ON */ + /* D305A datasheet says PWM clock frequency should be 400Hz - 2000Hz so + * I changed it from 7kHz to 512Hz. The lower frequency looks the same. + * GPO1 is also inverted so that display brightness increases with PWM + * setting which also lets the X5 share the H300's + * set_backlight_brightness code. + */ + pcf50606_write(0x35, 0x11); /* Backlight PWM = 512Hz, 8/16, Active */ + pcf50606_write(0x38, 0xb0); /* Backlight ON, GPO1INV=1, GPO1ACT=011 */ }