From ef12b3b5c678e4fa44d60061b0c1bc312e589ba1 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Mon, 12 Nov 2007 18:49:53 +0000 Subject: Hardware controlled backlight brightness for iPod Video and Nano, retaining the software PWM fade in/ fade out. * Backlight handling cleanup, getting rid of one layer of 'lowlevelness'. * Use atomic GPIO bit manipulation for PP502x backlight handling. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15599 a1c6a512-1295-4272-9138-f99709370657 --- .../target/coldfire/iaudio/x5/backlight-target.h | 12 +++++------ firmware/target/coldfire/iaudio/x5/backlight-x5.c | 25 +++++++++++++++------- 2 files changed, 23 insertions(+), 14 deletions(-) (limited to 'firmware/target/coldfire/iaudio/x5') diff --git a/firmware/target/coldfire/iaudio/x5/backlight-target.h b/firmware/target/coldfire/iaudio/x5/backlight-target.h index 6e03aaa76f..8b50638f85 100644 --- a/firmware/target/coldfire/iaudio/x5/backlight-target.h +++ b/firmware/target/coldfire/iaudio/x5/backlight-target.h @@ -19,11 +19,11 @@ #ifndef BACKLIGHT_TARGET_H #define BACKLIGHT_TARGET_H -bool __backlight_init(void); -void __backlight_on(void); -void __backlight_off(void); -void __backlight_set_brightness(int val); -void __remote_backlight_on(void); -void __remote_backlight_off(void); +bool _backlight_init(void); +void _backlight_on(void); +void _backlight_off(void); +void _backlight_set_brightness(int val); +void _remote_backlight_on(void); +void _remote_backlight_off(void); #endif diff --git a/firmware/target/coldfire/iaudio/x5/backlight-x5.c b/firmware/target/coldfire/iaudio/x5/backlight-x5.c index a2682ff1ae..667f4e7278 100644 --- a/firmware/target/coldfire/iaudio/x5/backlight-x5.c +++ b/firmware/target/coldfire/iaudio/x5/backlight-x5.c @@ -24,33 +24,42 @@ #include "pcf50606.h" #include "lcd.h" -bool __backlight_init(void) +bool _backlight_init(void) { - __backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING); - __backlight_on(); + _backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING); + _backlight_on(); return true; /* Backlight always ON after boot. */ } -void __backlight_on(void) +void _backlight_on(void) { int level; lcd_enable(true); + _lcd_sleep_timer = 0; /* LCD should be awake already */ level = set_irq_level(HIGHEST_IRQ_LEVEL); pcf50606_write(0x38, 0xb0); /* Backlight ON, GPO1INV=1, GPO1ACT=011 */ set_irq_level(level); } -void __backlight_off(void) +void _backlight_off(void) { int level = set_irq_level(HIGHEST_IRQ_LEVEL); pcf50606_write(0x38, 0x80); /* Backlight OFF, GPO1INV=1, GPO1ACT=000 */ set_irq_level(level); lcd_enable(false); + /* Start LCD sleep countdown */ + if (_lcd_sleep_timeout < 0) + { + _lcd_sleep_timer = 0; /* Setting == Always */ + lcd_sleep(); + } + else + _lcd_sleep_timer = _lcd_sleep_timeout; } /* set brightness by changing the PWM */ -void __backlight_set_brightness(int val) +void _backlight_set_brightness(int val) { /* disable IRQs while bitbanging */ int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); @@ -59,12 +68,12 @@ void __backlight_set_brightness(int val) set_irq_level(old_irq_level); } -void __remote_backlight_on(void) +void _remote_backlight_on(void) { and_l(~0x00200000, &GPIO_OUT); } -void __remote_backlight_off(void) +void _remote_backlight_off(void) { or_l(0x00200000, &GPIO_OUT); } -- cgit v1.2.3