xref: /OK3568_Linux_fs/kernel/sound/soc/uniphier/aio-reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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