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#define LCD_CHARS_PER_LINE 40
18#define MAX_IDLE_TIME 120
19
20struct lcd_display {
21        unsigned buttons;
22        int size1;
23        int size2;
24        unsigned char line1[LCD_CHARS_PER_LINE];
25        unsigned char line2[LCD_CHARS_PER_LINE];
26        unsigned char cursor_address;
27        unsigned char character;
28        unsigned char leds;
29        unsigned char *RomImage;
30};
31
32
33
34#define LCD_DRIVER	"Cobalt LCD Driver v2.10"
35
36#define LCD		"lcd: "
37
38#define kLCD_IR		0x0F000000
39#define kLCD_DR		0x0F000010
40#define kGPI		0x0D000000
41#define kLED		0x0C000000
42
43#define kDD_R00         0x00
44#define kDD_R01         0x27
45#define kDD_R10         0x40
46#define kDD_R11         0x67
47
48#define kLCD_Addr       0x00000080
49
50#define LCDTimeoutValue	0xfff
51
52
53// Macros
54
55#define LCDWriteData(x)	outl((x << 24), kLCD_DR)
56#define LCDWriteInst(x)	outl((x << 24), kLCD_IR)
57
58#define LCDReadData	(inl(kLCD_DR) >> 24)
59#define LCDReadInst	(inl(kLCD_IR) >> 24)
60
61#define GPIRead		(inl(kGPI) >> 24)
62
63#define LEDSet(x)	outb((char)x, kLED)
64
65#define WRITE_GAL(x,y)	outl(y, 0x04000000 | (x))
66#define BusyCheck()	while ((LCDReadInst & 0x80) == 0x80)
67
68
69
70/*
71 * Function command codes for io_ctl.
72 */
73#define LCD_On			1
74#define LCD_Off			2
75#define LCD_Clear		3
76#define LCD_Reset		4
77#define LCD_Cursor_Left		5
78#define LCD_Cursor_Right	6
79#define LCD_Disp_Left		7
80#define LCD_Disp_Right		8
81#define LCD_Get_Cursor		9
82#define LCD_Set_Cursor		10
83#define LCD_Home		11
84#define LCD_Read		12
85#define LCD_Write		13
86#define LCD_Cursor_Off		14
87#define LCD_Cursor_On		15
88#define LCD_Get_Cursor_Pos	16
89#define LCD_Set_Cursor_Pos	17
90#define LCD_Blink_Off           18
91
92#define LED_Set			40
93#define LED_Bit_Set		41
94#define LED_Bit_Clear		42
95
96
97//  Button defs
98#define BUTTON_Read             50
99
100
101// Ethernet LINK check hackaroo
102#define LINK_Check              90
103#define LINK_Check_2		91
104
105//  Button patterns  _B - single layer lcd boards
106
107#define BUTTON_NONE               0x3F
108#define BUTTON_NONE_B             0xFE
109
110#define BUTTON_Left               0x3B
111#define BUTTON_Left_B             0xFA
112
113#define BUTTON_Right              0x37
114#define BUTTON_Right_B            0xDE
115
116#define BUTTON_Up                 0x2F
117#define BUTTON_Up_B               0xF6
118
119#define BUTTON_Down               0x1F
120#define BUTTON_Down_B             0xEE
121
122#define BUTTON_Next               0x3D
123#define BUTTON_Next_B             0x7E
124
125#define BUTTON_Enter              0x3E
126#define BUTTON_Enter_B            0xBE
127
128#define BUTTON_Reset_B            0xFC
129
130
131// debounce constants
132
133#define BUTTON_SENSE            160000
134#define BUTTON_DEBOUNCE		5000
135
136
137//  Galileo register stuff
138
139#define kGal_DevBank2Cfg        0x1466DB33
140#define kGal_DevBank2PReg       0x464
141#define kGal_DevBank3Cfg        0x146FDFFB
142#define kGal_DevBank3PReg       0x468
143
144// Network
145
146#define kIPADDR			1
147#define kNETMASK		2
148#define kGATEWAY		3
149#define kDNS			4
150
151#define kClassA			5
152#define kClassB			6
153#define kClassC			7
154