xref: /OK3568_Linux_fs/kernel/sound/soc/codecs/rk_dsm.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Rockchip Audio Delta-sigma Digital Converter driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2023 Rockchip Electronics Co., Ltd
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifndef _RK_DSM_H
10*4882a593Smuzhiyun #define _RK_DSM_H
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define DACVUCTL		0x0000
13*4882a593Smuzhiyun #define DACVUCTIME		0x0004
14*4882a593Smuzhiyun #define DACDIGEN		0x0008
15*4882a593Smuzhiyun #define DACCLKCTRL		0x000c
16*4882a593Smuzhiyun #define DACINT_DIV		0x0014
17*4882a593Smuzhiyun #define DACSCLKRXINT_DIV	0x0020
18*4882a593Smuzhiyun #define DACPWM_DIV		0x0024
19*4882a593Smuzhiyun #define DACPWM_CTRL		0x0028
20*4882a593Smuzhiyun #define DACCFG1			0x0044
21*4882a593Smuzhiyun #define DACMUTE			0x0048
22*4882a593Smuzhiyun #define DACMUTEST		0x004c
23*4882a593Smuzhiyun #define DACVOLL0		0x0050
24*4882a593Smuzhiyun #define DACVOLL1		0x0054
25*4882a593Smuzhiyun #define DACVOLL2		0x0058
26*4882a593Smuzhiyun #define DACVOLL3		0x005c
27*4882a593Smuzhiyun #define DACVOLR0		0x0060
28*4882a593Smuzhiyun #define DACVOLR1		0x0064
29*4882a593Smuzhiyun #define DACVOLR2		0x0068
30*4882a593Smuzhiyun #define DACVOLR3		0x006c
31*4882a593Smuzhiyun #define DACVOGP			0x0070
32*4882a593Smuzhiyun #define DACRVOLL0		0x0074
33*4882a593Smuzhiyun #define DACRVOLL1		0x0078
34*4882a593Smuzhiyun #define DACRVOLL2		0x007c
35*4882a593Smuzhiyun #define DACRVOLL3		0x0080
36*4882a593Smuzhiyun #define DACRVOLR0		0x0084
37*4882a593Smuzhiyun #define DACRVOLR1		0x0088
38*4882a593Smuzhiyun #define DACRVOLR2		0x008c
39*4882a593Smuzhiyun #define DACRVOLR3		0x0090
40*4882a593Smuzhiyun #define DACLMT0			0x0094
41*4882a593Smuzhiyun #define DACLMT1			0x0098
42*4882a593Smuzhiyun #define DACLMT2			0x009c
43*4882a593Smuzhiyun #define DACMIXCTRLL		0x00a0
44*4882a593Smuzhiyun #define DACMIXCTRLR		0x00a4
45*4882a593Smuzhiyun #define DACHPF			0x00a8
46*4882a593Smuzhiyun #define I2S_RXCR0		0x010c
47*4882a593Smuzhiyun #define I2S_RXCR1		0x0110
48*4882a593Smuzhiyun #define I2S_CKR0		0x0114
49*4882a593Smuzhiyun #define I2S_CKR1		0x0118
50*4882a593Smuzhiyun #define I2S_XFER		0x011c
51*4882a593Smuzhiyun #define I2S_CLR			0x0120
52*4882a593Smuzhiyun #define VERSION			0x0140
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun /* DACDIGEN */
55*4882a593Smuzhiyun #define DSM_DACDIGEN_DACEN_L0R1_MASK		BIT(0)
56*4882a593Smuzhiyun #define DSM_DACDIGEN_DACEN_L0R1_EN		BIT(0)
57*4882a593Smuzhiyun #define DSM_DACDIGEN_DACEN_L0R1_DIS		0
58*4882a593Smuzhiyun #define DSM_DACDIGEN_DAC_GLBEN_MASK		BIT(4)
59*4882a593Smuzhiyun #define DSM_DACDIGEN_DAC_GLBEN_EN		BIT(4)
60*4882a593Smuzhiyun #define DSM_DACDIGEN_DAC_GLBEN_DIS		0
61*4882a593Smuzhiyun /* DACCLKCTRL */
62*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_MODE_ATTENU_MASK	BIT(0)
63*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_MODE_ATTENU_EN	BIT(0)
64*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_MODE_ATTENU_DIS	0
65*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_SYNC_STATUS_MASK	BIT(1)
66*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_SYNC_STATUS_DONE	0
67*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_SYNC_ENA_MASK	BIT(2)
68*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_SYNC_ENA_EN		BIT(2)
69*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_SYNC_ENA_DIS		0
70*4882a593Smuzhiyun #define DSM_DACCLKCTRL_CKE_BCLKRX_MASK		BIT(3)
71*4882a593Smuzhiyun #define DSM_DACCLKCTRL_CKE_BCLKRX_EN		BIT(3)
72*4882a593Smuzhiyun #define DSM_DACCLKCTRL_CKE_BCLKRX_DIS		0
73*4882a593Smuzhiyun #define DSM_DACCLKCTRL_I2SRX_CKE_MASK		BIT(4)
74*4882a593Smuzhiyun #define DSM_DACCLKCTRL_I2SRX_CKE_EN		BIT(4)
75*4882a593Smuzhiyun #define DSM_DACCLKCTRL_I2SRX_CKE_DIS		0
76*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_CKE_MASK		BIT(5)
77*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_CKE_EN		BIT(5)
78*4882a593Smuzhiyun #define DSM_DACCLKCTRL_DAC_CKE_DIS		0
79*4882a593Smuzhiyun /* DACINT_DIV */
80*4882a593Smuzhiyun #define DSM_DACINT_DIV_INT_DIV_CON_MASK		GENMASK(7, 0)
81*4882a593Smuzhiyun #define DSM_DACINT_DIV_INT_DIV_CON(x)		((x) - 1)
82*4882a593Smuzhiyun /* DACSCLKRXINT_DIV */
83*4882a593Smuzhiyun #define DSM_DACSCLKRXINT_DIV_SCKRXDIV_MASK	GENMASK(7, 0)
84*4882a593Smuzhiyun #define DSM_DACSCLKRXINT_DIV_SCKRXDIV(x)	((x) - 1)
85*4882a593Smuzhiyun /* DACPWM_DIV */
86*4882a593Smuzhiyun #define DSM_DACPWM_DIV_AUDIO_PWM_DIV_MASK	GENMASK(7, 0)
87*4882a593Smuzhiyun #define DSM_DACPWM_DIV_AUDIO_PWM_DIV(x)		((x) - 1)
88*4882a593Smuzhiyun /* DACPWM_CTRL */
89*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_DITH_SEL_MASK		GENMASK(2, 0)
90*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_DITH_SEL(x)		(x)
91*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_EN_MASK		BIT(3)
92*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_EN			BIT(3)
93*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_DIS			0
94*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_MODE_MASK		GENMASK(5, 4)
95*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_MODE_1		(0x2 << 4)
96*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_MODE_0		(0x1 << 4)
97*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_MODE_DAC		(0x0 << 4)
98*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_MODE_CKE_MASK	BIT(6)
99*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_MODE_CKE_EN		BIT(6)
100*4882a593Smuzhiyun #define DSM_DACPWM_CTRL_PWM_MODE_CKE_DIS	0
101*4882a593Smuzhiyun /* DACCFG1 */
102*4882a593Smuzhiyun #define DSM_DACCFG1_DACSRT_MASK			GENMASK(4, 2)
103*4882a593Smuzhiyun #define DSM_DACCFG1_DACSRT(x)			((x) << 2)
104*4882a593Smuzhiyun /* DACMUTE */
105*4882a593Smuzhiyun #define DSM_DACMUTE_DACMT_MASK			BIT(0)
106*4882a593Smuzhiyun #define DSM_DACMUTE_DACUNMT_MASK		BIT(1)
107*4882a593Smuzhiyun /* DACVOLL0 */
108*4882a593Smuzhiyun #define DSM_DACVOLL0_DACLV0_MASK		GENMASK(7, 0)
109*4882a593Smuzhiyun #define DSM_DACVOLL0_DACLV0(x)			(x)
110*4882a593Smuzhiyun /* DACVOLR0 */
111*4882a593Smuzhiyun #define DSM_DACVOLR0_DACRV0_MASK		GENMASK(7, 0)
112*4882a593Smuzhiyun #define DSM_DACVOLR0_DACRV0(x)			(x)
113*4882a593Smuzhiyun /* DACVOGP */
114*4882a593Smuzhiyun #define DSM_DACVOGP_VOLGPL0_MASK		BIT(0)
115*4882a593Smuzhiyun #define DSM_DACVOGP_VOLGPL0_POS			BIT(0)
116*4882a593Smuzhiyun #define DSM_DACVOGP_VOLGPL0_NEG			0
117*4882a593Smuzhiyun #define DSM_DACVOGP_VOLGPR0_MASK		BIT(1)
118*4882a593Smuzhiyun #define DSM_DACVOGP_VOLGPR0_POS			BIT(1)
119*4882a593Smuzhiyun #define DSM_DACVOGP_VOLGPR0_NEG			0
120*4882a593Smuzhiyun /* DACMIXCTRLL */
121*4882a593Smuzhiyun #define DSM_DACMIXCTRLL_MIXMODE_L0_MASK		GENMASK(1, 0)
122*4882a593Smuzhiyun #define DSM_DACMIXCTRLL_MIXMODE_L0_LR		2
123*4882a593Smuzhiyun #define DSM_DACMIXCTRLL_MIXMODE_L0_R		1
124*4882a593Smuzhiyun #define DSM_DACMIXCTRLL_MIXMODE_L0_L		0
125*4882a593Smuzhiyun /* DACMIXCTRLR */
126*4882a593Smuzhiyun #define DSM_DACMIXCTRLR_MIXMODE_R0_MASK		GENMASK(1, 0)
127*4882a593Smuzhiyun #define DSM_DACMIXCTRLR_MIXMODE_R0_LR		2
128*4882a593Smuzhiyun #define DSM_DACMIXCTRLR_MIXMODE_R0_L		1
129*4882a593Smuzhiyun #define DSM_DACMIXCTRLR_MIXMODE_R0_R		0
130*4882a593Smuzhiyun /* DACHPF */
131*4882a593Smuzhiyun #define DSM_DACHPF_HPFEN_L0R0_MASK		BIT(0)
132*4882a593Smuzhiyun #define DSM_DACHPF_HPFEN_L0R0_EN		BIT(0)
133*4882a593Smuzhiyun #define DSM_DACHPF_HPFCF_MASK			GENMASK(5, 4)
134*4882a593Smuzhiyun #define DSM_DACHPF_HPFCF_140HZ			(0x3 << 4)
135*4882a593Smuzhiyun #define DSM_DACHPF_HPFCF_120HZ			(0x2 << 4)
136*4882a593Smuzhiyun #define DSM_DACHPF_HPFCF_100HZ			(0x1 << 4)
137*4882a593Smuzhiyun #define DSM_DACHPF_HPFCF_80HZ			(0x0 << 4)
138*4882a593Smuzhiyun /* I2S_RXCR0 */
139*4882a593Smuzhiyun #define DSM_I2S_RXCR0_VDW_MASK			GENMASK(4, 0)
140*4882a593Smuzhiyun #define DSM_I2S_RXCR0_VDW(x)			((x) - 1)
141*4882a593Smuzhiyun /* I2S_RXCR1 */
142*4882a593Smuzhiyun #define DSM_I2S_RXCR1_CEX_MASK			BIT(4)
143*4882a593Smuzhiyun #define DSM_I2S_RXCR1_CEX_EXCHANGE		BIT(4)
144*4882a593Smuzhiyun #define DSM_I2S_RXCR1_RCSR_MASK			GENMASK(7, 6)
145*4882a593Smuzhiyun #define DSM_I2S_RXCR1_RCSR_2CH			(0x0 << 6)
146*4882a593Smuzhiyun /* I2S_CKR0 */
147*4882a593Smuzhiyun #define DSM_I2S_CKR0_RSD_MASK			GENMASK(3, 2)
148*4882a593Smuzhiyun #define DSM_I2S_CKR0_RSD_64			(0 << 2)
149*4882a593Smuzhiyun #define DSM_I2S_CKR0_RSD_128			(1 << 2)
150*4882a593Smuzhiyun #define DSM_I2S_CKR0_RSD_256			(2 << 2)
151*4882a593Smuzhiyun /* I2S_CKR1 */
152*4882a593Smuzhiyun #define DSM_I2S_CKR1_RLP_MASK			BIT(1)
153*4882a593Smuzhiyun #define DSM_I2S_CKR1_RLP_INVERTED		BIT(1)
154*4882a593Smuzhiyun #define DSM_I2S_CKR1_RLP_NORMAL			0
155*4882a593Smuzhiyun #define DSM_I2S_CKR1_CKP_MASK			BIT(2)
156*4882a593Smuzhiyun #define DSM_I2S_CKR1_CKP_INVERTED		BIT(2)
157*4882a593Smuzhiyun #define DSM_I2S_CKR1_CKP_NORMAL			0
158*4882a593Smuzhiyun #define DSM_I2S_CKR1_MSS_MASK			BIT(3)
159*4882a593Smuzhiyun #define DSM_I2S_CKR1_MSS_MASTER			0
160*4882a593Smuzhiyun /* I2S_XFER */
161*4882a593Smuzhiyun #define DSM_I2S_XFER_RXS_MASK			BIT(1)
162*4882a593Smuzhiyun #define DSM_I2S_XFER_RXS_START			BIT(1)
163*4882a593Smuzhiyun #define DSM_I2S_XFER_RXS_STOP			0
164*4882a593Smuzhiyun /* I2S_CLR */
165*4882a593Smuzhiyun #define DSM_I2S_CLR_RXC_MASK			BIT(1)
166*4882a593Smuzhiyun #define DSM_I2S_CLR_RXC_CLR			BIT(1)
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun #endif
169