home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-frv / mb93493-regs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  12.3 KB  |  280 lines

  1. /* mb93493-regs.h: MB93493 companion chip registers
  2.  *
  3.  * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
  4.  * Written by David Howells (dhowells@redhat.com)
  5.  *
  6.  * This program is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public License
  8.  * as published by the Free Software Foundation; either version
  9.  * 2 of the License, or (at your option) any later version.
  10.  */
  11.  
  12. #ifndef _ASM_MB93493_REGS_H
  13. #define _ASM_MB93493_REGS_H
  14.  
  15. #include <asm/mb-regs.h>
  16. #include <asm/mb93493-irqs.h>
  17.  
  18. #define __get_MB93493(X)    ({ *(volatile unsigned long *)(__region_CS3 + (X)); })
  19.  
  20. #define __set_MB93493(X,V)                        \
  21. do {                                    \
  22.     *(volatile unsigned long *)(__region_CS3 + (X)) = (V); mb();    \
  23. } while(0)
  24.  
  25. #define __get_MB93493_STSR(X)    __get_MB93493(0x3c0 + (X) * 4)
  26. #define __set_MB93493_STSR(X,V)    __set_MB93493(0x3c0 + (X) * 4, (V))
  27. #define MB93493_STSR_EN
  28.  
  29. #define __get_MB93493_IQSR(X)    __get_MB93493(0x3d0 + (X) * 4)
  30. #define __set_MB93493_IQSR(X,V)    __set_MB93493(0x3d0 + (X) * 4, (V))
  31.  
  32. #define __get_MB93493_DQSR(X)    __get_MB93493(0x3e0 + (X) * 4)
  33. #define __set_MB93493_DQSR(X,V)    __set_MB93493(0x3e0 + (X) * 4, (V))
  34.  
  35. #define __get_MB93493_LBSER()    __get_MB93493(0x3f0)
  36. #define __set_MB93493_LBSER(V)    __set_MB93493(0x3f0, (V))
  37.  
  38. #define MB93493_LBSER_VDC    0x00010000
  39. #define MB93493_LBSER_VCC    0x00020000
  40. #define MB93493_LBSER_AUDIO    0x00040000
  41. #define MB93493_LBSER_I2C_0    0x00080000
  42. #define MB93493_LBSER_I2C_1    0x00100000
  43. #define MB93493_LBSER_USB    0x00200000
  44. #define MB93493_LBSER_GPIO    0x00800000
  45. #define MB93493_LBSER_PCMCIA    0x01000000
  46.  
  47. #define __get_MB93493_LBSR()    __get_MB93493(0x3fc)
  48. #define __set_MB93493_LBSR(V)    __set_MB93493(0x3fc, (V))
  49.  
  50. /*
  51.  * video display controller
  52.  */
  53. #define __get_MB93493_VDC(X)    __get_MB93493(MB93493_VDC_##X)
  54. #define __set_MB93493_VDC(X,V)    __set_MB93493(MB93493_VDC_##X, (V))
  55.  
  56. #define MB93493_VDC_RCURSOR    0x140    /* cursor position */
  57. #define MB93493_VDC_RCT1    0x144    /* cursor colour 1 */
  58. #define MB93493_VDC_RCT2    0x148    /* cursor colour 2 */
  59. #define MB93493_VDC_RHDC    0x150    /* horizontal display period */
  60. #define MB93493_VDC_RH_MARGINS    0x154    /* horizontal margin sizes */
  61. #define MB93493_VDC_RVDC    0x158    /* vertical display period */
  62. #define MB93493_VDC_RV_MARGINS    0x15c    /* vertical margin sizes */
  63. #define MB93493_VDC_RC        0x170    /* VDC control */
  64. #define MB93493_VDC_RCLOCK    0x174    /* clock divider, DMA req delay */
  65. #define MB93493_VDC_RBLACK    0x178    /* black insert sizes */
  66. #define MB93493_VDC_RS        0x17c    /* VDC status */
  67.  
  68. #define __addr_MB93493_VDC_BCI(X)  ({ (volatile unsigned long *)(__region_CS3 + 0x000 + (X)); })
  69. #define __addr_MB93493_VDC_TPO(X)  (__region_CS3 + 0x1c0 + (X))
  70.  
  71. #define VDC_TPO_WIDTH        32
  72.  
  73. #define VDC_RC_DSR        0x00000080    /* VDC master reset */
  74.  
  75. #define VDC_RS_IT        0x00060000    /* interrupt indicators */
  76. #define VDC_RS_IT_UNDERFLOW    0x00040000    /* - underflow event */
  77. #define VDC_RS_IT_VSYNC        0x00020000    /* - VSYNC event */
  78. #define VDC_RS_DFI        0x00010000    /* current interlace field number */
  79. #define VDC_RS_DFI_TOP        0x00000000    /* - top field */
  80. #define VDC_RS_DFI_BOTTOM    0x00010000    /* - bottom field */
  81. #define VDC_RS_DCSR        0x00000010    /* cursor state */
  82. #define VDC_RS_DCM        0x00000003    /* display mode */
  83. #define VDC_RS_DCM_DISABLED    0x00000000    /* - display disabled */
  84. #define VDC_RS_DCM_STOPPED    0x00000001    /* - VDC stopped */
  85. #define VDC_RS_DCM_FREERUNNING    0x00000002    /* - VDC free-running */
  86. #define VDC_RS_DCM_TRANSFERRING    0x00000003    /* - data being transferred to VDC */
  87.  
  88. /*
  89.  * video capture controller
  90.  */
  91. #define __get_MB93493_VCC(X)    __get_MB93493(MB93493_VCC_##X)
  92. #define __set_MB93493_VCC(X,V)    __set_MB93493(MB93493_VCC_##X, (V))
  93.  
  94. #define MB93493_VCC_RREDUCT    0x104    /* reduction rate */
  95. #define MB93493_VCC_RHY        0x108    /* horizontal brightness filter coefficients */
  96. #define MB93493_VCC_RHC        0x10c    /* horizontal colour-difference filter coefficients */
  97. #define MB93493_VCC_RHSIZE    0x110    /* horizontal cycle sizes */
  98. #define MB93493_VCC_RHBC    0x114    /* horizontal back porch size */
  99. #define MB93493_VCC_RVCC    0x118    /* vertical capture period */
  100. #define MB93493_VCC_RVBC    0x11c    /* vertical back porch period */
  101. #define MB93493_VCC_RV        0x120    /* vertical filter coefficients */
  102. #define MB93493_VCC_RDTS    0x128    /* DMA transfer size */
  103. #define MB93493_VCC_RDTS_4B    0x01000000    /* 4-byte transfer */
  104. #define MB93493_VCC_RDTS_32B    0x03000000    /* 32-byte transfer */
  105. #define MB93493_VCC_RDTS_SHIFT    24
  106. #define MB93493_VCC_RCC        0x130    /* VCC control */
  107. #define MB93493_VCC_RIS        0x134    /* VCC interrupt status */
  108.  
  109. #define __addr_MB93493_VCC_TPI(X)  (__region_CS3 + 0x180 + (X))
  110.  
  111. #define VCC_RHSIZE_RHCC        0x000007ff
  112. #define VCC_RHSIZE_RHCC_SHIFT    0
  113. #define VCC_RHSIZE_RHTCC    0x0fff0000
  114. #define VCC_RHSIZE_RHTCC_SHIFT    16
  115.  
  116. #define VCC_RVBC_RVBC        0x00003f00
  117. #define VCC_RVBC_RVBC_SHIFT    8
  118.  
  119. #define VCC_RREDUCT_RHR        0x07ff0000
  120. #define VCC_RREDUCT_RHR_SHIFT    16
  121. #define VCC_RREDUCT_RVR        0x000007ff
  122. #define VCC_RREDUCT_RVR_SHIFT    0
  123.  
  124. #define VCC_RCC_CE        0x00000001    /* VCC enable */
  125. #define VCC_RCC_CS        0x00000002    /* request video capture start */
  126. #define VCC_RCC_CPF        0x0000000c    /* pixel format */
  127. #define VCC_RCC_CPF_YCBCR_16    0x00000000    /* - YCbCr 4:2:2 16-bit format */
  128. #define VCC_RCC_CPF_RGB        0x00000004    /* - RGB 4:4:4 format */
  129. #define VCC_RCC_CPF_YCBCR_24    0x00000008    /* - YCbCr 4:2:2 24-bit format */
  130. #define VCC_RCC_CPF_BT656    0x0000000c    /* - ITU R-BT.656 format */
  131. #define VCC_RCC_CPF_SHIFT    2
  132. #define VCC_RCC_CSR        0x00000080    /* request reset */
  133. #define VCC_RCC_HSIP        0x00000100    /* HSYNC polarity */
  134. #define VCC_RCC_HSIP_LOACT    0x00000000    /* - low active */
  135. #define VCC_RCC_HSIP_HIACT    0x00000100    /* - high active */
  136. #define VCC_RCC_VSIP        0x00000200    /* VSYNC polarity */
  137. #define VCC_RCC_VSIP_LOACT    0x00000000    /* - low active */
  138. #define VCC_RCC_VSIP_HIACT    0x00000200    /* - high active */
  139. #define VCC_RCC_CIE        0x00000800    /* interrupt enable */
  140. #define VCC_RCC_CFP        0x00001000    /* RGB pixel packing */
  141. #define VCC_RCC_CFP_4TO3    0x00000000    /* - pack 4 pixels into 3 words */
  142. #define VCC_RCC_CFP_1TO1    0x00001000    /* - pack 1 pixel into 1 words */
  143. #define VCC_RCC_CSM        0x00006000    /* interlace specification */
  144. #define VCC_RCC_CSM_ONEPASS    0x00002000    /* - non-interlaced */
  145. #define VCC_RCC_CSM_INTERLACE    0x00004000    /* - interlaced */
  146. #define VCC_RCC_CSM_SHIFT    13
  147. #define VCC_RCC_ES        0x00008000    /* capture start polarity */
  148. #define VCC_RCC_ES_NEG        0x00000000    /* - negative edge */
  149. #define VCC_RCC_ES_POS        0x00008000    /* - positive edge */
  150. #define VCC_RCC_IFI        0x00080000    /* inferlace field evaluation reverse */
  151. #define VCC_RCC_FDTS        0x00300000    /* interlace field start */
  152. #define VCC_RCC_FDTS_3_8    0x00000000    /* - 3/8 of horizontal entire cycle */
  153. #define VCC_RCC_FDTS_1_4    0x00100000    /* - 1/4 of horizontal entire cycle */
  154. #define VCC_RCC_FDTS_7_16    0x00200000    /* - 7/16 of horizontal entire cycle */
  155. #define VCC_RCC_FDTS_SHIFT    20
  156. #define VCC_RCC_MOV        0x00400000    /* test bit - always set to 1 */
  157. #define VCC_RCC_STP        0x00800000    /* request video capture stop */
  158. #define VCC_RCC_TO        0x01000000    /* input during top-field only */
  159.  
  160. #define VCC_RIS_VSYNC        0x01000000    /* VSYNC interrupt */
  161. #define VCC_RIS_OV        0x02000000    /* overflow interrupt */
  162. #define VCC_RIS_BOTTOM        0x08000000    /* interlace bottom field */
  163. #define VCC_RIS_STARTED        0x10000000    /* capture started */
  164.  
  165. /*
  166.  * I2C
  167.  */
  168. #define MB93493_I2C_BSR     0x340        /* bus status */
  169. #define MB93493_I2C_BCR        0x344        /* bus control */
  170. #define MB93493_I2C_CCR        0x348        /* clock control */
  171. #define MB93493_I2C_ADR        0x34c        /* address */
  172. #define MB93493_I2C_DTR        0x350        /* data */
  173. #define MB93493_I2C_BC2R    0x35c        /* bus control 2 */
  174.  
  175. #define __addr_MB93493_I2C(port,X)   (__region_CS3 + MB93493_I2C_##X + ((port)*0x20))
  176. #define __get_MB93493_I2C(port,X)    __get_MB93493(MB93493_I2C_##X + ((port)*0x20))
  177. #define __set_MB93493_I2C(port,X,V)  __set_MB93493(MB93493_I2C_##X + ((port)*0x20), (V))
  178.  
  179. #define I2C_BSR_BB    (1 << 7)
  180.  
  181. /*
  182.  * audio controller (I2S) registers
  183.  */
  184. #define __get_MB93493_I2S(X)    __get_MB93493(MB93493_I2S_##X)
  185. #define __set_MB93493_I2S(X,V)    __set_MB93493(MB93493_I2S_##X, (V))
  186.  
  187. #define MB93493_I2S_ALDR    0x300        /* L-channel data */
  188. #define MB93493_I2S_ARDR    0x304        /* R-channel data */
  189. #define MB93493_I2S_APDR    0x308        /* 16-bit packed data */
  190. #define MB93493_I2S_AISTR    0x310        /* status */
  191. #define MB93493_I2S_AICR    0x314        /* control */
  192.  
  193. #define __addr_MB93493_I2S_ALDR(X)    (__region_CS3 + MB93493_I2S_ALDR + (X))
  194. #define __addr_MB93493_I2S_ARDR(X)    (__region_CS3 + MB93493_I2S_ARDR + (X))
  195. #define __addr_MB93493_I2S_APDR(X)    (__region_CS3 + MB93493_I2S_APDR + (X))
  196. #define __addr_MB93493_I2S_ADR(X)    (__region_CS3 + 0x320 + (X))
  197.  
  198. #define I2S_AISTR_OTST        0x00000003    /* status of output data transfer */
  199. #define I2S_AISTR_OTR        0x00000010    /* output transfer request pending */
  200. #define I2S_AISTR_OUR        0x00000020    /* output FIFO underrun detected */
  201. #define I2S_AISTR_OOR        0x00000040    /* output FIFO overrun detected */
  202. #define I2S_AISTR_ODS        0x00000100    /* output DMA transfer size */
  203. #define I2S_AISTR_ODE        0x00000400    /* output DMA transfer request enable */
  204. #define I2S_AISTR_OTRIE        0x00001000    /* output transfer request interrupt enable */
  205. #define I2S_AISTR_OURIE        0x00002000    /* output FIFO underrun interrupt enable */
  206. #define I2S_AISTR_OORIE        0x00004000    /* output FIFO overrun interrupt enable */
  207. #define I2S_AISTR__OUT_MASK    0x00007570
  208. #define I2S_AISTR_ITST        0x00030000    /* status of input data transfer */
  209. #define I2S_AISTR_ITST_SHIFT    16
  210. #define I2S_AISTR_ITR        0x00100000    /* input transfer request pending */
  211. #define I2S_AISTR_IUR        0x00200000    /* input FIFO underrun detected */
  212. #define I2S_AISTR_IOR        0x00400000    /* input FIFO overrun detected */
  213. #define I2S_AISTR_IDS        0x01000000    /* input DMA transfer size */
  214. #define I2S_AISTR_IDE        0x04000000    /* input DMA transfer request enable */
  215. #define I2S_AISTR_ITRIE        0x10000000    /* input transfer request interrupt enable */
  216. #define I2S_AISTR_IURIE        0x20000000    /* input FIFO underrun interrupt enable */
  217. #define I2S_AISTR_IORIE        0x40000000    /* input FIFO overrun interrupt enable */
  218. #define I2S_AISTR__IN_MASK    0x75700000
  219.  
  220. #define I2S_AICR_MI        0x00000001    /* mono input requested */
  221. #define I2S_AICR_AMI        0x00000002    /* relation between LRCKI/FS1 and SDI */
  222. #define I2S_AICR_LRI        0x00000004    /* function of LRCKI pin */
  223. #define I2S_AICR_SDMI        0x00000070    /* format of input audio data */
  224. #define I2S_AICR_SDMI_SHIFT    4
  225. #define I2S_AICR_CLI        0x00000080    /* input FIFO clearing control */
  226. #define I2S_AICR_IM        0x00000300    /* input state control */
  227. #define I2S_AICR_IM_SHIFT    8
  228. #define I2S_AICR__IN_MASK    0x000003f7
  229. #define I2S_AICR_MO        0x00001000    /* mono output requested */
  230. #define I2S_AICR_AMO        0x00002000    /* relation between LRCKO/FS0 and SDO */
  231. #define I2S_AICR_AMO_SHIFT    13
  232. #define I2S_AICR_LRO        0x00004000    /* function of LRCKO pin */
  233. #define I2S_AICR_SDMO        0x00070000    /* format of output audio data */
  234. #define I2S_AICR_SDMO_SHIFT    16
  235. #define I2S_AICR_CLO        0x00080000    /* output FIFO clearing control */
  236. #define I2S_AICR_OM        0x00100000    /* output state control */
  237. #define I2S_AICR__OUT_MASK    0x001f7000
  238. #define I2S_AICR_DIV        0x03000000    /* frequency division rate */
  239. #define I2S_AICR_DIV_SHIFT    24
  240. #define I2S_AICR_FL        0x20000000    /* frame length */
  241. #define I2S_AICR_FS        0x40000000    /* frame sync method */
  242. #define I2S_AICR_ME        0x80000000    /* master enable */
  243.  
  244. /*
  245.  * PCMCIA
  246.  */
  247. #define __addr_MB93493_PCMCIA(X)  ((volatile unsigned long *)(__region_CS5 + (X)))
  248.  
  249. /*
  250.  * GPIO
  251.  */
  252. #define __get_MB93493_GPIO_PDR(X)    __get_MB93493(0x380 + (X) * 0xc0)
  253. #define __set_MB93493_GPIO_PDR(X,V)    __set_MB93493(0x380 + (X) * 0xc0, (V))
  254.  
  255. #define __get_MB93493_GPIO_GPDR(X)    __get_MB93493(0x384 + (X) * 0xc0)
  256. #define __set_MB93493_GPIO_GPDR(X,V)    __set_MB93493(0x384 + (X) * 0xc0, (V))
  257.  
  258. #define __get_MB93493_GPIO_SIR(X)    __get_MB93493(0x388 + (X) * 0xc0)
  259. #define __set_MB93493_GPIO_SIR(X,V)    __set_MB93493(0x388 + (X) * 0xc0, (V))
  260.  
  261. #define __get_MB93493_GPIO_SOR(X)    __get_MB93493(0x38c + (X) * 0xc0)
  262. #define __set_MB93493_GPIO_SOR(X,V)    __set_MB93493(0x38c + (X) * 0xc0, (V))
  263.  
  264. #define __get_MB93493_GPIO_PDSR(X)    __get_MB93493(0x390 + (X) * 0xc0)
  265. #define __set_MB93493_GPIO_PDSR(X,V)    __set_MB93493(0x390 + (X) * 0xc0, (V))
  266.  
  267. #define __get_MB93493_GPIO_PDCR(X)    __get_MB93493(0x394 + (X) * 0xc0)
  268. #define __set_MB93493_GPIO_PDCR(X,V)    __set_MB93493(0x394 + (X) * 0xc0, (V))
  269.  
  270. #define __get_MB93493_GPIO_INTST(X)    __get_MB93493(0x398 + (X) * 0xc0)
  271. #define __set_MB93493_GPIO_INTST(X,V)    __set_MB93493(0x398 + (X) * 0xc0, (V))
  272.  
  273. #define __get_MB93493_GPIO_IEHL(X)    __get_MB93493(0x39c + (X) * 0xc0)
  274. #define __set_MB93493_GPIO_IEHL(X,V)    __set_MB93493(0x39c + (X) * 0xc0, (V))
  275.  
  276. #define __get_MB93493_GPIO_IELH(X)    __get_MB93493(0x3a0 + (X) * 0xc0)
  277. #define __set_MB93493_GPIO_IELH(X,V)    __set_MB93493(0x3a0 + (X) * 0xc0, (V))
  278.  
  279. #endif /* _ASM_MB93493_REGS_H */
  280.