blob: 45dfb38b388497f9f0b335d159692b7436599327 [file] [log] [blame]
Tim Crawford8b9716e2024-05-21 15:17:29 -06001/* SPDX-License-Identifier: GPL-2.0-only */
2
3#include <delay.h>
4#include <drivers/i2c/tas5825m/tas5825m.h>
5
6int tas5825m_setup(struct device *dev, int id)
7{
8 int res;
9
10 res = tas5825m_set_book(dev, 0x00);
11 if (res < 0)
12 return res;
13
14 res = tas5825m_write_at(dev, 0x03, 0x02);
15 if (res < 0)
16 return res;
17
18 res = tas5825m_write_at(dev, 0x01, 0x11);
19 if (res < 0)
20 return res;
21
22 res = tas5825m_write_at(dev, 0x03, 0x02);
23 if (res < 0)
24 return res;
25
26 mdelay(5);
27
28 res = tas5825m_write_at(dev, 0x03, 0x12);
29 if (res < 0)
30 return res;
31
32 res = tas5825m_write_at(dev, 0x48, 0x0C);
33 if (res < 0)
34 return res;
35
36 res = tas5825m_write_at(dev, 0x7F, 0x64);
37 if (res < 0)
38 return res;
39
40 res = tas5825m_set_page(dev, 0x01);
41 if (res < 0)
42 return res;
43
44 {
45 const uint8_t values[] = {
46 0x00, 0xFE, 0x00, 0x40, 0x00, 0xFC, 0x00, 0x00,
47 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
48 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
49 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
50 0x00, 0xFC, 0x50, 0x00, 0x00, 0xFC, 0x00, 0x00,
51 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
52 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
53 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
54 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
55 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
56 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
57 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
58 0x00, 0x82, 0x00, 0x93, 0x00, 0xFC, 0x00, 0x00,
59 0x8F, 0x00, 0xFF, 0xEF, 0x84, 0x49, 0x03, 0x27,
60 0x84, 0x02, 0x04, 0x06, 0x02, 0x60, 0x00, 0x01,
61 0x00
62 };
63 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
64 if (res < 0)
65 return res;
66 }
67
68 res = tas5825m_set_page(dev, 0x02);
69 if (res < 0)
70 return res;
71
72 {
73 const uint8_t values[] = {
74 0x02, 0x70, 0x00, 0x06, 0x02, 0x78, 0x00, 0x05,
75 0x02, 0x68, 0x00, 0x02, 0x02, 0x28, 0x03, 0x4D,
76 0x84, 0x2A, 0x04, 0x00, 0xE2, 0x57, 0x91, 0x9F,
77 0x84, 0x82, 0x20, 0xE0, 0x84, 0x82, 0x04, 0x01,
78 0xF0, 0x1C, 0x31, 0xA0, 0xF0, 0x1C, 0x31, 0xA1,
79 0xF0, 0x1C, 0x31, 0xA2, 0xF0, 0x1F, 0x31, 0xA3,
80 0xE4, 0x00, 0x11, 0xA6, 0x80, 0x27, 0x80, 0xE1,
81 0xF4, 0x00, 0x11, 0xA4, 0xF4, 0x1D, 0x31, 0xA5,
82 0xF4, 0x1C, 0x31, 0xA7, 0xF4, 0x1F, 0x31, 0xA8,
83 0x02, 0x78, 0x00, 0x03, 0xE2, 0x68, 0xF1, 0xC3,
84 0x80, 0x67, 0x80, 0xE9, 0x84, 0x4B, 0x03, 0x27,
85 0x02, 0x70, 0x00, 0x04, 0x84, 0x41, 0x03, 0x37,
86 0x80, 0x07, 0x00, 0x80, 0xE0, 0x00, 0x11, 0xA9,
87 0x84, 0x82, 0x00, 0xE0, 0x8E, 0xFC, 0x04, 0x10,
88 0xF0, 0x1C, 0x11, 0xAA, 0xF0, 0x1C, 0x11, 0xAB,
89 0x00
90 };
91 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
92 if (res < 0)
93 return res;
94 }
95
96 res = tas5825m_set_page(dev, 0x03);
97 if (res < 0)
98 return res;
99
100 {
101 const uint8_t values[] = {
102 0xF0, 0x1C, 0x11, 0xAC, 0xF0, 0x1F, 0x11, 0xAD,
103 0x86, 0xA1, 0x01, 0xC2, 0x80, 0x27, 0x80, 0xE8,
104 0x60, 0x00, 0x00, 0x00, 0x84, 0x43, 0x03, 0x37,
105 0x80, 0x00, 0x00, 0x81, 0x0D, 0x00, 0x10, 0x20,
106 0x84, 0x51, 0x03, 0x3E, 0x08, 0x44, 0x26, 0x30,
107 0x84, 0xC3, 0x03, 0x47, 0x84, 0xC2, 0x40, 0xE0,
108 0x8C, 0xFF, 0x03, 0x23, 0xE0, 0x10, 0x11, 0xB3,
109 0xF0, 0x1C, 0x51, 0xB4, 0xF0, 0x1C, 0x51, 0xB5,
110 0xF0, 0x1C, 0x51, 0xB6, 0xF0, 0x1F, 0x51, 0xB7,
111 0x86, 0xA1, 0x01, 0xC6, 0x80, 0x27, 0x80, 0xEA,
112 0x84, 0x53, 0x03, 0x3E, 0x84, 0x82, 0x04, 0x05,
113 0x84, 0x51, 0x03, 0x75, 0xE2, 0x6B, 0xC0, 0x00,
114 0x80, 0x07, 0x00, 0x80, 0xE0, 0x80, 0x31, 0xB8,
115 0x84, 0x82, 0x40, 0xE0, 0xF0, 0x1C, 0x51, 0xB9,
116 0xF0, 0x1C, 0x51, 0xBA, 0xF0, 0x1C, 0x51, 0xBB,
117 0x00
118 };
119 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
120 if (res < 0)
121 return res;
122 }
123
124 res = tas5825m_set_page(dev, 0x04);
125 if (res < 0)
126 return res;
127
128 {
129 const uint8_t values[] = {
130 0xF0, 0x1F, 0x51, 0xBC, 0x86, 0xA1, 0x01, 0xC5,
131 0x80, 0x27, 0x80, 0xEA, 0x60, 0x00, 0x00, 0x00,
132 0x80, 0x00, 0x00, 0x81, 0x84, 0xA1, 0x03, 0x4F,
133 0xE0, 0x80, 0xA0, 0x00, 0x01, 0x07, 0x11, 0x20,
134 0x08, 0x44, 0x26, 0x30, 0x08, 0x00, 0x98, 0x4A,
135 0x84, 0x53, 0x03, 0x75, 0x08, 0x00, 0x30, 0x48,
136 0x02, 0xCA, 0x00, 0x01, 0x08, 0x60, 0x26, 0x32,
137 0x84, 0x51, 0x03, 0x45, 0xE4, 0x10, 0x40, 0x00,
138 0x80, 0x40, 0xC0, 0x82, 0x84, 0xC2, 0x40, 0xE0,
139 0x84, 0xC3, 0x03, 0x5E, 0x08, 0x00, 0x50, 0x48,
140 0xE0, 0x10, 0x11, 0xBD, 0x02, 0xC2, 0x00, 0x02,
141 0x08, 0x60, 0x06, 0x12, 0x84, 0xD3, 0x03, 0x4F,
142 0xF0, 0x1C, 0x51, 0xBE, 0xF0, 0x1C, 0x51, 0xBF,
143 0xF0, 0x1C, 0x51, 0xC0, 0xF0, 0x1F, 0x51, 0xC1,
144 0x84, 0xA1, 0x03, 0x65, 0x80, 0x27, 0x80, 0xEA,
145 0x00
146 };
147 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
148 if (res < 0)
149 return res;
150 }
151
152 res = tas5825m_set_page(dev, 0x05);
153 if (res < 0)
154 return res;
155
156 {
157 const uint8_t values[] = {
158 0xE0, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x83,
159 0x08, 0x00, 0x98, 0x6B, 0x08, 0x00, 0x30, 0x68,
160 0x84, 0x53, 0x03, 0x45, 0x08, 0x60, 0x26, 0x33,
161 0x84, 0x51, 0x03, 0x25, 0xE4, 0x10, 0x60, 0x00,
162 0x80, 0x40, 0xC0, 0x81, 0x02, 0x70, 0x00, 0x7F,
163 0x08, 0x00, 0x50, 0x28, 0x08, 0x60, 0x06, 0x11,
164 0x84, 0xCB, 0x03, 0x65, 0xE0, 0x10, 0x51, 0xC4,
165 0x84, 0x80, 0x41, 0x00, 0x02, 0xA3, 0x00, 0x10,
166 0xE4, 0x00, 0x00, 0x00, 0x84, 0xD0, 0x04, 0x01,
167 0x84, 0xA2, 0x04, 0x03, 0x84, 0xD2, 0x50, 0x01,
168 0x84, 0x53, 0x03, 0x25, 0x80, 0x00, 0xC4, 0x04,
169 0x8F, 0x30, 0x00, 0x00, 0x88, 0x67, 0x03, 0x00,
170 0xE4, 0x00, 0x11, 0x9B, 0xEE, 0x64, 0x60, 0x00,
171 0x02, 0xD3, 0x00, 0x10, 0x88, 0x47, 0x00, 0x80,
172 0x10, 0x00, 0x18, 0x02, 0x86, 0xC1, 0x01, 0x9D,
173 0x00
174 };
175 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
176 if (res < 0)
177 return res;
178 }
179
180 res = tas5825m_set_page(dev, 0x06);
181 if (res < 0)
182 return res;
183
184 {
185 const uint8_t values[] = {
186 0xE0, 0x10, 0x31, 0xC7, 0x86, 0xC9, 0x01, 0x9E,
187 0x80, 0x00, 0xC4, 0x02, 0x02, 0x50, 0x01, 0x9C,
188 0x00, 0xFF, 0x21, 0x65, 0x00, 0xFC, 0x00, 0x00,
189 0x02, 0x60, 0x00, 0x01, 0x02, 0x70, 0x00, 0x04,
190 0x84, 0xC8, 0x04, 0x10, 0x84, 0x41, 0x03, 0x67,
191 0x84, 0x51, 0x03, 0x6D, 0x84, 0xC0, 0x04, 0x02,
192 0x04, 0x80, 0x91, 0x20, 0x08, 0x60, 0x26, 0x30,
193 0x02, 0x78, 0x00, 0x03, 0x02, 0x68, 0x00, 0x02,
194 0x0D, 0x00, 0x10, 0x10, 0x08, 0x60, 0x06, 0x12,
195 0x84, 0x49, 0x03, 0x2F, 0xE0, 0x80, 0x71, 0xA9,
196 0x02, 0x28, 0x03, 0x55, 0x84, 0x82, 0x00, 0xE0,
197 0x84, 0x2A, 0x04, 0x00, 0xF0, 0x1C, 0x11, 0xAA,
198 0xF0, 0x1C, 0x11, 0xAB, 0xF0, 0x1C, 0x11, 0xAC,
199 0xF0, 0x1F, 0x11, 0xAD, 0x86, 0xA1, 0x01, 0xAE,
200 0x80, 0x27, 0x80, 0xE8, 0x84, 0x82, 0x04, 0x07,
201 0x00
202 };
203 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
204 if (res < 0)
205 return res;
206 }
207
208 res = tas5825m_set_page(dev, 0x07);
209 if (res < 0)
210 return res;
211
212 {
213 const uint8_t values[] = {
214 0xE0, 0x80, 0x60, 0x00, 0x84, 0x82, 0x40, 0xE0,
215 0x84, 0x43, 0x03, 0x67, 0xF0, 0x1C, 0x51, 0xAF,
216 0xF0, 0x1C, 0x51, 0xB0, 0xF0, 0x1C, 0x51, 0xB1,
217 0xF0, 0x1F, 0x51, 0xB2, 0x02, 0x78, 0x00, 0x05,
218 0x80, 0x27, 0x80, 0xEA, 0x84, 0x82, 0x04, 0x08,
219 0x02, 0x70, 0x00, 0x06, 0x84, 0x53, 0x03, 0x6D,
220 0x84, 0x80, 0x04, 0x07, 0xE0, 0x00, 0x00, 0x82,
221 0xF0, 0x81, 0x00, 0x80, 0x80, 0x07, 0x12, 0xBC,
222 0x86, 0xA1, 0x01, 0x9F, 0xE2, 0x57, 0xA0, 0x00,
223 0x84, 0x82, 0x04, 0x09, 0x84, 0x82, 0x20, 0xE0,
224 0xF0, 0x1C, 0x31, 0xA0, 0xF0, 0x1C, 0x31, 0xA1,
225 0xF0, 0x1C, 0x31, 0xA2, 0xF0, 0x1F, 0x31, 0xA3,
226 0xE4, 0x00, 0x11, 0xA6, 0x80, 0x27, 0x80, 0xE1,
227 0xF4, 0x00, 0x11, 0xA4, 0xF4, 0x1D, 0x31, 0xA5,
228 0xF4, 0x1C, 0x31, 0xA7, 0xF4, 0x1F, 0x31, 0xA8,
229 0x00
230 };
231 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
232 if (res < 0)
233 return res;
234 }
235
236 res = tas5825m_set_page(dev, 0x08);
237 if (res < 0)
238 return res;
239
240 {
241 const uint8_t values[] = {
242 0x02, 0x78, 0x00, 0x03, 0xE2, 0x6A, 0xF1, 0xC3,
243 0x80, 0x67, 0x80, 0xE9, 0x84, 0x4B, 0x03, 0x2F,
244 0x02, 0x70, 0x00, 0x04, 0x84, 0x59, 0x03, 0x3D,
245 0x80, 0x07, 0x00, 0x80, 0xE0, 0x00, 0x11, 0xA9,
246 0x84, 0x82, 0x60, 0xE0, 0x8E, 0xFC, 0x04, 0x10,
247 0xF0, 0x1C, 0x71, 0xAA, 0xF0, 0x1C, 0x71, 0xAB,
248 0xF0, 0x1C, 0x71, 0xAC, 0xF0, 0x1F, 0x71, 0xAD,
249 0x86, 0xA1, 0x01, 0xC2, 0x80, 0x27, 0x80, 0xEB,
250 0x60, 0x00, 0x00, 0x00, 0x84, 0x5B, 0x03, 0x3D,
251 0x80, 0x00, 0x00, 0x81, 0x0D, 0x00, 0x10, 0x20,
252 0x84, 0x59, 0x03, 0x3F, 0x08, 0x44, 0x26, 0x30,
253 0x84, 0xC3, 0x03, 0x57, 0x84, 0xC2, 0x60, 0xE0,
254 0xE0, 0x10, 0x11, 0xB3, 0xF0, 0x1C, 0x71, 0xB4,
255 0xF0, 0x1C, 0x71, 0xB5, 0xF0, 0x1C, 0x71, 0xB6,
256 0xF0, 0x1F, 0x71, 0xB7, 0x86, 0xA1, 0x01, 0xC6,
257 0x00
258 };
259 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
260 if (res < 0)
261 return res;
262 }
263
264 res = tas5825m_set_page(dev, 0x09);
265 if (res < 0)
266 return res;
267
268 {
269 const uint8_t values[] = {
270 0x80, 0x27, 0x80, 0xEB, 0x84, 0x5B, 0x03, 0x3F,
271 0x84, 0x82, 0x04, 0x0D, 0x84, 0x41, 0x03, 0x76,
272 0xE2, 0x6B, 0xE0, 0x00, 0x80, 0x07, 0x00, 0x80,
273 0xE0, 0x81, 0x31, 0xB8, 0x84, 0x82, 0x00, 0xE0,
274 0xF0, 0x1C, 0x11, 0xB9, 0xF0, 0x1C, 0x11, 0xBA,
275 0xF0, 0x1C, 0x11, 0xBB, 0xF0, 0x1F, 0x11, 0xBC,
276 0x86, 0xA1, 0x01, 0xC5, 0x80, 0x27, 0x80, 0xE8,
277 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x81,
278 0x84, 0xA1, 0x03, 0x5D, 0xE0, 0x81, 0xA0, 0x00,
279 0x01, 0x07, 0x11, 0x20, 0x08, 0x44, 0x26, 0x30,
280 0x08, 0x00, 0x98, 0x4A, 0x84, 0x43, 0x03, 0x76,
281 0x08, 0x00, 0x30, 0x48, 0x02, 0xCA, 0x00, 0x01,
282 0x08, 0x60, 0x26, 0x32, 0x84, 0x41, 0x03, 0x46,
283 0xE4, 0x10, 0x40, 0x00, 0x80, 0x40, 0xC0, 0x82,
284 0x84, 0xC2, 0x00, 0xE0, 0x84, 0xC3, 0x03, 0x5F,
285 0x00
286 };
287 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
288 if (res < 0)
289 return res;
290 }
291
292 res = tas5825m_set_page(dev, 0x0A);
293 if (res < 0)
294 return res;
295
296 {
297 const uint8_t values[] = {
298 0x08, 0x00, 0x50, 0x48, 0xE0, 0x10, 0x11, 0xBD,
299 0x02, 0xC2, 0x00, 0x02, 0x08, 0x60, 0x06, 0x12,
300 0x84, 0xD3, 0x03, 0x5D, 0xF0, 0x1C, 0x11, 0xBE,
301 0xF0, 0x1C, 0x11, 0xBF, 0xF0, 0x1C, 0x11, 0xC0,
302 0xF0, 0x1F, 0x11, 0xC1, 0x84, 0xA1, 0x03, 0x66,
303 0x80, 0x27, 0x80, 0xE8, 0xE0, 0x00, 0x00, 0x00,
304 0x80, 0x07, 0x00, 0x83, 0x08, 0x00, 0x98, 0x6B,
305 0x08, 0x00, 0x30, 0x68, 0x84, 0x43, 0x03, 0x46,
306 0x08, 0x60, 0x26, 0x33, 0x84, 0x51, 0x03, 0x26,
307 0xE4, 0x10, 0x60, 0x00, 0x80, 0x40, 0xC0, 0x81,
308 0x02, 0x70, 0x00, 0x7F, 0x08, 0x00, 0x50, 0x28,
309 0x08, 0x60, 0x06, 0x11, 0x8C, 0xFF, 0x03, 0x24,
310 0x84, 0xCB, 0x03, 0x66, 0xE0, 0x10, 0x51, 0xC4,
311 0x84, 0x80, 0x41, 0x00, 0x02, 0xA3, 0x00, 0x10,
312 0xE4, 0x00, 0x00, 0x00, 0x84, 0xD0, 0x04, 0x09,
313 0x00
314 };
315 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
316 if (res < 0)
317 return res;
318 }
319
320 res = tas5825m_set_page(dev, 0x0B);
321 if (res < 0)
322 return res;
323
324 {
325 const uint8_t values[] = {
326 0x84, 0xA2, 0x04, 0x0B, 0x84, 0xD2, 0x50, 0x01,
327 0x84, 0x53, 0x03, 0x26, 0x80, 0x00, 0xC4, 0x0C,
328 0x8F, 0x30, 0x00, 0x00, 0x88, 0x67, 0x03, 0x00,
329 0xE4, 0x00, 0x11, 0x9B, 0xEE, 0x64, 0x80, 0x00,
330 0x02, 0xD3, 0x00, 0x10, 0x88, 0x47, 0x00, 0x80,
331 0x10, 0x00, 0x18, 0x02, 0x86, 0xC1, 0x01, 0x9D,
332 0xE0, 0x10, 0x31, 0xC7, 0x86, 0xC9, 0x01, 0x9E,
333 0x80, 0x00, 0xC4, 0x0A, 0x02, 0x50, 0x01, 0x9C,
334 0x00, 0xFF, 0x21, 0x65, 0x00, 0xFC, 0x00, 0x00,
335 0x02, 0x70, 0x00, 0x04, 0x02, 0x68, 0x00, 0x01,
336 0x02, 0x60, 0x00, 0x03, 0x02, 0x78, 0x00, 0x02,
337 0x84, 0x49, 0x03, 0x6E, 0x84, 0x41, 0x03, 0x6F,
338 0x84, 0xC8, 0x04, 0x10, 0x84, 0xC0, 0x04, 0x0A,
339 0x04, 0x81, 0x91, 0x20, 0x08, 0x60, 0x26, 0x30,
340 0x0D, 0x00, 0x10, 0x10, 0x08, 0x60, 0x06, 0x12,
341 0x00
342 };
343 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
344 if (res < 0)
345 return res;
346 }
347
348 res = tas5825m_set_page(dev, 0x0C);
349 if (res < 0)
350 return res;
351
352 {
353 const uint8_t values[] = {
354 0x84, 0x00, 0x04, 0x06, 0xE0, 0x81, 0x71, 0xA9,
355 0x84, 0x82, 0x20, 0xE8, 0xF0, 0x1D, 0x31, 0xAA,
356 0xF0, 0x1D, 0x31, 0xAB, 0xF0, 0x1D, 0x31, 0xAC,
357 0xF0, 0x1C, 0x31, 0xAD, 0x86, 0xA1, 0x01, 0xAE,
358 0x80, 0x27, 0x80, 0xF9, 0x84, 0x82, 0x04, 0x0E,
359 0xE0, 0x81, 0x60, 0x00, 0x84, 0x82, 0x00, 0xE8,
360 0x84, 0x4B, 0x03, 0x6E, 0xF0, 0x1D, 0x11, 0xAF,
361 0xF0, 0x1D, 0x11, 0xB0, 0xF0, 0x1D, 0x11, 0xB1,
362 0xF0, 0x1C, 0x11, 0xB2, 0x02, 0xA3, 0x00, 0x1A,
363 0x80, 0x27, 0x80, 0xF8, 0x84, 0x82, 0x04, 0x0F,
364 0xE0, 0x81, 0xC0, 0x00, 0xF0, 0x81, 0xE0, 0x80,
365 0x84, 0x43, 0x03, 0x6F, 0x80, 0x07, 0x12, 0xBD,
366 0x02, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x50, 0x00,
367 0x8F, 0x00, 0x00, 0x11, 0x8F, 0x00, 0xFF, 0xFF,
368 0x84, 0x58, 0x04, 0x01, 0x84, 0xC2, 0x04, 0x00,
369 0x00
370 };
371 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
372 if (res < 0)
373 return res;
374 }
375
376 res = tas5825m_set_page(dev, 0x0D);
377 if (res < 0)
378 return res;
379
380 {
381 const uint8_t values[] = {
382 0x02, 0xC2, 0x60, 0x00, 0x84, 0xA0, 0x61, 0x00,
383 0xE0, 0x20, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
384 0x40, 0x40, 0xA0, 0x00, 0x80, 0x00, 0xC0, 0x82,
385 0x08, 0xFC, 0x48, 0x3A, 0x08, 0xFC, 0x18, 0x50,
386 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x10, 0x00, 0x00,
387 0x86, 0xA0, 0x41, 0x00, 0x40, 0x47, 0x20, 0x00,
388 0x80, 0x00, 0xC0, 0x83, 0x04, 0xE0, 0x3D, 0x1E,
389 0x04, 0x80, 0x11, 0xE0, 0x08, 0x44, 0x26, 0x33,
390 0x02, 0xCB, 0x00, 0x10, 0xE0, 0x10, 0x40, 0x83,
391 0x08, 0x00, 0x28, 0x21, 0x84, 0xCA, 0x61, 0x00,
392 0x80, 0x07, 0x00, 0x81, 0x0C, 0xE0, 0x2C, 0x09,
393 0x84, 0xCA, 0x21, 0x00, 0x00, 0xFC, 0x50, 0x00,
394 0x8F, 0x00, 0x00, 0x01, 0x00
395 };
396 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
397 if (res < 0)
398 return res;
399 }
400
401 res = tas5825m_set_book(dev, 0x78);
402 if (res < 0)
403 return res;
404
405 res = tas5825m_set_page(dev, 0x18);
406 if (res < 0)
407 return res;
408
409 {
410 const uint8_t values[] = {
411 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
412 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
413 0x00, 0x00, 0x00, 0x00, 0x00
414 };
415 res = tas5825m_write_block_at(dev, 0x30, values, ARRAY_SIZE(values));
416 if (res < 0)
417 return res;
418 }
419
420 res = tas5825m_set_page(dev, 0x1B);
421 if (res < 0)
422 return res;
423
424 {
425 const uint8_t values[] = {
426 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x04, 0x00,
427 0x00, 0x00, 0x03, 0x28, 0x00, 0x00, 0x00, 0x00,
428 0x00, 0x00, 0x00, 0x00, 0x00
429 };
430 res = tas5825m_write_block_at(dev, 0x6C, values, ARRAY_SIZE(values));
431 if (res < 0)
432 return res;
433 }
434
435 res = tas5825m_set_page(dev, 0x1C);
436 if (res < 0)
437 return res;
438
439 {
440 const uint8_t values[] = {
441 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
442 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
443 0x00, 0x00, 0x00, 0x00, 0x00
444 };
445 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
446 if (res < 0)
447 return res;
448 }
449
450 {
451 const uint8_t values[] = {
452 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00,
453 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
454 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
455 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
456 0x00
457 };
458 res = tas5825m_write_block_at(dev, 0x1C, values, ARRAY_SIZE(values));
459 if (res < 0)
460 return res;
461 }
462
463 {
464 const uint8_t values[] = {
465 0x00, 0x00, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00,
466 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
468 0x00
469 };
470 res = tas5825m_write_block_at(dev, 0x3C, values, ARRAY_SIZE(values));
471 if (res < 0)
472 return res;
473 }
474
475 {
476 const uint8_t values[] = {
477 0x00, 0x00, 0x03, 0x40, 0x00, 0x00, 0x03, 0x48,
478 0x00, 0x00, 0x03, 0x50, 0x00, 0x00, 0x00, 0x00,
479 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
480 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
481 0x00
482 };
483 res = tas5825m_write_block_at(dev, 0x54, values, ARRAY_SIZE(values));
484 if (res < 0)
485 return res;
486 }
487
488 {
489 const uint8_t values[] = {
490 0x00, 0x00, 0x03, 0x58, 0x00, 0x00, 0x03, 0x60,
491 0x00, 0x00, 0x00, 0x00, 0x00
492 };
493 res = tas5825m_write_block_at(dev, 0x74, values, ARRAY_SIZE(values));
494 if (res < 0)
495 return res;
496 }
497
498 res = tas5825m_set_page(dev, 0x1D);
499 if (res < 0)
500 return res;
501
502 {
503 const uint8_t values[] = {
504 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
505 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
506 0x00, 0x00, 0x00, 0x00, 0x00
507 };
508 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
509 if (res < 0)
510 return res;
511 }
512
513 {
514 const uint8_t values[] = {
515 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
516 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
517 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
518 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
519 0x00
520 };
521 res = tas5825m_write_block_at(dev, 0x1C, values, ARRAY_SIZE(values));
522 if (res < 0)
523 return res;
524 }
525
526 {
527 const uint8_t values[] = {
528 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
529 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
530 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
531 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
532 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
533 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
534 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
535 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
536 0x00, 0x00, 0x00, 0x00, 0x00
537 };
538 res = tas5825m_write_block_at(dev, 0x3C, values, ARRAY_SIZE(values));
539 if (res < 0)
540 return res;
541 }
542
543 res = tas5825m_set_page(dev, 0x1E);
544 if (res < 0)
545 return res;
546
547 {
548 const uint8_t values[] = {
549 0x00, 0x00, 0x00, 0x00, 0x00
550 };
551 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
552 if (res < 0)
553 return res;
554 }
555
556 {
557 const uint8_t values[] = {
558 0x00, 0x00, 0x03, 0x68, 0x00, 0x00, 0x00, 0x00,
559 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
560 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
561 0x00
562 };
563 res = tas5825m_write_block_at(dev, 0x0C, values, ARRAY_SIZE(values));
564 if (res < 0)
565 return res;
566 }
567
568 {
569 const uint8_t values[] = {
570 0x00, 0x00, 0x03, 0x70, 0x00, 0x00, 0x03, 0x78,
571 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00,
572 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
573 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
574 0x00
575 };
576 res = tas5825m_write_block_at(dev, 0x24, values, ARRAY_SIZE(values));
577 if (res < 0)
578 return res;
579 }
580
581 {
582 const uint8_t values[] = {
583 0x00, 0x00, 0x04, 0x88, 0x00, 0x00, 0x04, 0x90,
584 0x00
585 };
586 res = tas5825m_write_block_at(dev, 0x44, values, ARRAY_SIZE(values));
587 if (res < 0)
588 return res;
589 }
590
591 res = tas5825m_set_book(dev, 0x8C);
592 if (res < 0)
593 return res;
594
595 res = tas5825m_set_page(dev, 0x0E);
596 if (res < 0)
597 return res;
598
599 {
600 const uint8_t values[] = {
601 0x00, 0xA7, 0x26, 0x4A, 0x7F, 0xFF, 0xFF, 0xFF,
602 0x00, 0x20, 0xC4, 0x9C, 0x00, 0x20, 0xC4, 0x9C,
603 0x00, 0x00, 0x68, 0xDB, 0x00, 0x00, 0xD1, 0xB7,
604 0x00, 0x00, 0x68, 0xDB, 0x0F, 0xA4, 0xA8, 0xC1,
605 0xF8, 0x59, 0x7F, 0x63, 0x00
606 };
607 res = tas5825m_write_block_at(dev, 0x5C, values, ARRAY_SIZE(values));
608 if (res < 0)
609 return res;
610 }
611
612 res = tas5825m_set_page(dev, 0x0F);
613 if (res < 0)
614 return res;
615
616 {
617 const uint8_t values[] = {
618 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
619 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
620 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xB7, 0xE9,
621 0x00, 0x5F, 0x6F, 0xD2, 0x00, 0x2F, 0xB7, 0xE9,
622 0x0B, 0x1E, 0x4F, 0x76, 0xFC, 0x23, 0x05, 0x54,
623 0xFA, 0x41, 0x20, 0x5C, 0x0B, 0x7D, 0xBF, 0x48,
624 0xFA, 0x41, 0x20, 0x5C, 0x0B, 0x1E, 0x4F, 0x76,
625 0xFC, 0x23, 0x05, 0x54, 0x00, 0x04, 0x81, 0x6F,
626 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
627 0x0F, 0x3F, 0xE5, 0xC9, 0xF8, 0xBB, 0x98, 0xC8,
628 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
629 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
630 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x81, 0x6F,
631 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
632 0x0F, 0x3F, 0xE5, 0xC9, 0xF8, 0xBB, 0x98, 0xC8,
633 0x00
634 };
635 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
636 if (res < 0)
637 return res;
638 }
639
640 res = tas5825m_set_page(dev, 0x10);
641 if (res < 0)
642 return res;
643
644 {
645 const uint8_t values[] = {
646 0x00, 0x89, 0xA0, 0x27, 0x7F, 0xEC, 0x56, 0xD5,
647 0x7F, 0xFC, 0xB9, 0x23, 0x00, 0x89, 0xA0, 0x27,
648 0x7F, 0xEC, 0x56, 0xD5, 0x7F, 0xFC, 0xB9, 0x23,
649 0x00
650 };
651 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
652 if (res < 0)
653 return res;
654 }
655
656 res = tas5825m_set_book(dev, 0x00);
657 if (res < 0)
658 return res;
659
660 res = tas5825m_write_at(dev, 0x40, 0x00);
661 if (res < 0)
662 return res;
663
664 {
665 const uint8_t values[] = {
666 0x11, 0xFF, 0x00
667 };
668 res = tas5825m_write_block_at(dev, 0x7D, values, ARRAY_SIZE(values));
669 if (res < 0)
670 return res;
671 }
672
673 res = tas5825m_set_page(dev, 0x01);
674 if (res < 0)
675 return res;
676
677 res = tas5825m_write_at(dev, 0x51, 0x05);
678 if (res < 0)
679 return res;
680
681 res = tas5825m_set_page(dev, 0x02);
682 if (res < 0)
683 return res;
684
685 res = tas5825m_write_at(dev, 0x19, 0xDF);
686 if (res < 0)
687 return res;
688
689 res = tas5825m_set_page(dev, 0x00);
690 if (res < 0)
691 return res;
692
693 res = tas5825m_write_at(dev, 0x46, 0x11);
694 if (res < 0)
695 return res;
696
697 res = tas5825m_write_at(dev, 0x02, 0x00);
698 if (res < 0)
699 return res;
700
701 res = tas5825m_write_at(dev, 0x53, 0x01);
702 if (res < 0)
703 return res;
704
705 res = tas5825m_write_at(dev, 0x54, 0x00);
706 if (res < 0)
707 return res;
708
709 res = tas5825m_write_at(dev, 0x03, 0x02);
710 if (res < 0)
711 return res;
712
713 res = tas5825m_write_at(dev, 0x7F, 0x8C);
714 if (res < 0)
715 return res;
716
717 res = tas5825m_set_page(dev, 0x01);
718 if (res < 0)
719 return res;
720
721 {
722 const uint8_t values[] = {
723 0x00, 0x71, 0x94, 0x9A, 0x00
724 };
725 res = tas5825m_write_block_at(dev, 0x2C, values, ARRAY_SIZE(values));
726 if (res < 0)
727 return res;
728 }
729
730 res = tas5825m_set_page(dev, 0x0A);
731 if (res < 0)
732 return res;
733
734 {
735 const uint8_t values[] = {
736 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
737 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
738 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
739 0x00, 0x00, 0x00, 0x00, 0x00
740 };
741 res = tas5825m_write_block_at(dev, 0x64, values, ARRAY_SIZE(values));
742 if (res < 0)
743 return res;
744 }
745
746 res = tas5825m_set_page(dev, 0x0B);
747 if (res < 0)
748 return res;
749
750 {
751 const uint8_t values[] = {
752 0x00, 0x80, 0x00, 0x00, 0x00, 0x28, 0x7A, 0x27,
753 0x00, 0x28, 0x7A, 0x27, 0x00, 0x80, 0x00, 0x00,
754 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
755 0x00, 0x80, 0x00, 0x00, 0x00
756 };
757 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
758 if (res < 0)
759 return res;
760 }
761
762 {
763 const uint8_t values[] = {
764 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
765 0x00, 0x00, 0x57, 0x62, 0x00, 0x00, 0x00, 0x00,
766 0x00
767 };
768 res = tas5825m_write_block_at(dev, 0x28, values, ARRAY_SIZE(values));
769 if (res < 0)
770 return res;
771 }
772
773 res = tas5825m_set_page(dev, 0x0E);
774 if (res < 0)
775 return res;
776
777 {
778 const uint8_t values[] = {
779 0x00, 0x03, 0x69, 0xC5, 0x01, 0x24, 0x02, 0xCB,
780 0x00, 0x22, 0x1D, 0x95, 0x00, 0x03, 0x69, 0xC5,
781 0x00
782 };
783 res = tas5825m_write_block_at(dev, 0x5C, values, ARRAY_SIZE(values));
784 if (res < 0)
785 return res;
786 }
787
788 res = tas5825m_set_page(dev, 0x0F);
789 if (res < 0)
790 return res;
791
792 {
793 const uint8_t values[] = {
794 0x7F, 0xF9, 0x2C, 0x60, 0x09, 0xC6, 0x4C, 0xCF,
795 0x00
796 };
797 res = tas5825m_write_block_at(dev, 0x5C, values, ARRAY_SIZE(values));
798 if (res < 0)
799 return res;
800 }
801
802 res = tas5825m_set_page(dev, 0x07);
803 if (res < 0)
804 return res;
805
806 {
807 const uint8_t values[] = {
808 0x00, 0x80, 0x00, 0x00, 0x00
809 };
810 res = tas5825m_write_block_at(dev, 0x64, values, ARRAY_SIZE(values));
811 if (res < 0)
812 return res;
813 }
814
815 {
816 const uint8_t values[] = {
817 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
818 0x00
819 };
820 res = tas5825m_write_block_at(dev, 0x6C, values, ARRAY_SIZE(values));
821 if (res < 0)
822 return res;
823 }
824
825 res = tas5825m_set_book(dev, 0xAA);
826 if (res < 0)
827 return res;
828
829 res = tas5825m_set_page(dev, 0x01);
830 if (res < 0)
831 return res;
832
833 {
834 const uint8_t values[] = {
835 0x05, 0xA9, 0xDF, 0x7B, 0x00, 0x00, 0x00, 0x00,
836 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
837 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
838 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
839 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
840 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
841 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
842 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
843 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
844 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
845 0x00
846 };
847 res = tas5825m_write_block_at(dev, 0x30, values, ARRAY_SIZE(values));
848 if (res < 0)
849 return res;
850 }
851
852 res = tas5825m_set_page(dev, 0x02);
853 if (res < 0)
854 return res;
855
856 {
857 const uint8_t values[] = {
858 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
859 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
860 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
861 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
862 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
863 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
864 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
865 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
866 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
867 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
868 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
869 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
870 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
871 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
872 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
873 0x00
874 };
875 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
876 if (res < 0)
877 return res;
878 }
879
880 res = tas5825m_set_page(dev, 0x03);
881 if (res < 0)
882 return res;
883
884 {
885 const uint8_t values[] = {
886 0x07, 0xE0, 0x03, 0x27, 0xF0, 0x3F, 0xF9, 0xB1,
887 0x07, 0xE0, 0x03, 0x27, 0x0F, 0xBF, 0xC1, 0x46,
888 0xF8, 0x3F, 0xB4, 0xA8, 0x07, 0xE8, 0x73, 0x5B,
889 0xF0, 0x2F, 0x19, 0x4B, 0x07, 0xE8, 0x73, 0x5B,
890 0x0F, 0xD0, 0xA1, 0x62, 0xF8, 0x2E, 0xD3, 0xF8,
891 0x07, 0xE8, 0x65, 0x1C, 0xF0, 0x4C, 0x95, 0x0B,
892 0x07, 0xCC, 0x6D, 0xBC, 0x0F, 0xB3, 0x6A, 0xF5,
893 0xF8, 0x4B, 0x2D, 0x28, 0x08, 0x1D, 0xB8, 0xB2,
894 0xF0, 0x12, 0x40, 0x2B, 0x07, 0xD1, 0x74, 0x3E,
895 0x0F, 0xEE, 0x30, 0x8F, 0xF8, 0x11, 0x43, 0xC9,
896 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
897 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
898 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
899 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
900 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
901 0x00
902 };
903 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
904 if (res < 0)
905 return res;
906 }
907
908 res = tas5825m_set_page(dev, 0x04);
909 if (res < 0)
910 return res;
911
912 {
913 const uint8_t values[] = {
914 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
915 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
916 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
917 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
918 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
919 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
920 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
921 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
922 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
923 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
924 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
925 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
926 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
927 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
928 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
929 0x00
930 };
931 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
932 if (res < 0)
933 return res;
934 }
935
936 res = tas5825m_set_page(dev, 0x05);
937 if (res < 0)
938 return res;
939
940 {
941 const uint8_t values[] = {
942 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
943 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
944 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
945 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
946 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
947 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
948 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
949 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x03, 0x27,
950 0xF0, 0x3F, 0xF9, 0xB1, 0x07, 0xE0, 0x03, 0x27,
951 0x0F, 0xBF, 0xC1, 0x46, 0xF8, 0x3F, 0xB4, 0xA8,
952 0x07, 0xE8, 0x73, 0x5B, 0xF0, 0x2F, 0x19, 0x4B,
953 0x07, 0xE8, 0x73, 0x5B, 0x0F, 0xD0, 0xA1, 0x62,
954 0xF8, 0x2E, 0xD3, 0xF8, 0x07, 0xE8, 0x65, 0x1C,
955 0xF0, 0x4C, 0x95, 0x0B, 0x07, 0xCC, 0x6D, 0xBC,
956 0x0F, 0xB3, 0x6A, 0xF5, 0xF8, 0x4B, 0x2D, 0x28,
957 0x00
958 };
959 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
960 if (res < 0)
961 return res;
962 }
963
964 res = tas5825m_set_page(dev, 0x06);
965 if (res < 0)
966 return res;
967
968 {
969 const uint8_t values[] = {
970 0x08, 0x1D, 0xB8, 0xB2, 0xF0, 0x12, 0x40, 0x2B,
971 0x07, 0xD1, 0x74, 0x3E, 0x0F, 0xEE, 0x30, 0x8F,
972 0xF8, 0x11, 0x43, 0xC9, 0x08, 0x00, 0x00, 0x00,
973 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
974 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
975 0x00
976 };
977 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
978 if (res < 0)
979 return res;
980 }
981
982 res = tas5825m_set_page(dev, 0x0E);
983 if (res < 0)
984 return res;
985
986 {
987 const uint8_t values[] = {
988 0x00, 0x88, 0xF4, 0xB0, 0xFF, 0x02, 0x86, 0x19,
989 0x00, 0x75, 0xF1, 0x4C, 0x0F, 0xE2, 0x49, 0x11,
990 0xF8, 0x1C, 0x4A, 0xDB, 0x00
991 };
992 res = tas5825m_write_block_at(dev, 0x6C, values, ARRAY_SIZE(values));
993 if (res < 0)
994 return res;
995 }
996
997 res = tas5825m_set_page(dev, 0x0F);
998 if (res < 0)
999 return res;
1000
1001 {
1002 const uint8_t values[] = {
1003 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1004 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1005 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF4, 0x49, 0x81,
1006 0xFF, 0xE8, 0x93, 0x02, 0xFF, 0xF4, 0x49, 0x81,
1007 0x0D, 0x94, 0x7A, 0x64, 0xFA, 0x3C, 0xAB, 0xA1,
1008 0x06, 0xD5, 0xF3, 0xB1, 0xF2, 0x54, 0x18, 0x9F,
1009 0x06, 0xD5, 0xF3, 0xB1, 0x0D, 0x94, 0x7A, 0x64,
1010 0xFA, 0x3C, 0xAB, 0xA1, 0x00, 0x00, 0x38, 0xE4,
1011 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1012 0x0F, 0xD5, 0x55, 0x55, 0xF8, 0x2A, 0x71, 0xC7,
1013 0x00
1014 };
1015 res = tas5825m_write_block_at(dev, 0x08, values, ARRAY_SIZE(values));
1016 if (res < 0)
1017 return res;
1018 }
1019
1020 res = tas5825m_set_book(dev, 0x00);
1021 if (res < 0)
1022 return res;
1023
1024 res = tas5825m_write_at(dev, 0x30, 0x00);
1025 if (res < 0)
1026 return res;
1027
1028 res = tas5825m_write_at(dev, 0x60, 0x02);
1029 if (res < 0)
1030 return res;
1031
1032 res = tas5825m_write_at(dev, 0x62, 0x09);
1033 if (res < 0)
1034 return res;
1035
1036 res = tas5825m_write_at(dev, 0x4C, 0x30);
1037 if (res < 0)
1038 return res;
1039
1040 res = tas5825m_write_at(dev, 0x03, 0x03);
1041 if (res < 0)
1042 return res;
1043
1044 res = tas5825m_write_at(dev, 0x78, 0x80);
1045 if (res < 0)
1046 return res;
1047
1048 res = tas5825m_set_page(dev, 0x00);
1049 if (res < 0)
1050 return res;
1051
1052 return 0;
1053}