summaryrefslogtreecommitdiff
path: root/firmware/target/coldfire/iaudio
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-11-12 18:49:53 +0000
committerJens Arnold <amiconn@rockbox.org>2007-11-12 18:49:53 +0000
commitef12b3b5c678e4fa44d60061b0c1bc312e589ba1 (patch)
tree4c2572d7bf3d995be16b33fa2e46ccccad34f4ee /firmware/target/coldfire/iaudio
parent8537cbf091634efa57768dccff39049afdf6d288 (diff)
downloadrockbox-ef12b3b5c678e4fa44d60061b0c1bc312e589ba1.tar.gz
rockbox-ef12b3b5c678e4fa44d60061b0c1bc312e589ba1.zip
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
Diffstat (limited to 'firmware/target/coldfire/iaudio')
-rw-r--r--firmware/target/coldfire/iaudio/m5/backlight-m5.c12
-rw-r--r--firmware/target/coldfire/iaudio/m5/backlight-target.h10
-rw-r--r--firmware/target/coldfire/iaudio/x5/backlight-target.h12
-rw-r--r--firmware/target/coldfire/iaudio/x5/backlight-x5.c25
4 files changed, 34 insertions, 25 deletions
diff --git a/firmware/target/coldfire/iaudio/m5/backlight-m5.c b/firmware/target/coldfire/iaudio/m5/backlight-m5.c
index 63bc5bc30e..19bc5bfcae 100644
--- a/firmware/target/coldfire/iaudio/m5/backlight-m5.c
+++ b/firmware/target/coldfire/iaudio/m5/backlight-m5.c
@@ -24,14 +24,14 @@
24#include "pcf50606.h" 24#include "pcf50606.h"
25#include "lcd.h" 25#include "lcd.h"
26 26
27bool __backlight_init(void) 27bool _backlight_init(void)
28{ 28{
29 __backlight_on(); 29 _backlight_on();
30 30
31 return true; /* Backlight always ON after boot. */ 31 return true; /* Backlight always ON after boot. */
32} 32}
33 33
34void __backlight_on(void) 34void _backlight_on(void)
35{ 35{
36 int level = set_irq_level(HIGHEST_IRQ_LEVEL); 36 int level = set_irq_level(HIGHEST_IRQ_LEVEL);
37 37
@@ -39,7 +39,7 @@ void __backlight_on(void)
39 set_irq_level(level); 39 set_irq_level(level);
40} 40}
41 41
42void __backlight_off(void) 42void _backlight_off(void)
43{ 43{
44 int level = set_irq_level(HIGHEST_IRQ_LEVEL); 44 int level = set_irq_level(HIGHEST_IRQ_LEVEL);
45 45
@@ -47,12 +47,12 @@ void __backlight_off(void)
47 set_irq_level(level); 47 set_irq_level(level);
48} 48}
49 49
50void __remote_backlight_on(void) 50void _remote_backlight_on(void)
51{ 51{
52 and_l(~0x00200000, &GPIO_OUT); 52 and_l(~0x00200000, &GPIO_OUT);
53} 53}
54 54
55void __remote_backlight_off(void) 55void _remote_backlight_off(void)
56{ 56{
57 or_l(0x00200000, &GPIO_OUT); 57 or_l(0x00200000, &GPIO_OUT);
58} 58}
diff --git a/firmware/target/coldfire/iaudio/m5/backlight-target.h b/firmware/target/coldfire/iaudio/m5/backlight-target.h
index 824810baa1..a5932d32db 100644
--- a/firmware/target/coldfire/iaudio/m5/backlight-target.h
+++ b/firmware/target/coldfire/iaudio/m5/backlight-target.h
@@ -19,10 +19,10 @@
19#ifndef BACKLIGHT_TARGET_H 19#ifndef BACKLIGHT_TARGET_H
20#define BACKLIGHT_TARGET_H 20#define BACKLIGHT_TARGET_H
21 21
22bool __backlight_init(void); 22bool _backlight_init(void);
23void __backlight_on(void); 23void _backlight_on(void);
24void __backlight_off(void); 24void _backlight_off(void);
25void __remote_backlight_on(void); 25void _remote_backlight_on(void);
26void __remote_backlight_off(void); 26void _remote_backlight_off(void);
27 27
28#endif 28#endif
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 @@
19#ifndef BACKLIGHT_TARGET_H 19#ifndef BACKLIGHT_TARGET_H
20#define BACKLIGHT_TARGET_H 20#define BACKLIGHT_TARGET_H
21 21
22bool __backlight_init(void); 22bool _backlight_init(void);
23void __backlight_on(void); 23void _backlight_on(void);
24void __backlight_off(void); 24void _backlight_off(void);
25void __backlight_set_brightness(int val); 25void _backlight_set_brightness(int val);
26void __remote_backlight_on(void); 26void _remote_backlight_on(void);
27void __remote_backlight_off(void); 27void _remote_backlight_off(void);
28 28
29#endif 29#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 @@
24#include "pcf50606.h" 24#include "pcf50606.h"
25#include "lcd.h" 25#include "lcd.h"
26 26
27bool __backlight_init(void) 27bool _backlight_init(void)
28{ 28{
29 __backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING); 29 _backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING);
30 __backlight_on(); 30 _backlight_on();
31 31
32 return true; /* Backlight always ON after boot. */ 32 return true; /* Backlight always ON after boot. */
33} 33}
34 34
35void __backlight_on(void) 35void _backlight_on(void)
36{ 36{
37 int level; 37 int level;
38 lcd_enable(true); 38 lcd_enable(true);
39 _lcd_sleep_timer = 0; /* LCD should be awake already */
39 level = set_irq_level(HIGHEST_IRQ_LEVEL); 40 level = set_irq_level(HIGHEST_IRQ_LEVEL);
40 pcf50606_write(0x38, 0xb0); /* Backlight ON, GPO1INV=1, GPO1ACT=011 */ 41 pcf50606_write(0x38, 0xb0); /* Backlight ON, GPO1INV=1, GPO1ACT=011 */
41 set_irq_level(level); 42 set_irq_level(level);
42} 43}
43 44
44void __backlight_off(void) 45void _backlight_off(void)
45{ 46{
46 int level = set_irq_level(HIGHEST_IRQ_LEVEL); 47 int level = set_irq_level(HIGHEST_IRQ_LEVEL);
47 pcf50606_write(0x38, 0x80); /* Backlight OFF, GPO1INV=1, GPO1ACT=000 */ 48 pcf50606_write(0x38, 0x80); /* Backlight OFF, GPO1INV=1, GPO1ACT=000 */
48 set_irq_level(level); 49 set_irq_level(level);
49 lcd_enable(false); 50 lcd_enable(false);
51 /* Start LCD sleep countdown */
52 if (_lcd_sleep_timeout < 0)
53 {
54 _lcd_sleep_timer = 0; /* Setting == Always */
55 lcd_sleep();
56 }
57 else
58 _lcd_sleep_timer = _lcd_sleep_timeout;
50} 59}
51 60
52/* set brightness by changing the PWM */ 61/* set brightness by changing the PWM */
53void __backlight_set_brightness(int val) 62void _backlight_set_brightness(int val)
54{ 63{
55 /* disable IRQs while bitbanging */ 64 /* disable IRQs while bitbanging */
56 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); 65 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL);
@@ -59,12 +68,12 @@ void __backlight_set_brightness(int val)
59 set_irq_level(old_irq_level); 68 set_irq_level(old_irq_level);
60} 69}
61 70
62void __remote_backlight_on(void) 71void _remote_backlight_on(void)
63{ 72{
64 and_l(~0x00200000, &GPIO_OUT); 73 and_l(~0x00200000, &GPIO_OUT);
65} 74}
66 75
67void __remote_backlight_off(void) 76void _remote_backlight_off(void)
68{ 77{
69 or_l(0x00200000, &GPIO_OUT); 78 or_l(0x00200000, &GPIO_OUT);
70} 79}