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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*  *********************************************************************
  2.     *  SB1250 Board Support Package
  3.     *
  4.     *  Generic Bus Constants                     File: sb1250_genbus.h
  5.     *
  6.     *  This module contains constants and macros useful for
  7.     *  manipulating the SB1250's Generic Bus interface
  8.     *
  9.     *  SB1250 specification level:  User's manual 1/02/02
  10.     *
  11.     *  Author:  Mitch Lichtenberg (mpl@broadcom.com)
  12.     *
  13.     *********************************************************************
  14.     *
  15.     *  Copyright 2000,2001
  16.     *  Broadcom Corporation. All rights reserved.
  17.     *
  18.     *  This program is free software; you can redistribute it and/or
  19.     *  modify it under the terms of the GNU General Public License as
  20.     *  published by the Free Software Foundation; either version 2 of
  21.     *  the License, or (at your option) any later version.
  22.     *
  23.     *  This program is distributed in the hope that it will be useful,
  24.     *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  25.     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  26.     *  GNU General Public License for more details.
  27.     *
  28.     *  You should have received a copy of the GNU General Public License
  29.     *  along with this program; if not, write to the Free Software
  30.     *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  31.     *  MA 02111-1307 USA
  32.     ********************************************************************* */
  33. #ifndef _SB1250_GENBUS_H
  34. #define _SB1250_GENBUS_H
  35. #include "sb1250_defs.h"
  36. /*
  37.  * Generic Bus Region Configuration Registers (Table 11-4)
  38.  */
  39. #define M_IO_RDY_ACTIVE _SB_MAKEMASK1(0)
  40. #define M_IO_ENA_RDY _SB_MAKEMASK1(1)
  41. #define S_IO_WIDTH_SEL 2
  42. #define M_IO_WIDTH_SEL _SB_MAKEMASK(2,S_IO_WIDTH_SEL)
  43. #define K_IO_WIDTH_SEL_1 0
  44. #define K_IO_WIDTH_SEL_2 1
  45. #define K_IO_WIDTH_SEL_1L       2 /* PASS2 */
  46. #define K_IO_WIDTH_SEL_4 3
  47. #define V_IO_WIDTH_SEL(x) _SB_MAKEVALUE(x,S_IO_WIDTH_SEL)
  48. #define G_IO_WIDTH_SEL(x) _SB_GETVALUE(x,S_IO_WIDTH_SEL,M_IO_WIDTH_SEL)
  49. #define M_IO_PARITY_ENA _SB_MAKEMASK1(4)
  50. #define M_IO_BURST_EN _SB_MAKEMASK1(5) /* PASS2 */
  51. #define M_IO_PARITY_ODD _SB_MAKEMASK1(6)
  52. #define M_IO_NONMUX _SB_MAKEMASK1(7)
  53. #define S_IO_TIMEOUT 8
  54. #define M_IO_TIMEOUT _SB_MAKEMASK(8,S_IO_TIMEOUT)
  55. #define V_IO_TIMEOUT(x) _SB_MAKEVALUE(x,S_IO_TIMEOUT)
  56. #define G_IO_TIMEOUT(x) _SB_GETVALUE(x,S_IO_TIMEOUT,M_IO_TIMEOUT)
  57. /*
  58.  * Generic Bus Region Size register (Table 11-5)
  59.  */
  60. #define S_IO_MULT_SIZE 0
  61. #define M_IO_MULT_SIZE _SB_MAKEMASK(12,S_IO_MULT_SIZE)
  62. #define V_IO_MULT_SIZE(x) _SB_MAKEVALUE(x,S_IO_MULT_SIZE)
  63. #define G_IO_MULT_SIZE(x) _SB_GETVALUE(x,S_IO_MULT_SIZE,M_IO_MULT_SIZE)
  64. #define S_IO_REGSIZE 16  /* # bits to shift size for this reg */
  65. /*
  66.  * Generic Bus Region Address (Table 11-6)
  67.  */
  68. #define S_IO_START_ADDR 0
  69. #define M_IO_START_ADDR _SB_MAKEMASK(14,S_IO_START_ADDR)
  70. #define V_IO_START_ADDR(x) _SB_MAKEVALUE(x,S_IO_START_ADDR)
  71. #define G_IO_START_ADDR(x) _SB_GETVALUE(x,S_IO_START_ADDR,M_IO_START_ADDR)
  72. #define S_IO_ADDRBASE 16  /* # bits to shift addr for this reg */
  73. /*
  74.  * Generic Bus Region 0 Timing Registers (Table 11-7)
  75.  */
  76. #define S_IO_ALE_WIDTH 0
  77. #define M_IO_ALE_WIDTH _SB_MAKEMASK(3,S_IO_ALE_WIDTH)
  78. #define V_IO_ALE_WIDTH(x) _SB_MAKEVALUE(x,S_IO_ALE_WIDTH)
  79. #define G_IO_ALE_WIDTH(x) _SB_GETVALUE(x,S_IO_ALE_WIDTH,M_IO_ALE_WIDTH)
  80. #define M_IO_EARLY_CS         _SB_MAKEMASK1(3) /* PASS2 */
  81. #define S_IO_ALE_TO_CS 4
  82. #define M_IO_ALE_TO_CS _SB_MAKEMASK(2,S_IO_ALE_TO_CS)
  83. #define V_IO_ALE_TO_CS(x) _SB_MAKEVALUE(x,S_IO_ALE_TO_CS)
  84. #define G_IO_ALE_TO_CS(x) _SB_GETVALUE(x,S_IO_ALE_TO_CS,M_IO_ALE_TO_CS)
  85. #define S_IO_BURST_WIDTH           _SB_MAKE64(6) /* PASS2 */
  86. #define M_IO_BURST_WIDTH           _SB_MAKEMASK(2,S_IO_BURST_WIDTH) /* PASS2 */
  87. #define V_IO_BURST_WIDTH(x)        _SB_MAKEVALUE(x,S_IO_BURST_WIDTH) /* PASS2 */
  88. #define G_IO_BURST_WIDTH(x)        _SB_GETVALUE(x,S_IO_BURST_WIDTH,M_IO_BURST_WIDTH) /* PASS2 */
  89. #define S_IO_CS_WIDTH 8
  90. #define M_IO_CS_WIDTH _SB_MAKEMASK(5,S_IO_CS_WIDTH)
  91. #define V_IO_CS_WIDTH(x) _SB_MAKEVALUE(x,S_IO_CS_WIDTH)
  92. #define G_IO_CS_WIDTH(x) _SB_GETVALUE(x,S_IO_CS_WIDTH,M_IO_CS_WIDTH)
  93. #define S_IO_RDY_SMPLE 13
  94. #define M_IO_RDY_SMPLE _SB_MAKEMASK(3,S_IO_RDY_SMPLE)
  95. #define V_IO_RDY_SMPLE(x) _SB_MAKEVALUE(x,S_IO_RDY_SMPLE)
  96. #define G_IO_RDY_SMPLE(x) _SB_GETVALUE(x,S_IO_RDY_SMPLE,M_IO_RDY_SMPLE)
  97. /*
  98.  * Generic Bus Timing 1 Registers (Table 11-8)
  99.  */
  100. #define S_IO_ALE_TO_WRITE 0
  101. #define M_IO_ALE_TO_WRITE _SB_MAKEMASK(3,S_IO_ALE_TO_WRITE)
  102. #define V_IO_ALE_TO_WRITE(x) _SB_MAKEVALUE(x,S_IO_ALE_TO_WRITE)
  103. #define G_IO_ALE_TO_WRITE(x) _SB_GETVALUE(x,S_IO_ALE_TO_WRITE,M_IO_ALE_TO_WRITE)
  104. #define M_IO_RDY_SYNC         _SB_MAKEMASK1(3) /* PASS2 */
  105. #define S_IO_WRITE_WIDTH 4
  106. #define M_IO_WRITE_WIDTH _SB_MAKEMASK(4,S_IO_WRITE_WIDTH)
  107. #define V_IO_WRITE_WIDTH(x) _SB_MAKEVALUE(x,S_IO_WRITE_WIDTH)
  108. #define G_IO_WRITE_WIDTH(x) _SB_GETVALUE(x,S_IO_WRITE_WIDTH,M_IO_WRITE_WIDTH)
  109. #define S_IO_IDLE_CYCLE 8
  110. #define M_IO_IDLE_CYCLE _SB_MAKEMASK(4,S_IO_IDLE_CYCLE)
  111. #define V_IO_IDLE_CYCLE(x) _SB_MAKEVALUE(x,S_IO_IDLE_CYCLE)
  112. #define G_IO_IDLE_CYCLE(x) _SB_GETVALUE(x,S_IO_IDLE_CYCLE,M_IO_IDLE_CYCLE)
  113. #define S_IO_OE_TO_CS 12
  114. #define M_IO_OE_TO_CS _SB_MAKEMASK(2,S_IO_OE_TO_CS)
  115. #define V_IO_OE_TO_CS(x) _SB_MAKEVALUE(x,S_IO_OE_TO_CS)
  116. #define G_IO_OE_TO_CS(x) _SB_GETVALUE(x,S_IO_OE_TO_CS,M_IO_OE_TO_CS)
  117. #define S_IO_CS_TO_OE 14
  118. #define M_IO_CS_TO_OE _SB_MAKEMASK(2,S_IO_CS_TO_OE)
  119. #define V_IO_CS_TO_OE(x) _SB_MAKEVALUE(x,S_IO_CS_TO_OE)
  120. #define G_IO_CS_TO_OE(x) _SB_GETVALUE(x,S_IO_CS_TO_OE,M_IO_CS_TO_OE)
  121. /*
  122.  * Generic Bus Interrupt Status Register (Table 11-9)
  123.  */
  124. #define M_IO_CS_ERR_INT _SB_MAKEMASK(0,8)
  125. #define M_IO_CS0_ERR_INT _SB_MAKEMASK1(0)
  126. #define M_IO_CS1_ERR_INT _SB_MAKEMASK1(1)
  127. #define M_IO_CS2_ERR_INT _SB_MAKEMASK1(2)
  128. #define M_IO_CS3_ERR_INT _SB_MAKEMASK1(3)
  129. #define M_IO_CS4_ERR_INT _SB_MAKEMASK1(4)
  130. #define M_IO_CS5_ERR_INT _SB_MAKEMASK1(5)
  131. #define M_IO_CS6_ERR_INT _SB_MAKEMASK1(6)
  132. #define M_IO_CS7_ERR_INT _SB_MAKEMASK1(7)
  133. #define M_IO_RD_PAR_INT _SB_MAKEMASK1(9)
  134. #define M_IO_TIMEOUT_INT _SB_MAKEMASK1(10)
  135. #define M_IO_ILL_ADDR_INT _SB_MAKEMASK1(11)
  136. #define M_IO_MULT_CS_INT _SB_MAKEMASK1(12)
  137. #define M_IO_COH_ERR         _SB_MAKEMASK1(14) /* PASS2 */
  138. /*
  139.  * PCMCIA configuration register (Table 12-6)
  140.  */
  141. #define M_PCMCIA_CFG_ATTRMEM _SB_MAKEMASK1(0)
  142. #define M_PCMCIA_CFG_3VEN _SB_MAKEMASK1(1)
  143. #define M_PCMCIA_CFG_5VEN _SB_MAKEMASK1(2)
  144. #define M_PCMCIA_CFG_VPPEN _SB_MAKEMASK1(3)
  145. #define M_PCMCIA_CFG_RESET _SB_MAKEMASK1(4)
  146. #define M_PCMCIA_CFG_APWRONEN _SB_MAKEMASK1(5)
  147. #define M_PCMCIA_CFG_CDMASK _SB_MAKEMASK1(6)
  148. #define M_PCMCIA_CFG_WPMASK _SB_MAKEMASK1(7)
  149. #define M_PCMCIA_CFG_RDYMASK _SB_MAKEMASK1(8)
  150. #define M_PCMCIA_CFG_PWRCTL _SB_MAKEMASK1(9)
  151. /*
  152.  * PCMCIA status register (Table 12-7)
  153.  */
  154. #define M_PCMCIA_STATUS_CD1 _SB_MAKEMASK1(0)
  155. #define M_PCMCIA_STATUS_CD2 _SB_MAKEMASK1(1)
  156. #define M_PCMCIA_STATUS_VS1 _SB_MAKEMASK1(2)
  157. #define M_PCMCIA_STATUS_VS2 _SB_MAKEMASK1(3)
  158. #define M_PCMCIA_STATUS_WP _SB_MAKEMASK1(4)
  159. #define M_PCMCIA_STATUS_RDY _SB_MAKEMASK1(5)
  160. #define M_PCMCIA_STATUS_3VEN _SB_MAKEMASK1(6)
  161. #define M_PCMCIA_STATUS_5VEN _SB_MAKEMASK1(7)
  162. #define M_PCMCIA_STATUS_CDCHG _SB_MAKEMASK1(8)
  163. #define M_PCMCIA_STATUS_WPCHG _SB_MAKEMASK1(9)
  164. #define M_PCMCIA_STATUS_RDYCHG _SB_MAKEMASK1(10)
  165. /*
  166.  * GPIO Interrupt Type Register (table 13-3)
  167.  */
  168. #define K_GPIO_INTR_DISABLE 0
  169. #define K_GPIO_INTR_EDGE 1
  170. #define K_GPIO_INTR_LEVEL 2
  171. #define K_GPIO_INTR_SPLIT 3
  172. #define S_GPIO_INTR_TYPEX(n) (((n)/2)*2)
  173. #define M_GPIO_INTR_TYPEX(n) _SB_MAKEMASK(2,S_GPIO_INTR_TYPEX(n))
  174. #define V_GPIO_INTR_TYPEX(n,x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPEX(n))
  175. #define G_GPIO_INTR_TYPEX(n,x) _SB_GETVALUE(x,S_GPIO_INTR_TYPEX(n),M_GPIO_INTR_TYPEX(n))
  176. #define S_GPIO_INTR_TYPE0 0
  177. #define M_GPIO_INTR_TYPE0 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE0)
  178. #define V_GPIO_INTR_TYPE0(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE0)
  179. #define G_GPIO_INTR_TYPE0(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE0,M_GPIO_INTR_TYPE0)
  180. #define S_GPIO_INTR_TYPE2 2
  181. #define M_GPIO_INTR_TYPE2 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE2)
  182. #define V_GPIO_INTR_TYPE2(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE2)
  183. #define G_GPIO_INTR_TYPE2(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE2,M_GPIO_INTR_TYPE2)
  184. #define S_GPIO_INTR_TYPE4 4
  185. #define M_GPIO_INTR_TYPE4 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE4)
  186. #define V_GPIO_INTR_TYPE4(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE4)
  187. #define G_GPIO_INTR_TYPE4(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE4,M_GPIO_INTR_TYPE4)
  188. #define S_GPIO_INTR_TYPE6 6
  189. #define M_GPIO_INTR_TYPE6 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE6)
  190. #define V_GPIO_INTR_TYPE6(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE6)
  191. #define G_GPIO_INTR_TYPE6(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE6,M_GPIO_INTR_TYPE6)
  192. #define S_GPIO_INTR_TYPE8 8
  193. #define M_GPIO_INTR_TYPE8 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE8)
  194. #define V_GPIO_INTR_TYPE8(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE8)
  195. #define G_GPIO_INTR_TYPE8(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE8,M_GPIO_INTR_TYPE8)
  196. #define S_GPIO_INTR_TYPE10 10
  197. #define M_GPIO_INTR_TYPE10 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE10)
  198. #define V_GPIO_INTR_TYPE10(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE10)
  199. #define G_GPIO_INTR_TYPE10(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE10,M_GPIO_INTR_TYPE10)
  200. #define S_GPIO_INTR_TYPE12 12
  201. #define M_GPIO_INTR_TYPE12 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE12)
  202. #define V_GPIO_INTR_TYPE12(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE12)
  203. #define G_GPIO_INTR_TYPE12(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE12,M_GPIO_INTR_TYPE12)
  204. #define S_GPIO_INTR_TYPE14 14
  205. #define M_GPIO_INTR_TYPE14 _SB_MAKEMASK(2,S_GPIO_INTR_TYPE14)
  206. #define V_GPIO_INTR_TYPE14(x) _SB_MAKEVALUE(x,S_GPIO_INTR_TYPE14)
  207. #define G_GPIO_INTR_TYPE14(x) _SB_GETVALUE(x,S_GPIO_INTR_TYPE14,M_GPIO_INTR_TYPE14)
  208. #endif