xref: /OK3568_Linux_fs/kernel/sound/soc/codecs/rt1308-sdw.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * rt1308-sdw.h -- RT1308 ALSA SoC audio driver header
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright(c) 2019 Realtek Semiconductor Corp.
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef __RT1308_SDW_H__
9*4882a593Smuzhiyun #define __RT1308_SDW_H__
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun static const struct reg_default rt1308_reg_defaults[] = {
12*4882a593Smuzhiyun 	{ 0x0000, 0x00 },
13*4882a593Smuzhiyun 	{ 0x0001, 0x00 },
14*4882a593Smuzhiyun 	{ 0x0002, 0x00 },
15*4882a593Smuzhiyun 	{ 0x0003, 0x00 },
16*4882a593Smuzhiyun 	{ 0x0004, 0x00 },
17*4882a593Smuzhiyun 	{ 0x0005, 0x01 },
18*4882a593Smuzhiyun 	{ 0x0020, 0x00 },
19*4882a593Smuzhiyun 	{ 0x0022, 0x00 },
20*4882a593Smuzhiyun 	{ 0x0023, 0x00 },
21*4882a593Smuzhiyun 	{ 0x0024, 0x00 },
22*4882a593Smuzhiyun 	{ 0x0025, 0x00 },
23*4882a593Smuzhiyun 	{ 0x0026, 0x00 },
24*4882a593Smuzhiyun 	{ 0x0030, 0x00 },
25*4882a593Smuzhiyun 	{ 0x0032, 0x00 },
26*4882a593Smuzhiyun 	{ 0x0033, 0x00 },
27*4882a593Smuzhiyun 	{ 0x0034, 0x00 },
28*4882a593Smuzhiyun 	{ 0x0035, 0x00 },
29*4882a593Smuzhiyun 	{ 0x0036, 0x00 },
30*4882a593Smuzhiyun 	{ 0x0040, 0x00 },
31*4882a593Smuzhiyun 	{ 0x0041, 0x00 },
32*4882a593Smuzhiyun 	{ 0x0042, 0x00 },
33*4882a593Smuzhiyun 	{ 0x0043, 0x00 },
34*4882a593Smuzhiyun 	{ 0x0044, 0x20 },
35*4882a593Smuzhiyun 	{ 0x0045, 0x01 },
36*4882a593Smuzhiyun 	{ 0x0046, 0x01 },
37*4882a593Smuzhiyun 	{ 0x0048, 0x00 },
38*4882a593Smuzhiyun 	{ 0x0049, 0x00 },
39*4882a593Smuzhiyun 	{ 0x0050, 0x20 },
40*4882a593Smuzhiyun 	{ 0x0051, 0x02 },
41*4882a593Smuzhiyun 	{ 0x0052, 0x5D },
42*4882a593Smuzhiyun 	{ 0x0053, 0x13 },
43*4882a593Smuzhiyun 	{ 0x0054, 0x08 },
44*4882a593Smuzhiyun 	{ 0x0055, 0x00 },
45*4882a593Smuzhiyun 	{ 0x0060, 0x00 },
46*4882a593Smuzhiyun 	{ 0x0070, 0x00 },
47*4882a593Smuzhiyun 	{ 0x00E0, 0x00 },
48*4882a593Smuzhiyun 	{ 0x00F0, 0x00 },
49*4882a593Smuzhiyun 	{ 0x0100, 0x00 },
50*4882a593Smuzhiyun 	{ 0x0101, 0x00 },
51*4882a593Smuzhiyun 	{ 0x0102, 0x20 },
52*4882a593Smuzhiyun 	{ 0x0103, 0x00 },
53*4882a593Smuzhiyun 	{ 0x0104, 0x00 },
54*4882a593Smuzhiyun 	{ 0x0105, 0x03 },
55*4882a593Smuzhiyun 	{ 0x0120, 0x00 },
56*4882a593Smuzhiyun 	{ 0x0122, 0x00 },
57*4882a593Smuzhiyun 	{ 0x0123, 0x00 },
58*4882a593Smuzhiyun 	{ 0x0124, 0x00 },
59*4882a593Smuzhiyun 	{ 0x0125, 0x00 },
60*4882a593Smuzhiyun 	{ 0x0126, 0x00 },
61*4882a593Smuzhiyun 	{ 0x0127, 0x00 },
62*4882a593Smuzhiyun 	{ 0x0130, 0x00 },
63*4882a593Smuzhiyun 	{ 0x0132, 0x00 },
64*4882a593Smuzhiyun 	{ 0x0133, 0x00 },
65*4882a593Smuzhiyun 	{ 0x0134, 0x00 },
66*4882a593Smuzhiyun 	{ 0x0135, 0x00 },
67*4882a593Smuzhiyun 	{ 0x0136, 0x00 },
68*4882a593Smuzhiyun 	{ 0x0137, 0x00 },
69*4882a593Smuzhiyun 	{ 0x0200, 0x00 },
70*4882a593Smuzhiyun 	{ 0x0201, 0x00 },
71*4882a593Smuzhiyun 	{ 0x0202, 0x00 },
72*4882a593Smuzhiyun 	{ 0x0203, 0x00 },
73*4882a593Smuzhiyun 	{ 0x0204, 0x00 },
74*4882a593Smuzhiyun 	{ 0x0205, 0x03 },
75*4882a593Smuzhiyun 	{ 0x0220, 0x00 },
76*4882a593Smuzhiyun 	{ 0x0222, 0x00 },
77*4882a593Smuzhiyun 	{ 0x0223, 0x00 },
78*4882a593Smuzhiyun 	{ 0x0224, 0x00 },
79*4882a593Smuzhiyun 	{ 0x0225, 0x00 },
80*4882a593Smuzhiyun 	{ 0x0226, 0x00 },
81*4882a593Smuzhiyun 	{ 0x0227, 0x00 },
82*4882a593Smuzhiyun 	{ 0x0230, 0x00 },
83*4882a593Smuzhiyun 	{ 0x0232, 0x00 },
84*4882a593Smuzhiyun 	{ 0x0233, 0x00 },
85*4882a593Smuzhiyun 	{ 0x0234, 0x00 },
86*4882a593Smuzhiyun 	{ 0x0235, 0x00 },
87*4882a593Smuzhiyun 	{ 0x0236, 0x00 },
88*4882a593Smuzhiyun 	{ 0x0237, 0x00 },
89*4882a593Smuzhiyun 	{ 0x0400, 0x00 },
90*4882a593Smuzhiyun 	{ 0x0401, 0x00 },
91*4882a593Smuzhiyun 	{ 0x0402, 0x00 },
92*4882a593Smuzhiyun 	{ 0x0403, 0x00 },
93*4882a593Smuzhiyun 	{ 0x0404, 0x00 },
94*4882a593Smuzhiyun 	{ 0x0405, 0x03 },
95*4882a593Smuzhiyun 	{ 0x0420, 0x00 },
96*4882a593Smuzhiyun 	{ 0x0422, 0x00 },
97*4882a593Smuzhiyun 	{ 0x0423, 0x00 },
98*4882a593Smuzhiyun 	{ 0x0424, 0x00 },
99*4882a593Smuzhiyun 	{ 0x0425, 0x00 },
100*4882a593Smuzhiyun 	{ 0x0426, 0x00 },
101*4882a593Smuzhiyun 	{ 0x0427, 0x00 },
102*4882a593Smuzhiyun 	{ 0x0430, 0x00 },
103*4882a593Smuzhiyun 	{ 0x0432, 0x00 },
104*4882a593Smuzhiyun 	{ 0x0433, 0x00 },
105*4882a593Smuzhiyun 	{ 0x0434, 0x00 },
106*4882a593Smuzhiyun 	{ 0x0435, 0x00 },
107*4882a593Smuzhiyun 	{ 0x0436, 0x00 },
108*4882a593Smuzhiyun 	{ 0x0437, 0x00 },
109*4882a593Smuzhiyun 	{ 0x0f00, 0x00 },
110*4882a593Smuzhiyun 	{ 0x0f01, 0x00 },
111*4882a593Smuzhiyun 	{ 0x0f02, 0x00 },
112*4882a593Smuzhiyun 	{ 0x0f03, 0x00 },
113*4882a593Smuzhiyun 	{ 0x0f04, 0x00 },
114*4882a593Smuzhiyun 	{ 0x0f05, 0x00 },
115*4882a593Smuzhiyun 	{ 0x0f20, 0x00 },
116*4882a593Smuzhiyun 	{ 0x0f22, 0x00 },
117*4882a593Smuzhiyun 	{ 0x0f23, 0x00 },
118*4882a593Smuzhiyun 	{ 0x0f24, 0x00 },
119*4882a593Smuzhiyun 	{ 0x0f25, 0x00 },
120*4882a593Smuzhiyun 	{ 0x0f26, 0x00 },
121*4882a593Smuzhiyun 	{ 0x0f27, 0x00 },
122*4882a593Smuzhiyun 	{ 0x0f30, 0x00 },
123*4882a593Smuzhiyun 	{ 0x0f32, 0x00 },
124*4882a593Smuzhiyun 	{ 0x0f33, 0x00 },
125*4882a593Smuzhiyun 	{ 0x0f34, 0x00 },
126*4882a593Smuzhiyun 	{ 0x0f35, 0x00 },
127*4882a593Smuzhiyun 	{ 0x0f36, 0x00 },
128*4882a593Smuzhiyun 	{ 0x0f37, 0x00 },
129*4882a593Smuzhiyun 	{ 0x2f01, 0x01 },
130*4882a593Smuzhiyun 	{ 0x2f02, 0x09 },
131*4882a593Smuzhiyun 	{ 0x2f03, 0x00 },
132*4882a593Smuzhiyun 	{ 0x2f04, 0x0f },
133*4882a593Smuzhiyun 	{ 0x2f05, 0x0b },
134*4882a593Smuzhiyun 	{ 0x2f06, 0x01 },
135*4882a593Smuzhiyun 	{ 0x2f07, 0x8e },
136*4882a593Smuzhiyun 	{ 0x3000, 0x00 },
137*4882a593Smuzhiyun 	{ 0x3001, 0x00 },
138*4882a593Smuzhiyun 	{ 0x3004, 0x01 },
139*4882a593Smuzhiyun 	{ 0x3005, 0x23 },
140*4882a593Smuzhiyun 	{ 0x3008, 0x02 },
141*4882a593Smuzhiyun 	{ 0x300a, 0x00 },
142*4882a593Smuzhiyun 	{ 0xc000 | (RT1308_DATA_PATH << 4), 0x00 },
143*4882a593Smuzhiyun 	{ 0xc003 | (RT1308_DAC_SET << 4), 0x00 },
144*4882a593Smuzhiyun 	{ 0xc001 | (RT1308_POWER << 4), 0x00 },
145*4882a593Smuzhiyun 	{ 0xc002 | (RT1308_POWER << 4), 0x00 },
146*4882a593Smuzhiyun 	{ 0xc000 | (RT1308_POWER_STATUS << 4), 0x00 },
147*4882a593Smuzhiyun };
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun #define RT1308_SDW_OFFSET 0xc000
150*4882a593Smuzhiyun #define RT1308_SDW_OFFSET_BYTE0 0xc000
151*4882a593Smuzhiyun #define RT1308_SDW_OFFSET_BYTE1 0xc001
152*4882a593Smuzhiyun #define RT1308_SDW_OFFSET_BYTE2 0xc002
153*4882a593Smuzhiyun #define RT1308_SDW_OFFSET_BYTE3 0xc003
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun #define RT1308_SDW_RESET (RT1308_SDW_OFFSET | (RT1308_RESET << 4))
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun struct rt1308_sdw_priv {
158*4882a593Smuzhiyun 	struct snd_soc_component *component;
159*4882a593Smuzhiyun 	struct regmap *regmap;
160*4882a593Smuzhiyun 	struct sdw_slave *sdw_slave;
161*4882a593Smuzhiyun 	enum sdw_slave_status status;
162*4882a593Smuzhiyun 	struct sdw_bus_params params;
163*4882a593Smuzhiyun 	bool hw_init;
164*4882a593Smuzhiyun 	bool first_hw_init;
165*4882a593Smuzhiyun 	int rx_mask;
166*4882a593Smuzhiyun 	int slots;
167*4882a593Smuzhiyun };
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun struct sdw_stream_data {
170*4882a593Smuzhiyun 	struct sdw_stream_runtime *sdw_stream;
171*4882a593Smuzhiyun };
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #endif /* __RT1308_SDW_H__ */
174