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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }