Contents of /alx-src/tags/kernel26-2.6.12-alx-r9/drivers/char/lcd.h
Parent Directory | Revision Log
Revision 630 -
(show annotations)
(download)
Wed Mar 4 11:03:09 2009 UTC (15 years, 3 months ago) by niro
File MIME type: text/plain
File size: 4150 byte(s)
Wed Mar 4 11:03:09 2009 UTC (15 years, 3 months ago) by niro
File MIME type: text/plain
File size: 4150 byte(s)
Tag kernel26-2.6.12-alx-r9
1 | /* |
2 | * LED, LCD and Button panel driver for Cobalt |
3 | * |
4 | * This file is subject to the terms and conditions of the GNU General Public |
5 | * License. See the file "COPYING" in the main directory of this archive |
6 | * for more details. |
7 | * |
8 | * Copyright (C) 1996, 1997 by Andrew Bose |
9 | * |
10 | * Linux kernel version history: |
11 | * March 2001: Ported from 2.0.34 by Liam Davies |
12 | * |
13 | */ |
14 | |
15 | // function headers |
16 | |
17 | static int dqpoll(volatile unsigned long, volatile unsigned char ); |
18 | static int timeout(volatile unsigned long); |
19 | |
20 | #define LCD_CHARS_PER_LINE 40 |
21 | #define FLASH_SIZE 524288 |
22 | #define MAX_IDLE_TIME 120 |
23 | |
24 | struct lcd_display { |
25 | unsigned long buttons; |
26 | int size1; |
27 | int size2; |
28 | unsigned char line1[LCD_CHARS_PER_LINE]; |
29 | unsigned char line2[LCD_CHARS_PER_LINE]; |
30 | unsigned char cursor_address; |
31 | unsigned char character; |
32 | unsigned char leds; |
33 | unsigned char *RomImage; |
34 | }; |
35 | |
36 | |
37 | |
38 | #define LCD_DRIVER "Cobalt LCD Driver v2.10" |
39 | |
40 | #define LCD "lcd: " |
41 | |
42 | #define kLCD_IR 0x0F000000 |
43 | #define kLCD_DR 0x0F000010 |
44 | #define kGPI 0x0D000000 |
45 | #define kLED 0x0C000000 |
46 | |
47 | #define kDD_R00 0x00 |
48 | #define kDD_R01 0x27 |
49 | #define kDD_R10 0x40 |
50 | #define kDD_R11 0x67 |
51 | |
52 | #define kLCD_Addr 0x00000080 |
53 | |
54 | #define LCDTimeoutValue 0xfff |
55 | |
56 | |
57 | // Flash definitions AMD 29F040 |
58 | #define kFlashBase 0x0FC00000 |
59 | |
60 | #define kFlash_Addr1 0x5555 |
61 | #define kFlash_Addr2 0x2AAA |
62 | #define kFlash_Data1 0xAA |
63 | #define kFlash_Data2 0x55 |
64 | #define kFlash_Prog 0xA0 |
65 | #define kFlash_Erase3 0x80 |
66 | #define kFlash_Erase6 0x10 |
67 | #define kFlash_Read 0xF0 |
68 | |
69 | #define kFlash_ID 0x90 |
70 | #define kFlash_VenAddr 0x00 |
71 | #define kFlash_DevAddr 0x01 |
72 | #define kFlash_VenID 0x01 |
73 | #define kFlash_DevID 0xA4 // 29F040 |
74 | //#define kFlash_DevID 0xAD // 29F016 |
75 | |
76 | |
77 | // Macros |
78 | |
79 | #define LCDWriteData(x) outl((x << 24), kLCD_DR) |
80 | #define LCDWriteInst(x) outl((x << 24), kLCD_IR) |
81 | |
82 | #define LCDReadData (inl(kLCD_DR) >> 24) |
83 | #define LCDReadInst (inl(kLCD_IR) >> 24) |
84 | |
85 | #define GPIRead (inl(kGPI) >> 24) |
86 | |
87 | #define LEDSet(x) outb((char)x, kLED) |
88 | |
89 | #define WRITE_GAL(x,y) outl(y, 0x04000000 | (x)) |
90 | #define BusyCheck() while ((LCDReadInst & 0x80) == 0x80) |
91 | |
92 | #define WRITE_FLASH(x,y) outb((char)y, kFlashBase | (x)) |
93 | #define READ_FLASH(x) (inb(kFlashBase | (x))) |
94 | |
95 | |
96 | |
97 | /* |
98 | * Function command codes for io_ctl. |
99 | */ |
100 | #define LCD_On 1 |
101 | #define LCD_Off 2 |
102 | #define LCD_Clear 3 |
103 | #define LCD_Reset 4 |
104 | #define LCD_Cursor_Left 5 |
105 | #define LCD_Cursor_Right 6 |
106 | #define LCD_Disp_Left 7 |
107 | #define LCD_Disp_Right 8 |
108 | #define LCD_Get_Cursor 9 |
109 | #define LCD_Set_Cursor 10 |
110 | #define LCD_Home 11 |
111 | #define LCD_Read 12 |
112 | #define LCD_Write 13 |
113 | #define LCD_Cursor_Off 14 |
114 | #define LCD_Cursor_On 15 |
115 | #define LCD_Get_Cursor_Pos 16 |
116 | #define LCD_Set_Cursor_Pos 17 |
117 | #define LCD_Blink_Off 18 |
118 | |
119 | #define LED_Set 40 |
120 | #define LED_Bit_Set 41 |
121 | #define LED_Bit_Clear 42 |
122 | |
123 | |
124 | // Button defs |
125 | #define BUTTON_Read 50 |
126 | |
127 | // Flash command codes |
128 | #define FLASH_Erase 60 |
129 | #define FLASH_Burn 61 |
130 | #define FLASH_Read 62 |
131 | |
132 | |
133 | // Ethernet LINK check hackaroo |
134 | #define LINK_Check 90 |
135 | #define LINK_Check_2 91 |
136 | |
137 | // Button patterns _B - single layer lcd boards |
138 | |
139 | #define BUTTON_NONE 0x3F |
140 | #define BUTTON_NONE_B 0xFE |
141 | |
142 | #define BUTTON_Left 0x3B |
143 | #define BUTTON_Left_B 0xFA |
144 | |
145 | #define BUTTON_Right 0x37 |
146 | #define BUTTON_Right_B 0xDE |
147 | |
148 | #define BUTTON_Up 0x2F |
149 | #define BUTTON_Up_B 0xF6 |
150 | |
151 | #define BUTTON_Down 0x1F |
152 | #define BUTTON_Down_B 0xEE |
153 | |
154 | #define BUTTON_Next 0x3D |
155 | #define BUTTON_Next_B 0x7E |
156 | |
157 | #define BUTTON_Enter 0x3E |
158 | #define BUTTON_Enter_B 0xBE |
159 | |
160 | #define BUTTON_Reset_B 0xFC |
161 | |
162 | |
163 | // debounce constants |
164 | |
165 | #define BUTTON_SENSE 160000 |
166 | #define BUTTON_DEBOUNCE 5000 |
167 | |
168 | |
169 | // Galileo register stuff |
170 | |
171 | #define kGal_DevBank2Cfg 0x1466DB33 |
172 | #define kGal_DevBank2PReg 0x464 |
173 | #define kGal_DevBank3Cfg 0x146FDFFB |
174 | #define kGal_DevBank3PReg 0x468 |
175 | |
176 | // Network |
177 | |
178 | #define kIPADDR 1 |
179 | #define kNETMASK 2 |
180 | #define kGATEWAY 3 |
181 | #define kDNS 4 |
182 | |
183 | #define kClassA 5 |
184 | #define kClassB 6 |
185 | #define kClassC 7 |
186 |