1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Socionext UniPhier AIO ALSA driver. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (c) 2016-2018 Socionext Inc. 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef SND_UNIPHIER_AIO_REG_H__ 9*4882a593Smuzhiyun #define SND_UNIPHIER_AIO_REG_H__ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/bitops.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* soc-glue */ 14*4882a593Smuzhiyun #define SG_AOUTEN 0x1c04 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* SW view */ 17*4882a593Smuzhiyun #define A2CHNMAPCTR0(n) (0x00000 + 0x40 * (n)) 18*4882a593Smuzhiyun #define A2RBNMAPCTR0(n) (0x01000 + 0x40 * (n)) 19*4882a593Smuzhiyun #define A2IPORTNMAPCTR0(n) (0x02000 + 0x40 * (n)) 20*4882a593Smuzhiyun #define A2IPORTNMAPCTR1(n) (0x02004 + 0x40 * (n)) 21*4882a593Smuzhiyun #define A2IIFNMAPCTR0(n) (0x03000 + 0x40 * (n)) 22*4882a593Smuzhiyun #define A2OPORTNMAPCTR0(n) (0x04000 + 0x40 * (n)) 23*4882a593Smuzhiyun #define A2OPORTNMAPCTR1(n) (0x04004 + 0x40 * (n)) 24*4882a593Smuzhiyun #define A2OPORTNMAPCTR2(n) (0x04008 + 0x40 * (n)) 25*4882a593Smuzhiyun #define A2OIFNMAPCTR0(n) (0x05000 + 0x40 * (n)) 26*4882a593Smuzhiyun #define A2ATNMAPCTR0(n) (0x06000 + 0x40 * (n)) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define MAPCTR0_EN 0x80000000 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* CTL */ 31*4882a593Smuzhiyun #define A2APLLCTR0 0x07000 32*4882a593Smuzhiyun #define A2APLLCTR0_APLLXPOW_MASK GENMASK(3, 0) 33*4882a593Smuzhiyun #define A2APLLCTR0_APLLXPOW_PWOFF (0x0 << 0) 34*4882a593Smuzhiyun #define A2APLLCTR0_APLLXPOW_PWON (0xf << 0) 35*4882a593Smuzhiyun #define A2APLLCTR1 0x07004 36*4882a593Smuzhiyun #define A2APLLCTR1_APLLX_MASK 0x00010101 37*4882a593Smuzhiyun #define A2APLLCTR1_APLLX_36MHZ 0x00000000 38*4882a593Smuzhiyun #define A2APLLCTR1_APLLX_33MHZ 0x00000001 39*4882a593Smuzhiyun #define A2EXMCLKSEL0 0x07030 40*4882a593Smuzhiyun #define A2EXMCLKSEL0_EXMCLK_MASK GENMASK(2, 0) 41*4882a593Smuzhiyun #define A2EXMCLKSEL0_EXMCLK_OUTPUT (0x0 << 0) 42*4882a593Smuzhiyun #define A2EXMCLKSEL0_EXMCLK_INPUT (0x7 << 0) 43*4882a593Smuzhiyun #define A2SSIFSW 0x07050 44*4882a593Smuzhiyun #define A2CH22_2CTR 0x07054 45*4882a593Smuzhiyun #define A2AIOINPUTSEL 0x070e0 46*4882a593Smuzhiyun #define A2AIOINPUTSEL_RXSEL_PCMI1_MASK GENMASK(2, 0) 47*4882a593Smuzhiyun #define A2AIOINPUTSEL_RXSEL_PCMI1_HDMIRX1 (0x2 << 0) 48*4882a593Smuzhiyun #define A2AIOINPUTSEL_RXSEL_PCMI2_MASK GENMASK(6, 4) 49*4882a593Smuzhiyun #define A2AIOINPUTSEL_RXSEL_PCMI2_SIF (0x7 << 4) 50*4882a593Smuzhiyun #define A2AIOINPUTSEL_RXSEL_PCMI3_MASK GENMASK(10, 8) 51*4882a593Smuzhiyun #define A2AIOINPUTSEL_RXSEL_PCMI3_EVEA (0x1 << 8) 52*4882a593Smuzhiyun #define A2AIOINPUTSEL_RXSEL_IECI1_MASK GENMASK(14, 12) 53*4882a593Smuzhiyun #define A2AIOINPUTSEL_RXSEL_IECI1_HDMIRX1 (0x2 << 12) 54*4882a593Smuzhiyun #define A2AIOINPUTSEL_RXSEL_MASK (A2AIOINPUTSEL_RXSEL_PCMI1_MASK | \ 55*4882a593Smuzhiyun A2AIOINPUTSEL_RXSEL_PCMI2_MASK | \ 56*4882a593Smuzhiyun A2AIOINPUTSEL_RXSEL_PCMI3_MASK | \ 57*4882a593Smuzhiyun A2AIOINPUTSEL_RXSEL_IECI1_HDMIRX1) 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun /* INTC */ 60*4882a593Smuzhiyun #define INTCHIM(m) (0x9028 + 0x80 * (m)) 61*4882a593Smuzhiyun #define INTRBIM(m) (0x9030 + 0x80 * (m)) 62*4882a593Smuzhiyun #define INTCHID(m) (0xa028 + 0x80 * (m)) 63*4882a593Smuzhiyun #define INTRBID(m) (0xa030 + 0x80 * (m)) 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun /* AIN(PCMINN) */ 66*4882a593Smuzhiyun #define IPORTMXCTR1(n) (0x22000 + 0x400 * (n)) 67*4882a593Smuzhiyun #define IPORTMXCTR1_LRSEL_MASK GENMASK(11, 10) 68*4882a593Smuzhiyun #define IPORTMXCTR1_LRSEL_RIGHT (0x0 << 10) 69*4882a593Smuzhiyun #define IPORTMXCTR1_LRSEL_LEFT (0x1 << 10) 70*4882a593Smuzhiyun #define IPORTMXCTR1_LRSEL_I2S (0x2 << 10) 71*4882a593Smuzhiyun #define IPORTMXCTR1_OUTBITSEL_MASK (0x800003U << 8) 72*4882a593Smuzhiyun #define IPORTMXCTR1_OUTBITSEL_32 (0x800000U << 8) 73*4882a593Smuzhiyun #define IPORTMXCTR1_OUTBITSEL_24 (0x000000U << 8) 74*4882a593Smuzhiyun #define IPORTMXCTR1_OUTBITSEL_20 (0x000001U << 8) 75*4882a593Smuzhiyun #define IPORTMXCTR1_OUTBITSEL_16 (0x000002U << 8) 76*4882a593Smuzhiyun #define IPORTMXCTR1_CHSEL_MASK GENMASK(6, 4) 77*4882a593Smuzhiyun #define IPORTMXCTR1_CHSEL_ALL (0x0 << 4) 78*4882a593Smuzhiyun #define IPORTMXCTR1_CHSEL_D0_D2 (0x1 << 4) 79*4882a593Smuzhiyun #define IPORTMXCTR1_CHSEL_D0 (0x2 << 4) 80*4882a593Smuzhiyun #define IPORTMXCTR1_CHSEL_D1 (0x3 << 4) 81*4882a593Smuzhiyun #define IPORTMXCTR1_CHSEL_D2 (0x4 << 4) 82*4882a593Smuzhiyun #define IPORTMXCTR1_CHSEL_DMIX (0x5 << 4) 83*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_MASK GENMASK(3, 0) 84*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_48 (0x0 << 0) 85*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_96 (0x1 << 0) 86*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_192 (0x2 << 0) 87*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_32 (0x3 << 0) 88*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_44_1 (0x4 << 0) 89*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_88_2 (0x5 << 0) 90*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_176_4 (0x6 << 0) 91*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_16 (0x8 << 0) 92*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_22_05 (0x9 << 0) 93*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_24 (0xa << 0) 94*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_8 (0xb << 0) 95*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_11_025 (0xc << 0) 96*4882a593Smuzhiyun #define IPORTMXCTR1_FSSEL_12 (0xd << 0) 97*4882a593Smuzhiyun #define IPORTMXCTR2(n) (0x22004 + 0x400 * (n)) 98*4882a593Smuzhiyun #define IPORTMXCTR2_ACLKSEL_MASK GENMASK(19, 16) 99*4882a593Smuzhiyun #define IPORTMXCTR2_ACLKSEL_A1 (0x0 << 16) 100*4882a593Smuzhiyun #define IPORTMXCTR2_ACLKSEL_F1 (0x1 << 16) 101*4882a593Smuzhiyun #define IPORTMXCTR2_ACLKSEL_A2 (0x2 << 16) 102*4882a593Smuzhiyun #define IPORTMXCTR2_ACLKSEL_F2 (0x3 << 16) 103*4882a593Smuzhiyun #define IPORTMXCTR2_ACLKSEL_A2PLL (0x4 << 16) 104*4882a593Smuzhiyun #define IPORTMXCTR2_ACLKSEL_RX1 (0x5 << 16) 105*4882a593Smuzhiyun #define IPORTMXCTR2_ACLKSEL_RX2 (0x6 << 16) 106*4882a593Smuzhiyun #define IPORTMXCTR2_MSSEL_MASK BIT(15) 107*4882a593Smuzhiyun #define IPORTMXCTR2_MSSEL_SLAVE (0x0 << 15) 108*4882a593Smuzhiyun #define IPORTMXCTR2_MSSEL_MASTER (0x1 << 15) 109*4882a593Smuzhiyun #define IPORTMXCTR2_EXTLSIFSSEL_MASK BIT(14) 110*4882a593Smuzhiyun #define IPORTMXCTR2_EXTLSIFSSEL_36 (0x0 << 14) 111*4882a593Smuzhiyun #define IPORTMXCTR2_EXTLSIFSSEL_24 (0x1 << 14) 112*4882a593Smuzhiyun #define IPORTMXCTR2_DACCKSEL_MASK GENMASK(9, 8) 113*4882a593Smuzhiyun #define IPORTMXCTR2_DACCKSEL_1_2 (0x0 << 8) 114*4882a593Smuzhiyun #define IPORTMXCTR2_DACCKSEL_1_3 (0x1 << 8) 115*4882a593Smuzhiyun #define IPORTMXCTR2_DACCKSEL_1_1 (0x2 << 8) 116*4882a593Smuzhiyun #define IPORTMXCTR2_DACCKSEL_2_3 (0x3 << 8) 117*4882a593Smuzhiyun #define IPORTMXCTR2_REQEN_MASK BIT(0) 118*4882a593Smuzhiyun #define IPORTMXCTR2_REQEN_DISABLE (0x0 << 0) 119*4882a593Smuzhiyun #define IPORTMXCTR2_REQEN_ENABLE (0x1 << 0) 120*4882a593Smuzhiyun #define IPORTMXCNTCTR(n) (0x22010 + 0x400 * (n)) 121*4882a593Smuzhiyun #define IPORTMXCOUNTER(n) (0x22014 + 0x400 * (n)) 122*4882a593Smuzhiyun #define IPORTMXCNTMONI(n) (0x22018 + 0x400 * (n)) 123*4882a593Smuzhiyun #define IPORTMXACLKSEL0EX(n) (0x22020 + 0x400 * (n)) 124*4882a593Smuzhiyun #define IPORTMXACLKSEL0EX_ACLKSEL0EX_MASK GENMASK(3, 0) 125*4882a593Smuzhiyun #define IPORTMXACLKSEL0EX_ACLKSEL0EX_INTERNAL (0x0 << 0) 126*4882a593Smuzhiyun #define IPORTMXACLKSEL0EX_ACLKSEL0EX_EXTERNAL (0xf << 0) 127*4882a593Smuzhiyun #define IPORTMXEXNOE(n) (0x22070 + 0x400 * (n)) 128*4882a593Smuzhiyun #define IPORTMXEXNOE_PCMINOE_MASK BIT(0) 129*4882a593Smuzhiyun #define IPORTMXEXNOE_PCMINOE_OUTPUT (0x0 << 0) 130*4882a593Smuzhiyun #define IPORTMXEXNOE_PCMINOE_INPUT (0x1 << 0) 131*4882a593Smuzhiyun #define IPORTMXMASK(n) (0x22078 + 0x400 * (n)) 132*4882a593Smuzhiyun #define IPORTMXMASK_IUXCKMSK_MASK GENMASK(18, 16) 133*4882a593Smuzhiyun #define IPORTMXMASK_IUXCKMSK_ON (0x0 << 16) 134*4882a593Smuzhiyun #define IPORTMXMASK_IUXCKMSK_OFF (0x7 << 16) 135*4882a593Smuzhiyun #define IPORTMXMASK_XCKMSK_MASK GENMASK(2, 0) 136*4882a593Smuzhiyun #define IPORTMXMASK_XCKMSK_ON (0x0 << 0) 137*4882a593Smuzhiyun #define IPORTMXMASK_XCKMSK_OFF (0x7 << 0) 138*4882a593Smuzhiyun #define IPORTMXRSTCTR(n) (0x2207c + 0x400 * (n)) 139*4882a593Smuzhiyun #define IPORTMXRSTCTR_RSTPI_MASK BIT(7) 140*4882a593Smuzhiyun #define IPORTMXRSTCTR_RSTPI_RELEASE (0x0 << 7) 141*4882a593Smuzhiyun #define IPORTMXRSTCTR_RSTPI_RESET (0x1 << 7) 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun /* AIN(PBinMX) */ 144*4882a593Smuzhiyun #define PBINMXCTR(n) (0x20200 + 0x40 * (n)) 145*4882a593Smuzhiyun #define PBINMXCTR_NCONNECT_MASK BIT(15) 146*4882a593Smuzhiyun #define PBINMXCTR_NCONNECT_CONNECT (0x0 << 15) 147*4882a593Smuzhiyun #define PBINMXCTR_NCONNECT_DISCONNECT (0x1 << 15) 148*4882a593Smuzhiyun #define PBINMXCTR_INOUTSEL_MASK BIT(14) 149*4882a593Smuzhiyun #define PBINMXCTR_INOUTSEL_IN (0x0 << 14) 150*4882a593Smuzhiyun #define PBINMXCTR_INOUTSEL_OUT (0x1 << 14) 151*4882a593Smuzhiyun #define PBINMXCTR_PBINSEL_SHIFT (8) 152*4882a593Smuzhiyun #define PBINMXCTR_ENDIAN_MASK GENMASK(5, 4) 153*4882a593Smuzhiyun #define PBINMXCTR_ENDIAN_3210 (0x0 << 4) 154*4882a593Smuzhiyun #define PBINMXCTR_ENDIAN_0123 (0x1 << 4) 155*4882a593Smuzhiyun #define PBINMXCTR_ENDIAN_1032 (0x2 << 4) 156*4882a593Smuzhiyun #define PBINMXCTR_ENDIAN_2301 (0x3 << 4) 157*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_MASK GENMASK(3, 0) 158*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_D0 (0x0 << 0) 159*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_5_1CH_DMIX (0x1 << 0) 160*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_6CH (0x2 << 0) 161*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_4CH (0x3 << 0) 162*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_DMIX (0x4 << 0) 163*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_1CH (0x5 << 0) 164*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_16LR (0x6 << 0) 165*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_7_1CH (0x7 << 0) 166*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_7_1CH_DMIX (0x8 << 0) 167*4882a593Smuzhiyun #define PBINMXCTR_MEMFMT_STREAM (0xf << 0) 168*4882a593Smuzhiyun #define PBINMXPAUSECTR0(n) (0x20204 + 0x40 * (n)) 169*4882a593Smuzhiyun #define PBINMXPAUSECTR1(n) (0x20208 + 0x40 * (n)) 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun /* AOUT */ 172*4882a593Smuzhiyun #define AOUTFADECTR0 0x40020 173*4882a593Smuzhiyun #define AOUTENCTR0 0x40040 174*4882a593Smuzhiyun #define AOUTENCTR1 0x40044 175*4882a593Smuzhiyun #define AOUTENCTR2 0x40048 176*4882a593Smuzhiyun #define AOUTRSTCTR0 0x40060 177*4882a593Smuzhiyun #define AOUTRSTCTR1 0x40064 178*4882a593Smuzhiyun #define AOUTRSTCTR2 0x40068 179*4882a593Smuzhiyun #define AOUTSRCRSTCTR0 0x400c0 180*4882a593Smuzhiyun #define AOUTSRCRSTCTR1 0x400c4 181*4882a593Smuzhiyun #define AOUTSRCRSTCTR2 0x400c8 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun /* AOUT PCMOUT has 5 slots, slot0-3: D0-3, slot4: DMIX */ 184*4882a593Smuzhiyun #define OPORT_SLOT_MAX 5 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun /* AOUT(PCMOUTN) */ 187*4882a593Smuzhiyun #define OPORTMXCTR1(n) (0x42000 + 0x400 * (n)) 188*4882a593Smuzhiyun #define OPORTMXCTR1_I2SLRSEL_MASK (0x11 << 10) 189*4882a593Smuzhiyun #define OPORTMXCTR1_I2SLRSEL_RIGHT (0x00 << 10) 190*4882a593Smuzhiyun #define OPORTMXCTR1_I2SLRSEL_LEFT (0x01 << 10) 191*4882a593Smuzhiyun #define OPORTMXCTR1_I2SLRSEL_I2S (0x11 << 10) 192*4882a593Smuzhiyun #define OPORTMXCTR1_OUTBITSEL_MASK (0x800003U << 8) 193*4882a593Smuzhiyun #define OPORTMXCTR1_OUTBITSEL_32 (0x800000U << 8) 194*4882a593Smuzhiyun #define OPORTMXCTR1_OUTBITSEL_24 (0x000000U << 8) 195*4882a593Smuzhiyun #define OPORTMXCTR1_OUTBITSEL_20 (0x000001U << 8) 196*4882a593Smuzhiyun #define OPORTMXCTR1_OUTBITSEL_16 (0x000002U << 8) 197*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_MASK GENMASK(3, 0) 198*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_48 (0x0 << 0) 199*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_96 (0x1 << 0) 200*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_192 (0x2 << 0) 201*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_32 (0x3 << 0) 202*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_44_1 (0x4 << 0) 203*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_88_2 (0x5 << 0) 204*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_176_4 (0x6 << 0) 205*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_16 (0x8 << 0) 206*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_22_05 (0x9 << 0) 207*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_24 (0xa << 0) 208*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_8 (0xb << 0) 209*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_11_025 (0xc << 0) 210*4882a593Smuzhiyun #define OPORTMXCTR1_FSSEL_12 (0xd << 0) 211*4882a593Smuzhiyun #define OPORTMXCTR2(n) (0x42004 + 0x400 * (n)) 212*4882a593Smuzhiyun #define OPORTMXCTR2_ACLKSEL_MASK GENMASK(19, 16) 213*4882a593Smuzhiyun #define OPORTMXCTR2_ACLKSEL_A1 (0x0 << 16) 214*4882a593Smuzhiyun #define OPORTMXCTR2_ACLKSEL_F1 (0x1 << 16) 215*4882a593Smuzhiyun #define OPORTMXCTR2_ACLKSEL_A2 (0x2 << 16) 216*4882a593Smuzhiyun #define OPORTMXCTR2_ACLKSEL_F2 (0x3 << 16) 217*4882a593Smuzhiyun #define OPORTMXCTR2_ACLKSEL_A2PLL (0x4 << 16) 218*4882a593Smuzhiyun #define OPORTMXCTR2_ACLKSEL_RX1 (0x5 << 16) 219*4882a593Smuzhiyun #define OPORTMXCTR2_ACLKSEL_RX2 (0x6 << 16) 220*4882a593Smuzhiyun #define OPORTMXCTR2_MSSEL_MASK BIT(15) 221*4882a593Smuzhiyun #define OPORTMXCTR2_MSSEL_SLAVE (0x0 << 15) 222*4882a593Smuzhiyun #define OPORTMXCTR2_MSSEL_MASTER (0x1 << 15) 223*4882a593Smuzhiyun #define OPORTMXCTR2_EXTLSIFSSEL_MASK BIT(14) 224*4882a593Smuzhiyun #define OPORTMXCTR2_EXTLSIFSSEL_36 (0x0 << 14) 225*4882a593Smuzhiyun #define OPORTMXCTR2_EXTLSIFSSEL_24 (0x1 << 14) 226*4882a593Smuzhiyun #define OPORTMXCTR2_DACCKSEL_MASK GENMASK(9, 8) 227*4882a593Smuzhiyun #define OPORTMXCTR2_DACCKSEL_1_2 (0x0 << 8) 228*4882a593Smuzhiyun #define OPORTMXCTR2_DACCKSEL_1_3 (0x1 << 8) 229*4882a593Smuzhiyun #define OPORTMXCTR2_DACCKSEL_1_1 (0x2 << 8) 230*4882a593Smuzhiyun #define OPORTMXCTR2_DACCKSEL_2_3 (0x3 << 8) 231*4882a593Smuzhiyun #define OPORTMXCTR3(n) (0x42008 + 0x400 * (n)) 232*4882a593Smuzhiyun #define OPORTMXCTR3_IECTHUR_MASK BIT(19) 233*4882a593Smuzhiyun #define OPORTMXCTR3_IECTHUR_IECOUT (0x0 << 19) 234*4882a593Smuzhiyun #define OPORTMXCTR3_IECTHUR_IECIN (0x1 << 19) 235*4882a593Smuzhiyun #define OPORTMXCTR3_SRCSEL_MASK GENMASK(18, 16) 236*4882a593Smuzhiyun #define OPORTMXCTR3_SRCSEL_PCM (0x0 << 16) 237*4882a593Smuzhiyun #define OPORTMXCTR3_SRCSEL_STREAM (0x1 << 16) 238*4882a593Smuzhiyun #define OPORTMXCTR3_SRCSEL_CDDTS (0x2 << 16) 239*4882a593Smuzhiyun #define OPORTMXCTR3_VALID_MASK BIT(12) 240*4882a593Smuzhiyun #define OPORTMXCTR3_VALID_PCM (0x0 << 12) 241*4882a593Smuzhiyun #define OPORTMXCTR3_VALID_STREAM (0x1 << 12) 242*4882a593Smuzhiyun #define OPORTMXCTR3_PMSEL_MASK BIT(3) 243*4882a593Smuzhiyun #define OPORTMXCTR3_PMSEL_MUTE (0x0 << 3) 244*4882a593Smuzhiyun #define OPORTMXCTR3_PMSEL_PAUSE (0x1 << 3) 245*4882a593Smuzhiyun #define OPORTMXCTR3_PMSW_MASK BIT(2) 246*4882a593Smuzhiyun #define OPORTMXCTR3_PMSW_MUTE_OFF (0x0 << 2) 247*4882a593Smuzhiyun #define OPORTMXCTR3_PMSW_MUTE_ON (0x1 << 2) 248*4882a593Smuzhiyun #define OPORTMXSRC1CTR(n) (0x4200c + 0x400 * (n)) 249*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSIIPNUM_SHIFT (24) 250*4882a593Smuzhiyun #define OPORTMXSRC1CTR_THMODE_MASK BIT(23) 251*4882a593Smuzhiyun #define OPORTMXSRC1CTR_THMODE_SRC (0x0 << 23) 252*4882a593Smuzhiyun #define OPORTMXSRC1CTR_THMODE_BYPASS (0x1 << 23) 253*4882a593Smuzhiyun #define OPORTMXSRC1CTR_LOCK_MASK BIT(16) 254*4882a593Smuzhiyun #define OPORTMXSRC1CTR_LOCK_UNLOCK (0x0 << 16) 255*4882a593Smuzhiyun #define OPORTMXSRC1CTR_LOCK_LOCK (0x1 << 16) 256*4882a593Smuzhiyun #define OPORTMXSRC1CTR_SRCPATH_MASK BIT(15) 257*4882a593Smuzhiyun #define OPORTMXSRC1CTR_SRCPATH_BYPASS (0x0 << 15) 258*4882a593Smuzhiyun #define OPORTMXSRC1CTR_SRCPATH_CALC (0x1 << 15) 259*4882a593Smuzhiyun #define OPORTMXSRC1CTR_SYNC_MASK BIT(14) 260*4882a593Smuzhiyun #define OPORTMXSRC1CTR_SYNC_ASYNC (0x0 << 14) 261*4882a593Smuzhiyun #define OPORTMXSRC1CTR_SYNC_SYNC (0x1 << 14) 262*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSOCK_MASK GENMASK(11, 10) 263*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSOCK_44_1 (0x0 << 10) 264*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSOCK_48 (0x1 << 10) 265*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSOCK_32 (0x2 << 10) 266*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSICK_MASK GENMASK(9, 8) 267*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSICK_44_1 (0x0 << 8) 268*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSICK_48 (0x1 << 8) 269*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSICK_32 (0x2 << 8) 270*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSIIPSEL_MASK GENMASK(5, 4) 271*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSIIPSEL_INNER (0x0 << 4) 272*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSIIPSEL_OUTER (0x1 << 4) 273*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSISEL_MASK GENMASK(3, 0) 274*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSISEL_ACLK (0x0 << 0) 275*4882a593Smuzhiyun #define OPORTMXSRC1CTR_FSISEL_DD (0x1 << 0) 276*4882a593Smuzhiyun #define OPORTMXDSDMUTEDAT(n) (0x42020 + 0x400 * (n)) 277*4882a593Smuzhiyun #define OPORTMXDXDFREQMODE(n) (0x42024 + 0x400 * (n)) 278*4882a593Smuzhiyun #define OPORTMXDSDSEL(n) (0x42028 + 0x400 * (n)) 279*4882a593Smuzhiyun #define OPORTMXDSDPORT(n) (0x4202c + 0x400 * (n)) 280*4882a593Smuzhiyun #define OPORTMXACLKSEL0EX(n) (0x42030 + 0x400 * (n)) 281*4882a593Smuzhiyun #define OPORTMXPATH(n) (0x42040 + 0x400 * (n)) 282*4882a593Smuzhiyun #define OPORTMXSYNC(n) (0x42044 + 0x400 * (n)) 283*4882a593Smuzhiyun #define OPORTMXREPET(n) (0x42050 + 0x400 * (n)) 284*4882a593Smuzhiyun #define OPORTMXREPET_STRLENGTH_AC3 SBF_(IEC61937_FRM_STR_AC3, 16) 285*4882a593Smuzhiyun #define OPORTMXREPET_STRLENGTH_MPA SBF_(IEC61937_FRM_STR_MPA, 16) 286*4882a593Smuzhiyun #define OPORTMXREPET_STRLENGTH_MP3 SBF_(IEC61937_FRM_STR_MP3, 16) 287*4882a593Smuzhiyun #define OPORTMXREPET_STRLENGTH_DTS1 SBF_(IEC61937_FRM_STR_DTS1, 16) 288*4882a593Smuzhiyun #define OPORTMXREPET_STRLENGTH_DTS2 SBF_(IEC61937_FRM_STR_DTS2, 16) 289*4882a593Smuzhiyun #define OPORTMXREPET_STRLENGTH_DTS3 SBF_(IEC61937_FRM_STR_DTS3, 16) 290*4882a593Smuzhiyun #define OPORTMXREPET_STRLENGTH_AAC SBF_(IEC61937_FRM_STR_AAC, 16) 291*4882a593Smuzhiyun #define OPORTMXREPET_PMLENGTH_AC3 SBF_(IEC61937_FRM_PAU_AC3, 0) 292*4882a593Smuzhiyun #define OPORTMXREPET_PMLENGTH_MPA SBF_(IEC61937_FRM_PAU_MPA, 0) 293*4882a593Smuzhiyun #define OPORTMXREPET_PMLENGTH_MP3 SBF_(IEC61937_FRM_PAU_MP3, 0) 294*4882a593Smuzhiyun #define OPORTMXREPET_PMLENGTH_DTS1 SBF_(IEC61937_FRM_PAU_DTS1, 0) 295*4882a593Smuzhiyun #define OPORTMXREPET_PMLENGTH_DTS2 SBF_(IEC61937_FRM_PAU_DTS2, 0) 296*4882a593Smuzhiyun #define OPORTMXREPET_PMLENGTH_DTS3 SBF_(IEC61937_FRM_PAU_DTS3, 0) 297*4882a593Smuzhiyun #define OPORTMXREPET_PMLENGTH_AAC SBF_(IEC61937_FRM_PAU_AAC, 0) 298*4882a593Smuzhiyun #define OPORTMXPAUDAT(n) (0x42054 + 0x400 * (n)) 299*4882a593Smuzhiyun #define OPORTMXPAUDAT_PAUSEPC_CMN (IEC61937_PC_PAUSE << 16) 300*4882a593Smuzhiyun #define OPORTMXPAUDAT_PAUSEPD_AC3 (IEC61937_FRM_PAU_AC3 * 4) 301*4882a593Smuzhiyun #define OPORTMXPAUDAT_PAUSEPD_MPA (IEC61937_FRM_PAU_MPA * 4) 302*4882a593Smuzhiyun #define OPORTMXPAUDAT_PAUSEPD_MP3 (IEC61937_FRM_PAU_MP3 * 4) 303*4882a593Smuzhiyun #define OPORTMXPAUDAT_PAUSEPD_DTS1 (IEC61937_FRM_PAU_DTS1 * 4) 304*4882a593Smuzhiyun #define OPORTMXPAUDAT_PAUSEPD_DTS2 (IEC61937_FRM_PAU_DTS2 * 4) 305*4882a593Smuzhiyun #define OPORTMXPAUDAT_PAUSEPD_DTS3 (IEC61937_FRM_PAU_DTS3 * 4) 306*4882a593Smuzhiyun #define OPORTMXPAUDAT_PAUSEPD_AAC (IEC61937_FRM_PAU_AAC * 4) 307*4882a593Smuzhiyun #define OPORTMXRATE_I(n) (0x420e4 + 0x400 * (n)) 308*4882a593Smuzhiyun #define OPORTMXRATE_I_EQU_MASK BIT(31) 309*4882a593Smuzhiyun #define OPORTMXRATE_I_EQU_NOTEQUAL (0x0 << 31) 310*4882a593Smuzhiyun #define OPORTMXRATE_I_EQU_EQUAL (0x1 << 31) 311*4882a593Smuzhiyun #define OPORTMXRATE_I_SRCBPMD_MASK BIT(29) 312*4882a593Smuzhiyun #define OPORTMXRATE_I_SRCBPMD_BYPASS (0x0 << 29) 313*4882a593Smuzhiyun #define OPORTMXRATE_I_SRCBPMD_SRC (0x1 << 29) 314*4882a593Smuzhiyun #define OPORTMXRATE_I_LRCKSTP_MASK BIT(24) 315*4882a593Smuzhiyun #define OPORTMXRATE_I_LRCKSTP_START (0x0 << 24) 316*4882a593Smuzhiyun #define OPORTMXRATE_I_LRCKSTP_STOP (0x1 << 24) 317*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSRC_MASK GENMASK(15, 12) 318*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSRC_APLL (0x0 << 12) 319*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSRC_USB (0x1 << 12) 320*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSRC_HSC (0x3 << 12) 321*4882a593Smuzhiyun /* if OPORTMXRATE_I_ACLKSRC_APLL */ 322*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_MASK GENMASK(11, 8) 323*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_APLLA1 (0x0 << 8) 324*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_APLLF1 (0x1 << 8) 325*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_APLLA2 (0x2 << 8) 326*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_APLLF2 (0x3 << 8) 327*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_APLL (0x4 << 8) 328*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_HDMI1 (0x5 << 8) 329*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_HDMI2 (0x6 << 8) 330*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_AI1ADCCK (0xc << 8) 331*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_AI2ADCCK (0xd << 8) 332*4882a593Smuzhiyun #define OPORTMXRATE_I_ACLKSEL_AI3ADCCK (0xe << 8) 333*4882a593Smuzhiyun #define OPORTMXRATE_I_MCKSEL_MASK GENMASK(7, 4) 334*4882a593Smuzhiyun #define OPORTMXRATE_I_MCKSEL_36 (0x0 << 4) 335*4882a593Smuzhiyun #define OPORTMXRATE_I_MCKSEL_33 (0x1 << 4) 336*4882a593Smuzhiyun #define OPORTMXRATE_I_MCKSEL_HSC27 (0xb << 4) 337*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_MASK GENMASK(3, 0) 338*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_48 (0x0 << 0) 339*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_96 (0x1 << 0) 340*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_192 (0x2 << 0) 341*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_32 (0x3 << 0) 342*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_44_1 (0x4 << 0) 343*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_88_2 (0x5 << 0) 344*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_176_4 (0x6 << 0) 345*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_16 (0x8 << 0) 346*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_22_05 (0x9 << 0) 347*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_24 (0xa << 0) 348*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_8 (0xb << 0) 349*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_11_025 (0xc << 0) 350*4882a593Smuzhiyun #define OPORTMXRATE_I_FSSEL_12 (0xd << 0) 351*4882a593Smuzhiyun #define OPORTMXEXNOE(n) (0x420f0 + 0x400 * (n)) 352*4882a593Smuzhiyun #define OPORTMXMASK(n) (0x420f8 + 0x400 * (n)) 353*4882a593Smuzhiyun #define OPORTMXMASK_IUDXMSK_MASK GENMASK(28, 24) 354*4882a593Smuzhiyun #define OPORTMXMASK_IUDXMSK_ON (0x00 << 24) 355*4882a593Smuzhiyun #define OPORTMXMASK_IUDXMSK_OFF (0x1f << 24) 356*4882a593Smuzhiyun #define OPORTMXMASK_IUXCKMSK_MASK GENMASK(18, 16) 357*4882a593Smuzhiyun #define OPORTMXMASK_IUXCKMSK_ON (0x0 << 16) 358*4882a593Smuzhiyun #define OPORTMXMASK_IUXCKMSK_OFF (0x7 << 16) 359*4882a593Smuzhiyun #define OPORTMXMASK_DXMSK_MASK GENMASK(12, 8) 360*4882a593Smuzhiyun #define OPORTMXMASK_DXMSK_ON (0x00 << 8) 361*4882a593Smuzhiyun #define OPORTMXMASK_DXMSK_OFF (0x1f << 8) 362*4882a593Smuzhiyun #define OPORTMXMASK_XCKMSK_MASK GENMASK(2, 0) 363*4882a593Smuzhiyun #define OPORTMXMASK_XCKMSK_ON (0x0 << 0) 364*4882a593Smuzhiyun #define OPORTMXMASK_XCKMSK_OFF (0x7 << 0) 365*4882a593Smuzhiyun #define OPORTMXDEBUG(n) (0x420fc + 0x400 * (n)) 366*4882a593Smuzhiyun #define OPORTMXTYVOLPARA1(n, m) (0x42100 + 0x400 * (n) + 0x20 * (m)) 367*4882a593Smuzhiyun #define OPORTMXTYVOLPARA1_SLOPEU_MASK GENMASK(31, 16) 368*4882a593Smuzhiyun #define OPORTMXTYVOLPARA2(n, m) (0x42104 + 0x400 * (n) + 0x20 * (m)) 369*4882a593Smuzhiyun #define OPORTMXTYVOLPARA2_FADE_MASK GENMASK(17, 16) 370*4882a593Smuzhiyun #define OPORTMXTYVOLPARA2_FADE_NOOP (0x0 << 16) 371*4882a593Smuzhiyun #define OPORTMXTYVOLPARA2_FADE_FADEOUT (0x1 << 16) 372*4882a593Smuzhiyun #define OPORTMXTYVOLPARA2_FADE_FADEIN (0x2 << 16) 373*4882a593Smuzhiyun #define OPORTMXTYVOLPARA2_TARGET_MASK GENMASK(15, 0) 374*4882a593Smuzhiyun #define OPORTMXTYVOLGAINSTATUS(n, m) (0x42108 + 0x400 * (n) + 0x20 * (m)) 375*4882a593Smuzhiyun #define OPORTMXTYVOLGAINSTATUS_CUR_MASK GENMASK(15, 0) 376*4882a593Smuzhiyun #define OPORTMXTYSLOTCTR(n, m) (0x42114 + 0x400 * (n) + 0x20 * (m)) 377*4882a593Smuzhiyun #define OPORTMXTYSLOTCTR_MODE BIT(15) 378*4882a593Smuzhiyun #define OPORTMXTYSLOTCTR_SLOTSEL_MASK GENMASK(11, 8) 379*4882a593Smuzhiyun #define OPORTMXTYSLOTCTR_SLOTSEL_SLOT0 (0x8 << 8) 380*4882a593Smuzhiyun #define OPORTMXTYSLOTCTR_SLOTSEL_SLOT1 (0x9 << 8) 381*4882a593Smuzhiyun #define OPORTMXTYSLOTCTR_SLOTSEL_SLOT2 (0xa << 8) 382*4882a593Smuzhiyun #define OPORTMXTYSLOTCTR_SLOTSEL_SLOT3 (0xb << 8) 383*4882a593Smuzhiyun #define OPORTMXTYSLOTCTR_SLOTSEL_SLOT4 (0xc << 8) 384*4882a593Smuzhiyun #define OPORTMXT0SLOTCTR_MUTEOFF_MASK BIT(1) 385*4882a593Smuzhiyun #define OPORTMXT0SLOTCTR_MUTEOFF_MUTE (0x0 << 1) 386*4882a593Smuzhiyun #define OPORTMXT0SLOTCTR_MUTEOFF_UNMUTE (0x1 << 1) 387*4882a593Smuzhiyun #define OPORTMXTYRSTCTR(n, m) (0x4211c + 0x400 * (n) + 0x20 * (m)) 388*4882a593Smuzhiyun #define OPORTMXT0RSTCTR_RST_MASK BIT(1) 389*4882a593Smuzhiyun #define OPORTMXT0RSTCTR_RST_OFF (0x0 << 1) 390*4882a593Smuzhiyun #define OPORTMXT0RSTCTR_RST_ON (0x1 << 1) 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun #define SBF_(frame, shift) (((frame) * 2 - 1) << shift) 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun /* AOUT(PBoutMX) */ 395*4882a593Smuzhiyun #define PBOUTMXCTR0(n) (0x40200 + 0x40 * (n)) 396*4882a593Smuzhiyun #define PBOUTMXCTR0_ENDIAN_MASK GENMASK(5, 4) 397*4882a593Smuzhiyun #define PBOUTMXCTR0_ENDIAN_3210 (0x0 << 4) 398*4882a593Smuzhiyun #define PBOUTMXCTR0_ENDIAN_0123 (0x1 << 4) 399*4882a593Smuzhiyun #define PBOUTMXCTR0_ENDIAN_1032 (0x2 << 4) 400*4882a593Smuzhiyun #define PBOUTMXCTR0_ENDIAN_2301 (0x3 << 4) 401*4882a593Smuzhiyun #define PBOUTMXCTR0_MEMFMT_MASK GENMASK(3, 0) 402*4882a593Smuzhiyun #define PBOUTMXCTR0_MEMFMT_10CH (0x0 << 0) 403*4882a593Smuzhiyun #define PBOUTMXCTR0_MEMFMT_8CH (0x1 << 0) 404*4882a593Smuzhiyun #define PBOUTMXCTR0_MEMFMT_6CH (0x2 << 0) 405*4882a593Smuzhiyun #define PBOUTMXCTR0_MEMFMT_4CH (0x3 << 0) 406*4882a593Smuzhiyun #define PBOUTMXCTR0_MEMFMT_2CH (0x4 << 0) 407*4882a593Smuzhiyun #define PBOUTMXCTR0_MEMFMT_STREAM (0x5 << 0) 408*4882a593Smuzhiyun #define PBOUTMXCTR0_MEMFMT_1CH (0x6 << 0) 409*4882a593Smuzhiyun #define PBOUTMXCTR1(n) (0x40204 + 0x40 * (n)) 410*4882a593Smuzhiyun #define PBOUTMXINTCTR(n) (0x40208 + 0x40 * (n)) 411*4882a593Smuzhiyun 412*4882a593Smuzhiyun /* A2D(subsystem) */ 413*4882a593Smuzhiyun #define CDA2D_STRT0 0x10000 414*4882a593Smuzhiyun #define CDA2D_STRT0_STOP_MASK BIT(31) 415*4882a593Smuzhiyun #define CDA2D_STRT0_STOP_START (0x0 << 31) 416*4882a593Smuzhiyun #define CDA2D_STRT0_STOP_STOP (0x1 << 31) 417*4882a593Smuzhiyun #define CDA2D_STAT0 0x10020 418*4882a593Smuzhiyun #define CDA2D_TEST 0x100a0 419*4882a593Smuzhiyun #define CDA2D_TEST_DDR_MODE_MASK GENMASK(3, 2) 420*4882a593Smuzhiyun #define CDA2D_TEST_DDR_MODE_EXTON0 (0x0 << 2) 421*4882a593Smuzhiyun #define CDA2D_TEST_DDR_MODE_EXTOFF1 (0x3 << 2) 422*4882a593Smuzhiyun #define CDA2D_STRTADRSLOAD 0x100b0 423*4882a593Smuzhiyun 424*4882a593Smuzhiyun #define CDA2D_CHMXCTRL1(n) (0x12000 + 0x80 * (n)) 425*4882a593Smuzhiyun #define CDA2D_CHMXCTRL1_INDSIZE_MASK BIT(0) 426*4882a593Smuzhiyun #define CDA2D_CHMXCTRL1_INDSIZE_FINITE (0x0 << 0) 427*4882a593Smuzhiyun #define CDA2D_CHMXCTRL1_INDSIZE_INFINITE (0x1 << 0) 428*4882a593Smuzhiyun #define CDA2D_CHMXCTRL2(n) (0x12004 + 0x80 * (n)) 429*4882a593Smuzhiyun #define CDA2D_CHMXSRCAMODE(n) (0x12020 + 0x80 * (n)) 430*4882a593Smuzhiyun #define CDA2D_CHMXDSTAMODE(n) (0x12024 + 0x80 * (n)) 431*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_ENDIAN_MASK GENMASK(17, 16) 432*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_ENDIAN_3210 (0x0 << 16) 433*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_ENDIAN_0123 (0x1 << 16) 434*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_ENDIAN_1032 (0x2 << 16) 435*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_ENDIAN_2301 (0x3 << 16) 436*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_RSSEL_SHIFT (8) 437*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_AUPDT_MASK GENMASK(5, 4) 438*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_AUPDT_INC (0x0 << 4) 439*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_AUPDT_FIX (0x2 << 4) 440*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_TYPE_MASK GENMASK(3, 2) 441*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_TYPE_NORMAL (0x0 << 2) 442*4882a593Smuzhiyun #define CDA2D_CHMXAMODE_TYPE_RING (0x1 << 2) 443*4882a593Smuzhiyun #define CDA2D_CHMXSRCSTRTADRS(n) (0x12030 + 0x80 * (n)) 444*4882a593Smuzhiyun #define CDA2D_CHMXSRCSTRTADRSU(n) (0x12034 + 0x80 * (n)) 445*4882a593Smuzhiyun #define CDA2D_CHMXDSTSTRTADRS(n) (0x12038 + 0x80 * (n)) 446*4882a593Smuzhiyun #define CDA2D_CHMXDSTSTRTADRSU(n) (0x1203c + 0x80 * (n)) 447*4882a593Smuzhiyun 448*4882a593Smuzhiyun /* A2D(ring buffer) */ 449*4882a593Smuzhiyun #define CDA2D_RBFLUSH0 0x10040 450*4882a593Smuzhiyun #define CDA2D_RBADRSLOAD 0x100b4 451*4882a593Smuzhiyun #define CDA2D_RDPTRLOAD 0x100b8 452*4882a593Smuzhiyun #define CDA2D_RDPTRLOAD_LSFLAG_LOAD (0x0 << 31) 453*4882a593Smuzhiyun #define CDA2D_RDPTRLOAD_LSFLAG_STORE (0x1 << 31) 454*4882a593Smuzhiyun #define CDA2D_WRPTRLOAD 0x100bc 455*4882a593Smuzhiyun #define CDA2D_WRPTRLOAD_LSFLAG_LOAD (0x0 << 31) 456*4882a593Smuzhiyun #define CDA2D_WRPTRLOAD_LSFLAG_STORE (0x1 << 31) 457*4882a593Smuzhiyun 458*4882a593Smuzhiyun #define CDA2D_RBMXBGNADRS(n) (0x14000 + 0x80 * (n)) 459*4882a593Smuzhiyun #define CDA2D_RBMXBGNADRSU(n) (0x14004 + 0x80 * (n)) 460*4882a593Smuzhiyun #define CDA2D_RBMXENDADRS(n) (0x14008 + 0x80 * (n)) 461*4882a593Smuzhiyun #define CDA2D_RBMXENDADRSU(n) (0x1400c + 0x80 * (n)) 462*4882a593Smuzhiyun #define CDA2D_RBMXBTH(n) (0x14038 + 0x80 * (n)) 463*4882a593Smuzhiyun #define CDA2D_RBMXRTH(n) (0x1403c + 0x80 * (n)) 464*4882a593Smuzhiyun #define CDA2D_RBMXRDPTR(n) (0x14020 + 0x80 * (n)) 465*4882a593Smuzhiyun #define CDA2D_RBMXRDPTRU(n) (0x14024 + 0x80 * (n)) 466*4882a593Smuzhiyun #define CDA2D_RBMXWRPTR(n) (0x14028 + 0x80 * (n)) 467*4882a593Smuzhiyun #define CDA2D_RBMXWRPTRU(n) (0x1402c + 0x80 * (n)) 468*4882a593Smuzhiyun #define CDA2D_RBMXPTRU_PTRU_MASK GENMASK(1, 0) 469*4882a593Smuzhiyun #define CDA2D_RBMXCNFG(n) (0x14030 + 0x80 * (n)) 470*4882a593Smuzhiyun #define CDA2D_RBMXIR(n) (0x14014 + 0x80 * (n)) 471*4882a593Smuzhiyun #define CDA2D_RBMXIE(n) (0x14018 + 0x80 * (n)) 472*4882a593Smuzhiyun #define CDA2D_RBMXID(n) (0x1401c + 0x80 * (n)) 473*4882a593Smuzhiyun #define CDA2D_RBMXIX_SPACE BIT(3) 474*4882a593Smuzhiyun #define CDA2D_RBMXIX_REMAIN BIT(4) 475*4882a593Smuzhiyun 476*4882a593Smuzhiyun #endif /* SND_UNIPHIER_AIO_REG_H__ */ 477