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