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