Patch FS#5712 by Michael Sevakis - X5 Backlight brightness improvement/fix
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10322 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
8bb4bab54b
commit
f18f9a8061
|
@ -349,7 +349,7 @@ static const struct bit_entry hd_bits[] =
|
|||
"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 */
|
||||
|
|
|
@ -216,3 +216,4 @@ Daniel Ankers
|
|||
Paul Louden
|
||||
Rainer Sinsch
|
||||
Plácido Revilla
|
||||
Michael Sevakis
|
||||
|
|
|
@ -659,28 +659,26 @@ bool is_remote_backlight_on(void) {return true;}
|
|||
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(val<MIN_BRIGHTNESS_SETTING)
|
||||
val=MIN_BRIGHTNESS_SETTING;
|
||||
else if(val>MAX_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
|
||||
|
|
|
@ -53,7 +53,16 @@ void sim_remote_backlight(int value);
|
|||
#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
|
||||
|
|
|
@ -25,14 +25,13 @@
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -169,6 +169,12 @@ void pcf50606_init(void)
|
|||
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 */
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user