hardware.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:5k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/include/asm-arm/arch-h720x/hardware.h
  3.  *
  4.  * Copyright (C) 2000 Jungjun Kim, Hynix Semiconductor Inc.
  5.  *           (C) 2003 Thomas Gleixner <tglx@linutronix.de>
  6.  *           (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>
  7.  *
  8.  * This file contains the hardware definitions of the h720x processors
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License version 2 as
  12.  * published by the Free Software Foundation.
  13.  *
  14.  * Do not add implementations specific defines here. This files contains
  15.  * only defines of the onchip peripherals. Add those defines to boards.h,
  16.  * which is included by this file.
  17.  */
  18. #ifndef __ASM_ARCH_HARDWARE_H
  19. #define __ASM_ARCH_HARDWARE_H
  20. #define IOCLK (3686400L)
  21. /* Onchip peripherals */
  22. #define IO_VIRT 0xf0000000 /* IO peripherals */
  23. #define IO_PHYS 0x80000000
  24. #define IO_SIZE 0x00050000
  25. #ifdef CONFIG_CPU_H7202
  26. #include "h7202-regs.h"
  27. #elif defined CONFIG_CPU_H7201
  28. #include "h7201-regs.h"
  29. #else
  30. #error machine definition mismatch
  31. #endif
  32. /* Macro to access the CPU IO */
  33. #define CPU_IO(x) (*(volatile u32*)(x))
  34. /* Macro to access general purpose regs (base, offset) */
  35. #define CPU_REG(x,y) CPU_IO(x+y)
  36. /* Macro to access irq related regs */
  37. #define IRQ_REG(x) CPU_REG(IRQC_VIRT,x)
  38. /* CPU registers */
  39. /* general purpose I/O */
  40. #define GPIO_VIRT(x) (IO_VIRT + 0x23000 + ((x)<<5))
  41. #define GPIO_A_VIRT (GPIO_VIRT(0))
  42. #define GPIO_B_VIRT (GPIO_VIRT(1))
  43. #define GPIO_C_VIRT (GPIO_VIRT(2))
  44. #define GPIO_D_VIRT (GPIO_VIRT(3))
  45. #define GPIO_E_VIRT (GPIO_VIRT(4))
  46. #define GPIO_AMULSEL (GPIO_VIRT(0) + 0xA4)
  47. #define AMULSEL_USIN2 (1<<5)
  48. #define AMULSEL_USOUT2 (1<<6)
  49. #define AMULSEL_USIN3 (1<<13)
  50. #define AMULSEL_USOUT3 (1<<14)
  51. #define AMULSEL_IRDIN (1<<15)
  52. #define AMULSEL_IRDOUT (1<<7)
  53. /* Register offsets general purpose I/O */
  54. #define GPIO_DATA 0x00
  55. #define GPIO_DIR 0x04
  56. #define GPIO_MASK 0x08
  57. #define GPIO_STAT 0x0C
  58. #define GPIO_EDGE 0x10
  59. #define GPIO_CLR 0x14
  60. #define GPIO_POL 0x18
  61. #define GPIO_EN 0x1C
  62. /*interrupt controller */
  63. #define IRQC_VIRT (IO_VIRT + 0x24000)
  64. /* register offset interrupt controller */
  65. #define IRQC_IER 0x00
  66. #define IRQC_ISR 0x04
  67. /* timer unit */
  68. #define TIMER_VIRT (IO_VIRT + 0x25000)
  69. /* Register offsets timer unit */
  70. #define TM0_PERIOD    0x00
  71. #define TM0_COUNT     0x08
  72. #define TM0_CTRL      0x10
  73. #define TM1_PERIOD    0x20
  74. #define TM1_COUNT     0x28
  75. #define TM1_CTRL      0x30
  76. #define TM2_PERIOD    0x40
  77. #define TM2_COUNT     0x48
  78. #define TM2_CTRL      0x50
  79. #define TIMER_TOPCTRL 0x60
  80. #define TIMER_TOPSTAT 0x64
  81. #define T64_COUNTL 0x80
  82. #define T64_COUNTH 0x84
  83. #define T64_CTRL 0x88
  84. #define T64_BASEL 0x94
  85. #define T64_BASEH 0x98
  86. /* Bitmaks timer unit TOPSTAT reg */
  87. #define TSTAT_T0INT 0x1
  88. #define TSTAT_T1INT 0x2
  89. #define TSTAT_T2INT 0x4
  90. #define TSTAT_T3INT 0x8
  91. /* Bit description of TMx_CTRL register */
  92. #define TM_START   0x1
  93. #define TM_REPEAT  0x2
  94. #define TM_RESET   0x4
  95. /* Bit description of TIMER_CTRL register */
  96. #define ENABLE_TM0_INTR   0x1
  97. #define ENABLE_TM1_INTR   0x2
  98. #define ENABLE_TM2_INTR   0x4
  99. #define TIMER_ENABLE_BIT  0x8
  100. #define ENABLE_TIMER64    0x10
  101. #define ENABLE_TIMER64_INT 0x20
  102. /* PMU & PLL */
  103. #define PMU_BASE  (IO_VIRT + 0x1000)
  104. #define PMU_MODE 0x00
  105. #define PMU_STAT    0x20
  106. #define PMU_PLL_CTRL  0x28
  107. /* PMU Mode bits */
  108. #define PMU_MODE_SLOW 0x00
  109. #define PMU_MODE_RUN 0x01
  110. #define PMU_MODE_IDLE 0x02
  111. #define PMU_MODE_SLEEP 0x03
  112. #define PMU_MODE_INIT 0x04
  113. #define PMU_MODE_DEEPSLEEP 0x07
  114. #define PMU_MODE_WAKEUP 0x08
  115. /* PMU ... */
  116. #define PLL_2_EN 0x8000
  117. #define PLL_1_EN 0x4000
  118. #define PLL_3_MUTE 0x0080
  119. /* Control bits for PMU/ PLL */
  120. #define PMU_WARMRESET 0x00010000
  121. #define PLL_CTRL_MASK23 0x000080ff
  122. /* LCD Controller */
  123. #define LCD_BASE  (IO_VIRT + 0x10000)
  124. #define LCD_CTRL  0x00
  125. #define LCD_STATUS 0x04
  126. #define LCD_STATUS_M 0x08
  127. #define LCD_INTERRUPT 0x0C
  128. #define LCD_DBAR 0x10
  129. #define LCD_DCAR 0x14
  130. #define LCD_TIMING0  0x20
  131. #define LCD_TIMING1  0x24
  132. #define LCD_TIMING2  0x28
  133. #define LCD_TEST 0x40
  134. /* LCD Control Bits */
  135. #define LCD_CTRL_LCD_ENABLE    0x00000001
  136. /* Bits per pixel */
  137. #define LCD_CTRL_LCD_BPP_MASK  0x00000006
  138. #define LCD_CTRL_LCD_4BPP     0x00000000
  139. #define LCD_CTRL_LCD_8BPP     0x00000002
  140. #define LCD_CTRL_LCD_16BPP    0x00000004
  141. #define LCD_CTRL_LCD_BW 0x00000008
  142. #define LCD_CTRL_LCD_TFT 0x00000010
  143. #define LCD_CTRL_BGR 0x00001000
  144. #define LCD_CTRL_LCD_VCOMP 0x00080000
  145. #define LCD_CTRL_LCD_MONO8 0x00200000
  146. #define LCD_CTRL_LCD_PWR 0x00400000
  147. #define LCD_CTRL_LCD_BLE 0x00800000
  148. #define LCD_CTRL_LDBUSEN 0x01000000
  149. /* Palette */
  150. #define LCD_PALETTE_BASE  (IO_VIRT + 0x10400)
  151. /* Serial ports */
  152. #define SERIAL0_OFS 0x20000
  153. #define SERIAL0_VIRT  (IO_VIRT + SERIAL0_OFS)
  154. #define SERIAL0_BASE (IO_PHYS + SERIAL0_OFS)
  155. #define SERIAL1_OFS 0x21000
  156. #define SERIAL1_VIRT  (IO_VIRT + SERIAL1_OFS)
  157. #define SERIAL1_BASE (IO_PHYS + SERIAL1_OFS)
  158. #define SERIAL_ENABLE 0x30
  159. #define SERIAL_ENABLE_EN (1<<0)
  160. /* General defines to pacify gcc */
  161. #define PCIO_BASE  (0) /* for inb, outb and friends */
  162. #define PCIO_VIRT PCIO_BASE
  163. #define __ASM_ARCH_HARDWARE_INCMACH_H
  164. #include "boards.h"
  165. #undef __ASM_ARCH_HARDWARE_INCMACH_H
  166. #endif /* __ASM_ARCH_HARDWARE_H */