4362 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2//3// rt1320-sdw.c -- rt1320 SDCA ALSA SoC amplifier audio driver4//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 */29static 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 94static 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 169static 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 */2119static 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 3439static 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 3451static 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 3456static 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 3545static 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 3609static 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 3620static 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 3633static 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 3646static 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 mapping3657 */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 3711static 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 3736static 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 3768static 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 Attached3784 */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 3854static 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 and3864 * hw_init flag is false3865 */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 3873static 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 3901static 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 3940static 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 else3958 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 3965static 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 3977static 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 3981static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -6525, 75, 0);3982 3983static 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 3991static 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);3995static 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 4000static 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 4022static 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 4034static 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 4041static 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 4047static 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 else4075 return -EINVAL;4076 } else {4077 if (dai->id == RT1320_AIF1)4078 port_config.num = 4;4079 else4080 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 4124static 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 and4142 * port_prep are not defined for now4143 */4144static const struct sdw_slave_ops rt1320_slave_ops = {4145 .read_prop = rt1320_read_prop,4146 .update_status = rt1320_update_status,4147};4148 4149static 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 4167static 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 4178static 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 4190static 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 4212static 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 false4232 * HW init will be performed when device reports present4233 */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 remain4255 * 'suspended' until the hardware is enumerated/initialized. This is required4256 * to make sure the ASoC framework use of pm_runtime_get_sync() does not silently4257 * fail with -EACCESS because of race conditions between card creation and enumeration4258 */4259 4260 dev_dbg(dev, "%s\n", __func__);4261 4262 return ret;4263}4264 4265static 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 4282static 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 04291 * The newer version than A/B will use the class id 1, so add it in advance4292 */4293static 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};4298MODULE_DEVICE_TABLE(sdw, rt1320_id);4299 4300static 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 50004313 4314static 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 4333regmap_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 4342static 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 4347static 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};4357module_sdw_driver(rt1320_sdw_driver);4358 4359MODULE_DESCRIPTION("ASoC RT1320 driver SDCA SDW");4360MODULE_AUTHOR("Shuming Fan <shumingf@realtek.com>");4361MODULE_LICENSE("GPL");4362