annotate chipsetsw/drivers/drv_app/r2d/lcds/c139/r2d_task_i.c @ 35:2071211e5d1a

Mot C1xx keypad layout entered
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Wed, 04 Nov 2015 06:18:11 +0000
parents f1ffea823c18
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
1 #include "r2d/lcds/c139/colors.h"
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
2
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
3 void c139_uwire_xmit(UINT16 cmd)
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
4 {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
5 * (volatile UINT16 *) TDR = cmd << 7;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
6 * (volatile UINT16 *) CSR |= NB_BITS_WR_9 + CS_CMD + START ; // transmit command data
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
7 while (((* (volatile UINT16 *) CSR) & CSRB) != 0 ); // wait for end of WRITE
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
8 * (volatile UINT16 *) CSR &= ~CS_CMD; // clears Chip Select
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
9 }
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
10
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
11 void c139_lcd_ctrl_cmd(UINT8 cmd, UINT8 param)
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
12 {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
13 c139_uwire_xmit(cmd);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
14 c139_uwire_xmit(param | 0x100);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
15 }
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
16
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
17 void c139_set_lcd_addr_region(UINT8 xstart, UINT8 xend,
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
18 UINT8 ystart, UINT8 yend)
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
19 {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
20 c139_lcd_ctrl_cmd(0x10, xstart);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
21 c139_lcd_ctrl_cmd(0x11, ystart);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
22 c139_lcd_ctrl_cmd(0x12, xend);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
23 c139_lcd_ctrl_cmd(0x13, yend);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
24 c139_lcd_ctrl_cmd(0x14, xstart);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
25 c139_lcd_ctrl_cmd(0x15, ystart);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
26 }
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
27
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
28 void c139_lcd_send_pix(UINT16 pixval)
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
29 {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
30 c139_uwire_xmit((pixval >> 8) | 0x100);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
31 c139_uwire_xmit((pixval & 0xFF) | 0x100);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
32 }
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
33
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
34 void r2d_lcd_power_on(void)
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
35 {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
36 }
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
37
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
38 void r2d_lcd_power_off(void)
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
39 {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
40 }
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
41
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
42 static int get_pix_from_sw_fb(UINT32 *fb, UINT16 x, UINT16 y)
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
43 {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
44 UINT32 *p, mask;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
45 UINT16 yword, ybit;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
46
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
47 /* mirroring */
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
48 x = R2D_WIDTH - x;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
49 y = R2D_HEIGHT - y;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
50 yword = y >> 5;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
51 ybit = y & 31;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
52 p = fb + x * R2D_MWHEIGHT + yword;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
53 mask = 1 << ybit;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
54 if (*p & mask)
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
55 return(1);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
56 else
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
57 return(0);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
58 }
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
59
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
60 void r2d_refresh(void)
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
61 {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
62 UINT16 x, y;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
63 UINT32 *fb;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
64
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
65 fb = r2d_g_framebuffer->p_memory_words;
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
66
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
67 /* set the LCD up to refresh the 84x48 area */
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
68 c139_set_lcd_addr_region(6, 89, 8, 55);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
69 /* send the pixels */
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
70 for (y = 0; y < R2D_HEIGHT; y++) {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
71 for (x = 0; x < R2D_WIDTH; x++) {
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
72 if (get_pix_from_sw_fb(fb, x, y))
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
73 c139_lcd_send_pix(LCD16_COLOR_BLACK);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
74 else
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
75 c139_lcd_send_pix(LCD16_COLOR_WHITE);
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
76 }
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
77 }
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
78
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
79 r2d_reinit_update_region();
f1ffea823c18 C-Sample-emulating C139 LCD driver implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
80 }