1 // SPDX-License-Identifier: GPL-2.0-only 2 // 3 // rt1320-sdw.c -- rt1320 SDCA ALSA SoC amplifier audio driver 4 // 5 // Copyright(c) 2024 Realtek Semiconductor Corp. 6 // 7 // 8 #include <linux/delay.h> 9 #include <linux/device.h> 10 #include <linux/pm_runtime.h> 11 #include <linux/mod_devicetable.h> 12 #include <linux/module.h> 13 #include <linux/regmap.h> 14 #include <linux/dmi.h> 15 #include <linux/firmware.h> 16 #include <sound/core.h> 17 #include <sound/pcm.h> 18 #include <sound/pcm_params.h> 19 #include <sound/soc-dapm.h> 20 #include <sound/initval.h> 21 #include <sound/tlv.h> 22 #include <sound/sdw.h> 23 #include "rt1320-sdw.h" 24 25 /* 26 * The 'blind writes' is an SDCA term to deal with platform-specific initialization. 27 * It might include vendor-specific or SDCA control registers. 28 */ 29 static const struct reg_sequence rt1320_blind_write[] = { 30 { 0xc003, 0xe0 }, 31 { 0xc01b, 0xfc }, 32 { 0xc5c3, 0xf2 }, 33 { 0xc5c2, 0x00 }, 34 { 0xc5c6, 0x10 }, 35 { 0xc5c4, 0x12 }, 36 { 0xc5c8, 0x03 }, 37 { 0xc5d8, 0x0a }, 38 { 0xc5f7, 0x22 }, 39 { 0xc5f6, 0x22 }, 40 { 0xc5d0, 0x0f }, 41 { 0xc5d1, 0x89 }, 42 { 0xc057, 0x51 }, 43 { 0xc054, 0x35 }, 44 { 0xc053, 0x55 }, 45 { 0xc052, 0x55 }, 46 { 0xc051, 0x13 }, 47 { 0xc050, 0x15 }, 48 { 0xc060, 0x77 }, 49 { 0xc061, 0x55 }, 50 { 0xc063, 0x55 }, 51 { 0xc065, 0xa5 }, 52 { 0xc06b, 0x0a }, 53 { 0xca05, 0xd6 }, 54 { 0xca25, 0xd6 }, 55 { 0xcd00, 0x05 }, 56 { 0xc604, 0x40 }, 57 { 0xc609, 0x40 }, 58 { 0xc046, 0xff }, 59 { 0xc045, 0xff }, 60 { 0xc044, 0xff }, 61 { 0xc043, 0xff }, 62 { 0xc042, 0xff }, 63 { 0xc041, 0xff }, 64 { 0xc040, 0xff }, 65 { 0xcc10, 0x01 }, 66 { 0xc700, 0xf0 }, 67 { 0xc701, 0x13 }, 68 { 0xc901, 0x04 }, 69 { 0xc900, 0x73 }, 70 { 0xde03, 0x05 }, 71 { 0xdd0b, 0x0d }, 72 { 0xdd0a, 0xff }, 73 { 0xdd09, 0x0d }, 74 { 0xdd08, 0xff }, 75 { 0xc570, 0x08 }, 76 { 0xe803, 0xbe }, 77 { 0xc003, 0xc0 }, 78 { 0xc081, 0xfe }, 79 { 0xce31, 0x0d }, 80 { 0xce30, 0xae }, 81 { 0xce37, 0x0b }, 82 { 0xce36, 0xd2 }, 83 { 0xce39, 0x04 }, 84 { 0xce38, 0x80 }, 85 { 0xce3f, 0x00 }, 86 { 0xce3e, 0x00 }, 87 { 0xd470, 0x8b }, 88 { 0xd471, 0x18 }, 89 { 0xc019, 0x10 }, 90 { 0xd487, 0x3f }, 91 { 0xd486, 0xc3 }, 92 }; 93 94 static const struct reg_sequence rt1320_vc_blind_write[] = { 95 { 0xc003, 0xe0 }, 96 { 0xe80a, 0x01 }, 97 { 0xc5c3, 0xf3 }, 98 { 0xc057, 0x51 }, 99 { 0xc054, 0x35 }, 100 { 0xca05, 0xd6 }, 101 { 0xca07, 0x07 }, 102 { 0xca25, 0xd6 }, 103 { 0xca27, 0x07 }, 104 { 0xc604, 0x40 }, 105 { 0xc609, 0x40 }, 106 { 0xc046, 0xff }, 107 { 0xc045, 0xff }, 108 { 0xda81, 0x14 }, 109 { 0xda8d, 0x14 }, 110 { 0xc044, 0xff }, 111 { 0xc043, 0xff }, 112 { 0xc042, 0xff }, 113 { 0xc041, 0x7f }, 114 { 0xc040, 0xff }, 115 { 0xcc10, 0x01 }, 116 { 0xc700, 0xf0 }, 117 { 0xc701, 0x13 }, 118 { 0xc901, 0x09 }, 119 { 0xc900, 0xd0 }, 120 { 0xde03, 0x05 }, 121 { 0xdd0b, 0x0d }, 122 { 0xdd0a, 0xff }, 123 { 0xdd09, 0x0d }, 124 { 0xdd08, 0xff }, 125 { 0xc570, 0x08 }, 126 { 0xc086, 0x02 }, 127 { 0xc085, 0x7f }, 128 { 0xc084, 0x00 }, 129 { 0xc081, 0xfe }, 130 { 0xf084, 0x0f }, 131 { 0xf083, 0xff }, 132 { 0xf082, 0xff }, 133 { 0xf081, 0xff }, 134 { 0xf080, 0xff }, 135 { 0xe802, 0xf8 }, 136 { 0xe803, 0xbe }, 137 { 0xc003, 0xc0 }, 138 { 0xd470, 0xec }, 139 { 0xd471, 0x3a }, 140 { 0xd474, 0x11 }, 141 { 0xd475, 0x32 }, 142 { 0xd478, 0x64 }, 143 { 0xd479, 0x20 }, 144 { 0xd47a, 0x10 }, 145 { 0xd47c, 0xff }, 146 { 0xc019, 0x10 }, 147 { 0xd487, 0x0b }, 148 { 0xd487, 0x3b }, 149 { 0xd486, 0xc3 }, 150 { 0xc598, 0x04 }, 151 { 0xd500, 0x00 }, 152 { 0xd500, 0x17 }, 153 { 0xd600, 0x01 }, 154 { 0xd601, 0x02 }, 155 { 0xd602, 0x03 }, 156 { 0xd603, 0x04 }, 157 { 0xd64c, 0x03 }, 158 { 0xd64d, 0x03 }, 159 { 0xd64e, 0x03 }, 160 { 0xd64f, 0x03 }, 161 { 0xd650, 0x03 }, 162 { 0xd651, 0x03 }, 163 { 0xd652, 0x03 }, 164 { 0xd610, 0x01 }, 165 { 0xd608, 0x03 }, 166 { 0xd609, 0x00 }, 167 }; 168 169 static const struct reg_sequence rt1320_vc_patch_code_write[] = { 170 { 0x10007000, 0x37 }, 171 { 0x10007001, 0x77 }, 172 { 0x10007002, 0x00 }, 173 { 0x10007003, 0x10 }, 174 { 0x10007004, 0xb7 }, 175 { 0x10007005, 0xe7 }, 176 { 0x10007006, 0x00 }, 177 { 0x10007007, 0x10 }, 178 { 0x10007008, 0x13 }, 179 { 0x10007009, 0x07 }, 180 { 0x1000700a, 0x87 }, 181 { 0x1000700b, 0x48 }, 182 { 0x1000700c, 0x23 }, 183 { 0x1000700d, 0xa6 }, 184 { 0x1000700e, 0xe7 }, 185 { 0x1000700f, 0xee }, 186 { 0x10007010, 0x37 }, 187 { 0x10007011, 0x77 }, 188 { 0x10007012, 0x00 }, 189 { 0x10007013, 0x10 }, 190 { 0x10007014, 0x13 }, 191 { 0x10007015, 0x07 }, 192 { 0x10007016, 0x87 }, 193 { 0x10007017, 0x56 }, 194 { 0x10007018, 0x23 }, 195 { 0x10007019, 0xac }, 196 { 0x1000701a, 0xe7 }, 197 { 0x1000701b, 0xde }, 198 { 0x1000701c, 0x37 }, 199 { 0x1000701d, 0x77 }, 200 { 0x1000701e, 0x00 }, 201 { 0x1000701f, 0x10 }, 202 { 0x10007020, 0x13 }, 203 { 0x10007021, 0x07 }, 204 { 0x10007022, 0xc7 }, 205 { 0x10007023, 0x5f }, 206 { 0x10007024, 0x23 }, 207 { 0x10007025, 0xae }, 208 { 0x10007026, 0xe7 }, 209 { 0x10007027, 0xdc }, 210 { 0x10007028, 0x37 }, 211 { 0x10007029, 0x87 }, 212 { 0x1000702a, 0x00 }, 213 { 0x1000702b, 0x10 }, 214 { 0x1000702c, 0x13 }, 215 { 0x1000702d, 0x07 }, 216 { 0x1000702e, 0xc7 }, 217 { 0x1000702f, 0x86 }, 218 { 0x10007030, 0x23 }, 219 { 0x10007031, 0xae }, 220 { 0x10007032, 0xe7 }, 221 { 0x10007033, 0xe6 }, 222 { 0x10007034, 0x37 }, 223 { 0x10007035, 0x77 }, 224 { 0x10007036, 0x00 }, 225 { 0x10007037, 0x10 }, 226 { 0x10007038, 0x13 }, 227 { 0x10007039, 0x07 }, 228 { 0x1000703a, 0x07 }, 229 { 0x1000703b, 0x40 }, 230 { 0x1000703c, 0x23 }, 231 { 0x1000703d, 0xa6 }, 232 { 0x1000703e, 0xe7 }, 233 { 0x1000703f, 0xe8 }, 234 { 0x10007040, 0x37 }, 235 { 0x10007041, 0x77 }, 236 { 0x10007042, 0x00 }, 237 { 0x10007043, 0x10 }, 238 { 0x10007044, 0x13 }, 239 { 0x10007045, 0x07 }, 240 { 0x10007046, 0xc7 }, 241 { 0x10007047, 0x63 }, 242 { 0x10007048, 0x23 }, 243 { 0x10007049, 0xa2 }, 244 { 0x1000704a, 0xe7 }, 245 { 0x1000704b, 0xec }, 246 { 0x1000704c, 0x37 }, 247 { 0x1000704d, 0x77 }, 248 { 0x1000704e, 0x00 }, 249 { 0x1000704f, 0x10 }, 250 { 0x10007050, 0x13 }, 251 { 0x10007051, 0x07 }, 252 { 0x10007052, 0x47 }, 253 { 0x10007053, 0x6f }, 254 { 0x10007054, 0x23 }, 255 { 0x10007055, 0xa6 }, 256 { 0x10007056, 0xe7 }, 257 { 0x10007057, 0xec }, 258 { 0x10007058, 0x37 }, 259 { 0x10007059, 0x77 }, 260 { 0x1000705a, 0x00 }, 261 { 0x1000705b, 0x10 }, 262 { 0x1000705c, 0x13 }, 263 { 0x1000705d, 0x07 }, 264 { 0x1000705e, 0x07 }, 265 { 0x1000705f, 0x44 }, 266 { 0x10007060, 0x23 }, 267 { 0x10007061, 0xa8 }, 268 { 0x10007062, 0xe7 }, 269 { 0x10007063, 0xec }, 270 { 0x10007064, 0x37 }, 271 { 0x10007065, 0x87 }, 272 { 0x10007066, 0x00 }, 273 { 0x10007067, 0x10 }, 274 { 0x10007068, 0x13 }, 275 { 0x10007069, 0x07 }, 276 { 0x1000706a, 0x87 }, 277 { 0x1000706b, 0x84 }, 278 { 0x1000706c, 0x23 }, 279 { 0x1000706d, 0xa8 }, 280 { 0x1000706e, 0xe7 }, 281 { 0x1000706f, 0xee }, 282 { 0x10007070, 0x37 }, 283 { 0x10007071, 0x87 }, 284 { 0x10007072, 0x00 }, 285 { 0x10007073, 0x10 }, 286 { 0x10007074, 0x13 }, 287 { 0x10007075, 0x07 }, 288 { 0x10007076, 0x47 }, 289 { 0x10007077, 0x97 }, 290 { 0x10007078, 0x23 }, 291 { 0x10007079, 0xaa }, 292 { 0x1000707a, 0xe7 }, 293 { 0x1000707b, 0xee }, 294 { 0x1000707c, 0x67 }, 295 { 0x1000707d, 0x80 }, 296 { 0x1000707e, 0x00 }, 297 { 0x1000707f, 0x00 }, 298 { 0x10007400, 0xb7 }, 299 { 0x10007401, 0xd6 }, 300 { 0x10007402, 0x00 }, 301 { 0x10007403, 0x00 }, 302 { 0x10007404, 0x83 }, 303 { 0x10007405, 0xc7 }, 304 { 0x10007406, 0x06 }, 305 { 0x10007407, 0x47 }, 306 { 0x10007408, 0x93 }, 307 { 0x10007409, 0xf7 }, 308 { 0x1000740a, 0x87 }, 309 { 0x1000740b, 0x00 }, 310 { 0x1000740c, 0x63 }, 311 { 0x1000740d, 0x88 }, 312 { 0x1000740e, 0x07 }, 313 { 0x1000740f, 0x02 }, 314 { 0x10007410, 0x03 }, 315 { 0x10007411, 0xc7 }, 316 { 0x10007412, 0x31 }, 317 { 0x10007413, 0x43 }, 318 { 0x10007414, 0x63 }, 319 { 0x10007415, 0x14 }, 320 { 0x10007416, 0x07 }, 321 { 0x10007417, 0x02 }, 322 { 0x10007418, 0x13 }, 323 { 0x10007419, 0x07 }, 324 { 0x1000741a, 0x10 }, 325 { 0x1000741b, 0x00 }, 326 { 0x1000741c, 0xa3 }, 327 { 0x1000741d, 0x89 }, 328 { 0x1000741e, 0xe1 }, 329 { 0x1000741f, 0x42 }, 330 { 0x10007420, 0x37 }, 331 { 0x10007421, 0xc7 }, 332 { 0x10007422, 0x00 }, 333 { 0x10007423, 0x00 }, 334 { 0x10007424, 0x03 }, 335 { 0x10007425, 0x46 }, 336 { 0x10007426, 0x07 }, 337 { 0x10007427, 0x06 }, 338 { 0x10007428, 0x23 }, 339 { 0x10007429, 0x8a }, 340 { 0x1000742a, 0xc1 }, 341 { 0x1000742b, 0x42 }, 342 { 0x1000742c, 0x83 }, 343 { 0x1000742d, 0xc7 }, 344 { 0x1000742e, 0x46 }, 345 { 0x1000742f, 0x47 }, 346 { 0x10007430, 0x93 }, 347 { 0x10007431, 0xf7 }, 348 { 0x10007432, 0xf7 }, 349 { 0x10007433, 0x0f }, 350 { 0x10007434, 0x23 }, 351 { 0x10007435, 0x00 }, 352 { 0x10007436, 0xf7 }, 353 { 0x10007437, 0x06 }, 354 { 0x10007438, 0x23 }, 355 { 0x10007439, 0x89 }, 356 { 0x1000743a, 0x01 }, 357 { 0x1000743b, 0x42 }, 358 { 0x1000743c, 0x67 }, 359 { 0x1000743d, 0x80 }, 360 { 0x1000743e, 0x00 }, 361 { 0x1000743f, 0x00 }, 362 { 0x10007440, 0x37 }, 363 { 0x10007441, 0xc7 }, 364 { 0x10007442, 0x00 }, 365 { 0x10007443, 0x00 }, 366 { 0x10007444, 0x83 }, 367 { 0x10007445, 0x27 }, 368 { 0x10007446, 0xc7 }, 369 { 0x10007447, 0x5f }, 370 { 0x10007448, 0x13 }, 371 { 0x10007449, 0x05 }, 372 { 0x1000744a, 0x00 }, 373 { 0x1000744b, 0x00 }, 374 { 0x1000744c, 0x23 }, 375 { 0x1000744d, 0xa2 }, 376 { 0x1000744e, 0xf1 }, 377 { 0x1000744f, 0x42 }, 378 { 0x10007450, 0xb7 }, 379 { 0x10007451, 0x06 }, 380 { 0x10007452, 0x00 }, 381 { 0x10007453, 0x10 }, 382 { 0x10007454, 0xb3 }, 383 { 0x10007455, 0xf7 }, 384 { 0x10007456, 0xd7 }, 385 { 0x10007457, 0x00 }, 386 { 0x10007458, 0x63 }, 387 { 0x10007459, 0x86 }, 388 { 0x1000745a, 0x07 }, 389 { 0x1000745b, 0x02 }, 390 { 0x1000745c, 0x83 }, 391 { 0x1000745d, 0x47 }, 392 { 0x1000745e, 0x07 }, 393 { 0x1000745f, 0x56 }, 394 { 0x10007460, 0x93 }, 395 { 0x10007461, 0xf7 }, 396 { 0x10007462, 0x87 }, 397 { 0x10007463, 0x01 }, 398 { 0x10007464, 0x63 }, 399 { 0x10007465, 0x80 }, 400 { 0x10007466, 0x07 }, 401 { 0x10007467, 0x02 }, 402 { 0x10007468, 0x83 }, 403 { 0x10007469, 0x47 }, 404 { 0x1000746a, 0x17 }, 405 { 0x1000746b, 0x08 }, 406 { 0x1000746c, 0x93 }, 407 { 0x1000746d, 0xf7 }, 408 { 0x1000746e, 0x47 }, 409 { 0x1000746f, 0x00 }, 410 { 0x10007470, 0x63 }, 411 { 0x10007471, 0x8a }, 412 { 0x10007472, 0x07 }, 413 { 0x10007473, 0x00 }, 414 { 0x10007474, 0xb7 }, 415 { 0x10007475, 0xc7 }, 416 { 0x10007476, 0xc2 }, 417 { 0x10007477, 0x3f }, 418 { 0x10007478, 0x03 }, 419 { 0x10007479, 0xa5 }, 420 { 0x1000747a, 0x47 }, 421 { 0x1000747b, 0xfc }, 422 { 0x1000747c, 0x13 }, 423 { 0x1000747d, 0x55 }, 424 { 0x1000747e, 0x25 }, 425 { 0x1000747f, 0x00 }, 426 { 0x10007480, 0x13 }, 427 { 0x10007481, 0x75 }, 428 { 0x10007482, 0x15 }, 429 { 0x10007483, 0x00 }, 430 { 0x10007484, 0x67 }, 431 { 0x10007485, 0x80 }, 432 { 0x10007486, 0x00 }, 433 { 0x10007487, 0x00 }, 434 { 0x10007488, 0x03 }, 435 { 0x10007489, 0xa7 }, 436 { 0x1000748a, 0x81 }, 437 { 0x1000748b, 0x57 }, 438 { 0x1000748c, 0x13 }, 439 { 0x1000748d, 0x01 }, 440 { 0x1000748e, 0x01 }, 441 { 0x1000748f, 0xff }, 442 { 0x10007490, 0x23 }, 443 { 0x10007491, 0x26 }, 444 { 0x10007492, 0x11 }, 445 { 0x10007493, 0x00 }, 446 { 0x10007494, 0x23 }, 447 { 0x10007495, 0x24 }, 448 { 0x10007496, 0x81 }, 449 { 0x10007497, 0x00 }, 450 { 0x10007498, 0x23 }, 451 { 0x10007499, 0x22 }, 452 { 0x1000749a, 0x91 }, 453 { 0x1000749b, 0x00 }, 454 { 0x1000749c, 0x93 }, 455 { 0x1000749d, 0x07 }, 456 { 0x1000749e, 0xa0 }, 457 { 0x1000749f, 0x05 }, 458 { 0x100074a0, 0x63 }, 459 { 0x100074a1, 0x14 }, 460 { 0x100074a2, 0xf7 }, 461 { 0x100074a3, 0x04 }, 462 { 0x100074a4, 0x37 }, 463 { 0x100074a5, 0x07 }, 464 { 0x100074a6, 0x00 }, 465 { 0x100074a7, 0x11 }, 466 { 0x100074a8, 0x83 }, 467 { 0x100074a9, 0x47 }, 468 { 0x100074aa, 0x07 }, 469 { 0x100074ab, 0x01 }, 470 { 0x100074ac, 0x13 }, 471 { 0x100074ad, 0x06 }, 472 { 0x100074ae, 0x30 }, 473 { 0x100074af, 0x00 }, 474 { 0x100074b0, 0x93 }, 475 { 0x100074b1, 0xf7 }, 476 { 0x100074b2, 0xf7 }, 477 { 0x100074b3, 0x0f }, 478 { 0x100074b4, 0x63 }, 479 { 0x100074b5, 0x9a }, 480 { 0x100074b6, 0xc7 }, 481 { 0x100074b7, 0x02 }, 482 { 0x100074b8, 0x03 }, 483 { 0x100074b9, 0x47 }, 484 { 0x100074ba, 0x87 }, 485 { 0x100074bb, 0x01 }, 486 { 0x100074bc, 0x13 }, 487 { 0x100074bd, 0x77 }, 488 { 0x100074be, 0xf7 }, 489 { 0x100074bf, 0x0f }, 490 { 0x100074c0, 0x63 }, 491 { 0x100074c1, 0x14 }, 492 { 0x100074c2, 0xf7 }, 493 { 0x100074c3, 0x02 }, 494 { 0x100074c4, 0x37 }, 495 { 0x100074c5, 0xd7 }, 496 { 0x100074c6, 0x00 }, 497 { 0x100074c7, 0x00 }, 498 { 0x100074c8, 0x83 }, 499 { 0x100074c9, 0x47 }, 500 { 0x100074ca, 0x37 }, 501 { 0x100074cb, 0x54 }, 502 { 0x100074cc, 0x93 }, 503 { 0x100074cd, 0xf7 }, 504 { 0x100074ce, 0xf7 }, 505 { 0x100074cf, 0x0f }, 506 { 0x100074d0, 0x93 }, 507 { 0x100074d1, 0xe7 }, 508 { 0x100074d2, 0x07 }, 509 { 0x100074d3, 0x02 }, 510 { 0x100074d4, 0xa3 }, 511 { 0x100074d5, 0x01 }, 512 { 0x100074d6, 0xf7 }, 513 { 0x100074d7, 0x54 }, 514 { 0x100074d8, 0x83 }, 515 { 0x100074d9, 0x47 }, 516 { 0x100074da, 0x37 }, 517 { 0x100074db, 0x54 }, 518 { 0x100074dc, 0x93 }, 519 { 0x100074dd, 0xf7 }, 520 { 0x100074de, 0xf7 }, 521 { 0x100074df, 0x0d }, 522 { 0x100074e0, 0xa3 }, 523 { 0x100074e1, 0x01 }, 524 { 0x100074e2, 0xf7 }, 525 { 0x100074e3, 0x54 }, 526 { 0x100074e4, 0x23 }, 527 { 0x100074e5, 0xac }, 528 { 0x100074e6, 0x01 }, 529 { 0x100074e7, 0x56 }, 530 { 0x100074e8, 0x37 }, 531 { 0x100074e9, 0xd4 }, 532 { 0x100074ea, 0x00 }, 533 { 0x100074eb, 0x00 }, 534 { 0x100074ec, 0x83 }, 535 { 0x100074ed, 0x47 }, 536 { 0x100074ee, 0xd4 }, 537 { 0x100074ef, 0x47 }, 538 { 0x100074f0, 0x93 }, 539 { 0x100074f1, 0xf7 }, 540 { 0x100074f2, 0x17 }, 541 { 0x100074f3, 0x00 }, 542 { 0x100074f4, 0x63 }, 543 { 0x100074f5, 0x80 }, 544 { 0x100074f6, 0x07 }, 545 { 0x100074f7, 0x06 }, 546 { 0x100074f8, 0x37 }, 547 { 0x100074f9, 0xd7 }, 548 { 0x100074fa, 0x00 }, 549 { 0x100074fb, 0x10 }, 550 { 0x100074fc, 0x83 }, 551 { 0x100074fd, 0x47 }, 552 { 0x100074fe, 0x77 }, 553 { 0x100074ff, 0xd9 }, 554 { 0x10007500, 0x93 }, 555 { 0x10007501, 0x87 }, 556 { 0x10007502, 0x17 }, 557 { 0x10007503, 0x00 }, 558 { 0x10007504, 0x93 }, 559 { 0x10007505, 0xf7 }, 560 { 0x10007506, 0xf7 }, 561 { 0x10007507, 0x0f }, 562 { 0x10007508, 0xa3 }, 563 { 0x10007509, 0x0b }, 564 { 0x1000750a, 0xf7 }, 565 { 0x1000750b, 0xd8 }, 566 { 0x1000750c, 0x03 }, 567 { 0x1000750d, 0x47 }, 568 { 0x1000750e, 0x77 }, 569 { 0x1000750f, 0xd9 }, 570 { 0x10007510, 0x83 }, 571 { 0x10007511, 0x47 }, 572 { 0x10007512, 0xc4 }, 573 { 0x10007513, 0x47 }, 574 { 0x10007514, 0x13 }, 575 { 0x10007515, 0x77 }, 576 { 0x10007516, 0xf7 }, 577 { 0x10007517, 0x0f }, 578 { 0x10007518, 0x93 }, 579 { 0x10007519, 0xf7 }, 580 { 0x1000751a, 0xf7 }, 581 { 0x1000751b, 0x0f }, 582 { 0x1000751c, 0x63 }, 583 { 0x1000751d, 0x6c }, 584 { 0x1000751e, 0xf7 }, 585 { 0x1000751f, 0x02 }, 586 { 0x10007520, 0xb7 }, 587 { 0x10007521, 0xf4 }, 588 { 0x10007522, 0x00 }, 589 { 0x10007523, 0x00 }, 590 { 0x10007524, 0x93 }, 591 { 0x10007525, 0x05 }, 592 { 0x10007526, 0x00 }, 593 { 0x10007527, 0x01 }, 594 { 0x10007528, 0x13 }, 595 { 0x10007529, 0x85 }, 596 { 0x1000752a, 0x34 }, 597 { 0x1000752b, 0x52 }, 598 { 0x1000752c, 0xef }, 599 { 0x1000752d, 0xa0 }, 600 { 0x1000752e, 0x8f }, 601 { 0x1000752f, 0xc6 }, 602 { 0x10007530, 0x93 }, 603 { 0x10007531, 0x05 }, 604 { 0x10007532, 0x00 }, 605 { 0x10007533, 0x00 }, 606 { 0x10007534, 0x13 }, 607 { 0x10007535, 0x85 }, 608 { 0x10007536, 0x54 }, 609 { 0x10007537, 0x10 }, 610 { 0x10007538, 0xef }, 611 { 0x10007539, 0xa0 }, 612 { 0x1000753a, 0xcf }, 613 { 0x1000753b, 0xc5 }, 614 { 0x1000753c, 0x93 }, 615 { 0x1000753d, 0x05 }, 616 { 0x1000753e, 0x00 }, 617 { 0x1000753f, 0x00 }, 618 { 0x10007540, 0x13 }, 619 { 0x10007541, 0x85 }, 620 { 0x10007542, 0x74 }, 621 { 0x10007543, 0x10 }, 622 { 0x10007544, 0xef }, 623 { 0x10007545, 0xa0 }, 624 { 0x10007546, 0x0f }, 625 { 0x10007547, 0xc5 }, 626 { 0x10007548, 0x83 }, 627 { 0x10007549, 0x47 }, 628 { 0x1000754a, 0xd4 }, 629 { 0x1000754b, 0x47 }, 630 { 0x1000754c, 0x93 }, 631 { 0x1000754d, 0xf7 }, 632 { 0x1000754e, 0xe7 }, 633 { 0x1000754f, 0x0f }, 634 { 0x10007550, 0xa3 }, 635 { 0x10007551, 0x0e }, 636 { 0x10007552, 0xf4 }, 637 { 0x10007553, 0x46 }, 638 { 0x10007554, 0x83 }, 639 { 0x10007555, 0x20 }, 640 { 0x10007556, 0xc1 }, 641 { 0x10007557, 0x00 }, 642 { 0x10007558, 0x03 }, 643 { 0x10007559, 0x24 }, 644 { 0x1000755a, 0x81 }, 645 { 0x1000755b, 0x00 }, 646 { 0x1000755c, 0x83 }, 647 { 0x1000755d, 0x24 }, 648 { 0x1000755e, 0x41 }, 649 { 0x1000755f, 0x00 }, 650 { 0x10007560, 0x13 }, 651 { 0x10007561, 0x01 }, 652 { 0x10007562, 0x01 }, 653 { 0x10007563, 0x01 }, 654 { 0x10007564, 0x67 }, 655 { 0x10007565, 0x80 }, 656 { 0x10007566, 0x00 }, 657 { 0x10007567, 0x00 }, 658 { 0x10007568, 0x13 }, 659 { 0x10007569, 0x01 }, 660 { 0x1000756a, 0x01 }, 661 { 0x1000756b, 0xff }, 662 { 0x1000756c, 0x23 }, 663 { 0x1000756d, 0x24 }, 664 { 0x1000756e, 0x81 }, 665 { 0x1000756f, 0x00 }, 666 { 0x10007570, 0x23 }, 667 { 0x10007571, 0x26 }, 668 { 0x10007572, 0x11 }, 669 { 0x10007573, 0x00 }, 670 { 0x10007574, 0x23 }, 671 { 0x10007575, 0x22 }, 672 { 0x10007576, 0x91 }, 673 { 0x10007577, 0x00 }, 674 { 0x10007578, 0x37 }, 675 { 0x10007579, 0xd4 }, 676 { 0x1000757a, 0x00 }, 677 { 0x1000757b, 0x00 }, 678 { 0x1000757c, 0x83 }, 679 { 0x1000757d, 0x47 }, 680 { 0x1000757e, 0x04 }, 681 { 0x1000757f, 0x54 }, 682 { 0x10007580, 0x93 }, 683 { 0x10007581, 0x97 }, 684 { 0x10007582, 0x87 }, 685 { 0x10007583, 0x01 }, 686 { 0x10007584, 0x93 }, 687 { 0x10007585, 0xd7 }, 688 { 0x10007586, 0x87 }, 689 { 0x10007587, 0x41 }, 690 { 0x10007588, 0x63 }, 691 { 0x10007589, 0xd0 }, 692 { 0x1000758a, 0x07 }, 693 { 0x1000758b, 0x06 }, 694 { 0x1000758c, 0xb7 }, 695 { 0x1000758d, 0xf4 }, 696 { 0x1000758e, 0x00 }, 697 { 0x1000758f, 0x00 }, 698 { 0x10007590, 0x93 }, 699 { 0x10007591, 0x05 }, 700 { 0x10007592, 0x60 }, 701 { 0x10007593, 0x01 }, 702 { 0x10007594, 0x13 }, 703 { 0x10007595, 0x85 }, 704 { 0x10007596, 0x34 }, 705 { 0x10007597, 0x52 }, 706 { 0x10007598, 0xef }, 707 { 0x10007599, 0xa0 }, 708 { 0x1000759a, 0xcf }, 709 { 0x1000759b, 0xbf }, 710 { 0x1000759c, 0x93 }, 711 { 0x1000759d, 0x05 }, 712 { 0x1000759e, 0x00 }, 713 { 0x1000759f, 0x04 }, 714 { 0x100075a0, 0x13 }, 715 { 0x100075a1, 0x85 }, 716 { 0x100075a2, 0x54 }, 717 { 0x100075a3, 0x10 }, 718 { 0x100075a4, 0xef }, 719 { 0x100075a5, 0xa0 }, 720 { 0x100075a6, 0x0f }, 721 { 0x100075a7, 0xbf }, 722 { 0x100075a8, 0x93 }, 723 { 0x100075a9, 0x05 }, 724 { 0x100075aa, 0x00 }, 725 { 0x100075ab, 0x04 }, 726 { 0x100075ac, 0x13 }, 727 { 0x100075ad, 0x85 }, 728 { 0x100075ae, 0x74 }, 729 { 0x100075af, 0x10 }, 730 { 0x100075b0, 0xef }, 731 { 0x100075b1, 0xa0 }, 732 { 0x100075b2, 0x4f }, 733 { 0x100075b3, 0xbe }, 734 { 0x100075b4, 0x83 }, 735 { 0x100075b5, 0x47 }, 736 { 0x100075b6, 0xd4 }, 737 { 0x100075b7, 0x47 }, 738 { 0x100075b8, 0x37 }, 739 { 0x100075b9, 0xd7 }, 740 { 0x100075ba, 0x00 }, 741 { 0x100075bb, 0x10 }, 742 { 0x100075bc, 0x93 }, 743 { 0x100075bd, 0xf7 }, 744 { 0x100075be, 0xf7 }, 745 { 0x100075bf, 0x0f }, 746 { 0x100075c0, 0x93 }, 747 { 0x100075c1, 0xe7 }, 748 { 0x100075c2, 0x17 }, 749 { 0x100075c3, 0x00 }, 750 { 0x100075c4, 0xa3 }, 751 { 0x100075c5, 0x0e }, 752 { 0x100075c6, 0xf4 }, 753 { 0x100075c7, 0x46 }, 754 { 0x100075c8, 0xa3 }, 755 { 0x100075c9, 0x0b }, 756 { 0x100075ca, 0x07 }, 757 { 0x100075cb, 0xd8 }, 758 { 0x100075cc, 0x83 }, 759 { 0x100075cd, 0x47 }, 760 { 0x100075ce, 0x87 }, 761 { 0x100075cf, 0xd9 }, 762 { 0x100075d0, 0x93 }, 763 { 0x100075d1, 0x87 }, 764 { 0x100075d2, 0x17 }, 765 { 0x100075d3, 0x00 }, 766 { 0x100075d4, 0x93 }, 767 { 0x100075d5, 0xf7 }, 768 { 0x100075d6, 0xf7 }, 769 { 0x100075d7, 0x0f }, 770 { 0x100075d8, 0x23 }, 771 { 0x100075d9, 0x0c }, 772 { 0x100075da, 0xf7 }, 773 { 0x100075db, 0xd8 }, 774 { 0x100075dc, 0x83 }, 775 { 0x100075dd, 0x47 }, 776 { 0x100075de, 0x04 }, 777 { 0x100075df, 0x54 }, 778 { 0x100075e0, 0x93 }, 779 { 0x100075e1, 0xf7 }, 780 { 0x100075e2, 0xf7 }, 781 { 0x100075e3, 0x07 }, 782 { 0x100075e4, 0x23 }, 783 { 0x100075e5, 0x00 }, 784 { 0x100075e6, 0xf4 }, 785 { 0x100075e7, 0x54 }, 786 { 0x100075e8, 0x83 }, 787 { 0x100075e9, 0x20 }, 788 { 0x100075ea, 0xc1 }, 789 { 0x100075eb, 0x00 }, 790 { 0x100075ec, 0x03 }, 791 { 0x100075ed, 0x24 }, 792 { 0x100075ee, 0x81 }, 793 { 0x100075ef, 0x00 }, 794 { 0x100075f0, 0x83 }, 795 { 0x100075f1, 0x24 }, 796 { 0x100075f2, 0x41 }, 797 { 0x100075f3, 0x00 }, 798 { 0x100075f4, 0x13 }, 799 { 0x100075f5, 0x01 }, 800 { 0x100075f6, 0x01 }, 801 { 0x100075f7, 0x01 }, 802 { 0x100075f8, 0x67 }, 803 { 0x100075f9, 0x80 }, 804 { 0x100075fa, 0x00 }, 805 { 0x100075fb, 0x00 }, 806 { 0x100075fc, 0x13 }, 807 { 0x100075fd, 0x01 }, 808 { 0x100075fe, 0x01 }, 809 { 0x100075ff, 0xff }, 810 { 0x10007600, 0x23 }, 811 { 0x10007601, 0x24 }, 812 { 0x10007602, 0x81 }, 813 { 0x10007603, 0x00 }, 814 { 0x10007604, 0x37 }, 815 { 0x10007605, 0xd4 }, 816 { 0x10007606, 0x00 }, 817 { 0x10007607, 0x00 }, 818 { 0x10007608, 0x83 }, 819 { 0x10007609, 0x27 }, 820 { 0x1000760a, 0x04 }, 821 { 0x1000760b, 0x53 }, 822 { 0x1000760c, 0x23 }, 823 { 0x1000760d, 0x22 }, 824 { 0x1000760e, 0x91 }, 825 { 0x1000760f, 0x00 }, 826 { 0x10007610, 0xb7 }, 827 { 0x10007611, 0x04 }, 828 { 0x10007612, 0x00 }, 829 { 0x10007613, 0x40 }, 830 { 0x10007614, 0x23 }, 831 { 0x10007615, 0x26 }, 832 { 0x10007616, 0x11 }, 833 { 0x10007617, 0x00 }, 834 { 0x10007618, 0xb3 }, 835 { 0x10007619, 0xf7 }, 836 { 0x1000761a, 0x97 }, 837 { 0x1000761b, 0x00 }, 838 { 0x1000761c, 0x63 }, 839 { 0x1000761d, 0x86 }, 840 { 0x1000761e, 0x07 }, 841 { 0x1000761f, 0x00 }, 842 { 0x10007620, 0xef }, 843 { 0x10007621, 0xd0 }, 844 { 0x10007622, 0x5f }, 845 { 0x10007623, 0xc2 }, 846 { 0x10007624, 0x23 }, 847 { 0x10007625, 0x28 }, 848 { 0x10007626, 0x94 }, 849 { 0x10007627, 0x52 }, 850 { 0x10007628, 0x83 }, 851 { 0x10007629, 0x20 }, 852 { 0x1000762a, 0xc1 }, 853 { 0x1000762b, 0x00 }, 854 { 0x1000762c, 0x03 }, 855 { 0x1000762d, 0x24 }, 856 { 0x1000762e, 0x81 }, 857 { 0x1000762f, 0x00 }, 858 { 0x10007630, 0x83 }, 859 { 0x10007631, 0x24 }, 860 { 0x10007632, 0x41 }, 861 { 0x10007633, 0x00 }, 862 { 0x10007634, 0x13 }, 863 { 0x10007635, 0x01 }, 864 { 0x10007636, 0x01 }, 865 { 0x10007637, 0x01 }, 866 { 0x10007638, 0x67 }, 867 { 0x10007639, 0x80 }, 868 { 0x1000763a, 0x00 }, 869 { 0x1000763b, 0x00 }, 870 { 0x1000763c, 0x37 }, 871 { 0x1000763d, 0xc7 }, 872 { 0x1000763e, 0x00 }, 873 { 0x1000763f, 0x00 }, 874 { 0x10007640, 0x83 }, 875 { 0x10007641, 0x27 }, 876 { 0x10007642, 0xc7 }, 877 { 0x10007643, 0x5f }, 878 { 0x10007644, 0x23 }, 879 { 0x10007645, 0xa2 }, 880 { 0x10007646, 0xf1 }, 881 { 0x10007647, 0x42 }, 882 { 0x10007648, 0xb7 }, 883 { 0x10007649, 0x06 }, 884 { 0x1000764a, 0x00 }, 885 { 0x1000764b, 0x10 }, 886 { 0x1000764c, 0xb3 }, 887 { 0x1000764d, 0xf7 }, 888 { 0x1000764e, 0xd7 }, 889 { 0x1000764f, 0x00 }, 890 { 0x10007650, 0x63 }, 891 { 0x10007651, 0x80 }, 892 { 0x10007652, 0x07 }, 893 { 0x10007653, 0x0a }, 894 { 0x10007654, 0x83 }, 895 { 0x10007655, 0x47 }, 896 { 0x10007656, 0x07 }, 897 { 0x10007657, 0x56 }, 898 { 0x10007658, 0x93 }, 899 { 0x10007659, 0xf7 }, 900 { 0x1000765a, 0x87 }, 901 { 0x1000765b, 0x01 }, 902 { 0x1000765c, 0x63 }, 903 { 0x1000765d, 0x8a }, 904 { 0x1000765e, 0x07 }, 905 { 0x1000765f, 0x08 }, 906 { 0x10007660, 0x83 }, 907 { 0x10007661, 0x47 }, 908 { 0x10007662, 0x17 }, 909 { 0x10007663, 0x08 }, 910 { 0x10007664, 0x93 }, 911 { 0x10007665, 0xf7 }, 912 { 0x10007666, 0x47 }, 913 { 0x10007667, 0x00 }, 914 { 0x10007668, 0x63 }, 915 { 0x10007669, 0x84 }, 916 { 0x1000766a, 0x07 }, 917 { 0x1000766b, 0x08 }, 918 { 0x1000766c, 0x13 }, 919 { 0x1000766d, 0x01 }, 920 { 0x1000766e, 0x01 }, 921 { 0x1000766f, 0xff }, 922 { 0x10007670, 0x23 }, 923 { 0x10007671, 0x26 }, 924 { 0x10007672, 0x11 }, 925 { 0x10007673, 0x00 }, 926 { 0x10007674, 0xb7 }, 927 { 0x10007675, 0xc7 }, 928 { 0x10007676, 0xc2 }, 929 { 0x10007677, 0x3f }, 930 { 0x10007678, 0x03 }, 931 { 0x10007679, 0xa7 }, 932 { 0x1000767a, 0x07 }, 933 { 0x1000767b, 0xfc }, 934 { 0x1000767c, 0x63 }, 935 { 0x1000767d, 0x10 }, 936 { 0x1000767e, 0x05 }, 937 { 0x1000767f, 0x06 }, 938 { 0x10007680, 0x13 }, 939 { 0x10007681, 0x67 }, 940 { 0x10007682, 0x07 }, 941 { 0x10007683, 0x20 }, 942 { 0x10007684, 0x23 }, 943 { 0x10007685, 0xa0 }, 944 { 0x10007686, 0xe7 }, 945 { 0x10007687, 0xfc }, 946 { 0x10007688, 0x03 }, 947 { 0x10007689, 0xa7 }, 948 { 0x1000768a, 0x07 }, 949 { 0x1000768b, 0xfc }, 950 { 0x1000768c, 0x13 }, 951 { 0x1000768d, 0x67 }, 952 { 0x1000768e, 0x07 }, 953 { 0x1000768f, 0x40 }, 954 { 0x10007690, 0x23 }, 955 { 0x10007691, 0xa0 }, 956 { 0x10007692, 0xe7 }, 957 { 0x10007693, 0xfc }, 958 { 0x10007694, 0x37 }, 959 { 0x10007695, 0xc7 }, 960 { 0x10007696, 0xc2 }, 961 { 0x10007697, 0x3f }, 962 { 0x10007698, 0x83 }, 963 { 0x10007699, 0x27 }, 964 { 0x1000769a, 0x07 }, 965 { 0x1000769b, 0xfc }, 966 { 0x1000769c, 0x13 }, 967 { 0x1000769d, 0x75 }, 968 { 0x1000769e, 0x15 }, 969 { 0x1000769f, 0x00 }, 970 { 0x100076a0, 0x13 }, 971 { 0x100076a1, 0x15 }, 972 { 0x100076a2, 0x85 }, 973 { 0x100076a3, 0x00 }, 974 { 0x100076a4, 0x93 }, 975 { 0x100076a5, 0xf7 }, 976 { 0x100076a6, 0xf7 }, 977 { 0x100076a7, 0xef }, 978 { 0x100076a8, 0x33 }, 979 { 0x100076a9, 0xe5 }, 980 { 0x100076aa, 0xa7 }, 981 { 0x100076ab, 0x00 }, 982 { 0x100076ac, 0x23 }, 983 { 0x100076ad, 0x20 }, 984 { 0x100076ae, 0xa7 }, 985 { 0x100076af, 0xfc }, 986 { 0x100076b0, 0x93 }, 987 { 0x100076b1, 0x05 }, 988 { 0x100076b2, 0x00 }, 989 { 0x100076b3, 0x00 }, 990 { 0x100076b4, 0x13 }, 991 { 0x100076b5, 0x05 }, 992 { 0x100076b6, 0xa0 }, 993 { 0x100076b7, 0x00 }, 994 { 0x100076b8, 0xef }, 995 { 0x100076b9, 0xe0 }, 996 { 0x100076ba, 0xcf }, 997 { 0x100076bb, 0xb6 }, 998 { 0x100076bc, 0x37 }, 999 { 0x100076bd, 0xf7 }, 1000 { 0x100076be, 0x00 }, 1001 { 0x100076bf, 0x00 }, 1002 { 0x100076c0, 0x83 }, 1003 { 0x100076c1, 0x47 }, 1004 { 0x100076c2, 0x57 }, 1005 { 0x100076c3, 0x01 }, 1006 { 0x100076c4, 0x93 }, 1007 { 0x100076c5, 0xf7 }, 1008 { 0x100076c6, 0xf7 }, 1009 { 0x100076c7, 0x0f }, 1010 { 0x100076c8, 0x93 }, 1011 { 0x100076c9, 0xe7 }, 1012 { 0x100076ca, 0x47 }, 1013 { 0x100076cb, 0x00 }, 1014 { 0x100076cc, 0xa3 }, 1015 { 0x100076cd, 0x0a }, 1016 { 0x100076ce, 0xf7 }, 1017 { 0x100076cf, 0x00 }, 1018 { 0x100076d0, 0x83 }, 1019 { 0x100076d1, 0x20 }, 1020 { 0x100076d2, 0xc1 }, 1021 { 0x100076d3, 0x00 }, 1022 { 0x100076d4, 0x13 }, 1023 { 0x100076d5, 0x01 }, 1024 { 0x100076d6, 0x01 }, 1025 { 0x100076d7, 0x01 }, 1026 { 0x100076d8, 0x67 }, 1027 { 0x100076d9, 0x80 }, 1028 { 0x100076da, 0x00 }, 1029 { 0x100076db, 0x00 }, 1030 { 0x100076dc, 0x13 }, 1031 { 0x100076dd, 0x77 }, 1032 { 0x100076de, 0xf7 }, 1033 { 0x100076df, 0xdf }, 1034 { 0x100076e0, 0x23 }, 1035 { 0x100076e1, 0xa0 }, 1036 { 0x100076e2, 0xe7 }, 1037 { 0x100076e3, 0xfc }, 1038 { 0x100076e4, 0x03 }, 1039 { 0x100076e5, 0xa7 }, 1040 { 0x100076e6, 0x07 }, 1041 { 0x100076e7, 0xfc }, 1042 { 0x100076e8, 0x13 }, 1043 { 0x100076e9, 0x77 }, 1044 { 0x100076ea, 0xf7 }, 1045 { 0x100076eb, 0xbf }, 1046 { 0x100076ec, 0x6f }, 1047 { 0x100076ed, 0xf0 }, 1048 { 0x100076ee, 0x5f }, 1049 { 0x100076ef, 0xfa }, 1050 { 0x100076f0, 0x67 }, 1051 { 0x100076f1, 0x80 }, 1052 { 0x100076f2, 0x00 }, 1053 { 0x100076f3, 0x00 }, 1054 { 0x100076f4, 0xb7 }, 1055 { 0x100076f5, 0xc7 }, 1056 { 0x100076f6, 0x00 }, 1057 { 0x100076f7, 0x00 }, 1058 { 0x100076f8, 0x03 }, 1059 { 0x100076f9, 0xc7 }, 1060 { 0x100076fa, 0x87 }, 1061 { 0x100076fb, 0x59 }, 1062 { 0x100076fc, 0x13 }, 1063 { 0x100076fd, 0x77 }, 1064 { 0x100076fe, 0xf7 }, 1065 { 0x100076ff, 0x0f }, 1066 { 0x10007700, 0x13 }, 1067 { 0x10007701, 0x67 }, 1068 { 0x10007702, 0x17 }, 1069 { 0x10007703, 0x00 }, 1070 { 0x10007704, 0x23 }, 1071 { 0x10007705, 0x8c }, 1072 { 0x10007706, 0xe7 }, 1073 { 0x10007707, 0x58 }, 1074 { 0x10007708, 0x03 }, 1075 { 0x10007709, 0xc7 }, 1076 { 0x1000770a, 0x77 }, 1077 { 0x1000770b, 0x04 }, 1078 { 0x1000770c, 0x13 }, 1079 { 0x1000770d, 0x17 }, 1080 { 0x1000770e, 0x87 }, 1081 { 0x1000770f, 0x01 }, 1082 { 0x10007710, 0x13 }, 1083 { 0x10007711, 0x57 }, 1084 { 0x10007712, 0x87 }, 1085 { 0x10007713, 0x41 }, 1086 { 0x10007714, 0x63 }, 1087 { 0x10007715, 0x58 }, 1088 { 0x10007716, 0x07 }, 1089 { 0x10007717, 0x12 }, 1090 { 0x10007718, 0x37 }, 1091 { 0x10007719, 0xd7 }, 1092 { 0x1000771a, 0x00 }, 1093 { 0x1000771b, 0x00 }, 1094 { 0x1000771c, 0x83 }, 1095 { 0x1000771d, 0x26 }, 1096 { 0x1000771e, 0x87 }, 1097 { 0x1000771f, 0x53 }, 1098 { 0x10007720, 0x37 }, 1099 { 0x10007721, 0x06 }, 1100 { 0x10007722, 0x00 }, 1101 { 0x10007723, 0x40 }, 1102 { 0x10007724, 0x93 }, 1103 { 0x10007725, 0x05 }, 1104 { 0x10007726, 0x80 }, 1105 { 0x10007727, 0x01 }, 1106 { 0x10007728, 0xb3 }, 1107 { 0x10007729, 0xe6 }, 1108 { 0x1000772a, 0xc6 }, 1109 { 0x1000772b, 0x00 }, 1110 { 0x1000772c, 0x23 }, 1111 { 0x1000772d, 0x2c }, 1112 { 0x1000772e, 0xd7 }, 1113 { 0x1000772f, 0x52 }, 1114 { 0x10007730, 0x83 }, 1115 { 0x10007731, 0xc6 }, 1116 { 0x10007732, 0x07 }, 1117 { 0x10007733, 0x56 }, 1118 { 0x10007734, 0x93 }, 1119 { 0x10007735, 0xf6 }, 1120 { 0x10007736, 0xf6 }, 1121 { 0x10007737, 0x0f }, 1122 { 0x10007738, 0x63 }, 1123 { 0x10007739, 0x9c }, 1124 { 0x1000773a, 0xb6 }, 1125 { 0x1000773b, 0x0e }, 1126 { 0x1000773c, 0x83 }, 1127 { 0x1000773d, 0x27 }, 1128 { 0x1000773e, 0x87 }, 1129 { 0x1000773f, 0x53 }, 1130 { 0x10007740, 0xb3 }, 1131 { 0x10007741, 0xf7 }, 1132 { 0x10007742, 0xc7 }, 1133 { 0x10007743, 0x00 }, 1134 { 0x10007744, 0x63 }, 1135 { 0x10007745, 0x80 }, 1136 { 0x10007746, 0x07 }, 1137 { 0x10007747, 0x10 }, 1138 { 0x10007748, 0x13 }, 1139 { 0x10007749, 0x01 }, 1140 { 0x1000774a, 0x01 }, 1141 { 0x1000774b, 0xff }, 1142 { 0x1000774c, 0x23 }, 1143 { 0x1000774d, 0x24 }, 1144 { 0x1000774e, 0x81 }, 1145 { 0x1000774f, 0x00 }, 1146 { 0x10007750, 0x83 }, 1147 { 0x10007751, 0xa7 }, 1148 { 0x10007752, 0x41 }, 1149 { 0x10007753, 0x58 }, 1150 { 0x10007754, 0x23 }, 1151 { 0x10007755, 0x26 }, 1152 { 0x10007756, 0x11 }, 1153 { 0x10007757, 0x00 }, 1154 { 0x10007758, 0x63 }, 1155 { 0x10007759, 0x94 }, 1156 { 0x1000775a, 0x07 }, 1157 { 0x1000775b, 0x0c }, 1158 { 0x1000775c, 0x83 }, 1159 { 0x1000775d, 0x27 }, 1160 { 0x1000775e, 0x07 }, 1161 { 0x1000775f, 0x53 }, 1162 { 0x10007760, 0x03 }, 1163 { 0x10007761, 0xc6 }, 1164 { 0x10007762, 0xb1 }, 1165 { 0x10007763, 0x42 }, 1166 { 0x10007764, 0x93 }, 1167 { 0x10007765, 0xd7 }, 1168 { 0x10007766, 0xe7 }, 1169 { 0x10007767, 0x01 }, 1170 { 0x10007768, 0x93 }, 1171 { 0x10007769, 0xf7 }, 1172 { 0x1000776a, 0x17 }, 1173 { 0x1000776b, 0x00 }, 1174 { 0x1000776c, 0x93 }, 1175 { 0x1000776d, 0x06 }, 1176 { 0x1000776e, 0x10 }, 1177 { 0x1000776f, 0x00 }, 1178 { 0x10007770, 0x63 }, 1179 { 0x10007771, 0x14 }, 1180 { 0x10007772, 0x06 }, 1181 { 0x10007773, 0x00 }, 1182 { 0x10007774, 0xb3 }, 1183 { 0x10007775, 0x86 }, 1184 { 0x10007776, 0xf6 }, 1185 { 0x10007777, 0x40 }, 1186 { 0x10007778, 0xa3 }, 1187 { 0x10007779, 0x85 }, 1188 { 0x1000777a, 0xd1 }, 1189 { 0x1000777b, 0x42 }, 1190 { 0x1000777c, 0x03 }, 1191 { 0x1000777d, 0xc6 }, 1192 { 0x1000777e, 0xa1 }, 1193 { 0x1000777f, 0x42 }, 1194 { 0x10007780, 0x93 }, 1195 { 0x10007781, 0x06 }, 1196 { 0x10007782, 0x10 }, 1197 { 0x10007783, 0x00 }, 1198 { 0x10007784, 0x63 }, 1199 { 0x10007785, 0x14 }, 1200 { 0x10007786, 0x06 }, 1201 { 0x10007787, 0x00 }, 1202 { 0x10007788, 0xb3 }, 1203 { 0x10007789, 0x86 }, 1204 { 0x1000778a, 0xf6 }, 1205 { 0x1000778b, 0x40 }, 1206 { 0x1000778c, 0x23 }, 1207 { 0x1000778d, 0x85 }, 1208 { 0x1000778e, 0xd1 }, 1209 { 0x1000778f, 0x42 }, 1210 { 0x10007790, 0x03 }, 1211 { 0x10007791, 0xc6 }, 1212 { 0x10007792, 0x91 }, 1213 { 0x10007793, 0x42 }, 1214 { 0x10007794, 0x93 }, 1215 { 0x10007795, 0x06 }, 1216 { 0x10007796, 0x10 }, 1217 { 0x10007797, 0x00 }, 1218 { 0x10007798, 0x63 }, 1219 { 0x10007799, 0x14 }, 1220 { 0x1000779a, 0x06 }, 1221 { 0x1000779b, 0x00 }, 1222 { 0x1000779c, 0xb3 }, 1223 { 0x1000779d, 0x86 }, 1224 { 0x1000779e, 0xf6 }, 1225 { 0x1000779f, 0x40 }, 1226 { 0x100077a0, 0xa3 }, 1227 { 0x100077a1, 0x84 }, 1228 { 0x100077a2, 0xd1 }, 1229 { 0x100077a3, 0x42 }, 1230 { 0x100077a4, 0x03 }, 1231 { 0x100077a5, 0xc6 }, 1232 { 0x100077a6, 0x81 }, 1233 { 0x100077a7, 0x42 }, 1234 { 0x100077a8, 0x93 }, 1235 { 0x100077a9, 0x06 }, 1236 { 0x100077aa, 0x10 }, 1237 { 0x100077ab, 0x00 }, 1238 { 0x100077ac, 0x63 }, 1239 { 0x100077ad, 0x14 }, 1240 { 0x100077ae, 0x06 }, 1241 { 0x100077af, 0x00 }, 1242 { 0x100077b0, 0xb3 }, 1243 { 0x100077b1, 0x86 }, 1244 { 0x100077b2, 0xf6 }, 1245 { 0x100077b3, 0x40 }, 1246 { 0x100077b4, 0x23 }, 1247 { 0x100077b5, 0x84 }, 1248 { 0x100077b6, 0xd1 }, 1249 { 0x100077b7, 0x42 }, 1250 { 0x100077b8, 0xb7 }, 1251 { 0x100077b9, 0xd7 }, 1252 { 0x100077ba, 0x00 }, 1253 { 0x100077bb, 0x00 }, 1254 { 0x100077bc, 0x83 }, 1255 { 0x100077bd, 0xa7 }, 1256 { 0x100077be, 0x07 }, 1257 { 0x100077bf, 0x53 }, 1258 { 0x100077c0, 0x37 }, 1259 { 0x100077c1, 0x07 }, 1260 { 0x100077c2, 0x00 }, 1261 { 0x100077c3, 0x40 }, 1262 { 0x100077c4, 0xb3 }, 1263 { 0x100077c5, 0xf7 }, 1264 { 0x100077c6, 0xe7 }, 1265 { 0x100077c7, 0x00 }, 1266 { 0x100077c8, 0x63 }, 1267 { 0x100077c9, 0x8c }, 1268 { 0x100077ca, 0x07 }, 1269 { 0x100077cb, 0x04 }, 1270 { 0x100077cc, 0xb7 }, 1271 { 0x100077cd, 0x47 }, 1272 { 0x100077ce, 0x0f }, 1273 { 0x100077cf, 0x00 }, 1274 { 0x100077d0, 0x93 }, 1275 { 0x100077d1, 0x87 }, 1276 { 0x100077d2, 0x17 }, 1277 { 0x100077d3, 0x24 }, 1278 { 0x100077d4, 0xb7 }, 1279 { 0x100077d5, 0xf6 }, 1280 { 0x100077d6, 0x00 }, 1281 { 0x100077d7, 0x00 }, 1282 { 0x100077d8, 0x03 }, 1283 { 0x100077d9, 0xc7 }, 1284 { 0x100077da, 0xf6 }, 1285 { 0x100077db, 0x83 }, 1286 { 0x100077dc, 0x13 }, 1287 { 0x100077dd, 0x77 }, 1288 { 0x100077de, 0x07 }, 1289 { 0x100077df, 0x04 }, 1290 { 0x100077e0, 0x63 }, 1291 { 0x100077e1, 0x16 }, 1292 { 0x100077e2, 0x07 }, 1293 { 0x100077e3, 0x00 }, 1294 { 0x100077e4, 0x93 }, 1295 { 0x100077e5, 0x87 }, 1296 { 0x100077e6, 0xf7 }, 1297 { 0x100077e7, 0xff }, 1298 { 0x100077e8, 0xe3 }, 1299 { 0x100077e9, 0x98 }, 1300 { 0x100077ea, 0x07 }, 1301 { 0x100077eb, 0xfe }, 1302 { 0x100077ec, 0x13 }, 1303 { 0x100077ed, 0x05 }, 1304 { 0x100077ee, 0x80 }, 1305 { 0x100077ef, 0x3e }, 1306 { 0x100077f0, 0x93 }, 1307 { 0x100077f1, 0x05 }, 1308 { 0x100077f2, 0x00 }, 1309 { 0x100077f3, 0x00 }, 1310 { 0x100077f4, 0xef }, 1311 { 0x100077f5, 0xe0 }, 1312 { 0x100077f6, 0x0f }, 1313 { 0x100077f7, 0xa3 }, 1314 { 0x100077f8, 0x37 }, 1315 { 0x100077f9, 0xf7 }, 1316 { 0x100077fa, 0x00 }, 1317 { 0x100077fb, 0x00 }, 1318 { 0x100077fc, 0x83 }, 1319 { 0x100077fd, 0x47 }, 1320 { 0x100077fe, 0xb7 }, 1321 { 0x100077ff, 0x80 }, 1322 { 0x10007800, 0x93 }, 1323 { 0x10007801, 0xe7 }, 1324 { 0x10007802, 0x07 }, 1325 { 0x10007803, 0xf8 }, 1326 { 0x10007804, 0x93 }, 1327 { 0x10007805, 0xf7 }, 1328 { 0x10007806, 0xf7 }, 1329 { 0x10007807, 0x0f }, 1330 { 0x10007808, 0xa3 }, 1331 { 0x10007809, 0x05 }, 1332 { 0x1000780a, 0xf7 }, 1333 { 0x1000780b, 0x80 }, 1334 { 0x1000780c, 0xb7 }, 1335 { 0x1000780d, 0xd7 }, 1336 { 0x1000780e, 0x00 }, 1337 { 0x1000780f, 0x00 }, 1338 { 0x10007810, 0x37 }, 1339 { 0x10007811, 0x07 }, 1340 { 0x10007812, 0x00 }, 1341 { 0x10007813, 0x40 }, 1342 { 0x10007814, 0x23 }, 1343 { 0x10007815, 0xa8 }, 1344 { 0x10007816, 0xe7 }, 1345 { 0x10007817, 0x52 }, 1346 { 0x10007818, 0x93 }, 1347 { 0x10007819, 0x07 }, 1348 { 0x1000781a, 0x10 }, 1349 { 0x1000781b, 0x00 }, 1350 { 0x1000781c, 0x23 }, 1351 { 0x1000781d, 0xa2 }, 1352 { 0x1000781e, 0xf1 }, 1353 { 0x1000781f, 0x58 }, 1354 { 0x10007820, 0x83 }, 1355 { 0x10007821, 0x20 }, 1356 { 0x10007822, 0xc1 }, 1357 { 0x10007823, 0x00 }, 1358 { 0x10007824, 0x03 }, 1359 { 0x10007825, 0x24 }, 1360 { 0x10007826, 0x81 }, 1361 { 0x10007827, 0x00 }, 1362 { 0x10007828, 0x13 }, 1363 { 0x10007829, 0x01 }, 1364 { 0x1000782a, 0x01 }, 1365 { 0x1000782b, 0x01 }, 1366 { 0x1000782c, 0x67 }, 1367 { 0x1000782d, 0x80 }, 1368 { 0x1000782e, 0x00 }, 1369 { 0x1000782f, 0x00 }, 1370 { 0x10007830, 0x83 }, 1371 { 0x10007831, 0xc7 }, 1372 { 0x10007832, 0x07 }, 1373 { 0x10007833, 0x56 }, 1374 { 0x10007834, 0x93 }, 1375 { 0x10007835, 0xf7 }, 1376 { 0x10007836, 0xf7 }, 1377 { 0x10007837, 0x0f }, 1378 { 0x10007838, 0x63 }, 1379 { 0x10007839, 0x96 }, 1380 { 0x1000783a, 0x07 }, 1381 { 0x1000783b, 0x00 }, 1382 { 0x1000783c, 0x23 }, 1383 { 0x1000783d, 0xa2 }, 1384 { 0x1000783e, 0x01 }, 1385 { 0x1000783f, 0x58 }, 1386 { 0x10007840, 0x67 }, 1387 { 0x10007841, 0x80 }, 1388 { 0x10007842, 0x00 }, 1389 { 0x10007843, 0x00 }, 1390 { 0x10007844, 0x67 }, 1391 { 0x10007845, 0x80 }, 1392 { 0x10007846, 0x00 }, 1393 { 0x10007847, 0x00 }, 1394 { 0x10007848, 0xb7 }, 1395 { 0x10007849, 0xc7 }, 1396 { 0x1000784a, 0x00 }, 1397 { 0x1000784b, 0x00 }, 1398 { 0x1000784c, 0x83 }, 1399 { 0x1000784d, 0xc7 }, 1400 { 0x1000784e, 0x07 }, 1401 { 0x1000784f, 0x56 }, 1402 { 0x10007850, 0x13 }, 1403 { 0x10007851, 0x07 }, 1404 { 0x10007852, 0x80 }, 1405 { 0x10007853, 0x01 }, 1406 { 0x10007854, 0x93 }, 1407 { 0x10007855, 0xf7 }, 1408 { 0x10007856, 0xf7 }, 1409 { 0x10007857, 0x0f }, 1410 { 0x10007858, 0x63 }, 1411 { 0x10007859, 0x98 }, 1412 { 0x1000785a, 0xe7 }, 1413 { 0x1000785b, 0x00 }, 1414 { 0x1000785c, 0x13 }, 1415 { 0x1000785d, 0x05 }, 1416 { 0x1000785e, 0x00 }, 1417 { 0x1000785f, 0x7d }, 1418 { 0x10007860, 0x93 }, 1419 { 0x10007861, 0x05 }, 1420 { 0x10007862, 0x00 }, 1421 { 0x10007863, 0x00 }, 1422 { 0x10007864, 0x6f }, 1423 { 0x10007865, 0xe0 }, 1424 { 0x10007866, 0x0f }, 1425 { 0x10007867, 0x9c }, 1426 { 0x10007868, 0x67 }, 1427 { 0x10007869, 0x80 }, 1428 { 0x1000786a, 0x00 }, 1429 { 0x1000786b, 0x00 }, 1430 { 0x1000786c, 0x13 }, 1431 { 0x1000786d, 0x01 }, 1432 { 0x1000786e, 0x01 }, 1433 { 0x1000786f, 0xff }, 1434 { 0x10007870, 0x23 }, 1435 { 0x10007871, 0x26 }, 1436 { 0x10007872, 0x11 }, 1437 { 0x10007873, 0x00 }, 1438 { 0x10007874, 0x23 }, 1439 { 0x10007875, 0x24 }, 1440 { 0x10007876, 0x81 }, 1441 { 0x10007877, 0x00 }, 1442 { 0x10007878, 0xef }, 1443 { 0x10007879, 0xd0 }, 1444 { 0x1000787a, 0x4f }, 1445 { 0x1000787b, 0x91 }, 1446 { 0x1000787c, 0x83 }, 1447 { 0x1000787d, 0xc7 }, 1448 { 0x1000787e, 0x81 }, 1449 { 0x1000787f, 0x41 }, 1450 { 0x10007880, 0x63 }, 1451 { 0x10007881, 0x84 }, 1452 { 0x10007882, 0x07 }, 1453 { 0x10007883, 0x08 }, 1454 { 0x10007884, 0xb7 }, 1455 { 0x10007885, 0xd7 }, 1456 { 0x10007886, 0x00 }, 1457 { 0x10007887, 0x00 }, 1458 { 0x10007888, 0x83 }, 1459 { 0x10007889, 0xc7 }, 1460 { 0x1000788a, 0x07 }, 1461 { 0x1000788b, 0x47 }, 1462 { 0x1000788c, 0x93 }, 1463 { 0x1000788d, 0xf7 }, 1464 { 0x1000788e, 0x07 }, 1465 { 0x1000788f, 0x02 }, 1466 { 0x10007890, 0x63 }, 1467 { 0x10007891, 0x8a }, 1468 { 0x10007892, 0x07 }, 1469 { 0x10007893, 0x04 }, 1470 { 0x10007894, 0x83 }, 1471 { 0x10007895, 0xc7 }, 1472 { 0x10007896, 0x11 }, 1473 { 0x10007897, 0x44 }, 1474 { 0x10007898, 0x93 }, 1475 { 0x10007899, 0xf7 }, 1476 { 0x1000789a, 0xd7 }, 1477 { 0x1000789b, 0x0f }, 1478 { 0x1000789c, 0x63 }, 1479 { 0x1000789d, 0x90 }, 1480 { 0x1000789e, 0x07 }, 1481 { 0x1000789f, 0x02 }, 1482 { 0x100078a0, 0x03 }, 1483 { 0x100078a1, 0xc7 }, 1484 { 0x100078a2, 0xd1 }, 1485 { 0x100078a3, 0x58 }, 1486 { 0x100078a4, 0xb7 }, 1487 { 0x100078a5, 0x07 }, 1488 { 0x100078a6, 0x00 }, 1489 { 0x100078a7, 0x11 }, 1490 { 0x100078a8, 0x23 }, 1491 { 0x100078a9, 0x88 }, 1492 { 0x100078aa, 0xe7 }, 1493 { 0x100078ab, 0x00 }, 1494 { 0x100078ac, 0x23 }, 1495 { 0x100078ad, 0x88 }, 1496 { 0x100078ae, 0xe7 }, 1497 { 0x100078af, 0x20 }, 1498 { 0x100078b0, 0x03 }, 1499 { 0x100078b1, 0xc7 }, 1500 { 0x100078b2, 0xc1 }, 1501 { 0x100078b3, 0x58 }, 1502 { 0x100078b4, 0x23 }, 1503 { 0x100078b5, 0x8c }, 1504 { 0x100078b6, 0xe7 }, 1505 { 0x100078b7, 0x00 }, 1506 { 0x100078b8, 0x6f }, 1507 { 0x100078b9, 0x00 }, 1508 { 0x100078ba, 0x80 }, 1509 { 0x100078bb, 0x04 }, 1510 { 0x100078bc, 0xb7 }, 1511 { 0x100078bd, 0x07 }, 1512 { 0x100078be, 0x00 }, 1513 { 0x100078bf, 0x11 }, 1514 { 0x100078c0, 0x23 }, 1515 { 0x100078c1, 0x88 }, 1516 { 0x100078c2, 0x07 }, 1517 { 0x100078c3, 0x00 }, 1518 { 0x100078c4, 0x23 }, 1519 { 0x100078c5, 0x88 }, 1520 { 0x100078c6, 0x07 }, 1521 { 0x100078c7, 0x20 }, 1522 { 0x100078c8, 0x23 }, 1523 { 0x100078c9, 0x8c }, 1524 { 0x100078ca, 0x07 }, 1525 { 0x100078cb, 0x00 }, 1526 { 0x100078cc, 0x23 }, 1527 { 0x100078cd, 0x8c }, 1528 { 0x100078ce, 0x07 }, 1529 { 0x100078cf, 0x20 }, 1530 { 0x100078d0, 0xef }, 1531 { 0x100078d1, 0xb0 }, 1532 { 0x100078d2, 0xcf }, 1533 { 0x100078d3, 0xc4 }, 1534 { 0x100078d4, 0x03 }, 1535 { 0x100078d5, 0x24 }, 1536 { 0x100078d6, 0x81 }, 1537 { 0x100078d7, 0x00 }, 1538 { 0x100078d8, 0x83 }, 1539 { 0x100078d9, 0x20 }, 1540 { 0x100078da, 0xc1 }, 1541 { 0x100078db, 0x00 }, 1542 { 0x100078dc, 0x13 }, 1543 { 0x100078dd, 0x01 }, 1544 { 0x100078de, 0x01 }, 1545 { 0x100078df, 0x01 }, 1546 { 0x100078e0, 0x6f }, 1547 { 0x100078e1, 0xb0 }, 1548 { 0x100078e2, 0xcf }, 1549 { 0x100078e3, 0xcd }, 1550 { 0x100078e4, 0x03 }, 1551 { 0x100078e5, 0xc7 }, 1552 { 0x100078e6, 0xd1 }, 1553 { 0x100078e7, 0x58 }, 1554 { 0x100078e8, 0xb7 }, 1555 { 0x100078e9, 0x07 }, 1556 { 0x100078ea, 0x00 }, 1557 { 0x100078eb, 0x11 }, 1558 { 0x100078ec, 0x23 }, 1559 { 0x100078ed, 0x88 }, 1560 { 0x100078ee, 0xe7 }, 1561 { 0x100078ef, 0x00 }, 1562 { 0x100078f0, 0x83 }, 1563 { 0x100078f1, 0xc6 }, 1564 { 0x100078f2, 0xc1 }, 1565 { 0x100078f3, 0x58 }, 1566 { 0x100078f4, 0x23 }, 1567 { 0x100078f5, 0x88 }, 1568 { 0x100078f6, 0xd7 }, 1569 { 0x100078f7, 0x20 }, 1570 { 0x100078f8, 0x23 }, 1571 { 0x100078f9, 0x8c }, 1572 { 0x100078fa, 0xd7 }, 1573 { 0x100078fb, 0x00 }, 1574 { 0x100078fc, 0x03 }, 1575 { 0x100078fd, 0xc7 }, 1576 { 0x100078fe, 0xc1 }, 1577 { 0x100078ff, 0x58 }, 1578 { 0x10007900, 0x23 }, 1579 { 0x10007901, 0x8c }, 1580 { 0x10007902, 0xe7 }, 1581 { 0x10007903, 0x20 }, 1582 { 0x10007904, 0x6f }, 1583 { 0x10007905, 0xf0 }, 1584 { 0x10007906, 0xdf }, 1585 { 0x10007907, 0xfc }, 1586 { 0x10007908, 0xb7 }, 1587 { 0x10007909, 0x06 }, 1588 { 0x1000790a, 0x00 }, 1589 { 0x1000790b, 0x11 }, 1590 { 0x1000790c, 0x03 }, 1591 { 0x1000790d, 0xc7 }, 1592 { 0x1000790e, 0x06 }, 1593 { 0x1000790f, 0x21 }, 1594 { 0x10007910, 0x03 }, 1595 { 0x10007911, 0xc6 }, 1596 { 0x10007912, 0xd1 }, 1597 { 0x10007913, 0x58 }, 1598 { 0x10007914, 0x13 }, 1599 { 0x10007915, 0x84 }, 1600 { 0x10007916, 0x07 }, 1601 { 0x10007917, 0x00 }, 1602 { 0x10007918, 0x13 }, 1603 { 0x10007919, 0x77 }, 1604 { 0x1000791a, 0xf7 }, 1605 { 0x1000791b, 0x0f }, 1606 { 0x1000791c, 0x63 }, 1607 { 0x1000791d, 0x1a }, 1608 { 0x1000791e, 0xe6 }, 1609 { 0x1000791f, 0x00 }, 1610 { 0x10007920, 0x83 }, 1611 { 0x10007921, 0xc7 }, 1612 { 0x10007922, 0x86 }, 1613 { 0x10007923, 0x21 }, 1614 { 0x10007924, 0x03 }, 1615 { 0x10007925, 0xc7 }, 1616 { 0x10007926, 0xc1 }, 1617 { 0x10007927, 0x58 }, 1618 { 0x10007928, 0x93 }, 1619 { 0x10007929, 0xf7 }, 1620 { 0x1000792a, 0xf7 }, 1621 { 0x1000792b, 0x0f }, 1622 { 0x1000792c, 0xe3 }, 1623 { 0x1000792d, 0x02 }, 1624 { 0x1000792e, 0xf7 }, 1625 { 0x1000792f, 0xfa }, 1626 { 0x10007930, 0xb7 }, 1627 { 0x10007931, 0xc7 }, 1628 { 0x10007932, 0x00 }, 1629 { 0x10007933, 0x00 }, 1630 { 0x10007934, 0x83 }, 1631 { 0x10007935, 0xc7 }, 1632 { 0x10007936, 0x07 }, 1633 { 0x10007937, 0x56 }, 1634 { 0x10007938, 0x13 }, 1635 { 0x10007939, 0x07 }, 1636 { 0x1000793a, 0xf0 }, 1637 { 0x1000793b, 0x00 }, 1638 { 0x1000793c, 0x93 }, 1639 { 0x1000793d, 0xf7 }, 1640 { 0x1000793e, 0xf7 }, 1641 { 0x1000793f, 0x0f }, 1642 { 0x10007940, 0xe3 }, 1643 { 0x10007941, 0x78 }, 1644 { 0x10007942, 0xf7 }, 1645 { 0x10007943, 0xf8 }, 1646 { 0x10007944, 0xb7 }, 1647 { 0x10007945, 0xd7 }, 1648 { 0x10007946, 0x00 }, 1649 { 0x10007947, 0x00 }, 1650 { 0x10007948, 0x83 }, 1651 { 0x10007949, 0xc5 }, 1652 { 0x1000794a, 0xa7 }, 1653 { 0x1000794b, 0x47 }, 1654 { 0x1000794c, 0x93 }, 1655 { 0x1000794d, 0xf7 }, 1656 { 0x1000794e, 0xf5 }, 1657 { 0x1000794f, 0x0f }, 1658 { 0x10007950, 0x93 }, 1659 { 0x10007951, 0x95 }, 1660 { 0x10007952, 0x57 }, 1661 { 0x10007953, 0x00 }, 1662 { 0x10007954, 0xb3 }, 1663 { 0x10007955, 0x85 }, 1664 { 0x10007956, 0xf5 }, 1665 { 0x10007957, 0x40 }, 1666 { 0x10007958, 0x93 }, 1667 { 0x10007959, 0x95 }, 1668 { 0x1000795a, 0x25 }, 1669 { 0x1000795b, 0x00 }, 1670 { 0x1000795c, 0xb3 }, 1671 { 0x1000795d, 0x85 }, 1672 { 0x1000795e, 0xf5 }, 1673 { 0x1000795f, 0x00 }, 1674 { 0x10007960, 0x13 }, 1675 { 0x10007961, 0x95 }, 1676 { 0x10007962, 0x35 }, 1677 { 0x10007963, 0x00 }, 1678 { 0x10007964, 0x93 }, 1679 { 0x10007965, 0xd5 }, 1680 { 0x10007966, 0xf5 }, 1681 { 0x10007967, 0x41 }, 1682 { 0x10007968, 0xef }, 1683 { 0x10007969, 0xe0 }, 1684 { 0x1000796a, 0xcf }, 1685 { 0x1000796b, 0x8b }, 1686 { 0x1000796c, 0x03 }, 1687 { 0x1000796d, 0xc7 }, 1688 { 0x1000796e, 0xd1 }, 1689 { 0x1000796f, 0x58 }, 1690 { 0x10007970, 0x6f }, 1691 { 0x10007971, 0xf0 }, 1692 { 0x10007972, 0x5f }, 1693 { 0x10007973, 0xf3 }, 1694 { 0x10007974, 0x13 }, 1695 { 0x10007975, 0x01 }, 1696 { 0x10007976, 0x01 }, 1697 { 0x10007977, 0xfe }, 1698 { 0x10007978, 0x23 }, 1699 { 0x10007979, 0x2c }, 1700 { 0x1000797a, 0x81 }, 1701 { 0x1000797b, 0x00 }, 1702 { 0x1000797c, 0x83 }, 1703 { 0x1000797d, 0xc7 }, 1704 { 0x1000797e, 0x21 }, 1705 { 0x1000797f, 0x41 }, 1706 { 0x10007980, 0x23 }, 1707 { 0x10007981, 0x2e }, 1708 { 0x10007982, 0x11 }, 1709 { 0x10007983, 0x00 }, 1710 { 0x10007984, 0x23 }, 1711 { 0x10007985, 0x2a }, 1712 { 0x10007986, 0x91 }, 1713 { 0x10007987, 0x00 }, 1714 { 0x10007988, 0x23 }, 1715 { 0x10007989, 0x28 }, 1716 { 0x1000798a, 0x21 }, 1717 { 0x1000798b, 0x01 }, 1718 { 0x1000798c, 0x23 }, 1719 { 0x1000798d, 0x26 }, 1720 { 0x1000798e, 0x31 }, 1721 { 0x1000798f, 0x01 }, 1722 { 0x10007990, 0x13 }, 1723 { 0x10007991, 0x07 }, 1724 { 0x10007992, 0x10 }, 1725 { 0x10007993, 0x00 }, 1726 { 0x10007994, 0x63 }, 1727 { 0x10007995, 0x92 }, 1728 { 0x10007996, 0xe7 }, 1729 { 0x10007997, 0x02 }, 1730 { 0x10007998, 0xa3 }, 1731 { 0x10007999, 0x81 }, 1732 { 0x1000799a, 0xf1 }, 1733 { 0x1000799b, 0x40 }, 1734 { 0x1000799c, 0x83 }, 1735 { 0x1000799d, 0x20 }, 1736 { 0x1000799e, 0xc1 }, 1737 { 0x1000799f, 0x01 }, 1738 { 0x100079a0, 0x03 }, 1739 { 0x100079a1, 0x24 }, 1740 { 0x100079a2, 0x81 }, 1741 { 0x100079a3, 0x01 }, 1742 { 0x100079a4, 0x83 }, 1743 { 0x100079a5, 0x24 }, 1744 { 0x100079a6, 0x41 }, 1745 { 0x100079a7, 0x01 }, 1746 { 0x100079a8, 0x03 }, 1747 { 0x100079a9, 0x29 }, 1748 { 0x100079aa, 0x01 }, 1749 { 0x100079ab, 0x01 }, 1750 { 0x100079ac, 0x83 }, 1751 { 0x100079ad, 0x29 }, 1752 { 0x100079ae, 0xc1 }, 1753 { 0x100079af, 0x00 }, 1754 { 0x100079b0, 0x13 }, 1755 { 0x100079b1, 0x01 }, 1756 { 0x100079b2, 0x01 }, 1757 { 0x100079b3, 0x02 }, 1758 { 0x100079b4, 0x67 }, 1759 { 0x100079b5, 0x80 }, 1760 { 0x100079b6, 0x00 }, 1761 { 0x100079b7, 0x00 }, 1762 { 0x100079b8, 0xe3 }, 1763 { 0x100079b9, 0x92 }, 1764 { 0x100079ba, 0x07 }, 1765 { 0x100079bb, 0xfe }, 1766 { 0x100079bc, 0x37 }, 1767 { 0x100079bd, 0xc9 }, 1768 { 0x100079be, 0x00 }, 1769 { 0x100079bf, 0x00 }, 1770 { 0x100079c0, 0x83 }, 1771 { 0x100079c1, 0x47 }, 1772 { 0x100079c2, 0x09 }, 1773 { 0x100079c3, 0x56 }, 1774 { 0x100079c4, 0x13 }, 1775 { 0x100079c5, 0x07 }, 1776 { 0x100079c6, 0x80 }, 1777 { 0x100079c7, 0x01 }, 1778 { 0x100079c8, 0x93 }, 1779 { 0x100079c9, 0xf7 }, 1780 { 0x100079ca, 0xf7 }, 1781 { 0x100079cb, 0x0f }, 1782 { 0x100079cc, 0xe3 }, 1783 { 0x100079cd, 0x78 }, 1784 { 0x100079ce, 0xf7 }, 1785 { 0x100079cf, 0xfc }, 1786 { 0x100079d0, 0x83 }, 1787 { 0x100079d1, 0xc7 }, 1788 { 0x100079d2, 0x31 }, 1789 { 0x100079d3, 0x40 }, 1790 { 0x100079d4, 0xe3 }, 1791 { 0x100079d5, 0x84 }, 1792 { 0x100079d6, 0x07 }, 1793 { 0x100079d7, 0xfc }, 1794 { 0x100079d8, 0xb7 }, 1795 { 0x100079d9, 0xd4 }, 1796 { 0x100079da, 0x00 }, 1797 { 0x100079db, 0x00 }, 1798 { 0x100079dc, 0x03 }, 1799 { 0x100079dd, 0xc5 }, 1800 { 0x100079de, 0x94 }, 1801 { 0x100079df, 0x47 }, 1802 { 0x100079e0, 0xb7 }, 1803 { 0x100079e1, 0x15 }, 1804 { 0x100079e2, 0x00 }, 1805 { 0x100079e3, 0x00 }, 1806 { 0x100079e4, 0x93 }, 1807 { 0x100079e5, 0x85 }, 1808 { 0x100079e6, 0x85 }, 1809 { 0x100079e7, 0x38 }, 1810 { 0x100079e8, 0x13 }, 1811 { 0x100079e9, 0x75 }, 1812 { 0x100079ea, 0xf5 }, 1813 { 0x100079eb, 0x0f }, 1814 { 0x100079ec, 0xef }, 1815 { 0x100079ed, 0xe0 }, 1816 { 0x100079ee, 0x5f }, 1817 { 0x100079ef, 0xe0 }, 1818 { 0x100079f0, 0x93 }, 1819 { 0x100079f1, 0x55 }, 1820 { 0x100079f2, 0xf5 }, 1821 { 0x100079f3, 0x41 }, 1822 { 0x100079f4, 0xef }, 1823 { 0x100079f5, 0xe0 }, 1824 { 0x100079f6, 0x0f }, 1825 { 0x100079f7, 0x83 }, 1826 { 0x100079f8, 0xa3 }, 1827 { 0x100079f9, 0x81 }, 1828 { 0x100079fa, 0x01 }, 1829 { 0x100079fb, 0x40 }, 1830 { 0x100079fc, 0x83 }, 1831 { 0x100079fd, 0x27 }, 1832 { 0x100079fe, 0xc9 }, 1833 { 0x100079ff, 0x5f }, 1834 { 0x10007a00, 0x37 }, 1835 { 0x10007a01, 0x07 }, 1836 { 0x10007a02, 0x00 }, 1837 { 0x10007a03, 0x02 }, 1838 { 0x10007a04, 0xb3 }, 1839 { 0x10007a05, 0xf7 }, 1840 { 0x10007a06, 0xe7 }, 1841 { 0x10007a07, 0x00 }, 1842 { 0x10007a08, 0xe3 }, 1843 { 0x10007a09, 0x8a }, 1844 { 0x10007a0a, 0x07 }, 1845 { 0x10007a0b, 0xf8 }, 1846 { 0x10007a0c, 0x03 }, 1847 { 0x10007a0d, 0xc7 }, 1848 { 0x10007a0e, 0x04 }, 1849 { 0x10007a0f, 0x90 }, 1850 { 0x10007a10, 0x93 }, 1851 { 0x10007a11, 0x07 }, 1852 { 0x10007a12, 0x10 }, 1853 { 0x10007a13, 0x00 }, 1854 { 0x10007a14, 0x13 }, 1855 { 0x10007a15, 0x77 }, 1856 { 0x10007a16, 0x17 }, 1857 { 0x10007a17, 0x00 }, 1858 { 0x10007a18, 0x63 }, 1859 { 0x10007a19, 0x1c }, 1860 { 0x10007a1a, 0x07 }, 1861 { 0x10007a1b, 0x00 }, 1862 { 0x10007a1c, 0x83 }, 1863 { 0x10007a1d, 0xc7 }, 1864 { 0x10007a1e, 0x34 }, 1865 { 0x10007a1f, 0x54 }, 1866 { 0x10007a20, 0x93 }, 1867 { 0x10007a21, 0xf7 }, 1868 { 0x10007a22, 0xf7 }, 1869 { 0x10007a23, 0x0f }, 1870 { 0x10007a24, 0x93 }, 1871 { 0x10007a25, 0xd7 }, 1872 { 0x10007a26, 0x17 }, 1873 { 0x10007a27, 0x00 }, 1874 { 0x10007a28, 0x93 }, 1875 { 0x10007a29, 0xc7 }, 1876 { 0x10007a2a, 0x17 }, 1877 { 0x10007a2b, 0x00 }, 1878 { 0x10007a2c, 0x93 }, 1879 { 0x10007a2d, 0xf7 }, 1880 { 0x10007a2e, 0x17 }, 1881 { 0x10007a2f, 0x00 }, 1882 { 0x10007a30, 0xa3 }, 1883 { 0x10007a31, 0x85 }, 1884 { 0x10007a32, 0xf1 }, 1885 { 0x10007a33, 0x42 }, 1886 { 0x10007a34, 0x37 }, 1887 { 0x10007a35, 0xd6 }, 1888 { 0x10007a36, 0x00 }, 1889 { 0x10007a37, 0x00 }, 1890 { 0x10007a38, 0x03 }, 1891 { 0x10007a39, 0x47 }, 1892 { 0x10007a3a, 0x06 }, 1893 { 0x10007a3b, 0x90 }, 1894 { 0x10007a3c, 0x93 }, 1895 { 0x10007a3d, 0x06 }, 1896 { 0x10007a3e, 0x10 }, 1897 { 0x10007a3f, 0x00 }, 1898 { 0x10007a40, 0x13 }, 1899 { 0x10007a41, 0x77 }, 1900 { 0x10007a42, 0x27 }, 1901 { 0x10007a43, 0x00 }, 1902 { 0x10007a44, 0x63 }, 1903 { 0x10007a45, 0x18 }, 1904 { 0x10007a46, 0x07 }, 1905 { 0x10007a47, 0x00 }, 1906 { 0x10007a48, 0x03 }, 1907 { 0x10007a49, 0x47 }, 1908 { 0x10007a4a, 0x36 }, 1909 { 0x10007a4b, 0x54 }, 1910 { 0x10007a4c, 0x13 }, 1911 { 0x10007a4d, 0x77 }, 1912 { 0x10007a4e, 0x17 }, 1913 { 0x10007a4f, 0x00 }, 1914 { 0x10007a50, 0xb3 }, 1915 { 0x10007a51, 0x86 }, 1916 { 0x10007a52, 0xe6 }, 1917 { 0x10007a53, 0x40 }, 1918 { 0x10007a54, 0x23 }, 1919 { 0x10007a55, 0x85 }, 1920 { 0x10007a56, 0xd1 }, 1921 { 0x10007a57, 0x42 }, 1922 { 0x10007a58, 0xb7 }, 1923 { 0x10007a59, 0xd5 }, 1924 { 0x10007a5a, 0x00 }, 1925 { 0x10007a5b, 0x00 }, 1926 { 0x10007a5c, 0x03 }, 1927 { 0x10007a5d, 0xc6 }, 1928 { 0x10007a5e, 0x05 }, 1929 { 0x10007a5f, 0x92 }, 1930 { 0x10007a60, 0x13 }, 1931 { 0x10007a61, 0x07 }, 1932 { 0x10007a62, 0x10 }, 1933 { 0x10007a63, 0x00 }, 1934 { 0x10007a64, 0x13 }, 1935 { 0x10007a65, 0x76 }, 1936 { 0x10007a66, 0x16 }, 1937 { 0x10007a67, 0x00 }, 1938 { 0x10007a68, 0x63 }, 1939 { 0x10007a69, 0x1c }, 1940 { 0x10007a6a, 0x06 }, 1941 { 0x10007a6b, 0x00 }, 1942 { 0x10007a6c, 0x03 }, 1943 { 0x10007a6d, 0xc7 }, 1944 { 0x10007a6e, 0x35 }, 1945 { 0x10007a6f, 0x54 }, 1946 { 0x10007a70, 0x13 }, 1947 { 0x10007a71, 0x77 }, 1948 { 0x10007a72, 0xf7 }, 1949 { 0x10007a73, 0x0f }, 1950 { 0x10007a74, 0x13 }, 1951 { 0x10007a75, 0x57 }, 1952 { 0x10007a76, 0x37 }, 1953 { 0x10007a77, 0x00 }, 1954 { 0x10007a78, 0x13 }, 1955 { 0x10007a79, 0x47 }, 1956 { 0x10007a7a, 0x17 }, 1957 { 0x10007a7b, 0x00 }, 1958 { 0x10007a7c, 0x13 }, 1959 { 0x10007a7d, 0x77 }, 1960 { 0x10007a7e, 0x17 }, 1961 { 0x10007a7f, 0x00 }, 1962 { 0x10007a80, 0xa3 }, 1963 { 0x10007a81, 0x84 }, 1964 { 0x10007a82, 0xe1 }, 1965 { 0x10007a83, 0x42 }, 1966 { 0x10007a84, 0xb7 }, 1967 { 0x10007a85, 0xd5 }, 1968 { 0x10007a86, 0x00 }, 1969 { 0x10007a87, 0x00 }, 1970 { 0x10007a88, 0x03 }, 1971 { 0x10007a89, 0xc6 }, 1972 { 0x10007a8a, 0x05 }, 1973 { 0x10007a8b, 0x92 }, 1974 { 0x10007a8c, 0x13 }, 1975 { 0x10007a8d, 0x07 }, 1976 { 0x10007a8e, 0x10 }, 1977 { 0x10007a8f, 0x00 }, 1978 { 0x10007a90, 0x13 }, 1979 { 0x10007a91, 0x76 }, 1980 { 0x10007a92, 0x26 }, 1981 { 0x10007a93, 0x00 }, 1982 { 0x10007a94, 0x63 }, 1983 { 0x10007a95, 0x1c }, 1984 { 0x10007a96, 0x06 }, 1985 { 0x10007a97, 0x00 }, 1986 { 0x10007a98, 0x03 }, 1987 { 0x10007a99, 0xc7 }, 1988 { 0x10007a9a, 0x35 }, 1989 { 0x10007a9b, 0x54 }, 1990 { 0x10007a9c, 0x13 }, 1991 { 0x10007a9d, 0x77 }, 1992 { 0x10007a9e, 0xf7 }, 1993 { 0x10007a9f, 0x0f }, 1994 { 0x10007aa0, 0x13 }, 1995 { 0x10007aa1, 0x57 }, 1996 { 0x10007aa2, 0x27 }, 1997 { 0x10007aa3, 0x00 }, 1998 { 0x10007aa4, 0x13 }, 1999 { 0x10007aa5, 0x47 }, 2000 { 0x10007aa6, 0x17 }, 2001 { 0x10007aa7, 0x00 }, 2002 { 0x10007aa8, 0x13 }, 2003 { 0x10007aa9, 0x77 }, 2004 { 0x10007aaa, 0x17 }, 2005 { 0x10007aab, 0x00 }, 2006 { 0x10007aac, 0x23 }, 2007 { 0x10007aad, 0x84 }, 2008 { 0x10007aae, 0xe1 }, 2009 { 0x10007aaf, 0x42 }, 2010 { 0x10007ab0, 0x63 }, 2011 { 0x10007ab1, 0x84 }, 2012 { 0x10007ab2, 0x07 }, 2013 { 0x10007ab3, 0x00 }, 2014 { 0x10007ab4, 0xe3 }, 2015 { 0x10007ab5, 0x94 }, 2016 { 0x10007ab6, 0x06 }, 2017 { 0x10007ab7, 0xee }, 2018 { 0x10007ab8, 0xef }, 2019 { 0x10007ab9, 0x90 }, 2020 { 0x10007aba, 0x0f }, 2021 { 0x10007abb, 0x86 }, 2022 { 0x10007abc, 0xef }, 2023 { 0x10007abd, 0xd0 }, 2024 { 0x10007abe, 0x0f }, 2025 { 0x10007abf, 0x97 }, 2026 { 0x10007ac0, 0x37 }, 2027 { 0x10007ac1, 0x15 }, 2028 { 0x10007ac2, 0x00 }, 2029 { 0x10007ac3, 0x00 }, 2030 { 0x10007ac4, 0x13 }, 2031 { 0x10007ac5, 0x05 }, 2032 { 0x10007ac6, 0x85 }, 2033 { 0x10007ac7, 0xbb }, 2034 { 0x10007ac8, 0x93 }, 2035 { 0x10007ac9, 0x05 }, 2036 { 0x10007aca, 0x00 }, 2037 { 0x10007acb, 0x00 }, 2038 { 0x10007acc, 0xef }, 2039 { 0x10007acd, 0xd0 }, 2040 { 0x10007ace, 0x9f }, 2041 { 0x10007acf, 0xf5 }, 2042 { 0x10007ad0, 0xb7 }, 2043 { 0x10007ad1, 0xd7 }, 2044 { 0x10007ad2, 0x00 }, 2045 { 0x10007ad3, 0x00 }, 2046 { 0x10007ad4, 0x83 }, 2047 { 0x10007ad5, 0xc7 }, 2048 { 0x10007ad6, 0x07 }, 2049 { 0x10007ad7, 0x47 }, 2050 { 0x10007ad8, 0x93 }, 2051 { 0x10007ad9, 0xf7 }, 2052 { 0x10007ada, 0x47 }, 2053 { 0x10007adb, 0x00 }, 2054 { 0x10007adc, 0xe3 }, 2055 { 0x10007add, 0x80 }, 2056 { 0x10007ade, 0x07 }, 2057 { 0x10007adf, 0xec }, 2058 { 0x10007ae0, 0xef }, 2059 { 0x10007ae1, 0x80 }, 2060 { 0x10007ae2, 0xdf }, 2061 { 0x10007ae3, 0xf4 }, 2062 { 0x10007ae4, 0x23 }, 2063 { 0x10007ae5, 0x89 }, 2064 { 0x10007ae6, 0xa1 }, 2065 { 0x10007ae7, 0x40 }, 2066 { 0x10007ae8, 0x6f }, 2067 { 0x10007ae9, 0xf0 }, 2068 { 0x10007aea, 0x5f }, 2069 { 0x10007aeb, 0xeb }, 2070 { 0x10007aec, 0x00 }, 2071 { 0x10007aed, 0x00 }, 2072 { 0x10007aee, 0x00 }, 2073 { 0x10007aef, 0x00 }, 2074 { 0x3fc2bf83, 0x00 }, 2075 { 0x3fc2bf82, 0x00 }, 2076 { 0x3fc2bf81, 0x00 }, 2077 { 0x3fc2bf80, 0x00 }, 2078 { 0x3fc2bfc7, 0x00 }, 2079 { 0x3fc2bfc6, 0x00 }, 2080 { 0x3fc2bfc5, 0x00 }, 2081 { 0x3fc2bfc4, 0x00 }, 2082 { 0x3fc2bfc3, 0x00 }, 2083 { 0x3fc2bfc2, 0x00 }, 2084 { 0x3fc2bfc1, 0x00 }, 2085 { 0x3fc2bfc0, 0x03 }, 2086 { 0x0000d486, 0x43 }, 2087 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, RT1320_SDCA_CTL_REQ_POWER_STATE, 0), 0x00 }, 2088 { 0x1000db00, 0x04 }, 2089 { 0x1000db01, 0x00 }, 2090 { 0x1000db02, 0x11 }, 2091 { 0x1000db03, 0x00 }, 2092 { 0x1000db04, 0x00 }, 2093 { 0x1000db05, 0x82 }, 2094 { 0x1000db06, 0x04 }, 2095 { 0x1000db07, 0xf1 }, 2096 { 0x1000db08, 0x00 }, 2097 { 0x1000db09, 0x00 }, 2098 { 0x1000db0a, 0x40 }, 2099 { 0x1000db0b, 0x02 }, 2100 { 0x1000db0c, 0xf2 }, 2101 { 0x1000db0d, 0x00 }, 2102 { 0x1000db0e, 0x00 }, 2103 { 0x1000db0f, 0xe0 }, 2104 { 0x1000db10, 0x00 }, 2105 { 0x1000db11, 0x10 }, 2106 { 0x1000db12, 0x00 }, 2107 { 0x1000db13, 0x00 }, 2108 { 0x1000db14, 0x45 }, 2109 { 0x0000d540, 0x01 }, 2110 { 0x0000c081, 0xfc }, 2111 { 0x0000f01e, 0x80 }, 2112 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, RT1320_SDCA_CTL_REQ_POWER_STATE, 0), 0x03 }, 2113 }; 2114 2115 /* 2116 * The 'patch code' is written to the patch code area. 2117 * The patch code area is used for SDCA register expansion flexibility. 2118 */ 2119 static const struct reg_sequence rt1320_patch_code_write[] = { 2120 { 0x10007000, 0x37 }, 2121 { 0x10007001, 0x77 }, 2122 { 0x10007002, 0x00 }, 2123 { 0x10007003, 0x10 }, 2124 { 0x10007004, 0xb7 }, 2125 { 0x10007005, 0xe7 }, 2126 { 0x10007006, 0x00 }, 2127 { 0x10007007, 0x10 }, 2128 { 0x10007008, 0x13 }, 2129 { 0x10007009, 0x07 }, 2130 { 0x1000700a, 0x07 }, 2131 { 0x1000700b, 0x40 }, 2132 { 0x1000700c, 0x23 }, 2133 { 0x1000700d, 0xae }, 2134 { 0x1000700e, 0xe7 }, 2135 { 0x1000700f, 0xda }, 2136 { 0x10007010, 0x37 }, 2137 { 0x10007011, 0x77 }, 2138 { 0x10007012, 0x00 }, 2139 { 0x10007013, 0x10 }, 2140 { 0x10007014, 0x13 }, 2141 { 0x10007015, 0x07 }, 2142 { 0x10007016, 0x47 }, 2143 { 0x10007017, 0x61 }, 2144 { 0x10007018, 0x23 }, 2145 { 0x10007019, 0xa4 }, 2146 { 0x1000701a, 0xe7 }, 2147 { 0x1000701b, 0xde }, 2148 { 0x1000701c, 0x37 }, 2149 { 0x1000701d, 0x77 }, 2150 { 0x1000701e, 0x00 }, 2151 { 0x1000701f, 0x10 }, 2152 { 0x10007020, 0x13 }, 2153 { 0x10007021, 0x07 }, 2154 { 0x10007022, 0x07 }, 2155 { 0x10007023, 0x52 }, 2156 { 0x10007024, 0x23 }, 2157 { 0x10007025, 0xae }, 2158 { 0x10007026, 0xe7 }, 2159 { 0x10007027, 0xde }, 2160 { 0x10007028, 0x37 }, 2161 { 0x10007029, 0x77 }, 2162 { 0x1000702a, 0x00 }, 2163 { 0x1000702b, 0x10 }, 2164 { 0x1000702c, 0x13 }, 2165 { 0x1000702d, 0x07 }, 2166 { 0x1000702e, 0x47 }, 2167 { 0x1000702f, 0x54 }, 2168 { 0x10007030, 0x23 }, 2169 { 0x10007031, 0xaa }, 2170 { 0x10007032, 0xe7 }, 2171 { 0x10007033, 0xe4 }, 2172 { 0x10007034, 0x37 }, 2173 { 0x10007035, 0x87 }, 2174 { 0x10007036, 0x00 }, 2175 { 0x10007037, 0x10 }, 2176 { 0x10007038, 0x13 }, 2177 { 0x10007039, 0x07 }, 2178 { 0x1000703a, 0x47 }, 2179 { 0x1000703b, 0x81 }, 2180 { 0x1000703c, 0x23 }, 2181 { 0x1000703d, 0xa2 }, 2182 { 0x1000703e, 0xe7 }, 2183 { 0x1000703f, 0xe8 }, 2184 { 0x10007040, 0x23 }, 2185 { 0x10007041, 0xa4 }, 2186 { 0x10007042, 0xe7 }, 2187 { 0x10007043, 0xe8 }, 2188 { 0x10007044, 0x37 }, 2189 { 0x10007045, 0x77 }, 2190 { 0x10007046, 0x00 }, 2191 { 0x10007047, 0x10 }, 2192 { 0x10007048, 0x13 }, 2193 { 0x10007049, 0x07 }, 2194 { 0x1000704a, 0x07 }, 2195 { 0x1000704b, 0x59 }, 2196 { 0x1000704c, 0x23 }, 2197 { 0x1000704d, 0xa8 }, 2198 { 0x1000704e, 0xe7 }, 2199 { 0x1000704f, 0xea }, 2200 { 0x10007050, 0x37 }, 2201 { 0x10007051, 0x77 }, 2202 { 0x10007052, 0x00 }, 2203 { 0x10007053, 0x10 }, 2204 { 0x10007054, 0x13 }, 2205 { 0x10007055, 0x07 }, 2206 { 0x10007056, 0x07 }, 2207 { 0x10007057, 0x78 }, 2208 { 0x10007058, 0x23 }, 2209 { 0x10007059, 0xa6 }, 2210 { 0x1000705a, 0xe7 }, 2211 { 0x1000705b, 0xec }, 2212 { 0x1000705c, 0x67 }, 2213 { 0x1000705d, 0x80 }, 2214 { 0x1000705e, 0x00 }, 2215 { 0x1000705f, 0x00 }, 2216 { 0x10007400, 0x37 }, 2217 { 0x10007401, 0xd7 }, 2218 { 0x10007402, 0x00 }, 2219 { 0x10007403, 0x00 }, 2220 { 0x10007404, 0x83 }, 2221 { 0x10007405, 0x27 }, 2222 { 0x10007406, 0x47 }, 2223 { 0x10007407, 0x56 }, 2224 { 0x10007408, 0xb7 }, 2225 { 0x10007409, 0x06 }, 2226 { 0x1000740a, 0x00 }, 2227 { 0x1000740b, 0x02 }, 2228 { 0x1000740c, 0xb3 }, 2229 { 0x1000740d, 0xf7 }, 2230 { 0x1000740e, 0xd7 }, 2231 { 0x1000740f, 0x00 }, 2232 { 0x10007410, 0x63 }, 2233 { 0x10007411, 0x8a }, 2234 { 0x10007412, 0x07 }, 2235 { 0x10007413, 0x00 }, 2236 { 0x10007414, 0x93 }, 2237 { 0x10007415, 0x06 }, 2238 { 0x10007416, 0x10 }, 2239 { 0x10007417, 0x00 }, 2240 { 0x10007418, 0x23 }, 2241 { 0x10007419, 0x83 }, 2242 { 0x1000741a, 0xd1 }, 2243 { 0x1000741b, 0x44 }, 2244 { 0x1000741c, 0x93 }, 2245 { 0x1000741d, 0x07 }, 2246 { 0x1000741e, 0xf0 }, 2247 { 0x1000741f, 0xff }, 2248 { 0x10007420, 0x23 }, 2249 { 0x10007421, 0x22 }, 2250 { 0x10007422, 0xf7 }, 2251 { 0x10007423, 0x56 }, 2252 { 0x10007424, 0x37 }, 2253 { 0x10007425, 0xd7 }, 2254 { 0x10007426, 0x00 }, 2255 { 0x10007427, 0x00 }, 2256 { 0x10007428, 0x83 }, 2257 { 0x10007429, 0x27 }, 2258 { 0x1000742a, 0x47 }, 2259 { 0x1000742b, 0x58 }, 2260 { 0x1000742c, 0x93 }, 2261 { 0x1000742d, 0xf7 }, 2262 { 0x1000742e, 0x17 }, 2263 { 0x1000742f, 0x00 }, 2264 { 0x10007430, 0x63 }, 2265 { 0x10007431, 0x86 }, 2266 { 0x10007432, 0x07 }, 2267 { 0x10007433, 0x00 }, 2268 { 0x10007434, 0x93 }, 2269 { 0x10007435, 0x07 }, 2270 { 0x10007436, 0x10 }, 2271 { 0x10007437, 0x00 }, 2272 { 0x10007438, 0x23 }, 2273 { 0x10007439, 0x22 }, 2274 { 0x1000743a, 0xf7 }, 2275 { 0x1000743b, 0x58 }, 2276 { 0x1000743c, 0xb7 }, 2277 { 0x1000743d, 0xd7 }, 2278 { 0x1000743e, 0x00 }, 2279 { 0x1000743f, 0x00 }, 2280 { 0x10007440, 0x03 }, 2281 { 0x10007441, 0xa7 }, 2282 { 0x10007442, 0x47 }, 2283 { 0x10007443, 0x58 }, 2284 { 0x10007444, 0xb7 }, 2285 { 0x10007445, 0x07 }, 2286 { 0x10007446, 0x00 }, 2287 { 0x10007447, 0x04 }, 2288 { 0x10007448, 0x33 }, 2289 { 0x10007449, 0x77 }, 2290 { 0x1000744a, 0xf7 }, 2291 { 0x1000744b, 0x00 }, 2292 { 0x1000744c, 0x93 }, 2293 { 0x1000744d, 0x07 }, 2294 { 0x1000744e, 0x00 }, 2295 { 0x1000744f, 0x00 }, 2296 { 0x10007450, 0x63 }, 2297 { 0x10007451, 0x0e }, 2298 { 0x10007452, 0x07 }, 2299 { 0x10007453, 0x04 }, 2300 { 0x10007454, 0x37 }, 2301 { 0x10007455, 0x07 }, 2302 { 0x10007456, 0x00 }, 2303 { 0x10007457, 0x11 }, 2304 { 0x10007458, 0x03 }, 2305 { 0x10007459, 0x47 }, 2306 { 0x1000745a, 0x87 }, 2307 { 0x1000745b, 0x0e }, 2308 { 0x1000745c, 0x93 }, 2309 { 0x1000745d, 0x06 }, 2310 { 0x1000745e, 0x40 }, 2311 { 0x1000745f, 0x00 }, 2312 { 0x10007460, 0x13 }, 2313 { 0x10007461, 0x77 }, 2314 { 0x10007462, 0xf7 }, 2315 { 0x10007463, 0x0f }, 2316 { 0x10007464, 0x63 }, 2317 { 0x10007465, 0x02 }, 2318 { 0x10007466, 0xd7 }, 2319 { 0x10007467, 0x0a }, 2320 { 0x10007468, 0x93 }, 2321 { 0x10007469, 0x06 }, 2322 { 0x1000746a, 0x70 }, 2323 { 0x1000746b, 0x00 }, 2324 { 0x1000746c, 0x63 }, 2325 { 0x1000746d, 0x10 }, 2326 { 0x1000746e, 0xd7 }, 2327 { 0x1000746f, 0x04 }, 2328 { 0x10007470, 0x93 }, 2329 { 0x10007471, 0x07 }, 2330 { 0x10007472, 0x60 }, 2331 { 0x10007473, 0x06 }, 2332 { 0x10007474, 0x37 }, 2333 { 0x10007475, 0xd7 }, 2334 { 0x10007476, 0x00 }, 2335 { 0x10007477, 0x00 }, 2336 { 0x10007478, 0x83 }, 2337 { 0x10007479, 0x46 }, 2338 { 0x1000747a, 0x77 }, 2339 { 0x1000747b, 0xa6 }, 2340 { 0x1000747c, 0x93 }, 2341 { 0x1000747d, 0xe6 }, 2342 { 0x1000747e, 0x06 }, 2343 { 0x1000747f, 0xf8 }, 2344 { 0x10007480, 0x93 }, 2345 { 0x10007481, 0xf6 }, 2346 { 0x10007482, 0xf6 }, 2347 { 0x10007483, 0x0f }, 2348 { 0x10007484, 0xa3 }, 2349 { 0x10007485, 0x03 }, 2350 { 0x10007486, 0xd7 }, 2351 { 0x10007487, 0xa6 }, 2352 { 0x10007488, 0x83 }, 2353 { 0x10007489, 0x46 }, 2354 { 0x1000748a, 0x77 }, 2355 { 0x1000748b, 0xa8 }, 2356 { 0x1000748c, 0x93 }, 2357 { 0x1000748d, 0xe6 }, 2358 { 0x1000748e, 0x06 }, 2359 { 0x1000748f, 0xf8 }, 2360 { 0x10007490, 0x93 }, 2361 { 0x10007491, 0xf6 }, 2362 { 0x10007492, 0xf6 }, 2363 { 0x10007493, 0x0f }, 2364 { 0x10007494, 0xa3 }, 2365 { 0x10007495, 0x03 }, 2366 { 0x10007496, 0xd7 }, 2367 { 0x10007497, 0xa8 }, 2368 { 0x10007498, 0xb7 }, 2369 { 0x10007499, 0xc6 }, 2370 { 0x1000749a, 0x00 }, 2371 { 0x1000749b, 0x00 }, 2372 { 0x1000749c, 0x23 }, 2373 { 0x1000749d, 0x84 }, 2374 { 0x1000749e, 0xf6 }, 2375 { 0x1000749f, 0x06 }, 2376 { 0x100074a0, 0xa3 }, 2377 { 0x100074a1, 0x84 }, 2378 { 0x100074a2, 0xf6 }, 2379 { 0x100074a3, 0x06 }, 2380 { 0x100074a4, 0xb7 }, 2381 { 0x100074a5, 0x06 }, 2382 { 0x100074a6, 0x00 }, 2383 { 0x100074a7, 0x04 }, 2384 { 0x100074a8, 0x23 }, 2385 { 0x100074a9, 0x22 }, 2386 { 0x100074aa, 0xd7 }, 2387 { 0x100074ab, 0x58 }, 2388 { 0x100074ac, 0x37 }, 2389 { 0x100074ad, 0xd7 }, 2390 { 0x100074ae, 0x00 }, 2391 { 0x100074af, 0x00 }, 2392 { 0x100074b0, 0x03 }, 2393 { 0x100074b1, 0x27 }, 2394 { 0x100074b2, 0x47 }, 2395 { 0x100074b3, 0x58 }, 2396 { 0x100074b4, 0xb7 }, 2397 { 0x100074b5, 0x06 }, 2398 { 0x100074b6, 0x00 }, 2399 { 0x100074b7, 0x08 }, 2400 { 0x100074b8, 0x33 }, 2401 { 0x100074b9, 0x77 }, 2402 { 0x100074ba, 0xd7 }, 2403 { 0x100074bb, 0x00 }, 2404 { 0x100074bc, 0x63 }, 2405 { 0x100074bd, 0x04 }, 2406 { 0x100074be, 0x07 }, 2407 { 0x100074bf, 0x04 }, 2408 { 0x100074c0, 0x37 }, 2409 { 0x100074c1, 0x07 }, 2410 { 0x100074c2, 0x00 }, 2411 { 0x100074c3, 0x11 }, 2412 { 0x100074c4, 0x03 }, 2413 { 0x100074c5, 0x47 }, 2414 { 0x100074c6, 0xc7 }, 2415 { 0x100074c7, 0x0e }, 2416 { 0x100074c8, 0x93 }, 2417 { 0x100074c9, 0x06 }, 2418 { 0x100074ca, 0x40 }, 2419 { 0x100074cb, 0x00 }, 2420 { 0x100074cc, 0x13 }, 2421 { 0x100074cd, 0x77 }, 2422 { 0x100074ce, 0xf7 }, 2423 { 0x100074cf, 0x0f }, 2424 { 0x100074d0, 0x63 }, 2425 { 0x100074d1, 0x00 }, 2426 { 0x100074d2, 0xd7 }, 2427 { 0x100074d3, 0x04 }, 2428 { 0x100074d4, 0x93 }, 2429 { 0x100074d5, 0x06 }, 2430 { 0x100074d6, 0x70 }, 2431 { 0x100074d7, 0x00 }, 2432 { 0x100074d8, 0x63 }, 2433 { 0x100074d9, 0x00 }, 2434 { 0x100074da, 0xd7 }, 2435 { 0x100074db, 0x04 }, 2436 { 0x100074dc, 0x63 }, 2437 { 0x100074dd, 0x84 }, 2438 { 0x100074de, 0x07 }, 2439 { 0x100074df, 0x02 }, 2440 { 0x100074e0, 0xb7 }, 2441 { 0x100074e1, 0xd6 }, 2442 { 0x100074e2, 0x00 }, 2443 { 0x100074e3, 0x00 }, 2444 { 0x100074e4, 0x03 }, 2445 { 0x100074e5, 0xc7 }, 2446 { 0x100074e6, 0x56 }, 2447 { 0x100074e7, 0xa4 }, 2448 { 0x100074e8, 0x13 }, 2449 { 0x100074e9, 0x67 }, 2450 { 0x100074ea, 0x07 }, 2451 { 0x100074eb, 0xf8 }, 2452 { 0x100074ec, 0x13 }, 2453 { 0x100074ed, 0x77 }, 2454 { 0x100074ee, 0xf7 }, 2455 { 0x100074ef, 0x0f }, 2456 { 0x100074f0, 0xa3 }, 2457 { 0x100074f1, 0x82 }, 2458 { 0x100074f2, 0xe6 }, 2459 { 0x100074f3, 0xa4 }, 2460 { 0x100074f4, 0x37 }, 2461 { 0x100074f5, 0xc7 }, 2462 { 0x100074f6, 0x00 }, 2463 { 0x100074f7, 0x00 }, 2464 { 0x100074f8, 0x23 }, 2465 { 0x100074f9, 0x02 }, 2466 { 0x100074fa, 0xf7 }, 2467 { 0x100074fb, 0x06 }, 2468 { 0x100074fc, 0xb7 }, 2469 { 0x100074fd, 0x07 }, 2470 { 0x100074fe, 0x00 }, 2471 { 0x100074ff, 0x08 }, 2472 { 0x10007500, 0x23 }, 2473 { 0x10007501, 0xa2 }, 2474 { 0x10007502, 0xf6 }, 2475 { 0x10007503, 0x58 }, 2476 { 0x10007504, 0x67 }, 2477 { 0x10007505, 0x80 }, 2478 { 0x10007506, 0x00 }, 2479 { 0x10007507, 0x00 }, 2480 { 0x10007508, 0x93 }, 2481 { 0x10007509, 0x07 }, 2482 { 0x1000750a, 0x80 }, 2483 { 0x1000750b, 0x08 }, 2484 { 0x1000750c, 0x6f }, 2485 { 0x1000750d, 0xf0 }, 2486 { 0x1000750e, 0x9f }, 2487 { 0x1000750f, 0xf6 }, 2488 { 0x10007510, 0x93 }, 2489 { 0x10007511, 0x07 }, 2490 { 0x10007512, 0x80 }, 2491 { 0x10007513, 0x08 }, 2492 { 0x10007514, 0x6f }, 2493 { 0x10007515, 0xf0 }, 2494 { 0x10007516, 0xdf }, 2495 { 0x10007517, 0xfc }, 2496 { 0x10007518, 0x93 }, 2497 { 0x10007519, 0x07 }, 2498 { 0x1000751a, 0x60 }, 2499 { 0x1000751b, 0x06 }, 2500 { 0x1000751c, 0x6f }, 2501 { 0x1000751d, 0xf0 }, 2502 { 0x1000751e, 0x5f }, 2503 { 0x1000751f, 0xfc }, 2504 { 0x10007520, 0x37 }, 2505 { 0x10007521, 0xd7 }, 2506 { 0x10007522, 0x00 }, 2507 { 0x10007523, 0x00 }, 2508 { 0x10007524, 0x83 }, 2509 { 0x10007525, 0x27 }, 2510 { 0x10007526, 0x07 }, 2511 { 0x10007527, 0x53 }, 2512 { 0x10007528, 0xb7 }, 2513 { 0x10007529, 0x06 }, 2514 { 0x1000752a, 0x02 }, 2515 { 0x1000752b, 0x00 }, 2516 { 0x1000752c, 0xb3 }, 2517 { 0x1000752d, 0xf7 }, 2518 { 0x1000752e, 0xd7 }, 2519 { 0x1000752f, 0x00 }, 2520 { 0x10007530, 0x63 }, 2521 { 0x10007531, 0x88 }, 2522 { 0x10007532, 0x07 }, 2523 { 0x10007533, 0x00 }, 2524 { 0x10007534, 0x13 }, 2525 { 0x10007535, 0x06 }, 2526 { 0x10007536, 0xa0 }, 2527 { 0x10007537, 0x05 }, 2528 { 0x10007538, 0x23 }, 2529 { 0x10007539, 0xa8 }, 2530 { 0x1000753a, 0xc1 }, 2531 { 0x1000753b, 0x56 }, 2532 { 0x1000753c, 0x23 }, 2533 { 0x1000753d, 0x28 }, 2534 { 0x1000753e, 0xd7 }, 2535 { 0x1000753f, 0x52 }, 2536 { 0x10007540, 0x67 }, 2537 { 0x10007541, 0x80 }, 2538 { 0x10007542, 0x00 }, 2539 { 0x10007543, 0x00 }, 2540 { 0x10007544, 0x37 }, 2541 { 0x10007545, 0xd7 }, 2542 { 0x10007546, 0x00 }, 2543 { 0x10007547, 0x10 }, 2544 { 0x10007548, 0x83 }, 2545 { 0x10007549, 0x47 }, 2546 { 0x1000754a, 0x07 }, 2547 { 0x1000754b, 0xd9 }, 2548 { 0x1000754c, 0x93 }, 2549 { 0x1000754d, 0x06 }, 2550 { 0x1000754e, 0x20 }, 2551 { 0x1000754f, 0x00 }, 2552 { 0x10007550, 0x93 }, 2553 { 0x10007551, 0xf7 }, 2554 { 0x10007552, 0xf7 }, 2555 { 0x10007553, 0x0f }, 2556 { 0x10007554, 0x63 }, 2557 { 0x10007555, 0x9c }, 2558 { 0x10007556, 0xd7 }, 2559 { 0x10007557, 0x02 }, 2560 { 0x10007558, 0xb7 }, 2561 { 0x10007559, 0xc6 }, 2562 { 0x1000755a, 0x00 }, 2563 { 0x1000755b, 0x00 }, 2564 { 0x1000755c, 0x83 }, 2565 { 0x1000755d, 0xc7 }, 2566 { 0x1000755e, 0x26 }, 2567 { 0x1000755f, 0x04 }, 2568 { 0x10007560, 0x93 }, 2569 { 0x10007561, 0xf7 }, 2570 { 0x10007562, 0xf7 }, 2571 { 0x10007563, 0x07 }, 2572 { 0x10007564, 0x23 }, 2573 { 0x10007565, 0x81 }, 2574 { 0x10007566, 0xf6 }, 2575 { 0x10007567, 0x04 }, 2576 { 0x10007568, 0xb7 }, 2577 { 0x10007569, 0xd6 }, 2578 { 0x1000756a, 0x00 }, 2579 { 0x1000756b, 0x00 }, 2580 { 0x1000756c, 0x83 }, 2581 { 0x1000756d, 0xc7 }, 2582 { 0x1000756e, 0xa6 }, 2583 { 0x1000756f, 0xe1 }, 2584 { 0x10007570, 0x93 }, 2585 { 0x10007571, 0xf7 }, 2586 { 0x10007572, 0xf7 }, 2587 { 0x10007573, 0x07 }, 2588 { 0x10007574, 0x23 }, 2589 { 0x10007575, 0x8d }, 2590 { 0x10007576, 0xf6 }, 2591 { 0x10007577, 0xe0 }, 2592 { 0x10007578, 0x23 }, 2593 { 0x10007579, 0x08 }, 2594 { 0x1000757a, 0x07 }, 2595 { 0x1000757b, 0xd8 }, 2596 { 0x1000757c, 0x83 }, 2597 { 0x1000757d, 0x47 }, 2598 { 0x1000757e, 0x47 }, 2599 { 0x1000757f, 0xd9 }, 2600 { 0x10007580, 0x93 }, 2601 { 0x10007581, 0x87 }, 2602 { 0x10007582, 0x17 }, 2603 { 0x10007583, 0x00 }, 2604 { 0x10007584, 0x93 }, 2605 { 0x10007585, 0xf7 }, 2606 { 0x10007586, 0xf7 }, 2607 { 0x10007587, 0x0f }, 2608 { 0x10007588, 0x23 }, 2609 { 0x10007589, 0x0a }, 2610 { 0x1000758a, 0xf7 }, 2611 { 0x1000758b, 0xd8 }, 2612 { 0x1000758c, 0x67 }, 2613 { 0x1000758d, 0x80 }, 2614 { 0x1000758e, 0x00 }, 2615 { 0x1000758f, 0x00 }, 2616 { 0x10007590, 0xb7 }, 2617 { 0x10007591, 0xd7 }, 2618 { 0x10007592, 0x00 }, 2619 { 0x10007593, 0x00 }, 2620 { 0x10007594, 0x83 }, 2621 { 0x10007595, 0xc7 }, 2622 { 0x10007596, 0x07 }, 2623 { 0x10007597, 0x47 }, 2624 { 0x10007598, 0x93 }, 2625 { 0x10007599, 0xf7 }, 2626 { 0x1000759a, 0x07 }, 2627 { 0x1000759b, 0x01 }, 2628 { 0x1000759c, 0x63 }, 2629 { 0x1000759d, 0x8a }, 2630 { 0x1000759e, 0x07 }, 2631 { 0x1000759f, 0x06 }, 2632 { 0x100075a0, 0x63 }, 2633 { 0x100075a1, 0x02 }, 2634 { 0x100075a2, 0x05 }, 2635 { 0x100075a3, 0x06 }, 2636 { 0x100075a4, 0x37 }, 2637 { 0x100075a5, 0xc7 }, 2638 { 0x100075a6, 0x00 }, 2639 { 0x100075a7, 0x00 }, 2640 { 0x100075a8, 0x83 }, 2641 { 0x100075a9, 0x27 }, 2642 { 0x100075aa, 0xc7 }, 2643 { 0x100075ab, 0x5f }, 2644 { 0x100075ac, 0x23 }, 2645 { 0x100075ad, 0xae }, 2646 { 0x100075ae, 0xf1 }, 2647 { 0x100075af, 0x40 }, 2648 { 0x100075b0, 0xb7 }, 2649 { 0x100075b1, 0x06 }, 2650 { 0x100075b2, 0x00 }, 2651 { 0x100075b3, 0x10 }, 2652 { 0x100075b4, 0xb3 }, 2653 { 0x100075b5, 0xf7 }, 2654 { 0x100075b6, 0xd7 }, 2655 { 0x100075b7, 0x00 }, 2656 { 0x100075b8, 0x63 }, 2657 { 0x100075b9, 0x8c }, 2658 { 0x100075ba, 0x07 }, 2659 { 0x100075bb, 0x04 }, 2660 { 0x100075bc, 0x83 }, 2661 { 0x100075bd, 0x47 }, 2662 { 0x100075be, 0x07 }, 2663 { 0x100075bf, 0x56 }, 2664 { 0x100075c0, 0x93 }, 2665 { 0x100075c1, 0xf7 }, 2666 { 0x100075c2, 0x87 }, 2667 { 0x100075c3, 0x01 }, 2668 { 0x100075c4, 0x63 }, 2669 { 0x100075c5, 0x86 }, 2670 { 0x100075c6, 0x07 }, 2671 { 0x100075c7, 0x04 }, 2672 { 0x100075c8, 0x83 }, 2673 { 0x100075c9, 0x47 }, 2674 { 0x100075ca, 0x17 }, 2675 { 0x100075cb, 0x08 }, 2676 { 0x100075cc, 0x93 }, 2677 { 0x100075cd, 0xf7 }, 2678 { 0x100075ce, 0x47 }, 2679 { 0x100075cf, 0x00 }, 2680 { 0x100075d0, 0x63 }, 2681 { 0x100075d1, 0x80 }, 2682 { 0x100075d2, 0x07 }, 2683 { 0x100075d3, 0x04 }, 2684 { 0x100075d4, 0xb7 }, 2685 { 0x100075d5, 0xc7 }, 2686 { 0x100075d6, 0xc2 }, 2687 { 0x100075d7, 0x3f }, 2688 { 0x100075d8, 0x93 }, 2689 { 0x100075d9, 0x87 }, 2690 { 0x100075da, 0x07 }, 2691 { 0x100075db, 0xfc }, 2692 { 0x100075dc, 0x83 }, 2693 { 0x100075dd, 0xa7 }, 2694 { 0x100075de, 0x47 }, 2695 { 0x100075df, 0x00 }, 2696 { 0x100075e0, 0x93 }, 2697 { 0x100075e1, 0xd7 }, 2698 { 0x100075e2, 0x17 }, 2699 { 0x100075e3, 0x00 }, 2700 { 0x100075e4, 0x93 }, 2701 { 0x100075e5, 0xf7 }, 2702 { 0x100075e6, 0x17 }, 2703 { 0x100075e7, 0x00 }, 2704 { 0x100075e8, 0x63 }, 2705 { 0x100075e9, 0x84 }, 2706 { 0x100075ea, 0x07 }, 2707 { 0x100075eb, 0x02 }, 2708 { 0x100075ec, 0x23 }, 2709 { 0x100075ed, 0x8a }, 2710 { 0x100075ee, 0xf1 }, 2711 { 0x100075ef, 0x40 }, 2712 { 0x100075f0, 0xb7 }, 2713 { 0x100075f1, 0x07 }, 2714 { 0x100075f2, 0x00 }, 2715 { 0x100075f3, 0xc0 }, 2716 { 0x100075f4, 0x37 }, 2717 { 0x100075f5, 0xf7 }, 2718 { 0x100075f6, 0x00 }, 2719 { 0x100075f7, 0x00 }, 2720 { 0x100075f8, 0x93 }, 2721 { 0x100075f9, 0x87 }, 2722 { 0x100075fa, 0xf7 }, 2723 { 0x100075fb, 0xff }, 2724 { 0x100075fc, 0x23 }, 2725 { 0x100075fd, 0x2c }, 2726 { 0x100075fe, 0xf7 }, 2727 { 0x100075ff, 0x06 }, 2728 { 0x10007600, 0x67 }, 2729 { 0x10007601, 0x80 }, 2730 { 0x10007602, 0x00 }, 2731 { 0x10007603, 0x00 }, 2732 { 0x10007604, 0x23 }, 2733 { 0x10007605, 0x8a }, 2734 { 0x10007606, 0x01 }, 2735 { 0x10007607, 0x40 }, 2736 { 0x10007608, 0xb7 }, 2737 { 0x10007609, 0xf7 }, 2738 { 0x1000760a, 0x00 }, 2739 { 0x1000760b, 0x00 }, 2740 { 0x1000760c, 0x23 }, 2741 { 0x1000760d, 0xac }, 2742 { 0x1000760e, 0x07 }, 2743 { 0x1000760f, 0x06 }, 2744 { 0x10007610, 0x67 }, 2745 { 0x10007611, 0x80 }, 2746 { 0x10007612, 0x00 }, 2747 { 0x10007613, 0x00 }, 2748 { 0x10007614, 0x13 }, 2749 { 0x10007615, 0x01 }, 2750 { 0x10007616, 0x01 }, 2751 { 0x10007617, 0xff }, 2752 { 0x10007618, 0x23 }, 2753 { 0x10007619, 0x26 }, 2754 { 0x1000761a, 0x11 }, 2755 { 0x1000761b, 0x00 }, 2756 { 0x1000761c, 0x23 }, 2757 { 0x1000761d, 0x24 }, 2758 { 0x1000761e, 0x81 }, 2759 { 0x1000761f, 0x00 }, 2760 { 0x10007620, 0x37 }, 2761 { 0x10007621, 0xc7 }, 2762 { 0x10007622, 0x00 }, 2763 { 0x10007623, 0x00 }, 2764 { 0x10007624, 0x83 }, 2765 { 0x10007625, 0x47 }, 2766 { 0x10007626, 0x07 }, 2767 { 0x10007627, 0x56 }, 2768 { 0x10007628, 0x93 }, 2769 { 0x10007629, 0xf7 }, 2770 { 0x1000762a, 0x17 }, 2771 { 0x1000762b, 0x00 }, 2772 { 0x1000762c, 0x63 }, 2773 { 0x1000762d, 0x98 }, 2774 { 0x1000762e, 0x07 }, 2775 { 0x1000762f, 0x00 }, 2776 { 0x10007630, 0x83 }, 2777 { 0x10007631, 0x47 }, 2778 { 0x10007632, 0x07 }, 2779 { 0x10007633, 0x56 }, 2780 { 0x10007634, 0x93 }, 2781 { 0x10007635, 0xf7 }, 2782 { 0x10007636, 0x27 }, 2783 { 0x10007637, 0x00 }, 2784 { 0x10007638, 0x63 }, 2785 { 0x10007639, 0x82 }, 2786 { 0x1000763a, 0x07 }, 2787 { 0x1000763b, 0x08 }, 2788 { 0x1000763c, 0x37 }, 2789 { 0x1000763d, 0xd4 }, 2790 { 0x1000763e, 0x00 }, 2791 { 0x1000763f, 0x00 }, 2792 { 0x10007640, 0x83 }, 2793 { 0x10007641, 0x47 }, 2794 { 0x10007642, 0x14 }, 2795 { 0x10007643, 0x47 }, 2796 { 0x10007644, 0x93 }, 2797 { 0x10007645, 0xf7 }, 2798 { 0x10007646, 0x27 }, 2799 { 0x10007647, 0x00 }, 2800 { 0x10007648, 0x63 }, 2801 { 0x10007649, 0x8a }, 2802 { 0x1000764a, 0x07 }, 2803 { 0x1000764b, 0x06 }, 2804 { 0x1000764c, 0x93 }, 2805 { 0x1000764d, 0x05 }, 2806 { 0x1000764e, 0x10 }, 2807 { 0x1000764f, 0x00 }, 2808 { 0x10007650, 0x13 }, 2809 { 0x10007651, 0x05 }, 2810 { 0x10007652, 0x20 }, 2811 { 0x10007653, 0x10 }, 2812 { 0x10007654, 0xef }, 2813 { 0x10007655, 0xa0 }, 2814 { 0x10007656, 0x8f }, 2815 { 0x10007657, 0x9a }, 2816 { 0x10007658, 0x37 }, 2817 { 0x10007659, 0x05 }, 2818 { 0x1000765a, 0x01 }, 2819 { 0x1000765b, 0x00 }, 2820 { 0x1000765c, 0x93 }, 2821 { 0x1000765d, 0x05 }, 2822 { 0x1000765e, 0x00 }, 2823 { 0x1000765f, 0x01 }, 2824 { 0x10007660, 0x13 }, 2825 { 0x10007661, 0x05 }, 2826 { 0x10007662, 0xb5 }, 2827 { 0x10007663, 0xa0 }, 2828 { 0x10007664, 0xef }, 2829 { 0x10007665, 0xa0 }, 2830 { 0x10007666, 0x8f }, 2831 { 0x10007667, 0x99 }, 2832 { 0x10007668, 0x83 }, 2833 { 0x10007669, 0x47 }, 2834 { 0x1000766a, 0x24 }, 2835 { 0x1000766b, 0xe0 }, 2836 { 0x1000766c, 0x13 }, 2837 { 0x1000766d, 0x05 }, 2838 { 0x1000766e, 0x80 }, 2839 { 0x1000766f, 0x3e }, 2840 { 0x10007670, 0x93 }, 2841 { 0x10007671, 0x05 }, 2842 { 0x10007672, 0x00 }, 2843 { 0x10007673, 0x00 }, 2844 { 0x10007674, 0x93 }, 2845 { 0x10007675, 0xe7 }, 2846 { 0x10007676, 0x07 }, 2847 { 0x10007677, 0xf8 }, 2848 { 0x10007678, 0x93 }, 2849 { 0x10007679, 0xf7 }, 2850 { 0x1000767a, 0xf7 }, 2851 { 0x1000767b, 0x0f }, 2852 { 0x1000767c, 0x23 }, 2853 { 0x1000767d, 0x01 }, 2854 { 0x1000767e, 0xf4 }, 2855 { 0x1000767f, 0xe0 }, 2856 { 0x10007680, 0x83 }, 2857 { 0x10007681, 0x47 }, 2858 { 0x10007682, 0x24 }, 2859 { 0x10007683, 0xe0 }, 2860 { 0x10007684, 0x93 }, 2861 { 0x10007685, 0xf7 }, 2862 { 0x10007686, 0xf7 }, 2863 { 0x10007687, 0x0f }, 2864 { 0x10007688, 0x93 }, 2865 { 0x10007689, 0xe7 }, 2866 { 0x1000768a, 0x07 }, 2867 { 0x1000768b, 0x04 }, 2868 { 0x1000768c, 0x23 }, 2869 { 0x1000768d, 0x01 }, 2870 { 0x1000768e, 0xf4 }, 2871 { 0x1000768f, 0xe0 }, 2872 { 0x10007690, 0xef }, 2873 { 0x10007691, 0xe0 }, 2874 { 0x10007692, 0x8f }, 2875 { 0x10007693, 0xb9 }, 2876 { 0x10007694, 0x83 }, 2877 { 0x10007695, 0x47 }, 2878 { 0x10007696, 0x34 }, 2879 { 0x10007697, 0xe0 }, 2880 { 0x10007698, 0x93 }, 2881 { 0x10007699, 0xf7 }, 2882 { 0x1000769a, 0x07 }, 2883 { 0x1000769b, 0x02 }, 2884 { 0x1000769c, 0xe3 }, 2885 { 0x1000769d, 0x9c }, 2886 { 0x1000769e, 0x07 }, 2887 { 0x1000769f, 0xfe }, 2888 { 0x100076a0, 0x37 }, 2889 { 0x100076a1, 0x05 }, 2890 { 0x100076a2, 0x01 }, 2891 { 0x100076a3, 0x00 }, 2892 { 0x100076a4, 0x93 }, 2893 { 0x100076a5, 0x05 }, 2894 { 0x100076a6, 0x00 }, 2895 { 0x100076a7, 0x00 }, 2896 { 0x100076a8, 0x13 }, 2897 { 0x100076a9, 0x05 }, 2898 { 0x100076aa, 0xb5 }, 2899 { 0x100076ab, 0xa0 }, 2900 { 0x100076ac, 0xef }, 2901 { 0x100076ad, 0xa0 }, 2902 { 0x100076ae, 0x0f }, 2903 { 0x100076af, 0x95 }, 2904 { 0x100076b0, 0x83 }, 2905 { 0x100076b1, 0x47 }, 2906 { 0x100076b2, 0x14 }, 2907 { 0x100076b3, 0x47 }, 2908 { 0x100076b4, 0x93 }, 2909 { 0x100076b5, 0xf7 }, 2910 { 0x100076b6, 0xd7 }, 2911 { 0x100076b7, 0x0f }, 2912 { 0x100076b8, 0xa3 }, 2913 { 0x100076b9, 0x08 }, 2914 { 0x100076ba, 0xf4 }, 2915 { 0x100076bb, 0x46 }, 2916 { 0x100076bc, 0x03 }, 2917 { 0x100076bd, 0xa7 }, 2918 { 0x100076be, 0x01 }, 2919 { 0x100076bf, 0x57 }, 2920 { 0x100076c0, 0x93 }, 2921 { 0x100076c1, 0x07 }, 2922 { 0x100076c2, 0xa0 }, 2923 { 0x100076c3, 0x05 }, 2924 { 0x100076c4, 0x63 }, 2925 { 0x100076c5, 0x14 }, 2926 { 0x100076c6, 0xf7 }, 2927 { 0x100076c7, 0x04 }, 2928 { 0x100076c8, 0x37 }, 2929 { 0x100076c9, 0x07 }, 2930 { 0x100076ca, 0x00 }, 2931 { 0x100076cb, 0x11 }, 2932 { 0x100076cc, 0x83 }, 2933 { 0x100076cd, 0x47 }, 2934 { 0x100076ce, 0x07 }, 2935 { 0x100076cf, 0x01 }, 2936 { 0x100076d0, 0x13 }, 2937 { 0x100076d1, 0x06 }, 2938 { 0x100076d2, 0x30 }, 2939 { 0x100076d3, 0x00 }, 2940 { 0x100076d4, 0x93 }, 2941 { 0x100076d5, 0xf7 }, 2942 { 0x100076d6, 0xf7 }, 2943 { 0x100076d7, 0x0f }, 2944 { 0x100076d8, 0x63 }, 2945 { 0x100076d9, 0x9a }, 2946 { 0x100076da, 0xc7 }, 2947 { 0x100076db, 0x02 }, 2948 { 0x100076dc, 0x03 }, 2949 { 0x100076dd, 0x47 }, 2950 { 0x100076de, 0x87 }, 2951 { 0x100076df, 0x01 }, 2952 { 0x100076e0, 0x13 }, 2953 { 0x100076e1, 0x77 }, 2954 { 0x100076e2, 0xf7 }, 2955 { 0x100076e3, 0x0f }, 2956 { 0x100076e4, 0x63 }, 2957 { 0x100076e5, 0x14 }, 2958 { 0x100076e6, 0xf7 }, 2959 { 0x100076e7, 0x02 }, 2960 { 0x100076e8, 0x37 }, 2961 { 0x100076e9, 0xd7 }, 2962 { 0x100076ea, 0x00 }, 2963 { 0x100076eb, 0x00 }, 2964 { 0x100076ec, 0x83 }, 2965 { 0x100076ed, 0x47 }, 2966 { 0x100076ee, 0x37 }, 2967 { 0x100076ef, 0x54 }, 2968 { 0x100076f0, 0x93 }, 2969 { 0x100076f1, 0xf7 }, 2970 { 0x100076f2, 0xf7 }, 2971 { 0x100076f3, 0x0f }, 2972 { 0x100076f4, 0x93 }, 2973 { 0x100076f5, 0xe7 }, 2974 { 0x100076f6, 0x07 }, 2975 { 0x100076f7, 0x02 }, 2976 { 0x100076f8, 0xa3 }, 2977 { 0x100076f9, 0x01 }, 2978 { 0x100076fa, 0xf7 }, 2979 { 0x100076fb, 0x54 }, 2980 { 0x100076fc, 0x83 }, 2981 { 0x100076fd, 0x47 }, 2982 { 0x100076fe, 0x37 }, 2983 { 0x100076ff, 0x54 }, 2984 { 0x10007700, 0x93 }, 2985 { 0x10007701, 0xf7 }, 2986 { 0x10007702, 0xf7 }, 2987 { 0x10007703, 0x0d }, 2988 { 0x10007704, 0xa3 }, 2989 { 0x10007705, 0x01 }, 2990 { 0x10007706, 0xf7 }, 2991 { 0x10007707, 0x54 }, 2992 { 0x10007708, 0x23 }, 2993 { 0x10007709, 0xa8 }, 2994 { 0x1000770a, 0x01 }, 2995 { 0x1000770b, 0x56 }, 2996 { 0x1000770c, 0xb7 }, 2997 { 0x1000770d, 0xd7 }, 2998 { 0x1000770e, 0x00 }, 2999 { 0x1000770f, 0x10 }, 3000 { 0x10007710, 0x03 }, 3001 { 0x10007711, 0xc7 }, 3002 { 0x10007712, 0x07 }, 3003 { 0x10007713, 0xd9 }, 3004 { 0x10007714, 0x93 }, 3005 { 0x10007715, 0x06 }, 3006 { 0x10007716, 0x10 }, 3007 { 0x10007717, 0x00 }, 3008 { 0x10007718, 0x13 }, 3009 { 0x10007719, 0x77 }, 3010 { 0x1000771a, 0xf7 }, 3011 { 0x1000771b, 0x0f }, 3012 { 0x1000771c, 0x63 }, 3013 { 0x1000771d, 0x1a }, 3014 { 0x1000771e, 0xd7 }, 3015 { 0x1000771f, 0x04 }, 3016 { 0x10007720, 0x03 }, 3017 { 0x10007721, 0xc7 }, 3018 { 0x10007722, 0x27 }, 3019 { 0x10007723, 0xd9 }, 3020 { 0x10007724, 0x13 }, 3021 { 0x10007725, 0x07 }, 3022 { 0x10007726, 0x17 }, 3023 { 0x10007727, 0x00 }, 3024 { 0x10007728, 0x13 }, 3025 { 0x10007729, 0x77 }, 3026 { 0x1000772a, 0xf7 }, 3027 { 0x1000772b, 0x0f }, 3028 { 0x1000772c, 0x23 }, 3029 { 0x1000772d, 0x89 }, 3030 { 0x1000772e, 0xe7 }, 3031 { 0x1000772f, 0xd8 }, 3032 { 0x10007730, 0x83 }, 3033 { 0x10007731, 0xc6 }, 3034 { 0x10007732, 0x27 }, 3035 { 0x10007733, 0xd9 }, 3036 { 0x10007734, 0x03 }, 3037 { 0x10007735, 0xc7 }, 3038 { 0x10007736, 0x17 }, 3039 { 0x10007737, 0xd9 }, 3040 { 0x10007738, 0x93 }, 3041 { 0x10007739, 0xf6 }, 3042 { 0x1000773a, 0xf6 }, 3043 { 0x1000773b, 0x0f }, 3044 { 0x1000773c, 0x13 }, 3045 { 0x1000773d, 0x77 }, 3046 { 0x1000773e, 0xf7 }, 3047 { 0x1000773f, 0x0f }, 3048 { 0x10007740, 0x63 }, 3049 { 0x10007741, 0xe8 }, 3050 { 0x10007742, 0xe6 }, 3051 { 0x10007743, 0x02 }, 3052 { 0x10007744, 0xb7 }, 3053 { 0x10007745, 0xd6 }, 3054 { 0x10007746, 0x00 }, 3055 { 0x10007747, 0x00 }, 3056 { 0x10007748, 0x03 }, 3057 { 0x10007749, 0xc7 }, 3058 { 0x1000774a, 0xa6 }, 3059 { 0x1000774b, 0xe1 }, 3060 { 0x1000774c, 0x13 }, 3061 { 0x1000774d, 0x67 }, 3062 { 0x1000774e, 0x07 }, 3063 { 0x1000774f, 0xf8 }, 3064 { 0x10007750, 0x13 }, 3065 { 0x10007751, 0x77 }, 3066 { 0x10007752, 0xf7 }, 3067 { 0x10007753, 0x0f }, 3068 { 0x10007754, 0x23 }, 3069 { 0x10007755, 0x8d }, 3070 { 0x10007756, 0xe6 }, 3071 { 0x10007757, 0xe0 }, 3072 { 0x10007758, 0x03 }, 3073 { 0x10007759, 0xc7 }, 3074 { 0x1000775a, 0x37 }, 3075 { 0x1000775b, 0xd9 }, 3076 { 0x1000775c, 0x13 }, 3077 { 0x1000775d, 0x07 }, 3078 { 0x1000775e, 0x17 }, 3079 { 0x1000775f, 0x00 }, 3080 { 0x10007760, 0x13 }, 3081 { 0x10007761, 0x77 }, 3082 { 0x10007762, 0xf7 }, 3083 { 0x10007763, 0x0f }, 3084 { 0x10007764, 0xa3 }, 3085 { 0x10007765, 0x89 }, 3086 { 0x10007766, 0xe7 }, 3087 { 0x10007767, 0xd8 }, 3088 { 0x10007768, 0x13 }, 3089 { 0x10007769, 0x07 }, 3090 { 0x1000776a, 0x20 }, 3091 { 0x1000776b, 0x00 }, 3092 { 0x1000776c, 0x23 }, 3093 { 0x1000776d, 0x88 }, 3094 { 0x1000776e, 0xe7 }, 3095 { 0x1000776f, 0xd8 }, 3096 { 0x10007770, 0x83 }, 3097 { 0x10007771, 0x20 }, 3098 { 0x10007772, 0xc1 }, 3099 { 0x10007773, 0x00 }, 3100 { 0x10007774, 0x03 }, 3101 { 0x10007775, 0x24 }, 3102 { 0x10007776, 0x81 }, 3103 { 0x10007777, 0x00 }, 3104 { 0x10007778, 0x13 }, 3105 { 0x10007779, 0x01 }, 3106 { 0x1000777a, 0x01 }, 3107 { 0x1000777b, 0x01 }, 3108 { 0x1000777c, 0x67 }, 3109 { 0x1000777d, 0x80 }, 3110 { 0x1000777e, 0x00 }, 3111 { 0x1000777f, 0x00 }, 3112 { 0x10007780, 0x03 }, 3113 { 0x10007781, 0xc7 }, 3114 { 0x10007782, 0xa1 }, 3115 { 0x10007783, 0x40 }, 3116 { 0x10007784, 0x93 }, 3117 { 0x10007785, 0x06 }, 3118 { 0x10007786, 0x10 }, 3119 { 0x10007787, 0x00 }, 3120 { 0x10007788, 0x63 }, 3121 { 0x10007789, 0x16 }, 3122 { 0x1000778a, 0xd7 }, 3123 { 0x1000778b, 0x00 }, 3124 { 0x1000778c, 0xb7 }, 3125 { 0x1000778d, 0xd6 }, 3126 { 0x1000778e, 0x00 }, 3127 { 0x1000778f, 0x10 }, 3128 { 0x10007790, 0xa3 }, 3129 { 0x10007791, 0x8a }, 3130 { 0x10007792, 0xe6 }, 3131 { 0x10007793, 0xd8 }, 3132 { 0x10007794, 0x83 }, 3133 { 0x10007795, 0xc7 }, 3134 { 0x10007796, 0xa1 }, 3135 { 0x10007797, 0x40 }, 3136 { 0x10007798, 0x63 }, 3137 { 0x10007799, 0x9c }, 3138 { 0x1000779a, 0x07 }, 3139 { 0x1000779b, 0x06 }, 3140 { 0x1000779c, 0x13 }, 3141 { 0x1000779d, 0x01 }, 3142 { 0x1000779e, 0x01 }, 3143 { 0x1000779f, 0xff }, 3144 { 0x100077a0, 0x23 }, 3145 { 0x100077a1, 0x22 }, 3146 { 0x100077a2, 0x91 }, 3147 { 0x100077a3, 0x00 }, 3148 { 0x100077a4, 0x23 }, 3149 { 0x100077a5, 0x26 }, 3150 { 0x100077a6, 0x11 }, 3151 { 0x100077a7, 0x00 }, 3152 { 0x100077a8, 0x23 }, 3153 { 0x100077a9, 0x24 }, 3154 { 0x100077aa, 0x81 }, 3155 { 0x100077ab, 0x00 }, 3156 { 0x100077ac, 0xb7 }, 3157 { 0x100077ad, 0xc4 }, 3158 { 0x100077ae, 0x00 }, 3159 { 0x100077af, 0x00 }, 3160 { 0x100077b0, 0x83 }, 3161 { 0x100077b1, 0xc7 }, 3162 { 0x100077b2, 0x04 }, 3163 { 0x100077b3, 0x56 }, 3164 { 0x100077b4, 0x13 }, 3165 { 0x100077b5, 0x07 }, 3166 { 0x100077b6, 0x80 }, 3167 { 0x100077b7, 0x01 }, 3168 { 0x100077b8, 0x93 }, 3169 { 0x100077b9, 0xf7 }, 3170 { 0x100077ba, 0xf7 }, 3171 { 0x100077bb, 0x0f }, 3172 { 0x100077bc, 0x63 }, 3173 { 0x100077bd, 0x70 }, 3174 { 0x100077be, 0xf7 }, 3175 { 0x100077bf, 0x04 }, 3176 { 0x100077c0, 0x37 }, 3177 { 0x100077c1, 0xd4 }, 3178 { 0x100077c2, 0x00 }, 3179 { 0x100077c3, 0x10 }, 3180 { 0x100077c4, 0x83 }, 3181 { 0x100077c5, 0x47 }, 3182 { 0x100077c6, 0x54 }, 3183 { 0x100077c7, 0xd9 }, 3184 { 0x100077c8, 0x93 }, 3185 { 0x100077c9, 0xf7 }, 3186 { 0x100077ca, 0xf7 }, 3187 { 0x100077cb, 0x0f }, 3188 { 0x100077cc, 0x63 }, 3189 { 0x100077cd, 0x88 }, 3190 { 0x100077ce, 0x07 }, 3191 { 0x100077cf, 0x02 }, 3192 { 0x100077d0, 0x93 }, 3193 { 0x100077d1, 0x07 }, 3194 { 0x100077d2, 0x10 }, 3195 { 0x100077d3, 0x00 }, 3196 { 0x100077d4, 0x23 }, 3197 { 0x100077d5, 0x82 }, 3198 { 0x100077d6, 0xf4 }, 3199 { 0x100077d7, 0x58 }, 3200 { 0x100077d8, 0x03 }, 3201 { 0x100077d9, 0x45 }, 3202 { 0x100077da, 0x64 }, 3203 { 0x100077db, 0xd9 }, 3204 { 0x100077dc, 0xb7 }, 3205 { 0x100077dd, 0x15 }, 3206 { 0x100077de, 0x00 }, 3207 { 0x100077df, 0x00 }, 3208 { 0x100077e0, 0x93 }, 3209 { 0x100077e1, 0x85 }, 3210 { 0x100077e2, 0x85 }, 3211 { 0x100077e3, 0x38 }, 3212 { 0x100077e4, 0x13 }, 3213 { 0x100077e5, 0x75 }, 3214 { 0x100077e6, 0xf5 }, 3215 { 0x100077e7, 0x0f }, 3216 { 0x100077e8, 0xef }, 3217 { 0x100077e9, 0xe0 }, 3218 { 0x100077ea, 0x9f }, 3219 { 0x100077eb, 0xd0 }, 3220 { 0x100077ec, 0x93 }, 3221 { 0x100077ed, 0x55 }, 3222 { 0x100077ee, 0xf5 }, 3223 { 0x100077ef, 0x41 }, 3224 { 0x100077f0, 0xef }, 3225 { 0x100077f1, 0xe0 }, 3226 { 0x100077f2, 0x8f }, 3227 { 0x100077f3, 0xa3 }, 3228 { 0x100077f4, 0x23 }, 3229 { 0x100077f5, 0x82 }, 3230 { 0x100077f6, 0x04 }, 3231 { 0x100077f7, 0x58 }, 3232 { 0x100077f8, 0xa3 }, 3233 { 0x100077f9, 0x0a }, 3234 { 0x100077fa, 0x04 }, 3235 { 0x100077fb, 0xd8 }, 3236 { 0x100077fc, 0x83 }, 3237 { 0x100077fd, 0x20 }, 3238 { 0x100077fe, 0xc1 }, 3239 { 0x100077ff, 0x00 }, 3240 { 0x10007800, 0x03 }, 3241 { 0x10007801, 0x24 }, 3242 { 0x10007802, 0x81 }, 3243 { 0x10007803, 0x00 }, 3244 { 0x10007804, 0x83 }, 3245 { 0x10007805, 0x24 }, 3246 { 0x10007806, 0x41 }, 3247 { 0x10007807, 0x00 }, 3248 { 0x10007808, 0x13 }, 3249 { 0x10007809, 0x01 }, 3250 { 0x1000780a, 0x01 }, 3251 { 0x1000780b, 0x01 }, 3252 { 0x1000780c, 0x67 }, 3253 { 0x1000780d, 0x80 }, 3254 { 0x1000780e, 0x00 }, 3255 { 0x1000780f, 0x00 }, 3256 { 0x10007810, 0x67 }, 3257 { 0x10007811, 0x80 }, 3258 { 0x10007812, 0x00 }, 3259 { 0x10007813, 0x00 }, 3260 { 0x10007814, 0x13 }, 3261 { 0x10007815, 0x01 }, 3262 { 0x10007816, 0x01 }, 3263 { 0x10007817, 0xff }, 3264 { 0x10007818, 0x23 }, 3265 { 0x10007819, 0x26 }, 3266 { 0x1000781a, 0x11 }, 3267 { 0x1000781b, 0x00 }, 3268 { 0x1000781c, 0xef }, 3269 { 0x1000781d, 0xd0 }, 3270 { 0x1000781e, 0x8f }, 3271 { 0x1000781f, 0x86 }, 3272 { 0x10007820, 0x83 }, 3273 { 0x10007821, 0xc7 }, 3274 { 0x10007822, 0x11 }, 3275 { 0x10007823, 0x42 }, 3276 { 0x10007824, 0x63 }, 3277 { 0x10007825, 0x86 }, 3278 { 0x10007826, 0x07 }, 3279 { 0x10007827, 0x00 }, 3280 { 0x10007828, 0x03 }, 3281 { 0x10007829, 0xc7 }, 3282 { 0x1000782a, 0x01 }, 3283 { 0x1000782b, 0x42 }, 3284 { 0x1000782c, 0x63 }, 3285 { 0x1000782d, 0x10 }, 3286 { 0x1000782e, 0x07 }, 3287 { 0x1000782f, 0x02 }, 3288 { 0x10007830, 0x83 }, 3289 { 0x10007831, 0xc6 }, 3290 { 0x10007832, 0x21 }, 3291 { 0x10007833, 0x41 }, 3292 { 0x10007834, 0x13 }, 3293 { 0x10007835, 0x07 }, 3294 { 0x10007836, 0xf0 }, 3295 { 0x10007837, 0x01 }, 3296 { 0x10007838, 0x13 }, 3297 { 0x10007839, 0x05 }, 3298 { 0x1000783a, 0xf0 }, 3299 { 0x1000783b, 0x01 }, 3300 { 0x1000783c, 0x63 }, 3301 { 0x1000783d, 0x98 }, 3302 { 0x1000783e, 0xe6 }, 3303 { 0x1000783f, 0x02 }, 3304 { 0x10007840, 0x63 }, 3305 { 0x10007841, 0x8a }, 3306 { 0x10007842, 0x07 }, 3307 { 0x10007843, 0x02 }, 3308 { 0x10007844, 0x83 }, 3309 { 0x10007845, 0xc7 }, 3310 { 0x10007846, 0x01 }, 3311 { 0x10007847, 0x42 }, 3312 { 0x10007848, 0x63 }, 3313 { 0x10007849, 0x86 }, 3314 { 0x1000784a, 0x07 }, 3315 { 0x1000784b, 0x02 }, 3316 { 0x1000784c, 0x83 }, 3317 { 0x1000784d, 0xc7 }, 3318 { 0x1000784e, 0x31 }, 3319 { 0x1000784f, 0x42 }, 3320 { 0x10007850, 0x63 }, 3321 { 0x10007851, 0x86 }, 3322 { 0x10007852, 0x07 }, 3323 { 0x10007853, 0x00 }, 3324 { 0x10007854, 0x83 }, 3325 { 0x10007855, 0xc7 }, 3326 { 0x10007856, 0x21 }, 3327 { 0x10007857, 0x42 }, 3328 { 0x10007858, 0x63 }, 3329 { 0x10007859, 0x9e }, 3330 { 0x1000785a, 0x07 }, 3331 { 0x1000785b, 0x00 }, 3332 { 0x1000785c, 0x03 }, 3333 { 0x1000785d, 0xc7 }, 3334 { 0x1000785e, 0x21 }, 3335 { 0x1000785f, 0x41 }, 3336 { 0x10007860, 0x93 }, 3337 { 0x10007861, 0x07 }, 3338 { 0x10007862, 0xb0 }, 3339 { 0x10007863, 0x01 }, 3340 { 0x10007864, 0x63 }, 3341 { 0x10007865, 0x08 }, 3342 { 0x10007866, 0xf7 }, 3343 { 0x10007867, 0x00 }, 3344 { 0x10007868, 0x13 }, 3345 { 0x10007869, 0x05 }, 3346 { 0x1000786a, 0xb0 }, 3347 { 0x1000786b, 0x01 }, 3348 { 0x1000786c, 0xef }, 3349 { 0x1000786d, 0xd0 }, 3350 { 0x1000786e, 0x0f }, 3351 { 0x1000786f, 0xcf }, 3352 { 0x10007870, 0xef }, 3353 { 0x10007871, 0xd0 }, 3354 { 0x10007872, 0x8f }, 3355 { 0x10007873, 0xa4 }, 3356 { 0x10007874, 0x93 }, 3357 { 0x10007875, 0x06 }, 3358 { 0x10007876, 0x10 }, 3359 { 0x10007877, 0x00 }, 3360 { 0x10007878, 0xa3 }, 3361 { 0x10007879, 0x89 }, 3362 { 0x1000787a, 0xd1 }, 3363 { 0x1000787b, 0x40 }, 3364 { 0x1000787c, 0x37 }, 3365 { 0x1000787d, 0xd7 }, 3366 { 0x1000787e, 0x00 }, 3367 { 0x1000787f, 0x10 }, 3368 { 0x10007880, 0x83 }, 3369 { 0x10007881, 0x47 }, 3370 { 0x10007882, 0x07 }, 3371 { 0x10007883, 0xd9 }, 3372 { 0x10007884, 0x93 }, 3373 { 0x10007885, 0xf7 }, 3374 { 0x10007886, 0xf7 }, 3375 { 0x10007887, 0x0f }, 3376 { 0x10007888, 0x63 }, 3377 { 0x10007889, 0x90 }, 3378 { 0x1000788a, 0x07 }, 3379 { 0x1000788b, 0x02 }, 3380 { 0x1000788c, 0x37 }, 3381 { 0x1000788d, 0xc6 }, 3382 { 0x1000788e, 0x00 }, 3383 { 0x1000788f, 0x00 }, 3384 { 0x10007890, 0x83 }, 3385 { 0x10007891, 0x47 }, 3386 { 0x10007892, 0x26 }, 3387 { 0x10007893, 0x04 }, 3388 { 0x10007894, 0x93 }, 3389 { 0x10007895, 0xe7 }, 3390 { 0x10007896, 0x07 }, 3391 { 0x10007897, 0xf8 }, 3392 { 0x10007898, 0x93 }, 3393 { 0x10007899, 0xf7 }, 3394 { 0x1000789a, 0xf7 }, 3395 { 0x1000789b, 0x0f }, 3396 { 0x1000789c, 0x23 }, 3397 { 0x1000789d, 0x01 }, 3398 { 0x1000789e, 0xf6 }, 3399 { 0x1000789f, 0x04 }, 3400 { 0x100078a0, 0x23 }, 3401 { 0x100078a1, 0x08 }, 3402 { 0x100078a2, 0xd7 }, 3403 { 0x100078a3, 0xd8 }, 3404 { 0x100078a4, 0x23 }, 3405 { 0x100078a5, 0x09 }, 3406 { 0x100078a6, 0x07 }, 3407 { 0x100078a7, 0xd8 }, 3408 { 0x100078a8, 0x83 }, 3409 { 0x100078a9, 0x20 }, 3410 { 0x100078aa, 0xc1 }, 3411 { 0x100078ab, 0x00 }, 3412 { 0x100078ac, 0x13 }, 3413 { 0x100078ad, 0x01 }, 3414 { 0x100078ae, 0x01 }, 3415 { 0x100078af, 0x01 }, 3416 { 0x100078b0, 0x67 }, 3417 { 0x100078b1, 0x80 }, 3418 { 0x100078b2, 0x00 }, 3419 { 0x100078b3, 0x00 }, 3420 { 0x3fc2bfc7, 0x00 }, 3421 { 0x3fc2bfc6, 0x00 }, 3422 { 0x3fc2bfc5, 0x00 }, 3423 { 0x3fc2bfc4, 0x01 }, 3424 { 0x0000d486, 0x43 }, 3425 { 0x1000db00, 0x02 }, 3426 { 0x1000db01, 0x00 }, 3427 { 0x1000db02, 0x11 }, 3428 { 0x1000db03, 0x00 }, 3429 { 0x1000db04, 0x00 }, 3430 { 0x1000db05, 0x82 }, 3431 { 0x1000db06, 0x04 }, 3432 { 0x1000db07, 0xf1 }, 3433 { 0x1000db08, 0x00 }, 3434 { 0x1000db09, 0x00 }, 3435 { 0x1000db0a, 0x40 }, 3436 { 0x0000d540, 0x01 }, 3437 }; 3438 3439 static const struct reg_default rt1320_reg_defaults[] = { 3440 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_MUTE, CH_01), 0x01 }, 3441 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_MUTE, CH_02), 0x01 }, 3442 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE27, RT1320_SDCA_CTL_REQ_POWER_STATE, 0), 0x03 }, 3443 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, RT1320_SDCA_CTL_REQ_POWER_STATE, 0), 0x03 }, 3444 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PPU21, RT1320_SDCA_CTL_POSTURE_NUMBER, 0), 0x00 }, 3445 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_CS113, RT1320_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), 0x09 }, 3446 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_CS14, RT1320_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), 0x0b }, 3447 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_CS21, RT1320_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), 0x09 }, 3448 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, RT1320_SDCA_CTL_ACTUAL_POWER_STATE, 0), 0x03 }, 3449 }; 3450 3451 static const struct reg_default rt1320_mbq_defaults[] = { 3452 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_VOLUME, CH_01), 0x0000 }, 3453 { SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_VOLUME, CH_02), 0x0000 }, 3454 }; 3455 3456 static bool rt1320_readable_register(struct device *dev, unsigned int reg) 3457 { 3458 switch (reg) { 3459 case 0xc000 ... 0xc086: 3460 case 0xc400 ... 0xc409: 3461 case 0xc480 ... 0xc48f: 3462 case 0xc4c0 ... 0xc4c4: 3463 case 0xc4e0 ... 0xc4e7: 3464 case 0xc500: 3465 case 0xc560 ... 0xc56b: 3466 case 0xc570: 3467 case 0xc580 ... 0xc59a: 3468 case 0xc5b0 ... 0xc60f: 3469 case 0xc640 ... 0xc64f: 3470 case 0xc670: 3471 case 0xc680 ... 0xc683: 3472 case 0xc700 ... 0xc76f: 3473 case 0xc800 ... 0xc801: 3474 case 0xc820: 3475 case 0xc900 ... 0xc901: 3476 case 0xc920 ... 0xc921: 3477 case 0xca00 ... 0xca07: 3478 case 0xca20 ... 0xca27: 3479 case 0xca40 ... 0xca4b: 3480 case 0xca60 ... 0xca68: 3481 case 0xca80 ... 0xca88: 3482 case 0xcb00 ... 0xcb0c: 3483 case 0xcc00 ... 0xcc12: 3484 case 0xcc80 ... 0xcc81: 3485 case 0xcd00: 3486 case 0xcd80 ... 0xcd82: 3487 case 0xce00 ... 0xce4d: 3488 case 0xcf00 ... 0xcf25: 3489 case 0xd000 ... 0xd0ff: 3490 case 0xd100 ... 0xd1ff: 3491 case 0xd200 ... 0xd2ff: 3492 case 0xd300 ... 0xd3ff: 3493 case 0xd400 ... 0xd403: 3494 case 0xd410 ... 0xd417: 3495 case 0xd470 ... 0xd497: 3496 case 0xd4dc ... 0xd50f: 3497 case 0xd520 ... 0xd543: 3498 case 0xd560 ... 0xd5ef: 3499 case 0xd600 ... 0xd663: 3500 case 0xda00 ... 0xda6e: 3501 case 0xda80 ... 0xda9e: 3502 case 0xdb00 ... 0xdb7f: 3503 case 0xdc00: 3504 case 0xdc20 ... 0xdc21: 3505 case 0xdd00 ... 0xdd17: 3506 case 0xde00 ... 0xde09: 3507 case 0xdf00 ... 0xdf1b: 3508 case 0xe000 ... 0xe847: 3509 case 0xf01e: 3510 case 0xf717 ... 0xf719: 3511 case 0xf720 ... 0xf723: 3512 case 0x1000cd91 ... 0x1000cd96: 3513 case 0x1000f008: 3514 case 0x1000f021: 3515 case 0x3fe2e000 ... 0x3fe2e003: 3516 case 0x3fc2ab80 ... 0x3fc2abd4: 3517 /* 0x41000189/0x4100018a */ 3518 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_MUTE, CH_01): 3519 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_MUTE, CH_02): 3520 /* 0x41001388 */ 3521 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE27, RT1320_SDCA_CTL_REQ_POWER_STATE, 0): 3522 /* 0x41001988 */ 3523 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, RT1320_SDCA_CTL_REQ_POWER_STATE, 0): 3524 /* 0x41080000 */ 3525 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT0, RT1320_SDCA_CTL_FUNC_STATUS, 0): 3526 /* 0x41080200 */ 3527 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PPU21, RT1320_SDCA_CTL_POSTURE_NUMBER, 0): 3528 /* 0x41080900 */ 3529 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_CS113, RT1320_SDCA_CTL_SAMPLE_FREQ_INDEX, 0): 3530 /* 0x41080980 */ 3531 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_CS14, RT1320_SDCA_CTL_SAMPLE_FREQ_INDEX, 0): 3532 /* 0x41081080 */ 3533 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_CS21, RT1320_SDCA_CTL_SAMPLE_FREQ_INDEX, 0): 3534 /* 0x41081480/0x41081488 */ 3535 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_SAPU, RT1320_SDCA_CTL_SAPU_PROTECTION_MODE, 0): 3536 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_SAPU, RT1320_SDCA_CTL_SAPU_PROTECTION_STATUS, 0): 3537 /* 0x41081980 */ 3538 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, RT1320_SDCA_CTL_ACTUAL_POWER_STATE, 0): 3539 return true; 3540 default: 3541 return false; 3542 } 3543 } 3544 3545 static bool rt1320_volatile_register(struct device *dev, unsigned int reg) 3546 { 3547 switch (reg) { 3548 case 0xc000: 3549 case 0xc003: 3550 case 0xc081: 3551 case 0xc402 ... 0xc406: 3552 case 0xc48c ... 0xc48f: 3553 case 0xc560: 3554 case 0xc5b5 ... 0xc5b7: 3555 case 0xc5fc ... 0xc5ff: 3556 case 0xc820: 3557 case 0xc900: 3558 case 0xc920: 3559 case 0xca42: 3560 case 0xca62: 3561 case 0xca82: 3562 case 0xcd00: 3563 case 0xce03: 3564 case 0xce10: 3565 case 0xce14 ... 0xce17: 3566 case 0xce44 ... 0xce49: 3567 case 0xce4c ... 0xce4d: 3568 case 0xcf0c: 3569 case 0xcf10 ... 0xcf25: 3570 case 0xd486 ... 0xd487: 3571 case 0xd4e5 ... 0xd4e6: 3572 case 0xd4e8 ... 0xd4ff: 3573 case 0xd530: 3574 case 0xd540: 3575 case 0xd543: 3576 case 0xdb58 ... 0xdb5f: 3577 case 0xdb60 ... 0xdb63: 3578 case 0xdb68 ... 0xdb69: 3579 case 0xdb6d: 3580 case 0xdb70 ... 0xdb71: 3581 case 0xdb76: 3582 case 0xdb7a: 3583 case 0xdb7c ... 0xdb7f: 3584 case 0xdd0c ... 0xdd13: 3585 case 0xde02: 3586 case 0xdf14 ... 0xdf1b: 3587 case 0xe83c ... 0xe847: 3588 case 0xf01e: 3589 case 0xf717 ... 0xf719: 3590 case 0xf720 ... 0xf723: 3591 case 0x10000000 ... 0x10007fff: 3592 case 0x1000c000 ... 0x1000dfff: 3593 case 0x1000f008: 3594 case 0x1000f021: 3595 case 0x3fc2ab80 ... 0x3fc2abd4: 3596 case 0x3fc2bf80 ... 0x3fc2bf83: 3597 case 0x3fc2bfc0 ... 0x3fc2bfc7: 3598 case 0x3fe2e000 ... 0x3fe2e003: 3599 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT0, RT1320_SDCA_CTL_FUNC_STATUS, 0): 3600 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_SAPU, RT1320_SDCA_CTL_SAPU_PROTECTION_MODE, 0): 3601 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_SAPU, RT1320_SDCA_CTL_SAPU_PROTECTION_STATUS, 0): 3602 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, RT1320_SDCA_CTL_ACTUAL_POWER_STATE, 0): 3603 return true; 3604 default: 3605 return false; 3606 } 3607 } 3608 3609 static bool rt1320_mbq_readable_register(struct device *dev, unsigned int reg) 3610 { 3611 switch (reg) { 3612 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_VOLUME, CH_01): 3613 case SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_VOLUME, CH_02): 3614 return true; 3615 default: 3616 return false; 3617 } 3618 } 3619 3620 static const struct regmap_config rt1320_sdw_regmap = { 3621 .reg_bits = 32, 3622 .val_bits = 8, 3623 .readable_reg = rt1320_readable_register, 3624 .volatile_reg = rt1320_volatile_register, 3625 .max_register = 0x41081980, 3626 .reg_defaults = rt1320_reg_defaults, 3627 .num_reg_defaults = ARRAY_SIZE(rt1320_reg_defaults), 3628 .cache_type = REGCACHE_MAPLE, 3629 .use_single_read = true, 3630 .use_single_write = true, 3631 }; 3632 3633 static const struct regmap_config rt1320_mbq_regmap = { 3634 .name = "sdw-mbq", 3635 .reg_bits = 32, 3636 .val_bits = 16, 3637 .readable_reg = rt1320_mbq_readable_register, 3638 .max_register = 0x41000192, 3639 .reg_defaults = rt1320_mbq_defaults, 3640 .num_reg_defaults = ARRAY_SIZE(rt1320_mbq_defaults), 3641 .cache_type = REGCACHE_MAPLE, 3642 .use_single_read = true, 3643 .use_single_write = true, 3644 }; 3645 3646 static int rt1320_read_prop(struct sdw_slave *slave) 3647 { 3648 struct sdw_slave_prop *prop = &slave->prop; 3649 int nval; 3650 int i, j; 3651 u32 bit; 3652 unsigned long addr; 3653 struct sdw_dpn_prop *dpn; 3654 3655 /* 3656 * Due to support the multi-lane, we call 'sdw_slave_read_prop' to get the lane mapping 3657 */ 3658 sdw_slave_read_prop(slave); 3659 3660 prop->scp_int1_mask = SDW_SCP_INT1_BUS_CLASH | SDW_SCP_INT1_PARITY; 3661 prop->quirks = SDW_SLAVE_QUIRKS_INVALID_INITIAL_PARITY; 3662 3663 prop->paging_support = true; 3664 prop->lane_control_support = true; 3665 3666 /* first we need to allocate memory for set bits in port lists */ 3667 prop->source_ports = BIT(4); 3668 prop->sink_ports = BIT(1); 3669 3670 nval = hweight32(prop->source_ports); 3671 prop->src_dpn_prop = devm_kcalloc(&slave->dev, nval, 3672 sizeof(*prop->src_dpn_prop), GFP_KERNEL); 3673 if (!prop->src_dpn_prop) 3674 return -ENOMEM; 3675 3676 i = 0; 3677 dpn = prop->src_dpn_prop; 3678 addr = prop->source_ports; 3679 for_each_set_bit(bit, &addr, 32) { 3680 dpn[i].num = bit; 3681 dpn[i].type = SDW_DPN_FULL; 3682 dpn[i].simple_ch_prep_sm = true; 3683 dpn[i].ch_prep_timeout = 10; 3684 i++; 3685 } 3686 3687 /* do this again for sink now */ 3688 nval = hweight32(prop->sink_ports); 3689 prop->sink_dpn_prop = devm_kcalloc(&slave->dev, nval, 3690 sizeof(*prop->sink_dpn_prop), GFP_KERNEL); 3691 if (!prop->sink_dpn_prop) 3692 return -ENOMEM; 3693 3694 j = 0; 3695 dpn = prop->sink_dpn_prop; 3696 addr = prop->sink_ports; 3697 for_each_set_bit(bit, &addr, 32) { 3698 dpn[j].num = bit; 3699 dpn[j].type = SDW_DPN_FULL; 3700 dpn[j].simple_ch_prep_sm = true; 3701 dpn[j].ch_prep_timeout = 10; 3702 j++; 3703 } 3704 3705 /* set the timeout values */ 3706 prop->clk_stop_timeout = 64; 3707 3708 return 0; 3709 } 3710 3711 static int rt1320_pde_transition_delay(struct rt1320_sdw_priv *rt1320, unsigned char ps) 3712 { 3713 unsigned int delay = 1000, val; 3714 3715 pm_runtime_mark_last_busy(&rt1320->sdw_slave->dev); 3716 3717 /* waiting for Actual PDE becomes to PS0/PS3 */ 3718 while (delay) { 3719 regmap_read(rt1320->regmap, 3720 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, 3721 RT1320_SDCA_CTL_ACTUAL_POWER_STATE, 0), &val); 3722 if (val == ps) 3723 break; 3724 3725 usleep_range(1000, 1500); 3726 delay--; 3727 } 3728 if (!delay) { 3729 dev_warn(&rt1320->sdw_slave->dev, "%s PDE to %s is NOT ready", __func__, ps?"PS3":"PS0"); 3730 return -ETIMEDOUT; 3731 } 3732 3733 return 0; 3734 } 3735 3736 static void rt1320_vc_preset(struct rt1320_sdw_priv *rt1320) 3737 { 3738 struct sdw_slave *slave = rt1320->sdw_slave; 3739 unsigned int i, reg, val, delay, retry, tmp; 3740 3741 regmap_multi_reg_write(rt1320->regmap, rt1320_vc_blind_write, ARRAY_SIZE(rt1320_vc_blind_write)); 3742 3743 for (i = 0; i < ARRAY_SIZE(rt1320_vc_patch_code_write); i++) { 3744 reg = rt1320_vc_patch_code_write[i].reg; 3745 val = rt1320_vc_patch_code_write[i].def; 3746 delay = rt1320_vc_patch_code_write[i].delay_us; 3747 3748 if ((reg == SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, RT1320_SDCA_CTL_REQ_POWER_STATE, 0)) && 3749 (val == 0x00)) { 3750 retry = 200; 3751 while (retry) { 3752 regmap_read(rt1320->regmap, RT1320_KR0_INT_READY, &tmp); 3753 dev_dbg(&slave->dev, "%s, RT1320_KR0_INT_READY=0x%x\n", __func__, tmp); 3754 if (tmp == 0x1f) 3755 break; 3756 usleep_range(1000, 1500); 3757 retry--; 3758 } 3759 if (!retry) 3760 dev_warn(&slave->dev, "%s MCU is NOT ready!", __func__); 3761 } 3762 regmap_write(rt1320->regmap, reg, val); 3763 if (delay) 3764 usleep_range(delay, delay + 1000); 3765 } 3766 } 3767 3768 static int rt1320_io_init(struct device *dev, struct sdw_slave *slave) 3769 { 3770 struct rt1320_sdw_priv *rt1320 = dev_get_drvdata(dev); 3771 unsigned int amp_func_status, val, tmp; 3772 3773 if (rt1320->hw_init) 3774 return 0; 3775 3776 regcache_cache_only(rt1320->regmap, false); 3777 regcache_cache_only(rt1320->mbq_regmap, false); 3778 if (rt1320->first_hw_init) { 3779 regcache_cache_bypass(rt1320->regmap, true); 3780 regcache_cache_bypass(rt1320->mbq_regmap, true); 3781 } else { 3782 /* 3783 * PM runtime status is marked as 'active' only when a Slave reports as Attached 3784 */ 3785 /* update count of parent 'active' children */ 3786 pm_runtime_set_active(&slave->dev); 3787 } 3788 3789 pm_runtime_get_noresume(&slave->dev); 3790 3791 if (rt1320->version_id < 0) { 3792 regmap_read(rt1320->regmap, RT1320_DEV_VERSION_ID_1, &val); 3793 rt1320->version_id = val; 3794 } 3795 3796 regmap_read(rt1320->regmap, 3797 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT0, RT1320_SDCA_CTL_FUNC_STATUS, 0), &_func_status); 3798 dev_dbg(dev, "%s amp func_status=0x%x\n", __func__, amp_func_status); 3799 3800 /* initialization write */ 3801 if ((amp_func_status & FUNCTION_NEEDS_INITIALIZATION)) { 3802 if (rt1320->version_id < RT1320_VC) { 3803 regmap_multi_reg_write(rt1320->regmap, rt1320_blind_write, ARRAY_SIZE(rt1320_blind_write)); 3804 regmap_multi_reg_write(rt1320->regmap, rt1320_patch_code_write, 3805 ARRAY_SIZE(rt1320_patch_code_write)); 3806 } else if (rt1320->version_id == RT1320_VC) { 3807 rt1320_vc_preset(rt1320); 3808 } 3809 3810 regmap_write(rt1320->regmap, 3811 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT0, RT1320_SDCA_CTL_FUNC_STATUS, 0), 3812 FUNCTION_NEEDS_INITIALIZATION); 3813 } 3814 if (!rt1320->first_hw_init && rt1320->version_id == RT1320_VA) { 3815 regmap_write(rt1320->regmap, SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, 3816 RT1320_SDCA_CTL_REQ_POWER_STATE, 0), 0); 3817 regmap_read(rt1320->regmap, RT1320_HIFI_VER_0, &val); 3818 regmap_read(rt1320->regmap, RT1320_HIFI_VER_1, &tmp); 3819 val = (tmp << 8) | val; 3820 regmap_read(rt1320->regmap, RT1320_HIFI_VER_2, &tmp); 3821 val = (tmp << 16) | val; 3822 regmap_read(rt1320->regmap, RT1320_HIFI_VER_3, &tmp); 3823 val = (tmp << 24) | val; 3824 dev_dbg(dev, "%s ROM version=0x%x\n", __func__, val); 3825 /* 3826 * We call the version b which has the new DSP ROM code against version a. 3827 * Therefore, we read the DSP address to check the ID. 3828 */ 3829 if (val == RT1320_VER_B_ID) 3830 rt1320->version_id = RT1320_VB; 3831 regmap_write(rt1320->regmap, SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, 3832 RT1320_SDCA_CTL_REQ_POWER_STATE, 0), 3); 3833 } 3834 dev_dbg(dev, "%s version_id=%d\n", __func__, rt1320->version_id); 3835 3836 if (rt1320->first_hw_init) { 3837 regcache_cache_bypass(rt1320->regmap, false); 3838 regcache_cache_bypass(rt1320->mbq_regmap, false); 3839 regcache_mark_dirty(rt1320->regmap); 3840 regcache_mark_dirty(rt1320->mbq_regmap); 3841 } 3842 3843 /* Mark Slave initialization complete */ 3844 rt1320->first_hw_init = true; 3845 rt1320->hw_init = true; 3846 3847 pm_runtime_mark_last_busy(&slave->dev); 3848 pm_runtime_put_autosuspend(&slave->dev); 3849 3850 dev_dbg(&slave->dev, "%s hw_init complete\n", __func__); 3851 return 0; 3852 } 3853 3854 static int rt1320_update_status(struct sdw_slave *slave, 3855 enum sdw_slave_status status) 3856 { 3857 struct rt1320_sdw_priv *rt1320 = dev_get_drvdata(&slave->dev); 3858 3859 if (status == SDW_SLAVE_UNATTACHED) 3860 rt1320->hw_init = false; 3861 3862 /* 3863 * Perform initialization only if slave status is present and 3864 * hw_init flag is false 3865 */ 3866 if (rt1320->hw_init || status != SDW_SLAVE_ATTACHED) 3867 return 0; 3868 3869 /* perform I/O transfers required for Slave initialization */ 3870 return rt1320_io_init(&slave->dev, slave); 3871 } 3872 3873 static int rt1320_pde23_event(struct snd_soc_dapm_widget *w, 3874 struct snd_kcontrol *kcontrol, int event) 3875 { 3876 struct snd_soc_component *component = 3877 snd_soc_dapm_to_component(w->dapm); 3878 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); 3879 unsigned char ps0 = 0x0, ps3 = 0x3; 3880 3881 switch (event) { 3882 case SND_SOC_DAPM_POST_PMU: 3883 regmap_write(rt1320->regmap, 3884 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, 3885 RT1320_SDCA_CTL_REQ_POWER_STATE, 0), ps0); 3886 rt1320_pde_transition_delay(rt1320, ps0); 3887 break; 3888 case SND_SOC_DAPM_PRE_PMD: 3889 regmap_write(rt1320->regmap, 3890 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, 3891 RT1320_SDCA_CTL_REQ_POWER_STATE, 0), ps3); 3892 rt1320_pde_transition_delay(rt1320, ps3); 3893 break; 3894 default: 3895 break; 3896 } 3897 3898 return 0; 3899 } 3900 3901 static int rt1320_set_gain_put(struct snd_kcontrol *kcontrol, 3902 struct snd_ctl_elem_value *ucontrol) 3903 { 3904 struct snd_soc_component *component = snd_kcontrol_chip(kcontrol); 3905 struct soc_mixer_control *mc = 3906 (struct soc_mixer_control *)kcontrol->private_value; 3907 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); 3908 unsigned int gain_l_val, gain_r_val; 3909 unsigned int lvalue, rvalue; 3910 const unsigned int interval_offset = 0xc0; 3911 3912 regmap_read(rt1320->mbq_regmap, mc->reg, &lvalue); 3913 regmap_read(rt1320->mbq_regmap, mc->rreg, &rvalue); 3914 3915 /* L Channel */ 3916 gain_l_val = ucontrol->value.integer.value[0]; 3917 if (gain_l_val > mc->max) 3918 gain_l_val = mc->max; 3919 gain_l_val = 0 - ((mc->max - gain_l_val) * interval_offset); 3920 gain_l_val &= 0xffff; 3921 3922 /* R Channel */ 3923 gain_r_val = ucontrol->value.integer.value[1]; 3924 if (gain_r_val > mc->max) 3925 gain_r_val = mc->max; 3926 gain_r_val = 0 - ((mc->max - gain_r_val) * interval_offset); 3927 gain_r_val &= 0xffff; 3928 3929 if (lvalue == gain_l_val && rvalue == gain_r_val) 3930 return 0; 3931 3932 /* Lch*/ 3933 regmap_write(rt1320->mbq_regmap, mc->reg, gain_l_val); 3934 /* Rch */ 3935 regmap_write(rt1320->mbq_regmap, mc->rreg, gain_r_val); 3936 3937 return 1; 3938 } 3939 3940 static int rt1320_set_gain_get(struct snd_kcontrol *kcontrol, 3941 struct snd_ctl_elem_value *ucontrol) 3942 { 3943 struct snd_soc_component *component = snd_kcontrol_chip(kcontrol); 3944 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); 3945 struct soc_mixer_control *mc = 3946 (struct soc_mixer_control *)kcontrol->private_value; 3947 unsigned int read_l, read_r, ctl_l = 0, ctl_r = 0; 3948 const unsigned int interval_offset = 0xc0; 3949 3950 regmap_read(rt1320->mbq_regmap, mc->reg, &read_l); 3951 regmap_read(rt1320->mbq_regmap, mc->rreg, &read_r); 3952 3953 ctl_l = mc->max - (((0 - read_l) & 0xffff) / interval_offset); 3954 3955 if (read_l != read_r) 3956 ctl_r = mc->max - (((0 - read_r) & 0xffff) / interval_offset); 3957 else 3958 ctl_r = ctl_l; 3959 3960 ucontrol->value.integer.value[0] = ctl_l; 3961 ucontrol->value.integer.value[1] = ctl_r; 3962 return 0; 3963 } 3964 3965 static const char * const rt1320_rx_data_ch_select[] = { 3966 "L,R", 3967 "R,L", 3968 "L,L", 3969 "R,R", 3970 "L,L+R", 3971 "R,L+R", 3972 "L+R,L", 3973 "L+R,R", 3974 "L+R,L+R", 3975 }; 3976 3977 static SOC_ENUM_SINGLE_DECL(rt1320_rx_data_ch_enum, 3978 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PPU21, RT1320_SDCA_CTL_POSTURE_NUMBER, 0), 0, 3979 rt1320_rx_data_ch_select); 3980 3981 static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -6525, 75, 0); 3982 3983 static const struct snd_kcontrol_new rt1320_snd_controls[] = { 3984 SOC_DOUBLE_R_EXT_TLV("FU21 Playback Volume", 3985 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_VOLUME, CH_01), 3986 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_VOLUME, CH_02), 3987 0, 0x57, 0, rt1320_set_gain_get, rt1320_set_gain_put, out_vol_tlv), 3988 SOC_ENUM("RX Channel Select", rt1320_rx_data_ch_enum), 3989 }; 3990 3991 static const struct snd_kcontrol_new rt1320_spk_l_dac = 3992 SOC_DAPM_SINGLE_AUTODISABLE("Switch", 3993 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_MUTE, CH_01), 3994 0, 1, 1); 3995 static const struct snd_kcontrol_new rt1320_spk_r_dac = 3996 SOC_DAPM_SINGLE_AUTODISABLE("Switch", 3997 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_FU21, RT1320_SDCA_CTL_FU_MUTE, CH_02), 3998 0, 1, 1); 3999 4000 static const struct snd_soc_dapm_widget rt1320_dapm_widgets[] = { 4001 /* Audio Interface */ 4002 SND_SOC_DAPM_AIF_IN("DP1RX", "DP1 Playback", 0, SND_SOC_NOPM, 0, 0), 4003 SND_SOC_DAPM_AIF_OUT("DP4TX", "DP4 Capture", 0, SND_SOC_NOPM, 0, 0), 4004 4005 /* Digital Interface */ 4006 SND_SOC_DAPM_PGA("FU21", SND_SOC_NOPM, 0, 0, NULL, 0), 4007 SND_SOC_DAPM_SUPPLY("PDE 23", SND_SOC_NOPM, 0, 0, 4008 rt1320_pde23_event, 4009 SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), 4010 4011 /* Output */ 4012 SND_SOC_DAPM_SWITCH("OT23 L", SND_SOC_NOPM, 0, 0, &rt1320_spk_l_dac), 4013 SND_SOC_DAPM_SWITCH("OT23 R", SND_SOC_NOPM, 0, 0, &rt1320_spk_r_dac), 4014 SND_SOC_DAPM_OUTPUT("SPOL"), 4015 SND_SOC_DAPM_OUTPUT("SPOR"), 4016 4017 /* Input */ 4018 SND_SOC_DAPM_PGA("AEC Data", SND_SOC_NOPM, 0, 0, NULL, 0), 4019 SND_SOC_DAPM_SIGGEN("AEC Gen"), 4020 }; 4021 4022 static const struct snd_soc_dapm_route rt1320_dapm_routes[] = { 4023 { "FU21", NULL, "DP1RX" }, 4024 { "FU21", NULL, "PDE 23" }, 4025 { "OT23 L", "Switch", "FU21" }, 4026 { "OT23 R", "Switch", "FU21" }, 4027 { "SPOL", NULL, "OT23 L" }, 4028 { "SPOR", NULL, "OT23 R" }, 4029 4030 { "AEC Data", NULL, "AEC Gen" }, 4031 { "DP4TX", NULL, "AEC Data" }, 4032 }; 4033 4034 static int rt1320_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, 4035 int direction) 4036 { 4037 snd_soc_dai_dma_data_set(dai, direction, sdw_stream); 4038 return 0; 4039 } 4040 4041 static void rt1320_sdw_shutdown(struct snd_pcm_substream *substream, 4042 struct snd_soc_dai *dai) 4043 { 4044 snd_soc_dai_set_dma_data(dai, substream, NULL); 4045 } 4046 4047 static int rt1320_sdw_hw_params(struct snd_pcm_substream *substream, 4048 struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) 4049 { 4050 struct snd_soc_component *component = dai->component; 4051 struct rt1320_sdw_priv *rt1320 = 4052 snd_soc_component_get_drvdata(component); 4053 struct sdw_stream_config stream_config; 4054 struct sdw_port_config port_config; 4055 struct sdw_stream_runtime *sdw_stream; 4056 int retval; 4057 unsigned int sampling_rate; 4058 4059 dev_dbg(dai->dev, "%s %s", __func__, dai->name); 4060 sdw_stream = snd_soc_dai_get_dma_data(dai, substream); 4061 4062 if (!sdw_stream) 4063 return -EINVAL; 4064 4065 if (!rt1320->sdw_slave) 4066 return -EINVAL; 4067 4068 /* SoundWire specific configuration */ 4069 snd_sdw_params_to_config(substream, params, &stream_config, &port_config); 4070 4071 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { 4072 if (dai->id == RT1320_AIF1) 4073 port_config.num = 1; 4074 else 4075 return -EINVAL; 4076 } else { 4077 if (dai->id == RT1320_AIF1) 4078 port_config.num = 4; 4079 else 4080 return -EINVAL; 4081 } 4082 4083 retval = sdw_stream_add_slave(rt1320->sdw_slave, &stream_config, 4084 &port_config, 1, sdw_stream); 4085 if (retval) { 4086 dev_err(dai->dev, "%s: Unable to configure port\n", __func__); 4087 return retval; 4088 } 4089 4090 /* sampling rate configuration */ 4091 switch (params_rate(params)) { 4092 case 16000: 4093 sampling_rate = RT1320_SDCA_RATE_16000HZ; 4094 break; 4095 case 32000: 4096 sampling_rate = RT1320_SDCA_RATE_32000HZ; 4097 break; 4098 case 44100: 4099 sampling_rate = RT1320_SDCA_RATE_44100HZ; 4100 break; 4101 case 48000: 4102 sampling_rate = RT1320_SDCA_RATE_48000HZ; 4103 break; 4104 case 96000: 4105 sampling_rate = RT1320_SDCA_RATE_96000HZ; 4106 break; 4107 case 192000: 4108 sampling_rate = RT1320_SDCA_RATE_192000HZ; 4109 break; 4110 default: 4111 dev_err(component->dev, "%s: Rate %d is not supported\n", 4112 __func__, params_rate(params)); 4113 return -EINVAL; 4114 } 4115 4116 /* set sampling frequency */ 4117 regmap_write(rt1320->regmap, 4118 SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_CS21, RT1320_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), 4119 sampling_rate); 4120 4121 return 0; 4122 } 4123 4124 static int rt1320_sdw_pcm_hw_free(struct snd_pcm_substream *substream, 4125 struct snd_soc_dai *dai) 4126 { 4127 struct snd_soc_component *component = dai->component; 4128 struct rt1320_sdw_priv *rt1320 = 4129 snd_soc_component_get_drvdata(component); 4130 struct sdw_stream_runtime *sdw_stream = 4131 snd_soc_dai_get_dma_data(dai, substream); 4132 4133 if (!rt1320->sdw_slave) 4134 return -EINVAL; 4135 4136 sdw_stream_remove_slave(rt1320->sdw_slave, sdw_stream); 4137 return 0; 4138 } 4139 4140 /* 4141 * slave_ops: callbacks for get_clock_stop_mode, clock_stop and 4142 * port_prep are not defined for now 4143 */ 4144 static const struct sdw_slave_ops rt1320_slave_ops = { 4145 .read_prop = rt1320_read_prop, 4146 .update_status = rt1320_update_status, 4147 }; 4148 4149 static int rt1320_sdw_component_probe(struct snd_soc_component *component) 4150 { 4151 int ret; 4152 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); 4153 4154 rt1320->component = component; 4155 4156 if (!rt1320->first_hw_init) 4157 return 0; 4158 4159 ret = pm_runtime_resume(component->dev); 4160 dev_dbg(&rt1320->sdw_slave->dev, "%s pm_runtime_resume, ret=%d", __func__, ret); 4161 if (ret < 0 && ret != -EACCES) 4162 return ret; 4163 4164 return 0; 4165 } 4166 4167 static const struct snd_soc_component_driver soc_component_sdw_rt1320 = { 4168 .probe = rt1320_sdw_component_probe, 4169 .controls = rt1320_snd_controls, 4170 .num_controls = ARRAY_SIZE(rt1320_snd_controls), 4171 .dapm_widgets = rt1320_dapm_widgets, 4172 .num_dapm_widgets = ARRAY_SIZE(rt1320_dapm_widgets), 4173 .dapm_routes = rt1320_dapm_routes, 4174 .num_dapm_routes = ARRAY_SIZE(rt1320_dapm_routes), 4175 .endianness = 1, 4176 }; 4177 4178 static const struct snd_soc_dai_ops rt1320_aif_dai_ops = { 4179 .hw_params = rt1320_sdw_hw_params, 4180 .hw_free = rt1320_sdw_pcm_hw_free, 4181 .set_stream = rt1320_set_sdw_stream, 4182 .shutdown = rt1320_sdw_shutdown, 4183 }; 4184 4185 #define RT1320_STEREO_RATES (SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \ 4186 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000) 4187 #define RT1320_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | \ 4188 SNDRV_PCM_FMTBIT_S32_LE) 4189 4190 static struct snd_soc_dai_driver rt1320_sdw_dai[] = { 4191 { 4192 .name = "rt1320-aif1", 4193 .id = RT1320_AIF1, 4194 .playback = { 4195 .stream_name = "DP1 Playback", 4196 .channels_min = 1, 4197 .channels_max = 2, 4198 .rates = RT1320_STEREO_RATES, 4199 .formats = RT1320_FORMATS, 4200 }, 4201 .capture = { 4202 .stream_name = "DP4 Capture", 4203 .channels_min = 1, 4204 .channels_max = 2, 4205 .rates = RT1320_STEREO_RATES, 4206 .formats = RT1320_FORMATS, 4207 }, 4208 .ops = &rt1320_aif_dai_ops, 4209 }, 4210 }; 4211 4212 static int rt1320_sdw_init(struct device *dev, struct regmap *regmap, 4213 struct regmap *mbq_regmap, struct sdw_slave *slave) 4214 { 4215 struct rt1320_sdw_priv *rt1320; 4216 int ret; 4217 4218 rt1320 = devm_kzalloc(dev, sizeof(*rt1320), GFP_KERNEL); 4219 if (!rt1320) 4220 return -ENOMEM; 4221 4222 dev_set_drvdata(dev, rt1320); 4223 rt1320->sdw_slave = slave; 4224 rt1320->mbq_regmap = mbq_regmap; 4225 rt1320->regmap = regmap; 4226 4227 regcache_cache_only(rt1320->regmap, true); 4228 regcache_cache_only(rt1320->mbq_regmap, true); 4229 4230 /* 4231 * Mark hw_init to false 4232 * HW init will be performed when device reports present 4233 */ 4234 rt1320->hw_init = false; 4235 rt1320->first_hw_init = false; 4236 rt1320->version_id = -1; 4237 4238 ret = devm_snd_soc_register_component(dev, 4239 &soc_component_sdw_rt1320, 4240 rt1320_sdw_dai, 4241 ARRAY_SIZE(rt1320_sdw_dai)); 4242 if (ret < 0) 4243 return ret; 4244 4245 /* set autosuspend parameters */ 4246 pm_runtime_set_autosuspend_delay(dev, 3000); 4247 pm_runtime_use_autosuspend(dev); 4248 4249 /* make sure the device does not suspend immediately */ 4250 pm_runtime_mark_last_busy(dev); 4251 4252 pm_runtime_enable(dev); 4253 4254 /* important note: the device is NOT tagged as 'active' and will remain 4255 * 'suspended' until the hardware is enumerated/initialized. This is required 4256 * to make sure the ASoC framework use of pm_runtime_get_sync() does not silently 4257 * fail with -EACCESS because of race conditions between card creation and enumeration 4258 */ 4259 4260 dev_dbg(dev, "%s\n", __func__); 4261 4262 return ret; 4263 } 4264 4265 static int rt1320_sdw_probe(struct sdw_slave *slave, 4266 const struct sdw_device_id *id) 4267 { 4268 struct regmap *regmap, *mbq_regmap; 4269 4270 /* Regmap Initialization */ 4271 mbq_regmap = devm_regmap_init_sdw_mbq(slave, &rt1320_mbq_regmap); 4272 if (IS_ERR(mbq_regmap)) 4273 return PTR_ERR(mbq_regmap); 4274 4275 regmap = devm_regmap_init_sdw(slave, &rt1320_sdw_regmap); 4276 if (IS_ERR(regmap)) 4277 return PTR_ERR(regmap); 4278 4279 return rt1320_sdw_init(&slave->dev, regmap, mbq_regmap, slave); 4280 } 4281 4282 static int rt1320_sdw_remove(struct sdw_slave *slave) 4283 { 4284 pm_runtime_disable(&slave->dev); 4285 4286 return 0; 4287 } 4288 4289 /* 4290 * Version A/B will use the class id 0 4291 * The newer version than A/B will use the class id 1, so add it in advance 4292 */ 4293 static const struct sdw_device_id rt1320_id[] = { 4294 SDW_SLAVE_ENTRY_EXT(0x025d, 0x1320, 0x3, 0x0, 0), 4295 SDW_SLAVE_ENTRY_EXT(0x025d, 0x1320, 0x3, 0x1, 0), 4296 {}, 4297 }; 4298 MODULE_DEVICE_TABLE(sdw, rt1320_id); 4299 4300 static int __maybe_unused rt1320_dev_suspend(struct device *dev) 4301 { 4302 struct rt1320_sdw_priv *rt1320 = dev_get_drvdata(dev); 4303 4304 if (!rt1320->hw_init) 4305 return 0; 4306 4307 regcache_cache_only(rt1320->regmap, true); 4308 regcache_cache_only(rt1320->mbq_regmap, true); 4309 return 0; 4310 } 4311 4312 #define RT1320_PROBE_TIMEOUT 5000 4313 4314 static int __maybe_unused rt1320_dev_resume(struct device *dev) 4315 { 4316 struct sdw_slave *slave = dev_to_sdw_dev(dev); 4317 struct rt1320_sdw_priv *rt1320 = dev_get_drvdata(dev); 4318 unsigned long time; 4319 4320 if (!rt1320->first_hw_init) 4321 return 0; 4322 4323 if (!slave->unattach_request) 4324 goto regmap_sync; 4325 4326 time = wait_for_completion_timeout(&slave->initialization_complete, 4327 msecs_to_jiffies(RT1320_PROBE_TIMEOUT)); 4328 if (!time) { 4329 dev_err(&slave->dev, "%s: Initialization not complete, timed out\n", __func__); 4330 return -ETIMEDOUT; 4331 } 4332 4333 regmap_sync: 4334 slave->unattach_request = 0; 4335 regcache_cache_only(rt1320->regmap, false); 4336 regcache_sync(rt1320->regmap); 4337 regcache_cache_only(rt1320->mbq_regmap, false); 4338 regcache_sync(rt1320->mbq_regmap); 4339 return 0; 4340 } 4341 4342 static const struct dev_pm_ops rt1320_pm = { 4343 SET_SYSTEM_SLEEP_PM_OPS(rt1320_dev_suspend, rt1320_dev_resume) 4344 SET_RUNTIME_PM_OPS(rt1320_dev_suspend, rt1320_dev_resume, NULL) 4345 }; 4346 4347 static struct sdw_driver rt1320_sdw_driver = { 4348 .driver = { 4349 .name = "rt1320-sdca", 4350 .pm = &rt1320_pm, 4351 }, 4352 .probe = rt1320_sdw_probe, 4353 .remove = rt1320_sdw_remove, 4354 .ops = &rt1320_slave_ops, 4355 .id_table = rt1320_id, 4356 }; 4357 module_sdw_driver(rt1320_sdw_driver); 4358 4359 MODULE_DESCRIPTION("ASoC RT1320 driver SDCA SDW"); 4360 MODULE_AUTHOR("Shuming Fan <shumingf@realtek.com>"); 4361 MODULE_LICENSE("GPL"); 4362