FreeCalypso > hg > fc-tourmaline
annotate src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_i.c @ 276:4221c724c664
R2D: preparations for adding LCD hardware suspend handling
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 07 Sep 2021 21:05:38 +0000 |
parents | 502a0a3f6a49 |
children |
rev | line source |
---|---|
0
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 #include "r2d/lcds/c139/colors.h" |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 void c139_uwire_xmit(UINT16 cmd) |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 { |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * (volatile UINT16 *) TDR = cmd << 7; |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 * (volatile UINT16 *) CSR |= NB_BITS_WR_9 + CS_CMD + START ; // transmit command data |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 while (((* (volatile UINT16 *) CSR) & CSRB) != 0 ); // wait for end of WRITE |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 * (volatile UINT16 *) CSR &= ~CS_CMD; // clears Chip Select |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 } |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 void c139_lcd_ctrl_cmd(UINT8 cmd, UINT8 param) |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 { |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 c139_uwire_xmit(cmd); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 c139_uwire_xmit(param | 0x100); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 } |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 void c139_set_lcd_addr_region(UINT8 xstart, UINT8 xend, |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 UINT8 ystart, UINT8 yend) |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 { |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 c139_lcd_ctrl_cmd(0x10, xstart); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 c139_lcd_ctrl_cmd(0x11, ystart); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 c139_lcd_ctrl_cmd(0x12, xend); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 c139_lcd_ctrl_cmd(0x13, yend); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 c139_lcd_ctrl_cmd(0x14, xstart); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 c139_lcd_ctrl_cmd(0x15, ystart); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 } |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 void c139_lcd_send_pix(UINT16 pixval) |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 { |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 c139_uwire_xmit((pixval >> 8) | 0x100); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 c139_uwire_xmit((pixval & 0xFF) | 0x100); |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 } |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 void r2d_lcd_power_on(void) |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 { |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 } |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 void r2d_lcd_power_off(void) |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 { |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 } |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 void r2d_refresh(void) |
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 { |
47
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
44 UINT16 i, j, k; |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
45 UINT32 v; |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
46 UINT32 *p; |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
47 INT16 y1, y2; |
0
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 |
47
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
49 p=r2d_g_framebuffer->p_memory_words; |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
50 |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
51 y1=r2d_update_ul_y; //0 |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
52 y2=r2d_update_br_y; //63 |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
53 |
276
4221c724c664
R2D: preparations for adding LCD hardware suspend handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
54 if (y1 > y2) |
4221c724c664
R2D: preparations for adding LCD hardware suspend handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
55 return; |
4221c724c664
R2D: preparations for adding LCD hardware suspend handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
56 r2d_reinit_update_region(); |
4221c724c664
R2D: preparations for adding LCD hardware suspend handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
57 |
47
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
58 /* set window area */ |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
59 c139_set_lcd_addr_region(0, 95, y1, y2); |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
60 |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
61 p=p+y1*R2D_MWWIDTH; |
0
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 |
47
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
63 for (i=y1;i<=y2;i++) |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
64 { |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
65 for (j = 0; j < R2D_MWWIDTH-1; j++) |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
66 { |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
67 v=*p++; |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
68 for (k=0;k<32;k++) |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
69 { |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
70 if (v&1) |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
71 c139_lcd_send_pix(LCD16_COLOR_BLACK); |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
72 else |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
73 c139_lcd_send_pix(LCD16_COLOR_WHITE); |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
74 v=v>>1; |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
75 } |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
76 } |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
77 p++; |
502a0a3f6a49
C139 LCD support reinstated in the new way
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
78 } |
0
4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 } |