summaryrefslogtreecommitdiff
path: root/firmware/target/coldfire
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
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')
-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
-rw-r--r--firmware/target/coldfire/iriver/h100/backlight-h100.c10
-rw-r--r--firmware/target/coldfire/iriver/h100/backlight-target.h35
-rw-r--r--firmware/target/coldfire/iriver/h300/backlight-h300.c12
-rw-r--r--firmware/target/coldfire/iriver/h300/backlight-target.h (renamed from firmware/target/coldfire/iriver/backlight-target.h)14
8 files changed, 86 insertions, 44 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}
diff --git a/firmware/target/coldfire/iriver/h100/backlight-h100.c b/firmware/target/coldfire/iriver/h100/backlight-h100.c
index 7cff965ff9..1c3dded5e5 100644
--- a/firmware/target/coldfire/iriver/h100/backlight-h100.c
+++ b/firmware/target/coldfire/iriver/h100/backlight-h100.c
@@ -25,7 +25,7 @@
25#include "lcd.h" 25#include "lcd.h"
26 26
27/* Returns the current state of the backlight (true=ON, false=OFF). */ 27/* Returns the current state of the backlight (true=ON, false=OFF). */
28bool __backlight_init(void) 28bool _backlight_init(void)
29{ 29{
30 or_l(0x00020000, &GPIO1_ENABLE); 30 or_l(0x00020000, &GPIO1_ENABLE);
31 or_l(0x00020000, &GPIO1_FUNCTION); 31 or_l(0x00020000, &GPIO1_FUNCTION);
@@ -33,22 +33,22 @@ bool __backlight_init(void)
33 return (GPIO1_OUT & 0x00020000) ? false : true; 33 return (GPIO1_OUT & 0x00020000) ? false : true;
34} 34}
35 35
36void __backlight_on(void) 36void _backlight_hw_on(void)
37{ 37{
38 and_l(~0x00020000, &GPIO1_OUT); 38 and_l(~0x00020000, &GPIO1_OUT);
39} 39}
40 40
41void __backlight_off(void) 41void _backlight_hw_off(void)
42{ 42{
43 or_l(0x00020000, &GPIO1_OUT); 43 or_l(0x00020000, &GPIO1_OUT);
44} 44}
45 45
46void __remote_backlight_on(void) 46void _remote_backlight_on(void)
47{ 47{
48 and_l(~0x00000800, &GPIO_OUT); 48 and_l(~0x00000800, &GPIO_OUT);
49} 49}
50 50
51void __remote_backlight_off(void) 51void _remote_backlight_off(void)
52{ 52{
53 or_l(0x00000800, &GPIO_OUT); 53 or_l(0x00000800, &GPIO_OUT);
54} 54}
diff --git a/firmware/target/coldfire/iriver/h100/backlight-target.h b/firmware/target/coldfire/iriver/h100/backlight-target.h
new file mode 100644
index 0000000000..6697fb19c3
--- /dev/null
+++ b/firmware/target/coldfire/iriver/h100/backlight-target.h
@@ -0,0 +1,35 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2006 by Linus Nielsen Feltzing
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19#ifndef BACKLIGHT_TARGET_H
20#define BACKLIGHT_TARGET_H
21
22bool _backlight_init(void); /* Returns backlight current state (true=ON). */
23void _backlight_hw_on(void);
24void _backlight_hw_off(void);
25
26#define _backlight_on_isr() _backlight_hw_on()
27#define _backlight_off_isr() _backlight_hw_off()
28#define _backlight_on_normal() _backlight_hw_on()
29#define _backlight_off_normal() _backlight_hw_off()
30#define _BACKLIGHT_FADE_BOOST
31
32void _remote_backlight_on(void);
33void _remote_backlight_off(void);
34
35#endif
diff --git a/firmware/target/coldfire/iriver/h300/backlight-h300.c b/firmware/target/coldfire/iriver/h300/backlight-h300.c
index 4cec54f0d7..c0d441ad3f 100644
--- a/firmware/target/coldfire/iriver/h300/backlight-h300.c
+++ b/firmware/target/coldfire/iriver/h300/backlight-h300.c
@@ -25,7 +25,7 @@
25#include "pcf50606.h" 25#include "pcf50606.h"
26#include "lcd.h" 26#include "lcd.h"
27 27
28bool __backlight_init(void) 28bool _backlight_init(void)
29{ 29{
30 or_l(0x00020000, &GPIO1_ENABLE); 30 or_l(0x00020000, &GPIO1_ENABLE);
31 or_l(0x00020000, &GPIO1_FUNCTION); 31 or_l(0x00020000, &GPIO1_FUNCTION);
@@ -34,21 +34,21 @@ bool __backlight_init(void)
34 return true; /* Backlight always ON after boot. */ 34 return true; /* Backlight always ON after boot. */
35} 35}
36 36
37void __backlight_on(void) 37void _backlight_on(void)
38{ 38{
39 lcd_enable(true); 39 lcd_enable(true);
40 sleep(HZ/100); /* lcd needs time - avoid flashing for dark screens */ 40 sleep(HZ/100); /* lcd needs time - avoid flashing for dark screens */
41 or_l(0x00020000, &GPIO1_OUT); 41 or_l(0x00020000, &GPIO1_OUT);
42} 42}
43 43
44void __backlight_off(void) 44void _backlight_off(void)
45{ 45{
46 and_l(~0x00020000, &GPIO1_OUT); 46 and_l(~0x00020000, &GPIO1_OUT);
47 lcd_enable(false); 47 lcd_enable(false);
48} 48}
49 49
50/* set brightness by changing the PWM */ 50/* set brightness by changing the PWM */
51void __backlight_set_brightness(int val) 51void _backlight_set_brightness(int val)
52{ 52{
53 /* disable IRQs while bitbanging */ 53 /* disable IRQs while bitbanging */
54 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); 54 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL);
@@ -57,12 +57,12 @@ void __backlight_set_brightness(int val)
57 set_irq_level(old_irq_level); 57 set_irq_level(old_irq_level);
58} 58}
59 59
60void __remote_backlight_on(void) 60void _remote_backlight_on(void)
61{ 61{
62 and_l(~0x00000002, &GPIO1_OUT); 62 and_l(~0x00000002, &GPIO1_OUT);
63} 63}
64 64
65void __remote_backlight_off(void) 65void _remote_backlight_off(void)
66{ 66{
67 or_l(0x00000002, &GPIO1_OUT); 67 or_l(0x00000002, &GPIO1_OUT);
68} 68}
diff --git a/firmware/target/coldfire/iriver/backlight-target.h b/firmware/target/coldfire/iriver/h300/backlight-target.h
index 30a57e4fbc..f0e1147304 100644
--- a/firmware/target/coldfire/iriver/backlight-target.h
+++ b/firmware/target/coldfire/iriver/h300/backlight-target.h
@@ -19,13 +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); /* Returns backlight current state (true=ON). */ 22bool _backlight_init(void); /* Returns backlight current state (true=ON). */
23void __backlight_on(void); 23void _backlight_on(void);
24void __backlight_off(void); 24void _backlight_off(void);
25#ifdef HAVE_BACKLIGHT_BRIGHTNESS 25void _backlight_set_brightness(int val);
26void __backlight_set_brightness(int val); 26void _remote_backlight_on(void);
27#endif 27void _remote_backlight_off(void);
28void __remote_backlight_on(void);
29void __remote_backlight_off(void);
30 28
31#endif 29#endif