| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 17 | #define LCD_CHARS_PER_LINE 40 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 18 | #define MAX_IDLE_TIME 120 | 
 | 19 |  | 
 | 20 | struct lcd_display { | 
| Ralf Baechle | c4ed38a | 2005-02-21 16:18:36 +0000 | [diff] [blame] | 21 |         unsigned buttons; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  |