1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * HD audio interface patch for Creative CA0132 chip. 4*4882a593Smuzhiyun * CA0132 registers defines. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (c) 2011, Creative Technology Ltd. 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __CA0132_REGS_H 10*4882a593Smuzhiyun #define __CA0132_REGS_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #define DSP_CHIP_OFFSET 0x100000 13*4882a593Smuzhiyun #define DSP_DBGCNTL_MODULE_OFFSET 0xE30 14*4882a593Smuzhiyun #define DSP_DBGCNTL_INST_OFFSET \ 15*4882a593Smuzhiyun (DSP_CHIP_OFFSET + DSP_DBGCNTL_MODULE_OFFSET) 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define DSP_DBGCNTL_EXEC_LOBIT 0x0 18*4882a593Smuzhiyun #define DSP_DBGCNTL_EXEC_HIBIT 0x3 19*4882a593Smuzhiyun #define DSP_DBGCNTL_EXEC_MASK 0xF 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #define DSP_DBGCNTL_SS_LOBIT 0x4 22*4882a593Smuzhiyun #define DSP_DBGCNTL_SS_HIBIT 0x7 23*4882a593Smuzhiyun #define DSP_DBGCNTL_SS_MASK 0xF0 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun #define DSP_DBGCNTL_STATE_LOBIT 0xA 26*4882a593Smuzhiyun #define DSP_DBGCNTL_STATE_HIBIT 0xD 27*4882a593Smuzhiyun #define DSP_DBGCNTL_STATE_MASK 0x3C00 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #define XRAM_CHIP_OFFSET 0x0 30*4882a593Smuzhiyun #define XRAM_XRAM_CHANNEL_COUNT 0xE000 31*4882a593Smuzhiyun #define XRAM_XRAM_MODULE_OFFSET 0x0 32*4882a593Smuzhiyun #define XRAM_XRAM_CHAN_INCR 4 33*4882a593Smuzhiyun #define XRAM_XRAM_INST_OFFSET(_chan) \ 34*4882a593Smuzhiyun (XRAM_CHIP_OFFSET + XRAM_XRAM_MODULE_OFFSET + \ 35*4882a593Smuzhiyun (_chan * XRAM_XRAM_CHAN_INCR)) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #define YRAM_CHIP_OFFSET 0x40000 38*4882a593Smuzhiyun #define YRAM_YRAM_CHANNEL_COUNT 0x8000 39*4882a593Smuzhiyun #define YRAM_YRAM_MODULE_OFFSET 0x0 40*4882a593Smuzhiyun #define YRAM_YRAM_CHAN_INCR 4 41*4882a593Smuzhiyun #define YRAM_YRAM_INST_OFFSET(_chan) \ 42*4882a593Smuzhiyun (YRAM_CHIP_OFFSET + YRAM_YRAM_MODULE_OFFSET + \ 43*4882a593Smuzhiyun (_chan * YRAM_YRAM_CHAN_INCR)) 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #define UC_CHIP_OFFSET 0x80000 46*4882a593Smuzhiyun #define UC_UC_CHANNEL_COUNT 0x10000 47*4882a593Smuzhiyun #define UC_UC_MODULE_OFFSET 0x0 48*4882a593Smuzhiyun #define UC_UC_CHAN_INCR 4 49*4882a593Smuzhiyun #define UC_UC_INST_OFFSET(_chan) \ 50*4882a593Smuzhiyun (UC_CHIP_OFFSET + UC_UC_MODULE_OFFSET + \ 51*4882a593Smuzhiyun (_chan * UC_UC_CHAN_INCR)) 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #define AXRAM_CHIP_OFFSET 0x3C000 54*4882a593Smuzhiyun #define AXRAM_AXRAM_CHANNEL_COUNT 0x1000 55*4882a593Smuzhiyun #define AXRAM_AXRAM_MODULE_OFFSET 0x0 56*4882a593Smuzhiyun #define AXRAM_AXRAM_CHAN_INCR 4 57*4882a593Smuzhiyun #define AXRAM_AXRAM_INST_OFFSET(_chan) \ 58*4882a593Smuzhiyun (AXRAM_CHIP_OFFSET + AXRAM_AXRAM_MODULE_OFFSET + \ 59*4882a593Smuzhiyun (_chan * AXRAM_AXRAM_CHAN_INCR)) 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun #define AYRAM_CHIP_OFFSET 0x78000 62*4882a593Smuzhiyun #define AYRAM_AYRAM_CHANNEL_COUNT 0x1000 63*4882a593Smuzhiyun #define AYRAM_AYRAM_MODULE_OFFSET 0x0 64*4882a593Smuzhiyun #define AYRAM_AYRAM_CHAN_INCR 4 65*4882a593Smuzhiyun #define AYRAM_AYRAM_INST_OFFSET(_chan) \ 66*4882a593Smuzhiyun (AYRAM_CHIP_OFFSET + AYRAM_AYRAM_MODULE_OFFSET + \ 67*4882a593Smuzhiyun (_chan * AYRAM_AYRAM_CHAN_INCR)) 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun #define DSPDMAC_CHIP_OFFSET 0x110000 70*4882a593Smuzhiyun #define DSPDMAC_DMA_CFG_CHANNEL_COUNT 12 71*4882a593Smuzhiyun #define DSPDMAC_DMACFG_MODULE_OFFSET 0xF00 72*4882a593Smuzhiyun #define DSPDMAC_DMACFG_CHAN_INCR 0x10 73*4882a593Smuzhiyun #define DSPDMAC_DMACFG_INST_OFFSET(_chan) \ 74*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_DMACFG_MODULE_OFFSET + \ 75*4882a593Smuzhiyun (_chan * DSPDMAC_DMACFG_CHAN_INCR)) 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define DSPDMAC_DMACFG_DBADR_LOBIT 0x0 78*4882a593Smuzhiyun #define DSPDMAC_DMACFG_DBADR_HIBIT 0x10 79*4882a593Smuzhiyun #define DSPDMAC_DMACFG_DBADR_MASK 0x1FFFF 80*4882a593Smuzhiyun #define DSPDMAC_DMACFG_LP_LOBIT 0x11 81*4882a593Smuzhiyun #define DSPDMAC_DMACFG_LP_HIBIT 0x11 82*4882a593Smuzhiyun #define DSPDMAC_DMACFG_LP_MASK 0x20000 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AINCR_LOBIT 0x12 85*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AINCR_HIBIT 0x12 86*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AINCR_MASK 0x40000 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun #define DSPDMAC_DMACFG_DWR_LOBIT 0x13 89*4882a593Smuzhiyun #define DSPDMAC_DMACFG_DWR_HIBIT 0x13 90*4882a593Smuzhiyun #define DSPDMAC_DMACFG_DWR_MASK 0x80000 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AJUMP_LOBIT 0x14 93*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AJUMP_HIBIT 0x17 94*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AJUMP_MASK 0xF00000 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AMODE_LOBIT 0x18 97*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AMODE_HIBIT 0x19 98*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AMODE_MASK 0x3000000 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun #define DSPDMAC_DMACFG_LK_LOBIT 0x1A 101*4882a593Smuzhiyun #define DSPDMAC_DMACFG_LK_HIBIT 0x1A 102*4882a593Smuzhiyun #define DSPDMAC_DMACFG_LK_MASK 0x4000000 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AICS_LOBIT 0x1B 105*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AICS_HIBIT 0x1F 106*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AICS_MASK 0xF8000000 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #define DSPDMAC_DMACFG_LP_SINGLE 0 109*4882a593Smuzhiyun #define DSPDMAC_DMACFG_LP_LOOPING 1 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AINCR_XANDY 0 112*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AINCR_XORY 1 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #define DSPDMAC_DMACFG_DWR_DMA_RD 0 115*4882a593Smuzhiyun #define DSPDMAC_DMACFG_DWR_DMA_WR 1 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AMODE_LINEAR 0 118*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AMODE_RSV1 1 119*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AMODE_WINTLV 2 120*4882a593Smuzhiyun #define DSPDMAC_DMACFG_AMODE_GINTLV 3 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun #define DSPDMAC_DSP_ADR_OFS_CHANNEL_COUNT 12 123*4882a593Smuzhiyun #define DSPDMAC_DSPADROFS_MODULE_OFFSET 0xF04 124*4882a593Smuzhiyun #define DSPDMAC_DSPADROFS_CHAN_INCR 0x10 125*4882a593Smuzhiyun #define DSPDMAC_DSPADROFS_INST_OFFSET(_chan) \ 126*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_DSPADROFS_MODULE_OFFSET + \ 127*4882a593Smuzhiyun (_chan * DSPDMAC_DSPADROFS_CHAN_INCR)) 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun #define DSPDMAC_DSPADROFS_COFS_LOBIT 0x0 130*4882a593Smuzhiyun #define DSPDMAC_DSPADROFS_COFS_HIBIT 0xF 131*4882a593Smuzhiyun #define DSPDMAC_DSPADROFS_COFS_MASK 0xFFFF 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun #define DSPDMAC_DSPADROFS_BOFS_LOBIT 0x10 134*4882a593Smuzhiyun #define DSPDMAC_DSPADROFS_BOFS_HIBIT 0x1F 135*4882a593Smuzhiyun #define DSPDMAC_DSPADROFS_BOFS_MASK 0xFFFF0000 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun #define DSPDMAC_DSP_ADR_WOFS_CHANNEL_COUNT 12 138*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_MODULE_OFFSET 0xF04 139*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_CHAN_INCR 0x10 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_INST_OFFSET(_chan) \ 142*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_DSPADRWOFS_MODULE_OFFSET + \ 143*4882a593Smuzhiyun (_chan * DSPDMAC_DSPADRWOFS_CHAN_INCR)) 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WCOFS_LOBIT 0x0 146*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WCOFS_HIBIT 0xA 147*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WCOFS_MASK 0x7FF 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WCBFR_LOBIT 0xB 150*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WCBFR_HIBIT 0xF 151*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WCBFR_MASK 0xF800 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WBOFS_LOBIT 0x10 154*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WBOFS_HIBIT 0x1A 155*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WBOFS_MASK 0x7FF0000 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WBBFR_LOBIT 0x1B 158*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WBBFR_HIBIT 0x1F 159*4882a593Smuzhiyun #define DSPDMAC_DSPADRWOFS_WBBFR_MASK 0xF8000000 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun #define DSPDMAC_DSP_ADR_GOFS_CHANNEL_COUNT 12 162*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_MODULE_OFFSET 0xF04 163*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_CHAN_INCR 0x10 164*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_INST_OFFSET(_chan) \ 165*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_DSPADRGOFS_MODULE_OFFSET + \ 166*4882a593Smuzhiyun (_chan * DSPDMAC_DSPADRGOFS_CHAN_INCR)) 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GCOFS_LOBIT 0x0 169*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GCOFS_HIBIT 0x9 170*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GCOFS_MASK 0x3FF 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GCS_LOBIT 0xA 173*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GCS_HIBIT 0xC 174*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GCS_MASK 0x1C00 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GCBFR_LOBIT 0xD 177*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GCBFR_HIBIT 0xF 178*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GCBFR_MASK 0xE000 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GBOFS_LOBIT 0x10 181*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GBOFS_HIBIT 0x19 182*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GBOFS_MASK 0x3FF0000 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GBS_LOBIT 0x1A 185*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GBS_HIBIT 0x1C 186*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GBS_MASK 0x1C000000 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GBBFR_LOBIT 0x1D 189*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GBBFR_HIBIT 0x1F 190*4882a593Smuzhiyun #define DSPDMAC_DSPADRGOFS_GBBFR_MASK 0xE0000000 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun #define DSPDMAC_XFR_CNT_CHANNEL_COUNT 12 193*4882a593Smuzhiyun #define DSPDMAC_XFRCNT_MODULE_OFFSET 0xF08 194*4882a593Smuzhiyun #define DSPDMAC_XFRCNT_CHAN_INCR 0x10 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun #define DSPDMAC_XFRCNT_INST_OFFSET(_chan) \ 197*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_XFRCNT_MODULE_OFFSET + \ 198*4882a593Smuzhiyun (_chan * DSPDMAC_XFRCNT_CHAN_INCR)) 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun #define DSPDMAC_XFRCNT_CCNT_LOBIT 0x0 201*4882a593Smuzhiyun #define DSPDMAC_XFRCNT_CCNT_HIBIT 0xF 202*4882a593Smuzhiyun #define DSPDMAC_XFRCNT_CCNT_MASK 0xFFFF 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun #define DSPDMAC_XFRCNT_BCNT_LOBIT 0x10 205*4882a593Smuzhiyun #define DSPDMAC_XFRCNT_BCNT_HIBIT 0x1F 206*4882a593Smuzhiyun #define DSPDMAC_XFRCNT_BCNT_MASK 0xFFFF0000 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun #define DSPDMAC_IRQ_CNT_CHANNEL_COUNT 12 209*4882a593Smuzhiyun #define DSPDMAC_IRQCNT_MODULE_OFFSET 0xF0C 210*4882a593Smuzhiyun #define DSPDMAC_IRQCNT_CHAN_INCR 0x10 211*4882a593Smuzhiyun #define DSPDMAC_IRQCNT_INST_OFFSET(_chan) \ 212*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_IRQCNT_MODULE_OFFSET + \ 213*4882a593Smuzhiyun (_chan * DSPDMAC_IRQCNT_CHAN_INCR)) 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun #define DSPDMAC_IRQCNT_CICNT_LOBIT 0x0 216*4882a593Smuzhiyun #define DSPDMAC_IRQCNT_CICNT_HIBIT 0xF 217*4882a593Smuzhiyun #define DSPDMAC_IRQCNT_CICNT_MASK 0xFFFF 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun #define DSPDMAC_IRQCNT_BICNT_LOBIT 0x10 220*4882a593Smuzhiyun #define DSPDMAC_IRQCNT_BICNT_HIBIT 0x1F 221*4882a593Smuzhiyun #define DSPDMAC_IRQCNT_BICNT_MASK 0xFFFF0000 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun #define DSPDMAC_AUD_CHSEL_CHANNEL_COUNT 12 224*4882a593Smuzhiyun #define DSPDMAC_AUDCHSEL_MODULE_OFFSET 0xFC0 225*4882a593Smuzhiyun #define DSPDMAC_AUDCHSEL_CHAN_INCR 0x4 226*4882a593Smuzhiyun #define DSPDMAC_AUDCHSEL_INST_OFFSET(_chan) \ 227*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_AUDCHSEL_MODULE_OFFSET + \ 228*4882a593Smuzhiyun (_chan * DSPDMAC_AUDCHSEL_CHAN_INCR)) 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun #define DSPDMAC_AUDCHSEL_ACS_LOBIT 0x0 231*4882a593Smuzhiyun #define DSPDMAC_AUDCHSEL_ACS_HIBIT 0x1F 232*4882a593Smuzhiyun #define DSPDMAC_AUDCHSEL_ACS_MASK 0xFFFFFFFF 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_MODULE_OFFSET 0xFF0 235*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_INST_OFFSET \ 236*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_CHNLSTART_MODULE_OFFSET) 237*4882a593Smuzhiyun 238*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_EN_LOBIT 0x0 239*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_EN_HIBIT 0xB 240*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_EN_MASK 0xFFF 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_VAI1_LOBIT 0xC 243*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_VAI1_HIBIT 0xF 244*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_VAI1_MASK 0xF000 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_DIS_LOBIT 0x10 247*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_DIS_HIBIT 0x1B 248*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_DIS_MASK 0xFFF0000 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_VAI2_LOBIT 0x1C 251*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_VAI2_HIBIT 0x1F 252*4882a593Smuzhiyun #define DSPDMAC_CHNLSTART_VAI2_MASK 0xF0000000 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_MODULE_OFFSET 0xFF4 255*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_INST_OFFSET \ 256*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_CHNLSTATUS_MODULE_OFFSET) 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_ISC_LOBIT 0x0 259*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_ISC_HIBIT 0xB 260*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_ISC_MASK 0xFFF 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AOO_LOBIT 0xC 263*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AOO_HIBIT 0xC 264*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AOO_MASK 0x1000 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AOU_LOBIT 0xD 267*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AOU_HIBIT 0xD 268*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AOU_MASK 0x2000 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AIO_LOBIT 0xE 271*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AIO_HIBIT 0xE 272*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AIO_MASK 0x4000 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AIU_LOBIT 0xF 275*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AIU_HIBIT 0xF 276*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_AIU_MASK 0x8000 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_IEN_LOBIT 0x10 279*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_IEN_HIBIT 0x1B 280*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_IEN_MASK 0xFFF0000 281*4882a593Smuzhiyun 282*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_VAI0_LOBIT 0x1C 283*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_VAI0_HIBIT 0x1F 284*4882a593Smuzhiyun #define DSPDMAC_CHNLSTATUS_VAI0_MASK 0xF0000000 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_MODULE_OFFSET 0xFF8 287*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_INST_OFFSET \ 288*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_CHNLPROP_MODULE_OFFSET) 289*4882a593Smuzhiyun 290*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_DCON_LOBIT 0x0 291*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_DCON_HIBIT 0xB 292*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_DCON_MASK 0xFFF 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_FFS_LOBIT 0xC 295*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_FFS_HIBIT 0xC 296*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_FFS_MASK 0x1000 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_NAJ_LOBIT 0xD 299*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_NAJ_HIBIT 0xD 300*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_NAJ_MASK 0x2000 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_ENH_LOBIT 0xE 303*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_ENH_HIBIT 0xE 304*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_ENH_MASK 0x4000 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_MSPCE_LOBIT 0x10 307*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_MSPCE_HIBIT 0x1B 308*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_MSPCE_MASK 0xFFF0000 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_AC_LOBIT 0x1C 311*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_AC_HIBIT 0x1F 312*4882a593Smuzhiyun #define DSPDMAC_CHNLPROP_AC_MASK 0xF0000000 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun #define DSPDMAC_ACTIVE_MODULE_OFFSET 0xFFC 315*4882a593Smuzhiyun #define DSPDMAC_ACTIVE_INST_OFFSET \ 316*4882a593Smuzhiyun (DSPDMAC_CHIP_OFFSET + DSPDMAC_ACTIVE_MODULE_OFFSET) 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun #define DSPDMAC_ACTIVE_AAR_LOBIT 0x0 319*4882a593Smuzhiyun #define DSPDMAC_ACTIVE_AAR_HIBIT 0xB 320*4882a593Smuzhiyun #define DSPDMAC_ACTIVE_AAR_MASK 0xFFF 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun #define DSPDMAC_ACTIVE_WFR_LOBIT 0xC 323*4882a593Smuzhiyun #define DSPDMAC_ACTIVE_WFR_HIBIT 0x17 324*4882a593Smuzhiyun #define DSPDMAC_ACTIVE_WFR_MASK 0xFFF000 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun #define DSP_AUX_MEM_BASE 0xE000 327*4882a593Smuzhiyun #define INVALID_CHIP_ADDRESS (~0U) 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun #define X_SIZE (XRAM_XRAM_CHANNEL_COUNT * XRAM_XRAM_CHAN_INCR) 330*4882a593Smuzhiyun #define Y_SIZE (YRAM_YRAM_CHANNEL_COUNT * YRAM_YRAM_CHAN_INCR) 331*4882a593Smuzhiyun #define AX_SIZE (AXRAM_AXRAM_CHANNEL_COUNT * AXRAM_AXRAM_CHAN_INCR) 332*4882a593Smuzhiyun #define AY_SIZE (AYRAM_AYRAM_CHANNEL_COUNT * AYRAM_AYRAM_CHAN_INCR) 333*4882a593Smuzhiyun #define UC_SIZE (UC_UC_CHANNEL_COUNT * UC_UC_CHAN_INCR) 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun #define XEXT_SIZE (X_SIZE + AX_SIZE) 336*4882a593Smuzhiyun #define YEXT_SIZE (Y_SIZE + AY_SIZE) 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun #define U64K 0x10000UL 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun #define X_END (XRAM_CHIP_OFFSET + X_SIZE) 341*4882a593Smuzhiyun #define X_EXT (XRAM_CHIP_OFFSET + XEXT_SIZE) 342*4882a593Smuzhiyun #define AX_END (XRAM_CHIP_OFFSET + U64K*4) 343*4882a593Smuzhiyun 344*4882a593Smuzhiyun #define Y_END (YRAM_CHIP_OFFSET + Y_SIZE) 345*4882a593Smuzhiyun #define Y_EXT (YRAM_CHIP_OFFSET + YEXT_SIZE) 346*4882a593Smuzhiyun #define AY_END (YRAM_CHIP_OFFSET + U64K*4) 347*4882a593Smuzhiyun 348*4882a593Smuzhiyun #define UC_END (UC_CHIP_OFFSET + UC_SIZE) 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun #define X_RANGE_MAIN(a, s) \ 351*4882a593Smuzhiyun (((a)+((s)-1)*XRAM_XRAM_CHAN_INCR < X_END)) 352*4882a593Smuzhiyun #define X_RANGE_AUX(a, s) \ 353*4882a593Smuzhiyun (((a) >= X_END) && ((a)+((s)-1)*XRAM_XRAM_CHAN_INCR < AX_END)) 354*4882a593Smuzhiyun #define X_RANGE_EXT(a, s) \ 355*4882a593Smuzhiyun (((a)+((s)-1)*XRAM_XRAM_CHAN_INCR < X_EXT)) 356*4882a593Smuzhiyun #define X_RANGE_ALL(a, s) \ 357*4882a593Smuzhiyun (((a)+((s)-1)*XRAM_XRAM_CHAN_INCR < AX_END)) 358*4882a593Smuzhiyun 359*4882a593Smuzhiyun #define Y_RANGE_MAIN(a, s) \ 360*4882a593Smuzhiyun (((a) >= YRAM_CHIP_OFFSET) && \ 361*4882a593Smuzhiyun ((a)+((s)-1)*YRAM_YRAM_CHAN_INCR < Y_END)) 362*4882a593Smuzhiyun #define Y_RANGE_AUX(a, s) \ 363*4882a593Smuzhiyun (((a) >= Y_END) && \ 364*4882a593Smuzhiyun ((a)+((s)-1)*YRAM_YRAM_CHAN_INCR < AY_END)) 365*4882a593Smuzhiyun #define Y_RANGE_EXT(a, s) \ 366*4882a593Smuzhiyun (((a) >= YRAM_CHIP_OFFSET) && \ 367*4882a593Smuzhiyun ((a)+((s)-1)*YRAM_YRAM_CHAN_INCR < Y_EXT)) 368*4882a593Smuzhiyun #define Y_RANGE_ALL(a, s) \ 369*4882a593Smuzhiyun (((a) >= YRAM_CHIP_OFFSET) && \ 370*4882a593Smuzhiyun ((a)+((s)-1)*YRAM_YRAM_CHAN_INCR < AY_END)) 371*4882a593Smuzhiyun 372*4882a593Smuzhiyun #define UC_RANGE(a, s) \ 373*4882a593Smuzhiyun (((a) >= UC_CHIP_OFFSET) && \ 374*4882a593Smuzhiyun ((a)+((s)-1)*UC_UC_CHAN_INCR < UC_END)) 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun #define X_OFF(a) \ 377*4882a593Smuzhiyun (((a) - XRAM_CHIP_OFFSET) / XRAM_XRAM_CHAN_INCR) 378*4882a593Smuzhiyun #define AX_OFF(a) \ 379*4882a593Smuzhiyun (((a) % (AXRAM_AXRAM_CHANNEL_COUNT * \ 380*4882a593Smuzhiyun AXRAM_AXRAM_CHAN_INCR)) / AXRAM_AXRAM_CHAN_INCR) 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun #define Y_OFF(a) \ 383*4882a593Smuzhiyun (((a) - YRAM_CHIP_OFFSET) / YRAM_YRAM_CHAN_INCR) 384*4882a593Smuzhiyun #define AY_OFF(a) \ 385*4882a593Smuzhiyun (((a) % (AYRAM_AYRAM_CHANNEL_COUNT * \ 386*4882a593Smuzhiyun AYRAM_AYRAM_CHAN_INCR)) / AYRAM_AYRAM_CHAN_INCR) 387*4882a593Smuzhiyun 388*4882a593Smuzhiyun #define UC_OFF(a) (((a) - UC_CHIP_OFFSET) / UC_UC_CHAN_INCR) 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun #define X_EXT_MAIN_SIZE(a) (XRAM_XRAM_CHANNEL_COUNT - X_OFF(a)) 391*4882a593Smuzhiyun #define X_EXT_AUX_SIZE(a, s) ((s) - X_EXT_MAIN_SIZE(a)) 392*4882a593Smuzhiyun 393*4882a593Smuzhiyun #define Y_EXT_MAIN_SIZE(a) (YRAM_YRAM_CHANNEL_COUNT - Y_OFF(a)) 394*4882a593Smuzhiyun #define Y_EXT_AUX_SIZE(a, s) ((s) - Y_EXT_MAIN_SIZE(a)) 395*4882a593Smuzhiyun 396*4882a593Smuzhiyun #endif 397