FreeCalypso > hg > fc-tourmaline
annotate src/cs/drivers/drv_app/r2d/lcds/luna/r2d_onoff_i.c @ 277:0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 07 Sep 2021 22:18:20 +0000 |
parents | 6541e43f88e5 |
children | 75758d7a9be3 |
rev | line source |
---|---|
217
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 #include "r2d/lcds/luna/r2d_luna_lcd.h" |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 #include "main/sys_types.h" |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 #include "armio.h" |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
277
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
5 static void lcd_suspend(void) |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
6 { |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
7 if (r2d_lcd_hw_suspend) |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
8 return; /* already in suspend */ |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
9 r2d_lcd_hw_suspend = 1; |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
10 LCD_REG_WR(0x0007, 0); /* display off */ |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
11 rvf_delay(RVF_MS_TO_TICKS(50)); |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
12 LCD_REG_WR(0x0010, 1); /* suspend mode */ |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
13 } |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
14 |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
15 static void lcd_resume(void) |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
16 { |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
17 if (!r2d_lcd_hw_suspend) |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
18 return; /* already on */ |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
19 LCD_REG_WR(0x0010, 0); /* out of suspend */ |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
20 rvf_delay(RVF_MS_TO_TICKS(50)); |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
21 LCD_REG_WR(0x0007, 0x1017); /* display on */ |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
22 r2d_lcd_hw_suspend = 0; |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
23 r2d_refresh(); |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
24 } |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
25 |
217
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 static void r2d_onoff_action(enum blrr_display_state set_state) |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 { |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 UBYTE on_off; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 /* |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 * PWL control: on our current Luna setups (Caramel2 or iWOW DSK) |
277
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
32 * PWL is only an indicator LED for developers. We use this PWL |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
33 * indicator to show the state of "virtual dimming", as there is |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
34 * no physical LCD backlight dimming control on Luna. |
217
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 */ |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 switch (set_state) { |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 case BLRR_DISPLAY_OFF: |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 *(volatile SYS_UWORD8 *)0xFFFE8000 = 0; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 *(volatile SYS_UWORD8 *)0xFFFE8001 = 0; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 on_off = 0; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 break; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 case BLRR_DISPLAY_ON: |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 *(volatile SYS_UWORD8 *)0xFFFE8000 = 255; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 *(volatile SYS_UWORD8 *)0xFFFE8001 = 1; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 on_off = 1; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 break; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 case BLRR_DISPLAY_INCALL: |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 *(volatile SYS_UWORD8 *)0xFFFE8000 = 16; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 *(volatile SYS_UWORD8 *)0xFFFE8001 = 1; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 on_off = 1; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 break; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 case BLRR_DISPLAY_CHG_BOOT: |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 *(volatile SYS_UWORD8 *)0xFFFE8000 = 64; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 *(volatile SYS_UWORD8 *)0xFFFE8001 = 1; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 on_off = 1; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 break; |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 default: |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 return; /* error, but we are a void function */ |
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 } |
277
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
60 /* physical LCD and backlight on/off */ |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
61 if (on_off) { |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
62 lcd_resume(); |
217
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 AI_SetBit(9); |
277
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
64 } else { |
217
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 AI_ResetBit(9); |
277
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
66 lcd_suspend(); |
0196b6bf633c
R2D: LCD hardware suspend implemented for Luna
Mychaela Falconia <falcon@freecalypso.org>
parents:
217
diff
changeset
|
67 } |
217
6541e43f88e5
R2D display on/off control implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 } |