root/sound/soc/ti/davinci-mcasp.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * ALSA SoC McASP Audio Layer for TI DAVINCI processor
   4  *
   5  * MCASP related definitions
   6  *
   7  * Author: Nirmal Pandey <n-pandey@ti.com>,
   8  *         Suresh Rajashekara <suresh.r@ti.com>
   9  *         Steve Chen <schen@.mvista.com>
  10  *
  11  * Copyright:   (C) 2009 MontaVista Software, Inc., <source@mvista.com>
  12  * Copyright:   (C) 2009  Texas Instruments, India
  13  */
  14 
  15 #ifndef DAVINCI_MCASP_H
  16 #define DAVINCI_MCASP_H
  17 
  18 /*
  19  * McASP register definitions
  20  */
  21 #define DAVINCI_MCASP_PID_REG           0x00
  22 #define DAVINCI_MCASP_PWREMUMGT_REG     0x04
  23 
  24 #define DAVINCI_MCASP_PFUNC_REG         0x10
  25 #define DAVINCI_MCASP_PDIR_REG          0x14
  26 #define DAVINCI_MCASP_PDOUT_REG         0x18
  27 #define DAVINCI_MCASP_PDSET_REG         0x1c
  28 
  29 #define DAVINCI_MCASP_PDCLR_REG         0x20
  30 
  31 #define DAVINCI_MCASP_TLGC_REG          0x30
  32 #define DAVINCI_MCASP_TLMR_REG          0x34
  33 
  34 #define DAVINCI_MCASP_GBLCTL_REG        0x44
  35 #define DAVINCI_MCASP_AMUTE_REG         0x48
  36 #define DAVINCI_MCASP_LBCTL_REG         0x4c
  37 
  38 #define DAVINCI_MCASP_TXDITCTL_REG      0x50
  39 
  40 #define DAVINCI_MCASP_GBLCTLR_REG       0x60
  41 #define DAVINCI_MCASP_RXMASK_REG        0x64
  42 #define DAVINCI_MCASP_RXFMT_REG         0x68
  43 #define DAVINCI_MCASP_RXFMCTL_REG       0x6c
  44 
  45 #define DAVINCI_MCASP_ACLKRCTL_REG      0x70
  46 #define DAVINCI_MCASP_AHCLKRCTL_REG     0x74
  47 #define DAVINCI_MCASP_RXTDM_REG         0x78
  48 #define DAVINCI_MCASP_EVTCTLR_REG       0x7c
  49 
  50 #define DAVINCI_MCASP_RXSTAT_REG        0x80
  51 #define DAVINCI_MCASP_RXTDMSLOT_REG     0x84
  52 #define DAVINCI_MCASP_RXCLKCHK_REG      0x88
  53 #define DAVINCI_MCASP_REVTCTL_REG       0x8c
  54 
  55 #define DAVINCI_MCASP_GBLCTLX_REG       0xa0
  56 #define DAVINCI_MCASP_TXMASK_REG        0xa4
  57 #define DAVINCI_MCASP_TXFMT_REG         0xa8
  58 #define DAVINCI_MCASP_TXFMCTL_REG       0xac
  59 
  60 #define DAVINCI_MCASP_ACLKXCTL_REG      0xb0
  61 #define DAVINCI_MCASP_AHCLKXCTL_REG     0xb4
  62 #define DAVINCI_MCASP_TXTDM_REG         0xb8
  63 #define DAVINCI_MCASP_EVTCTLX_REG       0xbc
  64 
  65 #define DAVINCI_MCASP_TXSTAT_REG        0xc0
  66 #define DAVINCI_MCASP_TXTDMSLOT_REG     0xc4
  67 #define DAVINCI_MCASP_TXCLKCHK_REG      0xc8
  68 #define DAVINCI_MCASP_XEVTCTL_REG       0xcc
  69 
  70 /* Left(even TDM Slot) Channel Status Register File */
  71 #define DAVINCI_MCASP_DITCSRA_REG       0x100
  72 /* Right(odd TDM slot) Channel Status Register File */
  73 #define DAVINCI_MCASP_DITCSRB_REG       0x118
  74 /* Left(even TDM slot) User Data Register File */
  75 #define DAVINCI_MCASP_DITUDRA_REG       0x130
  76 /* Right(odd TDM Slot) User Data Register File */
  77 #define DAVINCI_MCASP_DITUDRB_REG       0x148
  78 
  79 /* Serializer n Control Register */
  80 #define DAVINCI_MCASP_XRSRCTL_BASE_REG  0x180
  81 #define DAVINCI_MCASP_XRSRCTL_REG(n)    (DAVINCI_MCASP_XRSRCTL_BASE_REG + \
  82                                                 (n << 2))
  83 
  84 /* Transmit Buffer for Serializer n */
  85 #define DAVINCI_MCASP_TXBUF_REG(n)      (0x200 + (n << 2))
  86 /* Receive Buffer for Serializer n */
  87 #define DAVINCI_MCASP_RXBUF_REG(n)      (0x280 + (n << 2))
  88 
  89 /* McASP FIFO Registers */
  90 #define DAVINCI_MCASP_V2_AFIFO_BASE     (0x1010)
  91 #define DAVINCI_MCASP_V3_AFIFO_BASE     (0x1000)
  92 
  93 /* FIFO register offsets from AFIFO base */
  94 #define MCASP_WFIFOCTL_OFFSET           (0x0)
  95 #define MCASP_WFIFOSTS_OFFSET           (0x4)
  96 #define MCASP_RFIFOCTL_OFFSET           (0x8)
  97 #define MCASP_RFIFOSTS_OFFSET           (0xc)
  98 
  99 /*
 100  * DAVINCI_MCASP_PWREMUMGT_REG - Power Down and Emulation Management
 101  *     Register Bits
 102  */
 103 #define MCASP_FREE      BIT(0)
 104 #define MCASP_SOFT      BIT(1)
 105 
 106 /*
 107  * DAVINCI_MCASP_PFUNC_REG - Pin Function / GPIO Enable Register Bits
 108  * DAVINCI_MCASP_PDIR_REG - Pin Direction Register Bits
 109  * DAVINCI_MCASP_PDOUT_REG - Pin output in GPIO mode
 110  * DAVINCI_MCASP_PDSET_REG - Pin input in GPIO mode
 111  */
 112 #define PIN_BIT_AXR(n)  (n)
 113 #define PIN_BIT_AMUTE   25
 114 #define PIN_BIT_ACLKX   26
 115 #define PIN_BIT_AHCLKX  27
 116 #define PIN_BIT_AFSX    28
 117 #define PIN_BIT_ACLKR   29
 118 #define PIN_BIT_AHCLKR  30
 119 #define PIN_BIT_AFSR    31
 120 
 121 /*
 122  * DAVINCI_MCASP_TXDITCTL_REG - Transmit DIT Control Register Bits
 123  */
 124 #define DITEN   BIT(0)  /* Transmit DIT mode enable/disable */
 125 #define VA      BIT(2)
 126 #define VB      BIT(3)
 127 
 128 /*
 129  * DAVINCI_MCASP_TXFMT_REG - Transmit Bitstream Format Register Bits
 130  */
 131 #define TXROT(val)      (val)
 132 #define TXSEL           BIT(3)
 133 #define TXSSZ(val)      (val<<4)
 134 #define TXPBIT(val)     (val<<8)
 135 #define TXPAD(val)      (val<<13)
 136 #define TXORD           BIT(15)
 137 #define FSXDLY(val)     (val<<16)
 138 
 139 /*
 140  * DAVINCI_MCASP_RXFMT_REG - Receive Bitstream Format Register Bits
 141  */
 142 #define RXROT(val)      (val)
 143 #define RXSEL           BIT(3)
 144 #define RXSSZ(val)      (val<<4)
 145 #define RXPBIT(val)     (val<<8)
 146 #define RXPAD(val)      (val<<13)
 147 #define RXORD           BIT(15)
 148 #define FSRDLY(val)     (val<<16)
 149 
 150 /*
 151  * DAVINCI_MCASP_TXFMCTL_REG -  Transmit Frame Control Register Bits
 152  */
 153 #define FSXPOL          BIT(0)
 154 #define AFSXE           BIT(1)
 155 #define FSXDUR          BIT(4)
 156 #define FSXMOD(val)     (val<<7)
 157 
 158 /*
 159  * DAVINCI_MCASP_RXFMCTL_REG - Receive Frame Control Register Bits
 160  */
 161 #define FSRPOL          BIT(0)
 162 #define AFSRE           BIT(1)
 163 #define FSRDUR          BIT(4)
 164 #define FSRMOD(val)     (val<<7)
 165 
 166 /*
 167  * DAVINCI_MCASP_ACLKXCTL_REG - Transmit Clock Control Register Bits
 168  */
 169 #define ACLKXDIV(val)   (val)
 170 #define ACLKXE          BIT(5)
 171 #define TX_ASYNC        BIT(6)
 172 #define ACLKXPOL        BIT(7)
 173 #define ACLKXDIV_MASK   0x1f
 174 
 175 /*
 176  * DAVINCI_MCASP_ACLKRCTL_REG Receive Clock Control Register Bits
 177  */
 178 #define ACLKRDIV(val)   (val)
 179 #define ACLKRE          BIT(5)
 180 #define RX_ASYNC        BIT(6)
 181 #define ACLKRPOL        BIT(7)
 182 #define ACLKRDIV_MASK   0x1f
 183 
 184 /*
 185  * DAVINCI_MCASP_AHCLKXCTL_REG - High Frequency Transmit Clock Control
 186  *     Register Bits
 187  */
 188 #define AHCLKXDIV(val)  (val)
 189 #define AHCLKXPOL       BIT(14)
 190 #define AHCLKXE         BIT(15)
 191 #define AHCLKXDIV_MASK  0xfff
 192 
 193 /*
 194  * DAVINCI_MCASP_AHCLKRCTL_REG - High Frequency Receive Clock Control
 195  *     Register Bits
 196  */
 197 #define AHCLKRDIV(val)  (val)
 198 #define AHCLKRPOL       BIT(14)
 199 #define AHCLKRE         BIT(15)
 200 #define AHCLKRDIV_MASK  0xfff
 201 
 202 /*
 203  * DAVINCI_MCASP_XRSRCTL_BASE_REG -  Serializer Control Register Bits
 204  */
 205 #define MODE(val)       (val)
 206 #define DISMOD_3STATE   (0x0)
 207 #define DISMOD_LOW      (0x2 << 2)
 208 #define DISMOD_HIGH     (0x3 << 2)
 209 #define DISMOD_VAL(x)   ((x) << 2)
 210 #define DISMOD_MASK     DISMOD_HIGH
 211 #define TXSTATE         BIT(4)
 212 #define RXSTATE         BIT(5)
 213 #define SRMOD_MASK      3
 214 #define SRMOD_INACTIVE  0
 215 
 216 /*
 217  * DAVINCI_MCASP_LBCTL_REG - Loop Back Control Register Bits
 218  */
 219 #define LBEN            BIT(0)
 220 #define LBORD           BIT(1)
 221 #define LBGENMODE(val)  (val<<2)
 222 
 223 /*
 224  * DAVINCI_MCASP_TXTDMSLOT_REG - Transmit TDM Slot Register configuration
 225  */
 226 #define TXTDMS(n)       (1<<n)
 227 
 228 /*
 229  * DAVINCI_MCASP_RXTDMSLOT_REG - Receive TDM Slot Register configuration
 230  */
 231 #define RXTDMS(n)       (1<<n)
 232 
 233 /*
 234  * DAVINCI_MCASP_GBLCTL_REG -  Global Control Register Bits
 235  */
 236 #define RXCLKRST        BIT(0)  /* Receiver Clock Divider Reset */
 237 #define RXHCLKRST       BIT(1)  /* Receiver High Frequency Clock Divider */
 238 #define RXSERCLR        BIT(2)  /* Receiver Serializer Clear */
 239 #define RXSMRST         BIT(3)  /* Receiver State Machine Reset */
 240 #define RXFSRST         BIT(4)  /* Frame Sync Generator Reset */
 241 #define TXCLKRST        BIT(8)  /* Transmitter Clock Divider Reset */
 242 #define TXHCLKRST       BIT(9)  /* Transmitter High Frequency Clock Divider*/
 243 #define TXSERCLR        BIT(10) /* Transmit Serializer Clear */
 244 #define TXSMRST         BIT(11) /* Transmitter State Machine Reset */
 245 #define TXFSRST         BIT(12) /* Frame Sync Generator Reset */
 246 
 247 /*
 248  * DAVINCI_MCASP_TXSTAT_REG - Transmitter Status Register Bits
 249  * DAVINCI_MCASP_RXSTAT_REG - Receiver Status Register Bits
 250  */
 251 #define XRERR           BIT(8) /* Transmit/Receive error */
 252 #define XRDATA          BIT(5) /* Transmit/Receive data ready */
 253 
 254 /*
 255  * DAVINCI_MCASP_AMUTE_REG -  Mute Control Register Bits
 256  */
 257 #define MUTENA(val)     (val)
 258 #define MUTEINPOL       BIT(2)
 259 #define MUTEINENA       BIT(3)
 260 #define MUTEIN          BIT(4)
 261 #define MUTER           BIT(5)
 262 #define MUTEX           BIT(6)
 263 #define MUTEFSR         BIT(7)
 264 #define MUTEFSX         BIT(8)
 265 #define MUTEBADCLKR     BIT(9)
 266 #define MUTEBADCLKX     BIT(10)
 267 #define MUTERXDMAERR    BIT(11)
 268 #define MUTETXDMAERR    BIT(12)
 269 
 270 /*
 271  * DAVINCI_MCASP_REVTCTL_REG - Receiver DMA Event Control Register bits
 272  */
 273 #define RXDATADMADIS    BIT(0)
 274 
 275 /*
 276  * DAVINCI_MCASP_XEVTCTL_REG - Transmitter DMA Event Control Register bits
 277  */
 278 #define TXDATADMADIS    BIT(0)
 279 
 280 /*
 281  * DAVINCI_MCASP_EVTCTLR_REG - Receiver Interrupt Control Register Bits
 282  */
 283 #define ROVRN           BIT(0)
 284 
 285 /*
 286  * DAVINCI_MCASP_EVTCTLX_REG - Transmitter Interrupt Control Register Bits
 287  */
 288 #define XUNDRN          BIT(0)
 289 
 290 /*
 291  * DAVINCI_MCASP_W[R]FIFOCTL - Write/Read FIFO Control Register bits
 292  */
 293 #define FIFO_ENABLE     BIT(16)
 294 #define NUMEVT_MASK     (0xFF << 8)
 295 #define NUMEVT(x)       (((x) & 0xFF) << 8)
 296 #define NUMDMA_MASK     (0xFF)
 297 
 298 /* clock divider IDs */
 299 #define MCASP_CLKDIV_AUXCLK             0 /* HCLK divider from AUXCLK */
 300 #define MCASP_CLKDIV_BCLK               1 /* BCLK divider from HCLK */
 301 #define MCASP_CLKDIV_BCLK_FS_RATIO      2 /* to set BCLK FS ration */
 302 
 303 #endif  /* DAVINCI_MCASP_H */

/* [<][>][^][v][top][bottom][index][help] */