lcd.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  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. // function headers
  15. int dqpoll( volatile unsigned long, volatile unsigned char );
  16. int timeout( volatile unsigned long );
  17. #define LCD_CHARS_PER_LINE 40
  18. #define FLASH_SIZE 524288
  19. #define MAX_IDLE_TIME 120
  20. struct lcd_display {
  21.         unsigned long 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. #define LCD_DRIVER "Cobalt LCD Driver v2.10"
  32. #define kLCD_IR 0xBF000000
  33. #define kLCD_DR 0xBF000010
  34. #define kGPI            0xBD000000
  35. #define kLED 0xBC000000
  36. #define kDD_R00         0x00
  37. #define kDD_R01         0x27
  38. #define kDD_R10         0x40
  39. #define kDD_R11         0x67
  40. #define kLCD_Addr       0x00000080
  41. #define LCDTimeoutValue 0xfff
  42. // Flash definitions AMD 29F040
  43. #define kFlashBase      0xBFC00000
  44. #define kFlash_Addr1    0x5555
  45. #define kFlash_Addr2    0x2AAA
  46. #define kFlash_Data1    0xAA
  47. #define kFlash_Data2    0x55
  48. #define kFlash_Prog     0xA0
  49. #define kFlash_Erase3   0x80
  50. #define kFlash_Erase6   0x10
  51. #define kFlash_Read     0xF0
  52. #define kFlash_ID       0x90
  53. #define kFlash_VenAddr  0x00
  54. #define kFlash_DevAddr  0x01
  55. #define kFlash_VenID    0x01
  56. #define kFlash_DevID    0xA4    // 29F040
  57. //#define kFlash_DevID  0xAD    // 29F016
  58. // Macros
  59. #define LCDWriteData(x) (*(volatile unsigned long *) kLCD_DR) = (x << 24)
  60. #define LCDWriteInst(x) (*(volatile unsigned long *) kLCD_IR) = (x << 24)
  61. #define LCDReadData (((*(volatile unsigned long *) kLCD_DR) >> 24))
  62. #define LCDReadInst (((*(volatile unsigned long *) kLCD_IR) >> 24))
  63. #define GPIRead         (( (*(volatile unsigned long *) kGPI) >> 24))
  64. #define LEDSet(x) (*(volatile unsigned char *) kLED) = ((char)x)
  65. #define WRITE_GAL(x,y)  (*((volatile unsigned long *) (0xB4000000 | (x)) ) =y)
  66. #define BusyCheck()     while ((LCDReadInst & 0x80) == 0x80)
  67. #define WRITE_FLASH(x,y)  (*((volatile unsigned char *) (kFlashBase | (x)) ) = y)
  68. #define READ_FLASH(x)     *((volatile unsigned char *) (kFlashBase | (x)) )
  69. /* 
  70.  * Function command codes for io_ctl.
  71.  */
  72. #define LCD_On 1
  73. #define LCD_Off 2
  74. #define LCD_Clear 3
  75. #define LCD_Reset 4
  76. #define LCD_Cursor_Left 5
  77. #define LCD_Cursor_Right 6
  78. #define LCD_Disp_Left 7
  79. #define LCD_Disp_Right 8
  80. #define LCD_Get_Cursor 9
  81. #define LCD_Set_Cursor 10
  82. #define LCD_Home 11
  83. #define LCD_Read 12
  84. #define LCD_Write 13
  85. #define LCD_Cursor_Off 14
  86. #define LCD_Cursor_On 15
  87. #define LCD_Get_Cursor_Pos 16
  88. #define LCD_Set_Cursor_Pos 17
  89. #define LCD_Blink_Off           18
  90. #define LED_Set 40
  91. #define LED_Bit_Set 41
  92. #define LED_Bit_Clear 42
  93. //  Button defs
  94. #define BUTTON_Read             50  
  95. //  Flash command codes
  96. #define FLASH_Erase 60
  97. #define FLASH_Burn 61
  98. #define FLASH_Read 62
  99. // Ethernet LINK check hackaroo
  100. #define LINK_Check              90
  101. #define LINK_Check_2 91
  102. //  Button patterns  _B - single layer lcd boards
  103. #define BUTTON_NONE               0x3F
  104. #define BUTTON_NONE_B             0xFE
  105. #define BUTTON_Left               0x3B
  106. #define BUTTON_Left_B             0xFA
  107. #define BUTTON_Right              0x37
  108. #define BUTTON_Right_B            0xDE
  109. #define BUTTON_Up                 0x2F
  110. #define BUTTON_Up_B               0xF6
  111. #define BUTTON_Down               0x1F
  112. #define BUTTON_Down_B             0xEE
  113. #define BUTTON_Next               0x3D
  114. #define BUTTON_Next_B             0x7E
  115. #define BUTTON_Enter              0x3E
  116. #define BUTTON_Enter_B            0xBE
  117. #define BUTTON_Reset_B            0xFC
  118. // debounce constants
  119. #define BUTTON_SENSE            160000
  120. #define BUTTON_DEBOUNCE 5000
  121. //  Galileo register stuff
  122. #define kGal_DevBank2Cfg        0x1466DB33
  123. #define kGal_DevBank2PReg       0x464
  124. #define kGal_DevBank3Cfg        0x146FDFFB
  125. #define kGal_DevBank3PReg       0x468
  126. // Network 
  127. #define kIPADDR 1
  128. #define kNETMASK 2
  129. #define kGATEWAY 3
  130. #define kDNS 4
  131. #define kClassA 5
  132. #define kClassB 6
  133. #define kClassC 7