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