2005-04-17 02:20:36 +04:00
|
|
|
/*
|
|
|
|
* LED, LCD and Button panel driver for Cobalt
|
|
|
|
*
|
|
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
|
|
* for more details.
|
|
|
|
*
|
|
|
|
* Copyright (C) 1996, 1997 by Andrew Bose
|
|
|
|
*
|
|
|
|
* Linux kernel version history:
|
|
|
|
* March 2001: Ported from 2.0.34 by Liam Davies
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
// function headers
|
|
|
|
|
|
|
|
#define LCD_CHARS_PER_LINE 40
|
|
|
|
#define MAX_IDLE_TIME 120
|
|
|
|
|
|
|
|
struct lcd_display {
|
2005-02-21 19:18:36 +03:00
|
|
|
unsigned buttons;
|
2005-04-17 02:20:36 +04:00
|
|
|
int size1;
|
|
|
|
int size2;
|
|
|
|
unsigned char line1[LCD_CHARS_PER_LINE];
|
|
|
|
unsigned char line2[LCD_CHARS_PER_LINE];
|
|
|
|
unsigned char cursor_address;
|
|
|
|
unsigned char character;
|
|
|
|
unsigned char leds;
|
|
|
|
unsigned char *RomImage;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LCD_DRIVER "Cobalt LCD Driver v2.10"
|
|
|
|
|
|
|
|
#define LCD "lcd: "
|
|
|
|
|
|
|
|
#define kLCD_IR 0x0F000000
|
|
|
|
#define kLCD_DR 0x0F000010
|
|
|
|
#define kGPI 0x0D000000
|
|
|
|
#define kLED 0x0C000000
|
|
|
|
|
|
|
|
#define kDD_R00 0x00
|
|
|
|
#define kDD_R01 0x27
|
|
|
|
#define kDD_R10 0x40
|
|
|
|
#define kDD_R11 0x67
|
|
|
|
|
|
|
|
#define kLCD_Addr 0x00000080
|
|
|
|
|
|
|
|
#define LCDTimeoutValue 0xfff
|
|
|
|
|
|
|
|
|
|
|
|
// Macros
|
|
|
|
|
|
|
|
#define LCDWriteData(x) outl((x << 24), kLCD_DR)
|
|
|
|
#define LCDWriteInst(x) outl((x << 24), kLCD_IR)
|
|
|
|
|
|
|
|
#define LCDReadData (inl(kLCD_DR) >> 24)
|
|
|
|
#define LCDReadInst (inl(kLCD_IR) >> 24)
|
|
|
|
|
|
|
|
#define GPIRead (inl(kGPI) >> 24)
|
|
|
|
|
|
|
|
#define LEDSet(x) outb((char)x, kLED)
|
|
|
|
|
|
|
|
#define WRITE_GAL(x,y) outl(y, 0x04000000 | (x))
|
|
|
|
#define BusyCheck() while ((LCDReadInst & 0x80) == 0x80)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Function command codes for io_ctl.
|
|
|
|
*/
|
|
|
|
#define LCD_On 1
|
|
|
|
#define LCD_Off 2
|
|
|
|
#define LCD_Clear 3
|
|
|
|
#define LCD_Reset 4
|
|
|
|
#define LCD_Cursor_Left 5
|
|
|
|
#define LCD_Cursor_Right 6
|
|
|
|
#define LCD_Disp_Left 7
|
|
|
|
#define LCD_Disp_Right 8
|
|
|
|
#define LCD_Get_Cursor 9
|
|
|
|
#define LCD_Set_Cursor 10
|
|
|
|
#define LCD_Home 11
|
|
|
|
#define LCD_Read 12
|
|
|
|
#define LCD_Write 13
|
|
|
|
#define LCD_Cursor_Off 14
|
|
|
|
#define LCD_Cursor_On 15
|
|
|
|
#define LCD_Get_Cursor_Pos 16
|
|
|
|
#define LCD_Set_Cursor_Pos 17
|
|
|
|
#define LCD_Blink_Off 18
|
|
|
|
|
|
|
|
#define LED_Set 40
|
|
|
|
#define LED_Bit_Set 41
|
|
|
|
#define LED_Bit_Clear 42
|
|
|
|
|
|
|
|
|
|
|
|
// Button defs
|
|
|
|
#define BUTTON_Read 50
|
|
|
|
|
|
|
|
|
|
|
|
// Ethernet LINK check hackaroo
|
|
|
|
#define LINK_Check 90
|
|
|
|
#define LINK_Check_2 91
|
|
|
|
|
|
|
|
// Button patterns _B - single layer lcd boards
|
|
|
|
|
|
|
|
#define BUTTON_NONE 0x3F
|
|
|
|
#define BUTTON_NONE_B 0xFE
|
|
|
|
|
|
|
|
#define BUTTON_Left 0x3B
|
|
|
|
#define BUTTON_Left_B 0xFA
|
|
|
|
|
|
|
|
#define BUTTON_Right 0x37
|
|
|
|
#define BUTTON_Right_B 0xDE
|
|
|
|
|
|
|
|
#define BUTTON_Up 0x2F
|
|
|
|
#define BUTTON_Up_B 0xF6
|
|
|
|
|
|
|
|
#define BUTTON_Down 0x1F
|
|
|
|
#define BUTTON_Down_B 0xEE
|
|
|
|
|
|
|
|
#define BUTTON_Next 0x3D
|
|
|
|
#define BUTTON_Next_B 0x7E
|
|
|
|
|
|
|
|
#define BUTTON_Enter 0x3E
|
|
|
|
#define BUTTON_Enter_B 0xBE
|
|
|
|
|
|
|
|
#define BUTTON_Reset_B 0xFC
|
|
|
|
|
|
|
|
|
|
|
|
// debounce constants
|
|
|
|
|
|
|
|
#define BUTTON_SENSE 160000
|
|
|
|
#define BUTTON_DEBOUNCE 5000
|
|
|
|
|
|
|
|
|
|
|
|
// Galileo register stuff
|
|
|
|
|
|
|
|
#define kGal_DevBank2Cfg 0x1466DB33
|
|
|
|
#define kGal_DevBank2PReg 0x464
|
|
|
|
#define kGal_DevBank3Cfg 0x146FDFFB
|
|
|
|
#define kGal_DevBank3PReg 0x468
|
|
|
|
|
|
|
|
// Network
|
|
|
|
|
|
|
|
#define kIPADDR 1
|
|
|
|
#define kNETMASK 2
|
|
|
|
#define kGATEWAY 3
|
|
|
|
#define kDNS 4
|
|
|
|
|
|
|
|
#define kClassA 5
|
|
|
|
#define kClassB 6
|
|
|
|
#define kClassC 7
|
|
|
|
|