aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/scripts/python/export-to-sqlite.py
blob: 8043a7272a56dcacc8ea3924cfd7a94b8d517adc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
# export-to-sqlite.py: export perf data to a sqlite3 database
# Copyright (c) 2017, Intel Corporation.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms and conditions of the GNU General Public License,
# version 2, as published by the Free Software Foundation.
#
# This program is distributed in the hope it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
# more details.

from __future__ import print_function

import os
import sys
import struct
import datetime

# To use this script you will need to have installed package python-pyside which
# provides LGPL-licensed Python bindings for Qt.  You will also need the package
# libqt4-sql-sqlite for Qt sqlite3 support.
#
# Examples of installing pyside:
#
# ubuntu:
#
#	$ sudo apt-get install python-pyside.qtsql libqt4-sql-psql
#
#	Alternately, to use Python3 and/or pyside 2, one of the following:
#
#		$ sudo apt-get install python3-pyside.qtsql libqt4-sql-psql
#		$ sudo apt-get install python-pyside2.qtsql libqt5sql5-psql
#		$ sudo apt-get install python3-pyside2.qtsql libqt5sql5-psql
# fedora:
#
#	$ sudo yum install python-pyside
#
#	Alternately, to use Python3 and/or pyside 2, one of the following:
#		$ sudo yum install python3-pyside
#		$ pip install --user PySide2
#		$ pip3 install --user PySide2
#
# An example of using this script with Intel PT:
#
#	$ perf record -e intel_pt//u ls
#	$ perf script -s ~/libexec/perf-core/scripts/python/export-to-sqlite.py pt_example branches calls
#	2017-07-31 14:26:07.326913 Creating database...
#	2017-07-31 14:26:07.538097 Writing records...
#	2017-07-31 14:26:09.889292 Adding indexes
#	2017-07-31 14:26:09.958746 Done
#
# To browse the database, sqlite3 can be used e.g.
#
#	$ sqlite3 pt_example
#	sqlite> .header on
#	sqlite> select * from samples_view where id < 10;
#	sqlite> .mode column
#	sqlite> select * from samples_view where id < 10;
#	sqlite> .tables
#	sqlite> .schema samples_view
#	sqlite> .quit
#
# An example of using the database is provided by the script
# exported-sql-viewer.py.  Refer to that script for details.
#
# The database structure is practically the same as created by the script
# export-to-postgresql.py. Refer to that script for details.  A notable
# difference is  the 'transaction' column of the 'samples' table which is
# renamed 'transaction_' in sqlite because 'transaction' is a reserved word.

pyside_version_1 = True
if not "pyside-version-1" in sys.argv:
	try:
		from PySide2.QtSql import *
		pyside_version_1 = False
	except:
		pass

if pyside_version_1:
	from PySide.QtSql import *

sys.path.append(os.environ['PERF_EXEC_PATH'] + \
	'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')

# These perf imports are not used at present
#from perf_trace_context import *
#from Core import *

perf_db_export_mode = True
perf_db_export_calls = False
perf_db_export_callchains = False

def printerr(*args, **keyword_args):
	print(*args, file=sys.stderr, **keyword_args)

def printdate(*args, **kw_args):
        print(datetime.datetime.today(), *args, sep=' ', **kw_args)

def usage():
	printerr("Usage is: export-to-sqlite.py <database name> [<columns>] [<calls>] [<callchains>] [<pyside-version-1>]");
	printerr("where:  columns            'all' or 'branches'");
	printerr("        calls              'calls' => create calls and call_paths table");
	printerr("        callchains         'callchains' => create call_paths table");
	printerr("        pyside-version-1   'pyside-version-1' => use pyside version 1");
	raise Exception("Too few or bad arguments")

if (len(sys.argv) < 2):
	usage()

dbname = sys.argv[1]

if (len(sys.argv) >= 3):
	columns = sys.argv[2]
else:
	columns = "all"

if columns not in ("all", "branches"):
	usage()

branches = (columns == "branches")

for i in range(3,len(sys.argv)):
	if (sys.argv[i] == "calls"):
		perf_db_export_calls = True
	elif (sys.argv[i] == "callchains"):
		perf_db_export_callchains = True
	elif (sys.argv[i] == "pyside-version-1"):
		pass
	else:
		usage()

def do_query(q, s):
	if (q.exec_(s)):
		return
	raise Exception("Query failed: " + q.lastError().text())

def do_query_(q):
	if (q.exec_()):
		return
	raise Exception("Query failed: " + q.lastError().text())

printdate("Creating database ...")

db_exists = False
try:
	f = open(dbname)
	f.close()
	db_exists = True
except:
	pass

if db_exists:
	raise Exception(dbname + " already exists")

db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName(dbname)
db.open()

query = QSqlQuery(db)

do_query(query, 'PRAGMA journal_mode = OFF')
do_query(query, 'BEGIN TRANSACTION')

do_query(query, 'CREATE TABLE selected_events ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'name		varchar(80))')
do_query(query, 'CREATE TABLE machines ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'pid		integer,'
		'root_dir 	varchar(4096))')
do_query(query, 'CREATE TABLE threads ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'machine_id	bigint,'
		'process_id	bigint,'
		'pid		integer,'
		'tid		integer)')
do_query(query, 'CREATE TABLE comms ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'comm		varchar(16),'
		'c_thread_id	bigint,'
		'c_time		bigint,'
		'exec_flag	boolean)')
do_query(query, 'CREATE TABLE comm_threads ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'comm_id	bigint,'
		'thread_id	bigint)')
do_query(query, 'CREATE TABLE dsos ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'machine_id	bigint,'
		'short_name	varchar(256),'
		'long_name	varchar(4096),'
		'build_id	varchar(64))')
do_query(query, 'CREATE TABLE symbols ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'dso_id		bigint,'
		'sym_start	bigint,'
		'sym_end	bigint,'
		'binding	integer,'
		'name		varchar(2048))')
do_query(query, 'CREATE TABLE branch_types ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'name		varchar(80))')

if branches:
	do_query(query, 'CREATE TABLE samples ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'evsel_id	bigint,'
		'machine_id	bigint,'
		'thread_id	bigint,'
		'comm_id	bigint,'
		'dso_id		bigint,'
		'symbol_id	bigint,'
		'sym_offset	bigint,'
		'ip		bigint,'
		'time		bigint,'
		'cpu		integer,'
		'to_dso_id	bigint,'
		'to_symbol_id	bigint,'
		'to_sym_offset	bigint,'
		'to_ip		bigint,'
		'branch_type	integer,'
		'in_tx		boolean,'
		'call_path_id	bigint,'
		'insn_count	bigint,'
		'cyc_count	bigint)')
else:
	do_query(query, 'CREATE TABLE samples ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'evsel_id	bigint,'
		'machine_id	bigint,'
		'thread_id	bigint,'
		'comm_id	bigint,'
		'dso_id		bigint,'
		'symbol_id	bigint,'
		'sym_offset	bigint,'
		'ip		bigint,'
		'time		bigint,'
		'cpu		integer,'
		'to_dso_id	bigint,'
		'to_symbol_id	bigint,'
		'to_sym_offset	bigint,'
		'to_ip		bigint,'
		'period		bigint,'
		'weight		bigint,'
		'transaction_	bigint,'
		'data_src	bigint,'
		'branch_type	integer,'
		'in_tx		boolean,'
		'call_path_id	bigint,'
		'insn_count	bigint,'
		'cyc_count	bigint)')

if perf_db_export_calls or perf_db_export_callchains:
	do_query(query, 'CREATE TABLE call_paths ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'parent_id	bigint,'
		'symbol_id	bigint,'
		'ip		bigint)')
if perf_db_export_calls:
	do_query(query, 'CREATE TABLE calls ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'thread_id	bigint,'
		'comm_id	bigint,'
		'call_path_id	bigint,'
		'call_time	bigint,'
		'return_time	bigint,'
		'branch_count	bigint,'
		'call_id	bigint,'
		'return_id	bigint,'
		'parent_call_path_id	bigint,'
		'flags		integer,'
		'parent_id	bigint,'
		'insn_count	bigint,'
		'cyc_count	bigint)')

do_query(query, 'CREATE TABLE ptwrite ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'payload	bigint,'
		'exact_ip	integer)')

do_query(query, 'CREATE TABLE cbr ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'cbr		integer,'
		'mhz		integer,'
		'percent	integer)')

do_query(query, 'CREATE TABLE mwait ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'hints		integer,'
		'extensions	integer)')

do_query(query, 'CREATE TABLE pwre ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'cstate		integer,'
		'subcstate	integer,'
		'hw		integer)')

do_query(query, 'CREATE TABLE exstop ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'exact_ip	integer)')

do_query(query, 'CREATE TABLE pwrx ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'deepest_cstate	integer,'
		'last_cstate	integer,'
		'wake_reason	integer)')

do_query(query, 'CREATE TABLE context_switches ('
		'id		integer		NOT NULL	PRIMARY KEY,'
		'machine_id	bigint,'
		'time		bigint,'
		'cpu		integer,'
		'thread_out_id	bigint,'
		'comm_out_id	bigint,'
		'thread_in_id	bigint,'
		'comm_in_id	bigint,'
		'flags		integer)')

# printf was added to sqlite in version 3.8.3
sqlite_has_printf = False
try:
	do_query(query, 'SELECT printf("") FROM machines')
	sqlite_has_printf = True
except:
	pass

def emit_to_hex(x):
	if sqlite_has_printf:
		return 'printf("%x", ' + x + ')'
	else:
		return x

do_query(query, 'CREATE VIEW machines_view AS '
	'SELECT '
		'id,'
		'pid,'
		'root_dir,'
		'CASE WHEN id=0 THEN \'unknown\' WHEN pid=-1 THEN \'host\' ELSE \'guest\' END AS host_or_guest'
	' FROM machines')

do_query(query, 'CREATE VIEW dsos_view AS '
	'SELECT '
		'id,'
		'machine_id,'
		'(SELECT host_or_guest FROM machines_view WHERE id = machine_id) AS host_or_guest,'
		'short_name,'
		'long_name,'
		'build_id'
	' FROM dsos')

do_query(query, 'CREATE VIEW symbols_view AS '
	'SELECT '
		'id,'
		'name,'
		'(SELECT short_name FROM dsos WHERE id=dso_id) AS dso,'
		'dso_id,'
		'sym_start,'
		'sym_end,'
		'CASE WHEN binding=0 THEN \'local\' WHEN binding=1 THEN \'global\' ELSE \'weak\' END AS binding'
	' FROM symbols')

do_query(query, 'CREATE VIEW threads_view AS '
	'SELECT '
		'id,'
		'machine_id,'
		'(SELECT host_or_guest FROM machines_view WHERE id = machine_id) AS host_or_guest,'
		'process_id,'
		'pid,'
		'tid'
	' FROM threads')

do_query(query, 'CREATE VIEW comm_threads_view AS '
	'SELECT '
		'comm_id,'
		'(SELECT comm FROM comms WHERE id = comm_id) AS command,'
		'thread_id,'
		'(SELECT pid FROM threads WHERE id = thread_id) AS pid,'
		'(SELECT tid FROM threads WHERE id = thread_id) AS tid'
	' FROM comm_threads')

if perf_db_export_calls or perf_db_export_callchains:
	do_query(query, 'CREATE VIEW call_paths_view AS '
		'SELECT '
			'c.id,'
			+ emit_to_hex('c.ip') + ' AS ip,'
			'c.symbol_id,'
			'(SELECT name FROM symbols WHERE id = c.symbol_id) AS symbol,'
			'(SELECT dso_id FROM symbols WHERE id = c.symbol_id) AS dso_id,'
			'(SELECT dso FROM symbols_view  WHERE id = c.symbol_id) AS dso_short_name,'
			'c.parent_id,'
			+ emit_to_hex('p.ip') + ' AS parent_ip,'
			'p.symbol_id AS parent_symbol_id,'
			'(SELECT name FROM symbols WHERE id = p.symbol_id) AS parent_symbol,'
			'(SELECT dso_id FROM symbols WHERE id = p.symbol_id) AS parent_dso_id,'
			'(SELECT dso FROM symbols_view  WHERE id = p.symbol_id) AS parent_dso_short_name'
		' FROM call_paths c INNER JOIN call_paths p ON p.id = c.parent_id')
if perf_db_export_calls:
	do_query(query, 'CREATE VIEW calls_view AS '
		'SELECT '
			'calls.id,'
			'thread_id,'
			'(SELECT pid FROM threads WHERE id = thread_id) AS pid,'
			'(SELECT tid FROM threads WHERE id = thread_id) AS tid,'
			'(SELECT comm FROM comms WHERE id = comm_id) AS command,'
			'call_path_id,'
			+ emit_to_hex('ip') + ' AS ip,'
			'symbol_id,'
			'(SELECT name FROM symbols WHERE id = symbol_id) AS symbol,'
			'call_time,'
			'return_time,'
			'return_time - call_time AS elapsed_time,'
			'branch_count,'
			'insn_count,'
			'cyc_count,'
			'CASE WHEN cyc_count=0 THEN CAST(0 AS FLOAT) ELSE ROUND(CAST(insn_count AS FLOAT) / cyc_count, 2) END AS IPC,'
			'call_id,'
			'return_id,'
			'CASE WHEN flags=0 THEN \'\' WHEN flags=1 THEN \'no call\' WHEN flags=2 THEN \'no return\' WHEN flags=3 THEN \'no call/return\' WHEN flags=6 THEN \'jump\' ELSE flags END AS flags,'
			'parent_call_path_id,'
			'calls.parent_id'
		' FROM calls INNER JOIN call_paths ON call_paths.id = call_path_id')

do_query(query, 'CREATE VIEW samples_view AS '
	'SELECT '
		'id,'
		'time,'
		'cpu,'
		'(SELECT pid FROM threads WHERE id = thread_id) AS pid,'
		'(SELECT tid FROM threads WHERE id = thread_id) AS tid,'
		'(SELECT comm FROM comms WHERE id = comm_id) AS command,'
		'(SELECT name FROM selected_events WHERE id = evsel_id) AS event,'
		+ emit_to_hex('ip') + ' AS ip_hex,'
		'(SELECT name FROM symbols WHERE id = symbol_id) AS symbol,'
		'sym_offset,'
		'(SELECT short_name FROM dsos WHERE id = dso_id) AS dso_short_name,'
		+ emit_to_hex('to_ip') + ' AS to_ip_hex,'
		'(SELECT name FROM symbols WHERE id = to_symbol_id) AS to_symbol,'
		'to_sym_offset,'
		'(SELECT short_name FROM dsos WHERE id = to_dso_id) AS to_dso_short_name,'
		'(SELECT name FROM branch_types WHERE id = branch_type) AS branch_type_name,'
		'in_tx,'
		'insn_count,'
		'cyc_count,'
		'CASE WHEN cyc_count=0 THEN CAST(0 AS FLOAT) ELSE ROUND(CAST(insn_count AS FLOAT) / cyc_count, 2) END AS IPC'
	' FROM samples')

do_query(query, 'CREATE VIEW ptwrite_view AS '
	'SELECT '
		'ptwrite.id,'
		'time,'
		'cpu,'
		+ emit_to_hex('payload') + ' AS payload_hex,'
		'CASE WHEN exact_ip=0 THEN \'False\' ELSE \'True\' END AS exact_ip'
	' FROM ptwrite'
	' INNER JOIN samples ON samples.id = ptwrite.id')

do_query(query, 'CREATE VIEW cbr_view AS '
	'SELECT '
		'cbr.id,'
		'time,'
		'cpu,'
		'cbr,'
		'mhz,'
		'percent'
	' FROM cbr'
	' INNER JOIN samples ON samples.id = cbr.id')

do_query(query, 'CREATE VIEW mwait_view AS '
	'SELECT '
		'mwait.id,'
		'time,'
		'cpu,'
		+ emit_to_hex('hints') + ' AS hints_hex,'
		+ emit_to_hex('extensions') + ' AS extensions_hex'
	' FROM mwait'
	' INNER JOIN samples ON samples.id = mwait.id')

do_query(query, 'CREATE VIEW pwre_view AS '
	'SELECT '
		'pwre.id,'
		'time,'
		'cpu,'
		'cstate,'
		'subcstate,'
		'CASE WHEN hw=0 THEN \'False\' ELSE \'True\' END AS hw'
	' FROM pwre'
	' INNER JOIN samples ON samples.id = pwre.id')

do_query(query, 'CREATE VIEW exstop_view AS '
	'SELECT '
		'exstop.id,'
		'time,'
		'cpu,'
		'CASE WHEN exact_ip=0 THEN \'False\' ELSE \'True\' END AS exact_ip'
	' FROM exstop'
	' INNER JOIN samples ON samples.id = exstop.id')

do_query(query, 'CREATE VIEW pwrx_view AS '
	'SELECT '
		'pwrx.id,'
		'time,'
		'cpu,'
		'deepest_cstate,'
		'last_cstate,'
		'CASE     WHEN wake_reason=1 THEN \'Interrupt\''
			' WHEN wake_reason=2 THEN \'Timer Deadline\''
			' WHEN wake_reason=4 THEN \'Monitored Address\''
			' WHEN wake_reason=8 THEN \'HW\''
			' ELSE wake_reason '
		'END AS wake_reason'
	' FROM pwrx'
	' INNER JOIN samples ON samples.id = pwrx.id')

do_query(query, 'CREATE VIEW power_events_view AS '
	'SELECT '
		'samples.id,'
		'time,'
		'cpu,'
		'selected_events.name AS event,'
		'CASE WHEN selected_events.name=\'cbr\' THEN (SELECT cbr FROM cbr WHERE cbr.id = samples.id) ELSE "" END AS cbr,'
		'CASE WHEN selected_events.name=\'cbr\' THEN (SELECT mhz FROM cbr WHERE cbr.id = samples.id) ELSE "" END AS mhz,'
		'CASE WHEN selected_events.name=\'cbr\' THEN (SELECT percent FROM cbr WHERE cbr.id = samples.id) ELSE "" END AS percent,'
		'CASE WHEN selected_events.name=\'mwait\' THEN (SELECT ' + emit_to_hex('hints') + ' FROM mwait WHERE mwait.id = samples.id) ELSE "" END AS hints_hex,'
		'CASE WHEN selected_events.name=\'mwait\' THEN (SELECT ' + emit_to_hex('extensions') + ' FROM mwait WHERE mwait.id = samples.id) ELSE "" END AS extensions_hex,'
		'CASE WHEN selected_events.name=\'pwre\' THEN (SELECT cstate FROM pwre WHERE pwre.id = samples.id) ELSE "" END AS cstate,'
		'CASE WHEN selected_events.name=\'pwre\' THEN (SELECT subcstate FROM pwre WHERE pwre.id = samples.id) ELSE "" END AS subcstate,'
		'CASE WHEN selected_events.name=\'pwre\' THEN (SELECT hw FROM pwre WHERE pwre.id = samples.id) ELSE "" END AS hw,'
		'CASE WHEN selected_events.name=\'exstop\' THEN (SELECT exact_ip FROM exstop WHERE exstop.id = samples.id) ELSE "" END AS exact_ip,'
		'CASE WHEN selected_events.name=\'pwrx\' THEN (SELECT deepest_cstate FROM pwrx WHERE pwrx.id = samples.id) ELSE "" END AS deepest_cstate,'
		'CASE WHEN selected_events.name=\'pwrx\' THEN (SELECT last_cstate FROM pwrx WHERE pwrx.id = samples.id) ELSE "" END AS last_cstate,'
		'CASE WHEN selected_events.name=\'pwrx\' THEN (SELECT '
			'CASE     WHEN wake_reason=1 THEN \'Interrupt\''
				' WHEN wake_reason=2 THEN \'Timer Deadline\''
				' WHEN wake_reason=4 THEN \'Monitored Address\''
				' WHEN wake_reason=8 THEN \'HW\''
				' ELSE wake_reason '
			'END'
		' FROM pwrx WHERE pwrx.id = samples.id) ELSE "" END AS wake_reason'
	' FROM samples'
	' INNER JOIN selected_events ON selected_events.id = evsel_id'
	' WHERE selected_events.name IN (\'cbr\',\'mwait\',\'exstop\',\'pwre\',\'pwrx\')')

do_query(query, 'CREATE VIEW context_switches_view AS '
	'SELECT '
		'context_switches.id,'
		'context_switches.machine_id,'
		'context_switches.time,'
		'context_switches.cpu,'
		'th_out.pid AS pid_out,'
		'th_out.tid AS tid_out,'
		'comm_out.comm AS comm_out,'
		'th_in.pid AS pid_in,'
		'th_in.tid AS tid_in,'
		'comm_in.comm AS comm_in,'
		'CASE	  WHEN context_switches.flags = 0 THEN \'in\''
			' WHEN context_switches.flags = 1 THEN \'out\''
			' WHEN context_switches.flags = 3 THEN \'out preempt\''
			' ELSE context_switches.flags '
		'END AS flags'
	' FROM context_switches'
	' INNER JOIN threads AS th_out ON th_out.id   = context_switches.thread_out_id'
	' INNER JOIN threads AS th_in  ON th_in.id    = context_switches.thread_in_id'
	' INNER JOIN comms AS comm_out ON comm_out.id = context_switches.comm_out_id'
	' INNER JOIN comms AS comm_in  ON comm_in.id  = context_switches.comm_in_id')

do_query(query, 'END TRANSACTION')

evsel_query = QSqlQuery(db)
evsel_query.prepare("INSERT INTO selected_events VALUES (?, ?)")
machine_query = QSqlQuery(db)
machine_query.prepare("INSERT INTO machines VALUES (?, ?, ?)")
thread_query = QSqlQuery(db)
thread_query.prepare("INSERT INTO threads VALUES (?, ?, ?, ?, ?)")
comm_query = QSqlQuery(db)
comm_query.prepare("INSERT INTO comms VALUES (?, ?, ?, ?, ?)")
comm_thread_query = QSqlQuery(db)
comm_thread_query.prepare("INSERT INTO comm_threads VALUES (?, ?, ?)")
dso_query = QSqlQuery(db)
dso_query.prepare("INSERT INTO dsos VALUES (?, ?, ?, ?, ?)")
symbol_query = QSqlQuery(db)
symbol_query.prepare("INSERT INTO symbols VALUES (?, ?, ?, ?, ?, ?)")
branch_type_query = QSqlQuery(db)
branch_type_query.prepare("INSERT INTO branch_types VALUES (?, ?)")
sample_query = QSqlQuery(db)
if branches:
	sample_query.prepare("INSERT INTO samples VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
else:
	sample_query.prepare("INSERT INTO samples VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
if perf_db_export_calls or perf_db_export_callchains:
	call_path_query = QSqlQuery(db)
	call_path_query.prepare("INSERT INTO call_paths VALUES (?, ?, ?, ?)")
if perf_db_export_calls:
	call_query = QSqlQuery(db)
	call_query.prepare("INSERT INTO calls VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
ptwrite_query = QSqlQuery(db)
ptwrite_query.prepare("INSERT INTO ptwrite VALUES (?, ?, ?)")
cbr_query = QSqlQuery(db)
cbr_query.prepare("INSERT INTO cbr VALUES (?, ?, ?, ?)")
mwait_query = QSqlQuery(db)
mwait_query.prepare("INSERT INTO mwait VALUES (?, ?, ?)")
pwre_query = QSqlQuery(db)
pwre_query.prepare("INSERT INTO pwre VALUES (?, ?, ?, ?)")
exstop_query = QSqlQuery(db)
exstop_query.prepare("INSERT INTO exstop VALUES (?, ?)")
pwrx_query = QSqlQuery(db)
pwrx_query.prepare("INSERT INTO pwrx VALUES (?, ?, ?, ?)")
context_switch_query = QSqlQuery(db)
context_switch_query.prepare("INSERT INTO context_switches VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)")

def trace_begin():
	printdate("Writing records...")
	do_query(query, 'BEGIN TRANSACTION')
	# id == 0 means unknown.  It is easier to create records for them than replace the zeroes with NULLs
	evsel_table(0, "unknown")
	machine_table(0, 0, "unknown")
	thread_table(0, 0, 0, -1, -1)
	comm_table(0, "unknown", 0, 0, 0)
	dso_table(0, 0, "unknown", "unknown", "")
	symbol_table(0, 0, 0, 0, 0, "unknown")
	sample_table(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
	if perf_db_export_calls or perf_db_export_callchains:
		call_path_table(0, 0, 0, 0)
		call_return_table(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

unhandled_count = 0

def is_table_empty(table_name):
	do_query(query, 'SELECT * FROM ' + table_name + ' LIMIT 1');
	if query.next():
		return False
	return True

def drop(table_name):
	do_query(query, 'DROP VIEW ' + table_name + '_view');
	do_query(query, 'DROP TABLE ' + table_name);

def trace_end():
	do_query(query, 'END TRANSACTION')

	printdate("Adding indexes")
	if perf_db_export_calls:
		do_query(query, 'CREATE INDEX pcpid_idx ON calls (parent_call_path_id)')
		do_query(query, 'CREATE INDEX pid_idx ON calls (parent_id)')
		do_query(query, 'ALTER TABLE comms ADD has_calls boolean')
		do_query(query, 'UPDATE comms SET has_calls = 1 WHERE comms.id IN (SELECT DISTINCT comm_id FROM calls)')

	printdate("Dropping unused tables")
	if is_table_empty("ptwrite"):
		drop("ptwrite")
	if is_table_empty("mwait") and is_table_empty("pwre") and is_table_empty("exstop") and is_table_empty("pwrx"):
		do_query(query, 'DROP VIEW power_events_view');
		drop("mwait")
		drop("pwre")
		drop("exstop")
		drop("pwrx")
		if is_table_empty("cbr"):
			drop("cbr")
	if is_table_empty("context_switches"):
		drop("context_switches")

	if (unhandled_count):
		printdate("Warning: ", unhandled_count, " unhandled events")
	printdate("Done")

def trace_unhandled(event_name, context, event_fields_dict):
	global unhandled_count
	unhandled_count += 1

def sched__sched_switch(*x):
	pass

def bind_exec(q, n, x):
	for xx in x[0:n]:
		q.addBindValue(str(xx))
	do_query_(q)

def evsel_table(*x):
	bind_exec(evsel_query, 2, x)

def machine_table(*x):
	bind_exec(machine_query, 3, x)

def thread_table(*x):
	bind_exec(thread_query, 5, x)

def comm_table(*x):
	bind_exec(comm_query, 5, x)

def comm_thread_table(*x):
	bind_exec(comm_thread_query, 3, x)

def dso_table(*x):
	bind_exec(dso_query, 5, x)

def symbol_table(*x):
	bind_exec(symbol_query, 6, x)

def branch_type_table(*x):
	bind_exec(branch_type_query, 2, x)

def sample_table(*x):
	if branches:
		for xx in x[0:15]:
			sample_query.addBindValue(str(xx))
		for xx in x[19:24]:
			sample_query.addBindValue(str(xx))
		do_query_(sample_query)
	else:
		bind_exec(sample_query, 24, x)

def call_path_table(*x):
	bind_exec(call_path_query, 4, x)

def call_return_table(*x):
	bind_exec(call_query, 14, x)

def ptwrite(id, raw_buf):
	data = struct.unpack_from("<IQ", raw_buf)
	flags = data[0]
	payload = data[1]
	exact_ip = flags & 1
	ptwrite_query.addBindValue(str(id))
	ptwrite_query.addBindValue(str(payload))
	ptwrite_query.addBindValue(str(exact_ip))
	do_query_(ptwrite_query)

def cbr(id, raw_buf):
	data = struct.unpack_from("<BBBBII", raw_buf)
	cbr = data[0]
	MHz = (data[4] + 500) / 1000
	percent = ((cbr * 1000 / data[2]) + 5) / 10
	cbr_query.addBindValue(str(id))
	cbr_query.addBindValue(str(cbr))
	cbr_query.addBindValue(str(MHz))
	cbr_query.addBindValue(str(percent))
	do_query_(cbr_query)

def mwait(id, raw_buf):
	data = struct.unpack_from("<IQ", raw_buf)
	payload = data[1]
	hints = payload & 0xff
	extensions = (payload >> 32) & 0x3
	mwait_query.addBindValue(str(id))
	mwait_query.addBindValue(str(hints))
	mwait_query.addBindValue(str(extensions))
	do_query_(mwait_query)

def pwre(id, raw_buf):
	data = struct.unpack_from("<IQ", raw_buf)
	payload = data[1]
	hw = (payload >> 7) & 1
	cstate = (payload >> 12) & 0xf
	subcstate = (payload >> 8) & 0xf
	pwre_query.addBindValue(str(id))
	pwre_query.addBindValue(str(cstate))
	pwre_query.addBindValue(str(subcstate))
	pwre_query.addBindValue(str(hw))
	do_query_(pwre_query)

def exstop(id, raw_buf):
	data = struct.unpack_from("<I", raw_buf)
	flags = data[0]
	exact_ip = flags & 1
	exstop_query.addBindValue(str(id))
	exstop_query.addBindValue(str(exact_ip))
	do_query_(exstop_query)

def pwrx(id, raw_buf):
	data = struct.unpack_from("<IQ", raw_buf)
	payload = data[1]
	deepest_cstate = payload & 0xf
	last_cstate = (payload >> 4) & 0xf
	wake_reason = (payload >> 8) & 0xf
	pwrx_query.addBindValue(str(id))
	pwrx_query.addBindValue(str(deepest_cstate))
	pwrx_query.addBindValue(str(last_cstate))
	pwrx_query.addBindValue(str(wake_reason))
	do_query_(pwrx_query)

def synth_data(id, config, raw_buf, *x):
	if config == 0:
		ptwrite(id, raw_buf)
	elif config == 1:
		mwait(id, raw_buf)
	elif config == 2:
		pwre(id, raw_buf)
	elif config == 3:
		exstop(id, raw_buf)
	elif config == 4:
		pwrx(id, raw_buf)
	elif config == 5:
		cbr(id, raw_buf)

def context_switch_table(*x):
	bind_exec(context_switch_query, 9, x)
span> { 0x0000031E, 0x0000 }, /* R798 - DMIC2R Control */ { 0x00000400, 0x0000 }, /* R1024 - Output Enables 1 */ { 0x00000408, 0x0000 }, /* R1032 - Output Rate 1 */ { 0x00000409, 0x0022 }, /* R1033 - Output Volume Ramp */ { 0x00000410, 0x0080 }, /* R1040 - Output Path Config 1L */ { 0x00000411, 0x0180 }, /* R1041 - DAC Digital Volume 1L */ { 0x00000412, 0x0081 }, /* R1042 - DAC Volume Limit 1L */ { 0x00000413, 0x0001 }, /* R1043 - Noise Gate Select 1L */ { 0x00000415, 0x0180 }, /* R1045 - DAC Digital Volume 1R */ { 0x00000416, 0x0081 }, /* R1046 - DAC Volume Limit 1R */ { 0x00000417, 0x0002 }, /* R1047 - Noise Gate Select 1R */ { 0x00000429, 0x0180 }, /* R1065 - DAC Digital Volume 4L */ { 0x0000042A, 0x0081 }, /* R1066 - Out Volume 4L */ { 0x0000042B, 0x0040 }, /* R1067 - Noise Gate Select 4L */ { 0x00000450, 0x0000 }, /* R1104 - DAC AEC Control 1 */ { 0x00000458, 0x0000 }, /* R1112 - Noise Gate Control */ { 0x000004A0, 0x3480 }, /* R1184 - HP1 Short Circuit Ctrl */ { 0x00000500, 0x000C }, /* R1280 - AIF1 BCLK Ctrl */ { 0x00000501, 0x0008 }, /* R1281 - AIF1 Tx Pin Ctrl */ { 0x00000502, 0x0000 }, /* R1282 - AIF1 Rx Pin Ctrl */ { 0x00000503, 0x0000 }, /* R1283 - AIF1 Rate Ctrl */ { 0x00000504, 0x0000 }, /* R1284 - AIF1 Format */ { 0x00000505, 0x0040 }, /* R1285 - AIF1 Tx BCLK Rate */ { 0x00000506, 0x0040 }, /* R1286 - AIF1 Rx BCLK Rate */ { 0x00000507, 0x1818 }, /* R1287 - AIF1 Frame Ctrl 1 */ { 0x00000508, 0x1818 }, /* R1288 - AIF1 Frame Ctrl 2 */ { 0x00000509, 0x0000 }, /* R1289 - AIF1 Frame Ctrl 3 */ { 0x0000050A, 0x0001 }, /* R1290 - AIF1 Frame Ctrl 4 */ { 0x0000050B, 0x0002 }, /* R1291 - AIF1 Frame Ctrl 5 */ { 0x0000050C, 0x0003 }, /* R1292 - AIF1 Frame Ctrl 6 */ { 0x0000050D, 0x0004 }, /* R1293 - AIF1 Frame Ctrl 7 */ { 0x0000050E, 0x0005 }, /* R1294 - AIF1 Frame Ctrl 8 */ { 0x0000050F, 0x0006 }, /* R1295 - AIF1 Frame Ctrl 9 */ { 0x00000510, 0x0007 }, /* R1296 - AIF1 Frame Ctrl 10 */ { 0x00000511, 0x0000 }, /* R1297 - AIF1 Frame Ctrl 11 */ { 0x00000512, 0x0001 }, /* R1298 - AIF1 Frame Ctrl 12 */ { 0x00000513, 0x0002 }, /* R1299 - AIF1 Frame Ctrl 13 */ { 0x00000514, 0x0003 }, /* R1300 - AIF1 Frame Ctrl 14 */ { 0x00000515, 0x0004 }, /* R1301 - AIF1 Frame Ctrl 15 */ { 0x00000516, 0x0005 }, /* R1302 - AIF1 Frame Ctrl 16 */ { 0x00000517, 0x0006 }, /* R1303 - AIF1 Frame Ctrl 17 */ { 0x00000518, 0x0007 }, /* R1304 - AIF1 Frame Ctrl 18 */ { 0x00000519, 0x0000 }, /* R1305 - AIF1 Tx Enables */ { 0x0000051A, 0x0000 }, /* R1306 - AIF1 Rx Enables */ { 0x00000540, 0x000C }, /* R1344 - AIF2 BCLK Ctrl */ { 0x00000541, 0x0008 }, /* R1345 - AIF2 Tx Pin Ctrl */ { 0x00000542, 0x0000 }, /* R1346 - AIF2 Rx Pin Ctrl */ { 0x00000543, 0x0000 }, /* R1347 - AIF2 Rate Ctrl */ { 0x00000544, 0x0000 }, /* R1348 - AIF2 Format */ { 0x00000545, 0x0040 }, /* R1349 - AIF2 Tx BCLK Rate */ { 0x00000546, 0x0040 }, /* R1350 - AIF2 Rx BCLK Rate */ { 0x00000547, 0x1818 }, /* R1351 - AIF2 Frame Ctrl 1 */ { 0x00000548, 0x1818 }, /* R1352 - AIF2 Frame Ctrl 2 */ { 0x00000549, 0x0000 }, /* R1353 - AIF2 Frame Ctrl 3 */ { 0x0000054A, 0x0001 }, /* R1354 - AIF2 Frame Ctrl 4 */ { 0x0000054B, 0x0002 }, /* R1355 - AIF2 Frame Ctrl 5 */ { 0x0000054C, 0x0003 }, /* R1356 - AIF2 Frame Ctrl 6 */ { 0x0000054D, 0x0004 }, /* R1357 - AIF2 Frame Ctrl 7 */ { 0x0000054E, 0x0005 }, /* R1358 - AIF2 Frame Ctrl 8 */ { 0x00000551, 0x0000 }, /* R1361 - AIF2 Frame Ctrl 11 */ { 0x00000552, 0x0001 }, /* R1362 - AIF2 Frame Ctrl 12 */ { 0x00000553, 0x0002 }, /* R1363 - AIF2 Frame Ctrl 13 */ { 0x00000554, 0x0003 }, /* R1364 - AIF2 Frame Ctrl 14 */ { 0x00000555, 0x0004 }, /* R1365 - AIF2 Frame Ctrl 15 */ { 0x00000556, 0x0005 }, /* R1366 - AIF2 Frame Ctrl 16 */ { 0x00000559, 0x0000 }, /* R1369 - AIF2 Tx Enables */ { 0x0000055A, 0x0000 }, /* R1370 - AIF2 Rx Enables */ { 0x00000580, 0x000C }, /* R1408 - AIF3 BCLK Ctrl */ { 0x00000581, 0x0008 }, /* R1409 - AIF3 Tx Pin Ctrl */ { 0x00000582, 0x0000 }, /* R1410 - AIF3 Rx Pin Ctrl */ { 0x00000583, 0x0000 }, /* R1411 - AIF3 Rate Ctrl */ { 0x00000584, 0x0000 }, /* R1412 - AIF3 Format */ { 0x00000585, 0x0040 }, /* R1413 - AIF3 Tx BCLK Rate */ { 0x00000586, 0x0040 }, /* R1414 - AIF3 Rx BCLK Rate */ { 0x00000587, 0x1818 }, /* R1415 - AIF3 Frame Ctrl 1 */ { 0x00000588, 0x1818 }, /* R1416 - AIF3 Frame Ctrl 2 */ { 0x00000589, 0x0000 }, /* R1417 - AIF3 Frame Ctrl 3 */ { 0x0000058A, 0x0001 }, /* R1418 - AIF3 Frame Ctrl 4 */ { 0x00000591, 0x0000 }, /* R1425 - AIF3 Frame Ctrl 11 */ { 0x00000592, 0x0001 }, /* R1426 - AIF3 Frame Ctrl 12 */ { 0x00000599, 0x0000 }, /* R1433 - AIF3 Tx Enables */ { 0x0000059A, 0x0000 }, /* R1434 - AIF3 Rx Enables */ { 0x00000640, 0x0000 }, /* R1600 - PWM1MIX Input 1 Source */ { 0x00000641, 0x0080 }, /* R1601 - PWM1MIX Input 1 Volume */ { 0x00000642, 0x0000 }, /* R1602 - PWM1MIX Input 2 Source */ { 0x00000643, 0x0080 }, /* R1603 - PWM1MIX Input 2 Volume */ { 0x00000644, 0x0000 }, /* R1604 - PWM1MIX Input 3 Source */ { 0x00000645, 0x0080 }, /* R1605 - PWM1MIX Input 3 Volume */ { 0x00000646, 0x0000 }, /* R1606 - PWM1MIX Input 4 Source */ { 0x00000647, 0x0080 }, /* R1607 - PWM1MIX Input 4 Volume */ { 0x00000648, 0x0000 }, /* R1608 - PWM2MIX Input 1 Source */ { 0x00000649, 0x0080 }, /* R1609 - PWM2MIX Input 1 Volume */ { 0x0000064A, 0x0000 }, /* R1610 - PWM2MIX Input 2 Source */ { 0x0000064B, 0x0080 }, /* R1611 - PWM2MIX Input 2 Volume */ { 0x0000064C, 0x0000 }, /* R1612 - PWM2MIX Input 3 Source */ { 0x0000064D, 0x0080 }, /* R1613 - PWM2MIX Input 3 Volume */ { 0x0000064E, 0x0000 }, /* R1614 - PWM2MIX Input 4 Source */ { 0x0000064F, 0x0080 }, /* R1615 - PWM2MIX Input 4 Volume */ { 0x00000680, 0x0000 }, /* R1664 - OUT1LMIX Input 1 Source */ { 0x00000681, 0x0080 }, /* R1665 - OUT1LMIX Input 1 Volume */ { 0x00000682, 0x0000 }, /* R1666 - OUT1LMIX Input 2 Source */ { 0x00000683, 0x0080 }, /* R1667 - OUT1LMIX Input 2 Volume */ { 0x00000684, 0x0000 }, /* R1668 - OUT1LMIX Input 3 Source */ { 0x00000685, 0x0080 }, /* R1669 - OUT1LMIX Input 3 Volume */ { 0x00000686, 0x0000 }, /* R1670 - OUT1LMIX Input 4 Source */ { 0x00000687, 0x0080 }, /* R1671 - OUT1LMIX Input 4 Volume */ { 0x00000688, 0x0000 }, /* R1672 - OUT1RMIX Input 1 Source */ { 0x00000689, 0x0080 }, /* R1673 - OUT1RMIX Input 1 Volume */ { 0x0000068A, 0x0000 }, /* R1674 - OUT1RMIX Input 2 Source */ { 0x0000068B, 0x0080 }, /* R1675 - OUT1RMIX Input 2 Volume */ { 0x0000068C, 0x0000 }, /* R1676 - OUT1RMIX Input 3 Source */ { 0x0000068D, 0x0080 }, /* R1677 - OUT1RMIX Input 3 Volume */ { 0x0000068E, 0x0000 }, /* R1678 - OUT1RMIX Input 4 Source */ { 0x0000068F, 0x0080 }, /* R1679 - OUT1RMIX Input 4 Volume */ { 0x000006B0, 0x0000 }, /* R1712 - OUT4LMIX Input 1 Source */ { 0x000006B1, 0x0080 }, /* R1713 - OUT4LMIX Input 1 Volume */ { 0x000006B2, 0x0000 }, /* R1714 - OUT4LMIX Input 2 Source */ { 0x000006B3, 0x0080 }, /* R1715 - OUT4LMIX Input 2 Volume */ { 0x000006B4, 0x0000 }, /* R1716 - OUT4LMIX Input 3 Source */ { 0x000006B5, 0x0080 }, /* R1717 - OUT4LMIX Input 3 Volume */ { 0x000006B6, 0x0000 }, /* R1718 - OUT4LMIX Input 4 Source */ { 0x000006B7, 0x0080 }, /* R1719 - OUT4LMIX Input 4 Volume */ { 0x00000700, 0x0000 }, /* R1792 - AIF1TX1MIX Input 1 Source */ { 0x00000701, 0x0080 }, /* R1793 - AIF1TX1MIX Input 1 Volume */ { 0x00000702, 0x0000 }, /* R1794 - AIF1TX1MIX Input 2 Source */ { 0x00000703, 0x0080 }, /* R1795 - AIF1TX1MIX Input 2 Volume */ { 0x00000704, 0x0000 }, /* R1796 - AIF1TX1MIX Input 3 Source */ { 0x00000705, 0x0080 }, /* R1797 - AIF1TX1MIX Input 3 Volume */ { 0x00000706, 0x0000 }, /* R1798 - AIF1TX1MIX Input 4 Source */ { 0x00000707, 0x0080 }, /* R1799 - AIF1TX1MIX Input 4 Volume */ { 0x00000708, 0x0000 }, /* R1800 - AIF1TX2MIX Input 1 Source */ { 0x00000709, 0x0080 }, /* R1801 - AIF1TX2MIX Input 1 Volume */ { 0x0000070A, 0x0000 }, /* R1802 - AIF1TX2MIX Input 2 Source */ { 0x0000070B, 0x0080 }, /* R1803 - AIF1TX2MIX Input 2 Volume */ { 0x0000070C, 0x0000 }, /* R1804 - AIF1TX2MIX Input 3 Source */ { 0x0000070D, 0x0080 }, /* R1805 - AIF1TX2MIX Input 3 Volume */ { 0x0000070E, 0x0000 }, /* R1806 - AIF1TX2MIX Input 4 Source */ { 0x0000070F, 0x0080 }, /* R1807 - AIF1TX2MIX Input 4 Volume */ { 0x00000710, 0x0000 }, /* R1808 - AIF1TX3MIX Input 1 Source */ { 0x00000711, 0x0080 }, /* R1809 - AIF1TX3MIX Input 1 Volume */ { 0x00000712, 0x0000 }, /* R1810 - AIF1TX3MIX Input 2 Source */ { 0x00000713, 0x0080 }, /* R1811 - AIF1TX3MIX Input 2 Volume */ { 0x00000714, 0x0000 }, /* R1812 - AIF1TX3MIX Input 3 Source */ { 0x00000715, 0x0080 }, /* R1813 - AIF1TX3MIX Input 3 Volume */ { 0x00000716, 0x0000 }, /* R1814 - AIF1TX3MIX Input 4 Source */ { 0x00000717, 0x0080 }, /* R1815 - AIF1TX3MIX Input 4 Volume */ { 0x00000718, 0x0000 }, /* R1816 - AIF1TX4MIX Input 1 Source */ { 0x00000719, 0x0080 }, /* R1817 - AIF1TX4MIX Input 1 Volume */ { 0x0000071A, 0x0000 }, /* R1818 - AIF1TX4MIX Input 2 Source */ { 0x0000071B, 0x0080 }, /* R1819 - AIF1TX4MIX Input 2 Volume */ { 0x0000071C, 0x0000 }, /* R1820 - AIF1TX4MIX Input 3 Source */ { 0x0000071D, 0x0080 }, /* R1821 - AIF1TX4MIX Input 3 Volume */ { 0x0000071E, 0x0000 }, /* R1822 - AIF1TX4MIX Input 4 Source */ { 0x0000071F, 0x0080 }, /* R1823 - AIF1TX4MIX Input 4 Volume */ { 0x00000720, 0x0000 }, /* R1824 - AIF1TX5MIX Input 1 Source */ { 0x00000721, 0x0080 }, /* R1825 - AIF1TX5MIX Input 1 Volume */ { 0x00000722, 0x0000 }, /* R1826 - AIF1TX5MIX Input 2 Source */ { 0x00000723, 0x0080 }, /* R1827 - AIF1TX5MIX Input 2 Volume */ { 0x00000724, 0x0000 }, /* R1828 - AIF1TX5MIX Input 3 Source */ { 0x00000725, 0x0080 }, /* R1829 - AIF1TX5MIX Input 3 Volume */ { 0x00000726, 0x0000 }, /* R1830 - AIF1TX5MIX Input 4 Source */ { 0x00000727, 0x0080 }, /* R1831 - AIF1TX5MIX Input 4 Volume */ { 0x00000728, 0x0000 }, /* R1832 - AIF1TX6MIX Input 1 Source */ { 0x00000729, 0x0080 }, /* R1833 - AIF1TX6MIX Input 1 Volume */ { 0x0000072A, 0x0000 }, /* R1834 - AIF1TX6MIX Input 2 Source */ { 0x0000072B, 0x0080 }, /* R1835 - AIF1TX6MIX Input 2 Volume */ { 0x0000072C, 0x0000 }, /* R1836 - AIF1TX6MIX Input 3 Source */ { 0x0000072D, 0x0080 }, /* R1837 - AIF1TX6MIX Input 3 Volume */ { 0x0000072E, 0x0000 }, /* R1838 - AIF1TX6MIX Input 4 Source */ { 0x0000072F, 0x0080 }, /* R1839 - AIF1TX6MIX Input 4 Volume */ { 0x00000730, 0x0000 }, /* R1840 - AIF1TX7MIX Input 1 Source */ { 0x00000731, 0x0080 }, /* R1841 - AIF1TX7MIX Input 1 Volume */ { 0x00000732, 0x0000 }, /* R1842 - AIF1TX7MIX Input 2 Source */ { 0x00000733, 0x0080 }, /* R1843 - AIF1TX7MIX Input 2 Volume */ { 0x00000734, 0x0000 }, /* R1844 - AIF1TX7MIX Input 3 Source */ { 0x00000735, 0x0080 }, /* R1845 - AIF1TX7MIX Input 3 Volume */ { 0x00000736, 0x0000 }, /* R1846 - AIF1TX7MIX Input 4 Source */ { 0x00000737, 0x0080 }, /* R1847 - AIF1TX7MIX Input 4 Volume */ { 0x00000738, 0x0000 }, /* R1848 - AIF1TX8MIX Input 1 Source */ { 0x00000739, 0x0080 }, /* R1849 - AIF1TX8MIX Input 1 Volume */ { 0x0000073A, 0x0000 }, /* R1850 - AIF1TX8MIX Input 2 Source */ { 0x0000073B, 0x0080 }, /* R1851 - AIF1TX8MIX Input 2 Volume */ { 0x0000073C, 0x0000 }, /* R1852 - AIF1TX8MIX Input 3 Source */ { 0x0000073D, 0x0080 }, /* R1853 - AIF1TX8MIX Input 3 Volume */ { 0x0000073E, 0x0000 }, /* R1854 - AIF1TX8MIX Input 4 Source */ { 0x0000073F, 0x0080 }, /* R1855 - AIF1TX8MIX Input 4 Volume */ { 0x00000740, 0x0000 }, /* R1856 - AIF2TX1MIX Input 1 Source */ { 0x00000741, 0x0080 }, /* R1857 - AIF2TX1MIX Input 1 Volume */ { 0x00000742, 0x0000 }, /* R1858 - AIF2TX1MIX Input 2 Source */ { 0x00000743, 0x0080 }, /* R1859 - AIF2TX1MIX Input 2 Volume */ { 0x00000744, 0x0000 }, /* R1860 - AIF2TX1MIX Input 3 Source */ { 0x00000745, 0x0080 }, /* R1861 - AIF2TX1MIX Input 3 Volume */ { 0x00000746, 0x0000 }, /* R1862 - AIF2TX1MIX Input 4 Source */ { 0x00000747, 0x0080 }, /* R1863 - AIF2TX1MIX Input 4 Volume */ { 0x00000748, 0x0000 }, /* R1864 - AIF2TX2MIX Input 1 Source */ { 0x00000749, 0x0080 }, /* R1865 - AIF2TX2MIX Input 1 Volume */ { 0x0000074A, 0x0000 }, /* R1866 - AIF2TX2MIX Input 2 Source */ { 0x0000074B, 0x0080 }, /* R1867 - AIF2TX2MIX Input 2 Volume */ { 0x0000074C, 0x0000 }, /* R1868 - AIF2TX2MIX Input 3 Source */ { 0x0000074D, 0x0080 }, /* R1869 - AIF2TX2MIX Input 3 Volume */ { 0x0000074E, 0x0000 }, /* R1870 - AIF2TX2MIX Input 4 Source */ { 0x0000074F, 0x0080 }, /* R1871 - AIF2TX2MIX Input 4 Volume */ { 0x00000750, 0x0000 }, /* R1872 - AIF2TX3MIX Input 1 Source */ { 0x00000751, 0x0080 }, /* R1873 - AIF2TX3MIX Input 1 Volume */ { 0x00000752, 0x0000 }, /* R1874 - AIF2TX3MIX Input 2 Source */ { 0x00000753, 0x0080 }, /* R1875 - AIF2TX3MIX Input 2 Volume */ { 0x00000754, 0x0000 }, /* R1876 - AIF2TX3MIX Input 3 Source */ { 0x00000755, 0x0080 }, /* R1877 - AIF2TX3MIX Input 3 Volume */ { 0x00000756, 0x0000 }, /* R1878 - AIF2TX3MIX Input 4 Source */ { 0x00000757, 0x0080 }, /* R1879 - AIF2TX3MIX Input 4 Volume */ { 0x00000758, 0x0000 }, /* R1880 - AIF2TX4MIX Input 1 Source */ { 0x00000759, 0x0080 }, /* R1881 - AIF2TX4MIX Input 1 Volume */ { 0x0000075A, 0x0000 }, /* R1882 - AIF2TX4MIX Input 2 Source */ { 0x0000075B, 0x0080 }, /* R1883 - AIF2TX4MIX Input 2 Volume */ { 0x0000075C, 0x0000 }, /* R1884 - AIF2TX4MIX Input 3 Source */ { 0x0000075D, 0x0080 }, /* R1885 - AIF2TX4MIX Input 3 Volume */ { 0x0000075E, 0x0000 }, /* R1886 - AIF2TX4MIX Input 4 Source */ { 0x0000075F, 0x0080 }, /* R1887 - AIF2TX4MIX Input 4 Volume */ { 0x00000760, 0x0000 }, /* R1888 - AIF2TX5MIX Input 1 Source */ { 0x00000761, 0x0080 }, /* R1889 - AIF2TX5MIX Input 1 Volume */ { 0x00000762, 0x0000 }, /* R1890 - AIF2TX5MIX Input 2 Source */ { 0x00000763, 0x0080 }, /* R1891 - AIF2TX5MIX Input 2 Volume */ { 0x00000764, 0x0000 }, /* R1892 - AIF2TX5MIX Input 3 Source */ { 0x00000765, 0x0080 }, /* R1893 - AIF2TX5MIX Input 3 Volume */ { 0x00000766, 0x0000 }, /* R1894 - AIF2TX5MIX Input 4 Source */ { 0x00000767, 0x0080 }, /* R1895 - AIF2TX5MIX Input 4 Volume */ { 0x00000768, 0x0000 }, /* R1896 - AIF2TX6MIX Input 1 Source */ { 0x00000769, 0x0080 }, /* R1897 - AIF2TX6MIX Input 1 Volume */ { 0x0000076A, 0x0000 }, /* R1898 - AIF2TX6MIX Input 2 Source */ { 0x0000076B, 0x0080 }, /* R1899 - AIF2TX6MIX Input 2 Volume */ { 0x0000076C, 0x0000 }, /* R1900 - AIF2TX6MIX Input 3 Source */ { 0x0000076D, 0x0080 }, /* R1901 - AIF2TX6MIX Input 3 Volume */ { 0x0000076E, 0x0000 }, /* R1902 - AIF2TX6MIX Input 4 Source */ { 0x0000076F, 0x0080 }, /* R1903 - AIF2TX6MIX Input 4 Volume */ { 0x00000780, 0x0000 }, /* R1920 - AIF3TX1MIX Input 1 Source */ { 0x00000781, 0x0080 }, /* R1921 - AIF3TX1MIX Input 1 Volume */ { 0x00000782, 0x0000 }, /* R1922 - AIF3TX1MIX Input 2 Source */ { 0x00000783, 0x0080 }, /* R1923 - AIF3TX1MIX Input 2 Volume */ { 0x00000784, 0x0000 }, /* R1924 - AIF3TX1MIX Input 3 Source */ { 0x00000785, 0x0080 }, /* R1925 - AIF3TX1MIX Input 3 Volume */ { 0x00000786, 0x0000 }, /* R1926 - AIF3TX1MIX Input 4 Source */ { 0x00000787, 0x0080 }, /* R1927 - AIF3TX1MIX Input 4 Volume */ { 0x00000788, 0x0000 }, /* R1928 - AIF3TX2MIX Input 1 Source */ { 0x00000789, 0x0080 }, /* R1929 - AIF3TX2MIX Input 1 Volume */ { 0x0000078A, 0x0000 }, /* R1930 - AIF3TX2MIX Input 2 Source */ { 0x0000078B, 0x0080 }, /* R1931 - AIF3TX2MIX Input 2 Volume */ { 0x0000078C, 0x0000 }, /* R1932 - AIF3TX2MIX Input 3 Source */ { 0x0000078D, 0x0080 }, /* R1933 - AIF3TX2MIX Input 3 Volume */ { 0x0000078E, 0x0000 }, /* R1934 - AIF3TX2MIX Input 4 Source */ { 0x0000078F, 0x0080 }, /* R1935 - AIF3TX2MIX Input 4 Volume */ { 0x00000880, 0x0000 }, /* R2176 - EQ1MIX Input 1 Source */ { 0x00000881, 0x0080 }, /* R2177 - EQ1MIX Input 1 Volume */ { 0x00000882, 0x0000 }, /* R2178 - EQ1MIX Input 2 Source */ { 0x00000883, 0x0080 }, /* R2179 - EQ1MIX Input 2 Volume */ { 0x00000884, 0x0000 }, /* R2180 - EQ1MIX Input 3 Source */ { 0x00000885, 0x0080 }, /* R2181 - EQ1MIX Input 3 Volume */ { 0x00000886, 0x0000 }, /* R2182 - EQ1MIX Input 4 Source */ { 0x00000887, 0x0080 }, /* R2183 - EQ1MIX Input 4 Volume */ { 0x00000888, 0x0000 }, /* R2184 - EQ2MIX Input 1 Source */ { 0x00000889, 0x0080 }, /* R2185 - EQ2MIX Input 1 Volume */ { 0x0000088A, 0x0000 }, /* R2186 - EQ2MIX Input 2 Source */ { 0x0000088B, 0x0080 }, /* R2187 - EQ2MIX Input 2 Volume */ { 0x0000088C, 0x0000 }, /* R2188 - EQ2MIX Input 3 Source */ { 0x0000088D, 0x0080 }, /* R2189 - EQ2MIX Input 3 Volume */ { 0x0000088E, 0x0000 }, /* R2190 - EQ2MIX Input 4 Source */ { 0x0000088F, 0x0080 }, /* R2191 - EQ2MIX Input 4 Volume */ { 0x000008C0, 0x0000 }, /* R2240 - DRC1LMIX Input 1 Source */ { 0x000008C1, 0x0080 }, /* R2241 - DRC1LMIX Input 1 Volume */ { 0x000008C2, 0x0000 }, /* R2242 - DRC1LMIX Input 2 Source */ { 0x000008C3, 0x0080 }, /* R2243 - DRC1LMIX Input 2 Volume */ { 0x000008C4, 0x0000 }, /* R2244 - DRC1LMIX Input 3 Source */ { 0x000008C5, 0x0080 }, /* R2245 - DRC1LMIX Input 3 Volume */ { 0x000008C6, 0x0000 }, /* R2246 - DRC1LMIX Input 4 Source */ { 0x000008C7, 0x0080 }, /* R2247 - DRC1LMIX Input 4 Volume */ { 0x000008C8, 0x0000 }, /* R2248 - DRC1RMIX Input 1 Source */ { 0x000008C9, 0x0080 }, /* R2249 - DRC1RMIX Input 1 Volume */ { 0x000008CA, 0x0000 }, /* R2250 - DRC1RMIX Input 2 Source */ { 0x000008CB, 0x0080 }, /* R2251 - DRC1RMIX Input 2 Volume */ { 0x000008CC, 0x0000 }, /* R2252 - DRC1RMIX Input 3 Source */ { 0x000008CD, 0x0080 }, /* R2253 - DRC1RMIX Input 3 Volume */ { 0x000008CE, 0x0000 }, /* R2254 - DRC1RMIX Input 4 Source */ { 0x000008CF, 0x0080 }, /* R2255 - DRC1RMIX Input 4 Volume */ { 0x000008D0, 0x0000 }, /* R2256 - DRC2LMIX Input 1 Source */ { 0x000008D1, 0x0080 }, /* R2257 - DRC2LMIX Input 1 Volume */ { 0x000008D2, 0x0000 }, /* R2258 - DRC2LMIX Input 2 Source */ { 0x000008D3, 0x0080 }, /* R2259 - DRC2LMIX Input 2 Volume */ { 0x000008D4, 0x0000 }, /* R2260 - DRC2LMIX Input 3 Source */ { 0x000008D5, 0x0080 }, /* R2261 - DRC2LMIX Input 3 Volume */ { 0x000008D6, 0x0000 }, /* R2262 - DRC2LMIX Input 4 Source */ { 0x000008D7, 0x0080 }, /* R2263 - DRC2LMIX Input 4 Volume */ { 0x000008D8, 0x0000 }, /* R2264 - DRC2RMIX Input 1 Source */ { 0x000008D9, 0x0080 }, /* R2265 - DRC2RMIX Input 1 Volume */ { 0x000008DA, 0x0000 }, /* R2266 - DRC2RMIX Input 2 Source */ { 0x000008DB, 0x0080 }, /* R2267 - DRC2RMIX Input 2 Volume */ { 0x000008DC, 0x0000 }, /* R2268 - DRC2RMIX Input 3 Source */ { 0x000008DD, 0x0080 }, /* R2269 - DRC2RMIX Input 3 Volume */ { 0x000008DE, 0x0000 }, /* R2270 - DRC2RMIX Input 4 Source */ { 0x000008DF, 0x0080 }, /* R2271 - DRC2RMIX Input 4 Volume */ { 0x00000900, 0x0000 }, /* R2304 - HPLP1MIX Input 1 Source */ { 0x00000901, 0x0080 }, /* R2305 - HPLP1MIX Input 1 Volume */ { 0x00000902, 0x0000 }, /* R2306 - HPLP1MIX Input 2 Source */ { 0x00000903, 0x0080 }, /* R2307 - HPLP1MIX Input 2 Volume */ { 0x00000904, 0x0000 }, /* R2308 - HPLP1MIX Input 3 Source */ { 0x00000905, 0x0080 }, /* R2309 - HPLP1MIX Input 3 Volume */ { 0x00000906, 0x0000 }, /* R2310 - HPLP1MIX Input 4 Source */ { 0x00000907, 0x0080 }, /* R2311 - HPLP1MIX Input 4 Volume */ { 0x00000908, 0x0000 }, /* R2312 - HPLP2MIX Input 1 Source */ { 0x00000909, 0x0080 }, /* R2313 - HPLP2MIX Input 1 Volume */ { 0x0000090A, 0x0000 }, /* R2314 - HPLP2MIX Input 2 Source */ { 0x0000090B, 0x0080 }, /* R2315 - HPLP2MIX Input 2 Volume */ { 0x0000090C, 0x0000 }, /* R2316 - HPLP2MIX Input 3 Source */ { 0x0000090D, 0x0080 }, /* R2317 - HPLP2MIX Input 3 Volume */ { 0x0000090E, 0x0000 }, /* R2318 - HPLP2MIX Input 4 Source */ { 0x0000090F, 0x0080 }, /* R2319 - HPLP2MIX Input 4 Volume */ { 0x00000910, 0x0000 }, /* R2320 - HPLP3MIX Input 1 Source */ { 0x00000911, 0x0080 }, /* R2321 - HPLP3MIX Input 1 Volume */ { 0x00000912, 0x0000 }, /* R2322 - HPLP3MIX Input 2 Source */ { 0x00000913, 0x0080 }, /* R2323 - HPLP3MIX Input 2 Volume */ { 0x00000914, 0x0000 }, /* R2324 - HPLP3MIX Input 3 Source */ { 0x00000915, 0x0080 }, /* R2325 - HPLP3MIX Input 3 Volume */ { 0x00000916, 0x0000 }, /* R2326 - HPLP3MIX Input 4 Source */ { 0x00000917, 0x0080 }, /* R2327 - HPLP3MIX Input 4 Volume */ { 0x00000918, 0x0000 }, /* R2328 - HPLP4MIX Input 1 Source */ { 0x00000919, 0x0080 }, /* R2329 - HPLP4MIX Input 1 Volume */ { 0x0000091A, 0x0000 }, /* R2330 - HPLP4MIX Input 2 Source */ { 0x0000091B, 0x0080 }, /* R2331 - HPLP4MIX Input 2 Volume */ { 0x0000091C, 0x0000 }, /* R2332 - HPLP4MIX Input 3 Source */ { 0x0000091D, 0x0080 }, /* R2333 - HPLP4MIX Input 3 Volume */ { 0x0000091E, 0x0000 }, /* R2334 - HPLP4MIX Input 4 Source */ { 0x0000091F, 0x0080 }, /* R2335 - HPLP4MIX Input 4 Volume */ { 0x00000980, 0x0000 }, /* R2432 - DSP2LMIX Input 1 Source */ { 0x00000981, 0x0080 }, /* R2433 - DSP2LMIX Input 1 Volume */ { 0x00000982, 0x0000 }, /* R2434 - DSP2LMIX Input 2 Source */ { 0x00000983, 0x0080 }, /* R2435 - DSP2LMIX Input 2 Volume */ { 0x00000984, 0x0000 }, /* R2436 - DSP2LMIX Input 3 Source */ { 0x00000985, 0x0080 }, /* R2437 - DSP2LMIX Input 3 Volume */ { 0x00000986, 0x0000 }, /* R2438 - DSP2LMIX Input 4 Source */ { 0x00000987, 0x0080 }, /* R2439 - DSP2LMIX Input 4 Volume */ { 0x00000988, 0x0000 }, /* R2440 - DSP2RMIX Input 1 Source */ { 0x00000989, 0x0080 }, /* R2441 - DSP2RMIX Input 1 Volume */ { 0x0000098A, 0x0000 }, /* R2442 - DSP2RMIX Input 2 Source */ { 0x0000098B, 0x0080 }, /* R2443 - DSP2RMIX Input 2 Volume */ { 0x0000098C, 0x0000 }, /* R2444 - DSP2RMIX Input 3 Source */ { 0x0000098D, 0x0080 }, /* R2445 - DSP2RMIX Input 3 Volume */ { 0x0000098E, 0x0000 }, /* R2446 - DSP2RMIX Input 4 Source */ { 0x0000098F, 0x0080 }, /* R2447 - DSP2RMIX Input 4 Volume */ { 0x00000990, 0x0000 }, /* R2448 - DSP2AUX1MIX Input 1 Source */ { 0x00000998, 0x0000 }, /* R2456 - DSP2AUX2MIX Input 1 Source */ { 0x000009A0, 0x0000 }, /* R2464 - DSP2AUX3MIX Input 1 Source */ { 0x000009A8, 0x0000 }, /* R2472 - DSP2AUX4MIX Input 1 Source */ { 0x000009B0, 0x0000 }, /* R2480 - DSP2AUX5MIX Input 1 Source */ { 0x000009B8, 0x0000 }, /* R2488 - DSP2AUX6MIX Input 1 Source */ { 0x000009C0, 0x0000 }, /* R2496 - DSP3LMIX Input 1 Source */ { 0x000009C1, 0x0080 }, /* R2497 - DSP3LMIX Input 1 Volume */ { 0x000009C2, 0x0000 }, /* R2498 - DSP3LMIX Input 2 Source */ { 0x000009C3, 0x0080 }, /* R2499 - DSP3LMIX Input 2 Volume */ { 0x000009C4, 0x0000 }, /* R2500 - DSP3LMIX Input 3 Source */ { 0x000009C5, 0x0080 }, /* R2501 - DSP3LMIX Input 3 Volume */ { 0x000009C6, 0x0000 }, /* R2502 - DSP3LMIX Input 4 Source */ { 0x000009C7, 0x0080 }, /* R2503 - DSP3LMIX Input 4 Volume */ { 0x000009C8, 0x0000 }, /* R2504 - DSP3RMIX Input 1 Source */ { 0x000009C9, 0x0080 }, /* R2505 - DSP3RMIX Input 1 Volume */ { 0x000009CA, 0x0000 }, /* R2506 - DSP3RMIX Input 2 Source */ { 0x000009CB, 0x0080 }, /* R2507 - DSP3RMIX Input 2 Volume */ { 0x000009CC, 0x0000 }, /* R2508 - DSP3RMIX Input 3 Source */ { 0x000009CD, 0x0080 }, /* R2509 - DSP3RMIX Input 3 Volume */ { 0x000009CE, 0x0000 }, /* R2510 - DSP3RMIX Input 4 Source */ { 0x000009CF, 0x0080 }, /* R2511 - DSP3RMIX Input 4 Volume */ { 0x000009D0, 0x0000 }, /* R2512 - DSP3AUX1MIX Input 1 Source */ { 0x000009D8, 0x0000 }, /* R2520 - DSP3AUX2MIX Input 1 Source */ { 0x000009E0, 0x0000 }, /* R2528 - DSP3AUX3MIX Input 1 Source */ { 0x000009E8, 0x0000 }, /* R2536 - DSP3AUX4MIX Input 1 Source */ { 0x000009F0, 0x0000 }, /* R2544 - DSP3AUX5MIX Input 1 Source */ { 0x000009F8, 0x0000 }, /* R2552 - DSP3AUX6MIX Input 1 Source */ { 0x00000A80, 0x0000 }, /* R2688 - ASRC1LMIX Input 1 Source */ { 0x00000A88, 0x0000 }, /* R2696 - ASRC1RMIX Input 1 Source */ { 0x00000A90, 0x0000 }, /* R2704 - ASRC2LMIX Input 1 Source */ { 0x00000A98, 0x0000 }, /* R2712 - ASRC2RMIX Input 1 Source */ { 0x00000B00, 0x0000 }, /* R2816 - ISRC1DEC1MIX Input 1 Source */ { 0x00000B08, 0x0000 }, /* R2824 - ISRC1DEC2MIX Input 1 Source */ { 0x00000B10, 0x0000 }, /* R2832 - ISRC1DEC3MIX Input 1 Source */ { 0x00000B18, 0x0000 }, /* R2840 - ISRC1DEC4MIX Input 1 Source */ { 0x00000B20, 0x0000 }, /* R2848 - ISRC1INT1MIX Input 1 Source */ { 0x00000B28, 0x0000 }, /* R2856 - ISRC1INT2MIX Input 1 Source */ { 0x00000B30, 0x0000 }, /* R2864 - ISRC1INT3MIX Input 1 Source */ { 0x00000B38, 0x0000 }, /* R2872 - ISRC1INT4MIX Input 1 Source */ { 0x00000B40, 0x0000 }, /* R2880 - ISRC2DEC1MIX Input 1 Source */ { 0x00000B48, 0x0000 }, /* R2888 - ISRC2DEC2MIX Input 1 Source */ { 0x00000B50, 0x0000 }, /* R2896 - ISRC2DEC3MIX Input 1 Source */ { 0x00000B58, 0x0000 }, /* R2904 - ISRC2DEC4MIX Input 1 Source */ { 0x00000B60, 0x0000 }, /* R2912 - ISRC2INT1MIX Input 1 Source */ { 0x00000B68, 0x0000 }, /* R2920 - ISRC2INT2MIX Input 1 Source */ { 0x00000B70, 0x0000 }, /* R2928 - ISRC2INT3MIX Input 1 Source */ { 0x00000B78, 0x0000 }, /* R2936 - ISRC2INT4MIX Input 1 Source */ { 0x00000B80, 0x0000 }, /* R2944 - ISRC3DEC1MIX Input 1 Source */ { 0x00000B88, 0x0000 }, /* R2952 - ISRC3DEC2MIX Input 1 Source */ { 0x00000B90, 0x0000 }, /* R2960 - ISRC3DEC3MIX Input 1 Source */ { 0x00000B98, 0x0000 }, /* R2968 - ISRC3DEC4MIX Input 1 Source */ { 0x00000BA0, 0x0000 }, /* R2976 - ISRC3INT1MIX Input 1 Source */ { 0x00000BA8, 0x0000 }, /* R2984 - ISRC3INT2MIX Input 1 Source */ { 0x00000BB0, 0x0000 }, /* R2992 - ISRC3INT3MIX Input 1 Source */ { 0x00000BB8, 0x0000 }, /* R3000 - ISRC3INT4MIX Input 1 Source */ { 0x00000C00, 0xA101 }, /* R3072 - GPIO1 CTRL */ { 0x00000C01, 0xA101 }, /* R3073 - GPIO2 CTRL */ { 0x00000C0F, 0x0400 }, /* R3087 - IRQ CTRL 1 */ { 0x00000C10, 0x1000 }, /* R3088 - GPIO Debounce Config */ { 0x00000C20, 0x0002 }, /* R3104 - Misc Pad Ctrl 1 */ { 0x00000C21, 0x0000 }, /* R3105 - Misc Pad Ctrl 2 */ { 0x00000C22, 0x0000 }, /* R3106 - Misc Pad Ctrl 3 */ { 0x00000C23, 0x0000 }, /* R3107 - Misc Pad Ctrl 4 */ { 0x00000C24, 0x0000 }, /* R3108 - Misc Pad Ctrl 5 */ { 0x00000C25, 0x0000 }, /* R3109 - Misc Pad Ctrl 6 */ { 0x00000C30, 0x0404 }, /* R3120 - Misc Pad Ctrl 7 */ { 0x00000C32, 0x0404 }, /* R3122 - Misc Pad Ctrl 9 */ { 0x00000C33, 0x0404 }, /* R3123 - Misc Pad Ctrl 10 */ { 0x00000C34, 0x0404 }, /* R3124 - Misc Pad Ctrl 11 */ { 0x00000C35, 0x0404 }, /* R3125 - Misc Pad Ctrl 12 */ { 0x00000C36, 0x0400 }, /* R3126 - Misc Pad Ctrl 13 */ { 0x00000C37, 0x0404 }, /* R3127 - Misc Pad Ctrl 14 */ { 0x00000C39, 0x0400 }, /* R3129 - Misc Pad Ctrl 16 */ { 0x00000D08, 0x0007 }, /* R3336 - Interrupt Status 1 Mask */ { 0x00000D09, 0x06FF }, /* R3337 - Interrupt Status 2 Mask */ { 0x00000D0A, 0xCFEF }, /* R3338 - Interrupt Status 3 Mask */ { 0x00000D0B, 0xFFC3 }, /* R3339 - Interrupt Status 4 Mask */ { 0x00000D0C, 0x000B }, /* R3340 - Interrupt Status 5 Mask */ { 0x00000D0D, 0xD005 }, /* R3341 - Interrupt Status 6 Mask */ { 0x00000D0F, 0x0000 }, /* R3343 - Interrupt Control */ { 0x00000D18, 0x0007 }, /* R3352 - IRQ2 Status 1 Mask */ { 0x00000D19, 0x06FF }, /* R3353 - IRQ2 Status 2 Mask */ { 0x00000D1A, 0xCFEF }, /* R3354 - IRQ2 Status 3 Mask */ { 0x00000D1B, 0xFFC3 }, /* R3355 - IRQ2 Status 4 Mask */ { 0x00000D1C, 0x000B }, /* R3356 - IRQ2 Status 5 Mask */ { 0x00000D1D, 0xD005 }, /* R3357 - IRQ2 Status 6 Mask */ { 0x00000D1F, 0x0000 }, /* R3359 - IRQ2 Control */ { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ { 0x00000E13, 0x03FE }, /* R3603 - EQ1_4 */ { 0x00000E14, 0x00E0 }, /* R3604 - EQ1_5 */ { 0x00000E15, 0x1EC4 }, /* R3605 - EQ1_6 */ { 0x00000E16, 0xF136 }, /* R3606 - EQ1_7 */ { 0x00000E17, 0x0409 }, /* R3607 - EQ1_8 */ { 0x00000E18, 0x04CC }, /* R3608 - EQ1_9 */ { 0x00000E19, 0x1C9B }, /* R3609 - EQ1_10 */ { 0x00000E1A, 0xF337 }, /* R3610 - EQ1_11 */ { 0x00000E1B, 0x040B }, /* R3611 - EQ1_12 */ { 0x00000E1C, 0x0CBB }, /* R3612 - EQ1_13 */ { 0x00000E1D, 0x16F8 }, /* R3613 - EQ1_14 */ { 0x00000E1E, 0xF7D9 }, /* R3614 - EQ1_15 */ { 0x00000E1F, 0x040A }, /* R3615 - EQ1_16 */ { 0x00000E20, 0x1F14 }, /* R3616 - EQ1_17 */ { 0x00000E21, 0x058C }, /* R3617 - EQ1_18 */ { 0x00000E22, 0x0563 }, /* R3618 - EQ1_19 */ { 0x00000E23, 0x4000 }, /* R3619 - EQ1_20 */ { 0x00000E24, 0x0B75 }, /* R3620 - EQ1_21 */ { 0x00000E26, 0x6318 }, /* R3622 - EQ2_1 */ { 0x00000E27, 0x6300 }, /* R3623 - EQ2_2 */ { 0x00000E28, 0x0FC8 }, /* R3624 - EQ2_3 */ { 0x00000E29, 0x03FE }, /* R3625 - EQ2_4 */ { 0x00000E2A, 0x00E0 }, /* R3626 - EQ2_5 */ { 0x00000E2B, 0x1EC4 }, /* R3627 - EQ2_6 */ { 0x00000E2C, 0xF136 }, /* R3628 - EQ2_7 */ { 0x00000E2D, 0x0409 }, /* R3629 - EQ2_8 */ { 0x00000E2E, 0x04CC }, /* R3630 - EQ2_9 */ { 0x00000E2F, 0x1C9B }, /* R3631 - EQ2_10 */ { 0x00000E30, 0xF337 }, /* R3632 - EQ2_11 */ { 0x00000E31, 0x040B }, /* R3633 - EQ2_12 */ { 0x00000E32, 0x0CBB }, /* R3634 - EQ2_13 */ { 0x00000E33, 0x16F8 }, /* R3635 - EQ2_14 */ { 0x00000E34, 0xF7D9 }, /* R3636 - EQ2_15 */ { 0x00000E35, 0x040A }, /* R3637 - EQ2_16 */ { 0x00000E36, 0x1F14 }, /* R3638 - EQ2_17 */ { 0x00000E37, 0x058C }, /* R3639 - EQ2_18 */ { 0x00000E38, 0x0563 }, /* R3640 - EQ2_19 */ { 0x00000E39, 0x4000 }, /* R3641 - EQ2_20 */ { 0x00000E3A, 0x0B75 }, /* R3642 - EQ2_21 */ { 0x00000E80, 0x0018 }, /* R3712 - DRC1 ctrl1 */ { 0x00000E81, 0x0933 }, /* R3713 - DRC1 ctrl2 */ { 0x00000E82, 0x0018 }, /* R3714 - DRC1 ctrl3 */ { 0x00000E83, 0x0000 }, /* R3715 - DRC1 ctrl4 */ { 0x00000E84, 0x0000 }, /* R3716 - DRC1 ctrl5 */ { 0x00000E89, 0x0018 }, /* R3721 - DRC2 ctrl1 */ { 0x00000E8A, 0x0933 }, /* R3722 - DRC2 ctrl2 */ { 0x00000E8B, 0x0018 }, /* R3723 - DRC2 ctrl3 */ { 0x00000E8C, 0x0000 }, /* R3724 - DRC2 ctrl4 */ { 0x00000E8D, 0x0000 }, /* R3725 - DRC2 ctrl5 */ { 0x00000EC0, 0x0000 }, /* R3776 - HPLPF1_1 */ { 0x00000EC1, 0x0000 }, /* R3777 - HPLPF1_2 */ { 0x00000EC4, 0x0000 }, /* R3780 - HPLPF2_1 */ { 0x00000EC5, 0x0000 }, /* R3781 - HPLPF2_2 */ { 0x00000EC8, 0x0000 }, /* R3784 - HPLPF3_1 */ { 0x00000EC9, 0x0000 }, /* R3785 - HPLPF3_2 */ { 0x00000ECC, 0x0000 }, /* R3788 - HPLPF4_1 */ { 0x00000ECD, 0x0000 }, /* R3789 - HPLPF4_2 */ { 0x00000EE0, 0x0000 }, /* R3808 - ASRC_ENABLE */ { 0x00000EE2, 0x0000 }, /* R3810 - ASRC_RATE1 */ { 0x00000EE3, 0x4000 }, /* R3811 - ASRC_RATE2 */ { 0x00000EF0, 0x0000 }, /* R3824 - ISRC 1 CTRL 1 */ { 0x00000EF1, 0x0000 }, /* R3825 - ISRC 1 CTRL 2 */ { 0x00000EF2, 0x0000 }, /* R3826 - ISRC 1 CTRL 3 */ { 0x00000EF3, 0x0000 }, /* R3827 - ISRC 2 CTRL 1 */ { 0x00000EF4, 0x0000 }, /* R3828 - ISRC 2 CTRL 2 */ { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */ { 0x00000EF6, 0x0000 }, /* R3830 - ISRC 3 CTRL 1 */ { 0x00000EF7, 0x0000 }, /* R3831 - ISRC 3 CTRL 2 */ { 0x00000EF8, 0x0000 }, /* R3832 - ISRC 3 CTRL 3 */ { 0x00001200, 0x0010 }, /* R4608 - DSP2 Control 1 */ { 0x00001300, 0x0010 }, /* R4864 - DSP3 Control 1 */ }; static bool cs47l24_is_adsp_memory(unsigned int reg) { switch (reg) { case 0x200000 ... 0x205fff: /* DSP2 PM */ case 0x280000 ... 0x281fff: /* DSP2 ZM */ case 0x290000 ... 0x2a7fff: /* DSP2 XM */ case 0x2a8000 ... 0x2b3fff: /* DSP2 YM */ case 0x300000 ... 0x308fff: /* DSP3 PM */ case 0x380000 ... 0x381fff: /* DSP3 ZM */ case 0x390000 ... 0x3a7fff: /* DSP3 XM */ case 0x3a8000 ... 0x3b3fff: /* DSP3 YM */ return true; default: return false; } } static bool cs47l24_readable_register(struct device *dev, unsigned int reg) { switch (reg) { case ARIZONA_SOFTWARE_RESET: case ARIZONA_DEVICE_REVISION: case ARIZONA_CTRL_IF_SPI_CFG_1: case ARIZONA_WRITE_SEQUENCER_CTRL_0: case ARIZONA_WRITE_SEQUENCER_CTRL_1: case ARIZONA_WRITE_SEQUENCER_CTRL_2: case ARIZONA_TONE_GENERATOR_1: case ARIZONA_TONE_GENERATOR_2: case ARIZONA_TONE_GENERATOR_3: case ARIZONA_TONE_GENERATOR_4: case ARIZONA_TONE_GENERATOR_5: case ARIZONA_PWM_DRIVE_1: case ARIZONA_PWM_DRIVE_2: case ARIZONA_PWM_DRIVE_3: case ARIZONA_SEQUENCE_CONTROL: case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1: case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2: case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3: case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_4: case ARIZONA_COMFORT_NOISE_GENERATOR: case ARIZONA_HAPTICS_CONTROL_1: case ARIZONA_HAPTICS_CONTROL_2: case ARIZONA_HAPTICS_PHASE_1_INTENSITY: case ARIZONA_HAPTICS_PHASE_1_DURATION: case ARIZONA_HAPTICS_PHASE_2_INTENSITY: case ARIZONA_HAPTICS_PHASE_2_DURATION: case ARIZONA_HAPTICS_PHASE_3_INTENSITY: case ARIZONA_HAPTICS_PHASE_3_DURATION: case ARIZONA_HAPTICS_STATUS: case ARIZONA_CLOCK_32K_1: case ARIZONA_SYSTEM_CLOCK_1: case ARIZONA_SAMPLE_RATE_1: case ARIZONA_SAMPLE_RATE_2: case ARIZONA_SAMPLE_RATE_3: case ARIZONA_SAMPLE_RATE_1_STATUS: case ARIZONA_SAMPLE_RATE_2_STATUS: case ARIZONA_SAMPLE_RATE_3_STATUS: case ARIZONA_ASYNC_CLOCK_1: case ARIZONA_ASYNC_SAMPLE_RATE_1: case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: case ARIZONA_ASYNC_SAMPLE_RATE_2: case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS: case ARIZONA_OUTPUT_SYSTEM_CLOCK: case ARIZONA_OUTPUT_ASYNC_CLOCK: case ARIZONA_RATE_ESTIMATOR_1: case ARIZONA_RATE_ESTIMATOR_2: case ARIZONA_RATE_ESTIMATOR_3: case ARIZONA_RATE_ESTIMATOR_4: case ARIZONA_RATE_ESTIMATOR_5: case ARIZONA_FLL1_CONTROL_1: case ARIZONA_FLL1_CONTROL_2: case ARIZONA_FLL1_CONTROL_3: case ARIZONA_FLL1_CONTROL_4: case ARIZONA_FLL1_CONTROL_5: case ARIZONA_FLL1_CONTROL_6: case ARIZONA_FLL1_CONTROL_7: case ARIZONA_FLL1_SYNCHRONISER_1: case ARIZONA_FLL1_SYNCHRONISER_2: case ARIZONA_FLL1_SYNCHRONISER_3: case ARIZONA_FLL1_SYNCHRONISER_4: case ARIZONA_FLL1_SYNCHRONISER_5: case ARIZONA_FLL1_SYNCHRONISER_6: case ARIZONA_FLL1_SYNCHRONISER_7: case ARIZONA_FLL1_SPREAD_SPECTRUM: case ARIZONA_FLL1_GPIO_CLOCK: case ARIZONA_FLL2_CONTROL_1: case ARIZONA_FLL2_CONTROL_2: case ARIZONA_FLL2_CONTROL_3: case ARIZONA_FLL2_CONTROL_4: case ARIZONA_FLL2_CONTROL_5: case ARIZONA_FLL2_CONTROL_6: case ARIZONA_FLL2_CONTROL_7: case ARIZONA_FLL2_SYNCHRONISER_1: case ARIZONA_FLL2_SYNCHRONISER_2: case ARIZONA_FLL2_SYNCHRONISER_3: case ARIZONA_FLL2_SYNCHRONISER_4: case ARIZONA_FLL2_SYNCHRONISER_5: case ARIZONA_FLL2_SYNCHRONISER_6: case ARIZONA_FLL2_SYNCHRONISER_7: case ARIZONA_FLL2_SPREAD_SPECTRUM: case ARIZONA_FLL2_GPIO_CLOCK: case ARIZONA_MIC_BIAS_CTRL_1: case ARIZONA_MIC_BIAS_CTRL_2: case ARIZONA_HP_CTRL_1L: case ARIZONA_HP_CTRL_1R: case ARIZONA_INPUT_ENABLES: case ARIZONA_INPUT_ENABLES_STATUS: case ARIZONA_INPUT_RATE: case ARIZONA_INPUT_VOLUME_RAMP: case ARIZONA_HPF_CONTROL: case ARIZONA_IN1L_CONTROL: case ARIZONA_ADC_DIGITAL_VOLUME_1L: case ARIZONA_DMIC1L_CONTROL: case ARIZONA_IN1R_CONTROL: case ARIZONA_ADC_DIGITAL_VOLUME_1R: case ARIZONA_DMIC1R_CONTROL: case ARIZONA_IN2L_CONTROL: case ARIZONA_ADC_DIGITAL_VOLUME_2L: case ARIZONA_DMIC2L_CONTROL: case ARIZONA_IN2R_CONTROL: case ARIZONA_ADC_DIGITAL_VOLUME_2R: case ARIZONA_DMIC2R_CONTROL: case ARIZONA_OUTPUT_ENABLES_1: case ARIZONA_OUTPUT_STATUS_1: case ARIZONA_RAW_OUTPUT_STATUS_1: case ARIZONA_OUTPUT_RATE_1: case ARIZONA_OUTPUT_VOLUME_RAMP: case ARIZONA_OUTPUT_PATH_CONFIG_1L: case ARIZONA_DAC_DIGITAL_VOLUME_1L: case ARIZONA_DAC_VOLUME_LIMIT_1L: case ARIZONA_NOISE_GATE_SELECT_1L: case ARIZONA_DAC_DIGITAL_VOLUME_1R: case ARIZONA_DAC_VOLUME_LIMIT_1R: case ARIZONA_NOISE_GATE_SELECT_1R: case ARIZONA_DAC_DIGITAL_VOLUME_4L: case ARIZONA_OUT_VOLUME_4L: case ARIZONA_NOISE_GATE_SELECT_4L: case ARIZONA_DAC_AEC_CONTROL_1: case ARIZONA_NOISE_GATE_CONTROL: case ARIZONA_HP1_SHORT_CIRCUIT_CTRL: case ARIZONA_AIF1_BCLK_CTRL: case ARIZONA_AIF1_TX_PIN_CTRL: case ARIZONA_AIF1_RX_PIN_CTRL: case ARIZONA_AIF1_RATE_CTRL: case ARIZONA_AIF1_FORMAT: case ARIZONA_AIF1_TX_BCLK_RATE: case ARIZONA_AIF1_RX_BCLK_RATE: case ARIZONA_AIF1_FRAME_CTRL_1: case ARIZONA_AIF1_FRAME_CTRL_2: case ARIZONA_AIF1_FRAME_CTRL_3: case ARIZONA_AIF1_FRAME_CTRL_4: case ARIZONA_AIF1_FRAME_CTRL_5: case ARIZONA_AIF1_FRAME_CTRL_6: case ARIZONA_AIF1_FRAME_CTRL_7: case ARIZONA_AIF1_FRAME_CTRL_8: case ARIZONA_AIF1_FRAME_CTRL_9: case ARIZONA_AIF1_FRAME_CTRL_10: case ARIZONA_AIF1_FRAME_CTRL_11: case ARIZONA_AIF1_FRAME_CTRL_12: case ARIZONA_AIF1_FRAME_CTRL_13: case ARIZONA_AIF1_FRAME_CTRL_14: case ARIZONA_AIF1_FRAME_CTRL_15: case ARIZONA_AIF1_FRAME_CTRL_16: case ARIZONA_AIF1_FRAME_CTRL_17: case ARIZONA_AIF1_FRAME_CTRL_18: case ARIZONA_AIF1_TX_ENABLES: case ARIZONA_AIF1_RX_ENABLES: case ARIZONA_AIF2_BCLK_CTRL: case ARIZONA_AIF2_TX_PIN_CTRL: case ARIZONA_AIF2_RX_PIN_CTRL: case ARIZONA_AIF2_RATE_CTRL: case ARIZONA_AIF2_FORMAT: case ARIZONA_AIF2_TX_BCLK_RATE: case ARIZONA_AIF2_RX_BCLK_RATE: case ARIZONA_AIF2_FRAME_CTRL_1: case ARIZONA_AIF2_FRAME_CTRL_2: case ARIZONA_AIF2_FRAME_CTRL_3: case ARIZONA_AIF2_FRAME_CTRL_4: case ARIZONA_AIF2_FRAME_CTRL_5: case ARIZONA_AIF2_FRAME_CTRL_6: case ARIZONA_AIF2_FRAME_CTRL_7: case ARIZONA_AIF2_FRAME_CTRL_8: case ARIZONA_AIF2_FRAME_CTRL_11: case ARIZONA_AIF2_FRAME_CTRL_12: case ARIZONA_AIF2_FRAME_CTRL_13: case ARIZONA_AIF2_FRAME_CTRL_14: case ARIZONA_AIF2_FRAME_CTRL_15: case ARIZONA_AIF2_FRAME_CTRL_16: case ARIZONA_AIF2_TX_ENABLES: case ARIZONA_AIF2_RX_ENABLES: case ARIZONA_AIF3_BCLK_CTRL: case ARIZONA_AIF3_TX_PIN_CTRL: case ARIZONA_AIF3_RX_PIN_CTRL: case ARIZONA_AIF3_RATE_CTRL: case ARIZONA_AIF3_FORMAT: case ARIZONA_AIF3_TX_BCLK_RATE: case ARIZONA_AIF3_RX_BCLK_RATE: case ARIZONA_AIF3_FRAME_CTRL_1: case ARIZONA_AIF3_FRAME_CTRL_2: case ARIZONA_AIF3_FRAME_CTRL_3: case ARIZONA_AIF3_FRAME_CTRL_4: case ARIZONA_AIF3_FRAME_CTRL_11: case ARIZONA_AIF3_FRAME_CTRL_12: case ARIZONA_AIF3_TX_ENABLES: case ARIZONA_AIF3_RX_ENABLES: case ARIZONA_PWM1MIX_INPUT_1_SOURCE: case ARIZONA_PWM1MIX_INPUT_1_VOLUME: case ARIZONA_PWM1MIX_INPUT_2_SOURCE: case ARIZONA_PWM1MIX_INPUT_2_VOLUME: case ARIZONA_PWM1MIX_INPUT_3_SOURCE: case ARIZONA_PWM1MIX_INPUT_3_VOLUME: case ARIZONA_PWM1MIX_INPUT_4_SOURCE: case ARIZONA_PWM1MIX_INPUT_4_VOLUME: case ARIZONA_PWM2MIX_INPUT_1_SOURCE: case ARIZONA_PWM2MIX_INPUT_1_VOLUME: case ARIZONA_PWM2MIX_INPUT_2_SOURCE: case ARIZONA_PWM2MIX_INPUT_2_VOLUME: case ARIZONA_PWM2MIX_INPUT_3_SOURCE: case ARIZONA_PWM2MIX_INPUT_3_VOLUME: case ARIZONA_PWM2MIX_INPUT_4_SOURCE: case ARIZONA_PWM2MIX_INPUT_4_VOLUME: case ARIZONA_OUT1LMIX_INPUT_1_SOURCE: case ARIZONA_OUT1LMIX_INPUT_1_VOLUME: case ARIZONA_OUT1LMIX_INPUT_2_SOURCE: case ARIZONA_OUT1LMIX_INPUT_2_VOLUME: case ARIZONA_OUT1LMIX_INPUT_3_SOURCE: case ARIZONA_OUT1LMIX_INPUT_3_VOLUME: case ARIZONA_OUT1LMIX_INPUT_4_SOURCE: case ARIZONA_OUT1LMIX_INPUT_4_VOLUME: case ARIZONA_OUT1RMIX_INPUT_1_SOURCE: case ARIZONA_OUT1RMIX_INPUT_1_VOLUME: case ARIZONA_OUT1RMIX_INPUT_2_SOURCE: case ARIZONA_OUT1RMIX_INPUT_2_VOLUME: case ARIZONA_OUT1RMIX_INPUT_3_SOURCE: case ARIZONA_OUT1RMIX_INPUT_3_VOLUME: case ARIZONA_OUT1RMIX_INPUT_4_SOURCE: case ARIZONA_OUT1RMIX_INPUT_4_VOLUME: case ARIZONA_OUT4LMIX_INPUT_1_SOURCE: case ARIZONA_OUT4LMIX_INPUT_1_VOLUME: case ARIZONA_OUT4LMIX_INPUT_2_SOURCE: case ARIZONA_OUT4LMIX_INPUT_2_VOLUME: case ARIZONA_OUT4LMIX_INPUT_3_SOURCE: case ARIZONA_OUT4LMIX_INPUT_3_VOLUME: case ARIZONA_OUT4LMIX_INPUT_4_SOURCE: case ARIZONA_OUT4LMIX_INPUT_4_VOLUME: case ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE: case ARIZONA_AIF1TX1MIX_INPUT_1_VOLUME: case ARIZONA_AIF1TX1MIX_INPUT_2_SOURCE: case ARIZONA_AIF1TX1MIX_INPUT_2_VOLUME: case ARIZONA_AIF1TX1MIX_INPUT_3_SOURCE: case ARIZONA_AIF1TX1MIX_INPUT_3_VOLUME: case ARIZONA_AIF1TX1MIX_INPUT_4_SOURCE: case ARIZONA_AIF1TX1MIX_INPUT_4_VOLUME: case ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE: case ARIZONA_AIF1TX2MIX_INPUT_1_VOLUME: case ARIZONA_AIF1TX2MIX_INPUT_2_SOURCE: case ARIZONA_AIF1TX2MIX_INPUT_2_VOLUME: case ARIZONA_AIF1TX2MIX_INPUT_3_SOURCE: case ARIZONA_AIF1TX2MIX_INPUT_3_VOLUME: case ARIZONA_AIF1TX2MIX_INPUT_4_SOURCE: case ARIZONA_AIF1TX2MIX_INPUT_4_VOLUME: case ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE: case ARIZONA_AIF1TX3MIX_INPUT_1_VOLUME: case ARIZONA_AIF1TX3MIX_INPUT_2_SOURCE: case ARIZONA_AIF1TX3MIX_INPUT_2_VOLUME: case ARIZONA_AIF1TX3MIX_INPUT_3_SOURCE: case ARIZONA_AIF1TX3MIX_INPUT_3_VOLUME: case ARIZONA_AIF1TX3MIX_INPUT_4_SOURCE: case ARIZONA_AIF1TX3MIX_INPUT_4_VOLUME: case ARIZONA_AIF1TX4MIX_INPUT_1_SOURCE: case ARIZONA_AIF1TX4MIX_INPUT_1_VOLUME: case ARIZONA_AIF1TX4MIX_INPUT_2_SOURCE: case ARIZONA_AIF1TX4MIX_INPUT_2_VOLUME: case ARIZONA_AIF1TX4MIX_INPUT_3_SOURCE: case ARIZONA_AIF1TX4MIX_INPUT_3_VOLUME: case ARIZONA_AIF1TX4MIX_INPUT_4_SOURCE: case ARIZONA_AIF1TX4MIX_INPUT_4_VOLUME: case ARIZONA_AIF1TX5MIX_INPUT_1_SOURCE: case ARIZONA_AIF1TX5MIX_INPUT_1_VOLUME: case ARIZONA_AIF1TX5MIX_INPUT_2_SOURCE: case ARIZONA_AIF1TX5MIX_INPUT_2_VOLUME: case ARIZONA_AIF1TX5MIX_INPUT_3_SOURCE: case ARIZONA_AIF1TX5MIX_INPUT_3_VOLUME: case ARIZONA_AIF1TX5MIX_INPUT_4_SOURCE: case ARIZONA_AIF1TX5MIX_INPUT_4_VOLUME: case ARIZONA_AIF1TX6MIX_INPUT_1_SOURCE: case ARIZONA_AIF1TX6MIX_INPUT_1_VOLUME: case ARIZONA_AIF1TX6MIX_INPUT_2_SOURCE: case ARIZONA_AIF1TX6MIX_INPUT_2_VOLUME: case ARIZONA_AIF1TX6MIX_INPUT_3_SOURCE: case ARIZONA_AIF1TX6MIX_INPUT_3_VOLUME: case ARIZONA_AIF1TX6MIX_INPUT_4_SOURCE: case ARIZONA_AIF1TX6MIX_INPUT_4_VOLUME: case ARIZONA_AIF1TX7MIX_INPUT_1_SOURCE: case ARIZONA_AIF1TX7MIX_INPUT_1_VOLUME: case ARIZONA_AIF1TX7MIX_INPUT_2_SOURCE: case ARIZONA_AIF1TX7MIX_INPUT_2_VOLUME: case ARIZONA_AIF1TX7MIX_INPUT_3_SOURCE: case ARIZONA_AIF1TX7MIX_INPUT_3_VOLUME: case ARIZONA_AIF1TX7MIX_INPUT_4_SOURCE: case ARIZONA_AIF1TX7MIX_INPUT_4_VOLUME: case ARIZONA_AIF1TX8MIX_INPUT_1_SOURCE: case ARIZONA_AIF1TX8MIX_INPUT_1_VOLUME: case ARIZONA_AIF1TX8MIX_INPUT_2_SOURCE: case ARIZONA_AIF1TX8MIX_INPUT_2_VOLUME: case ARIZONA_AIF1TX8MIX_INPUT_3_SOURCE: case ARIZONA_AIF1TX8MIX_INPUT_3_VOLUME: case ARIZONA_AIF1TX8MIX_INPUT_4_SOURCE: case ARIZONA_AIF1TX8MIX_INPUT_4_VOLUME: case ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE: case ARIZONA_AIF2TX1MIX_INPUT_1_VOLUME: case ARIZONA_AIF2TX1MIX_INPUT_2_SOURCE: case ARIZONA_AIF2TX1MIX_INPUT_2_VOLUME: case ARIZONA_AIF2TX1MIX_INPUT_3_SOURCE: case ARIZONA_AIF2TX1MIX_INPUT_3_VOLUME: case ARIZONA_AIF2TX1MIX_INPUT_4_SOURCE: case ARIZONA_AIF2TX1MIX_INPUT_4_VOLUME: case ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE: case ARIZONA_AIF2TX2MIX_INPUT_1_VOLUME: case ARIZONA_AIF2TX2MIX_INPUT_2_SOURCE: case ARIZONA_AIF2TX2MIX_INPUT_2_VOLUME: case ARIZONA_AIF2TX2MIX_INPUT_3_SOURCE: case ARIZONA_AIF2TX2MIX_INPUT_3_VOLUME: case ARIZONA_AIF2TX2MIX_INPUT_4_SOURCE: case ARIZONA_AIF2TX2MIX_INPUT_4_VOLUME: case ARIZONA_AIF2TX3MIX_INPUT_1_SOURCE: case ARIZONA_AIF2TX3MIX_INPUT_1_VOLUME: case ARIZONA_AIF2TX3MIX_INPUT_2_SOURCE: case ARIZONA_AIF2TX3MIX_INPUT_2_VOLUME: case ARIZONA_AIF2TX3MIX_INPUT_3_SOURCE: case ARIZONA_AIF2TX3MIX_INPUT_3_VOLUME: case ARIZONA_AIF2TX3MIX_INPUT_4_SOURCE: case ARIZONA_AIF2TX3MIX_INPUT_4_VOLUME: case ARIZONA_AIF2TX4MIX_INPUT_1_SOURCE: case ARIZONA_AIF2TX4MIX_INPUT_1_VOLUME: case ARIZONA_AIF2TX4MIX_INPUT_2_SOURCE: case ARIZONA_AIF2TX4MIX_INPUT_2_VOLUME: case ARIZONA_AIF2TX4MIX_INPUT_3_SOURCE: case ARIZONA_AIF2TX4MIX_INPUT_3_VOLUME: case ARIZONA_AIF2TX4MIX_INPUT_4_SOURCE: case ARIZONA_AIF2TX4MIX_INPUT_4_VOLUME: case ARIZONA_AIF2TX5MIX_INPUT_1_SOURCE: case ARIZONA_AIF2TX5MIX_INPUT_1_VOLUME: case ARIZONA_AIF2TX5MIX_INPUT_2_SOURCE: case ARIZONA_AIF2TX5MIX_INPUT_2_VOLUME: case ARIZONA_AIF2TX5MIX_INPUT_3_SOURCE: case ARIZONA_AIF2TX5MIX_INPUT_3_VOLUME: case ARIZONA_AIF2TX5MIX_INPUT_4_SOURCE: case ARIZONA_AIF2TX5MIX_INPUT_4_VOLUME: case ARIZONA_AIF2TX6MIX_INPUT_1_SOURCE: case ARIZONA_AIF2TX6MIX_INPUT_1_VOLUME: case ARIZONA_AIF2TX6MIX_INPUT_2_SOURCE: case ARIZONA_AIF2TX6MIX_INPUT_2_VOLUME: case ARIZONA_AIF2TX6MIX_INPUT_3_SOURCE: case ARIZONA_AIF2TX6MIX_INPUT_3_VOLUME: case ARIZONA_AIF2TX6MIX_INPUT_4_SOURCE: case ARIZONA_AIF2TX6MIX_INPUT_4_VOLUME: case ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE: case ARIZONA_AIF3TX1MIX_INPUT_1_VOLUME: case ARIZONA_AIF3TX1MIX_INPUT_2_SOURCE: case ARIZONA_AIF3TX1MIX_INPUT_2_VOLUME: case ARIZONA_AIF3TX1MIX_INPUT_3_SOURCE: case ARIZONA_AIF3TX1MIX_INPUT_3_VOLUME: case ARIZONA_AIF3TX1MIX_INPUT_4_SOURCE: case ARIZONA_AIF3TX1MIX_INPUT_4_VOLUME: case ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE: case ARIZONA_AIF3TX2MIX_INPUT_1_VOLUME: case ARIZONA_AIF3TX2MIX_INPUT_2_SOURCE: case ARIZONA_AIF3TX2MIX_INPUT_2_VOLUME: case ARIZONA_AIF3TX2MIX_INPUT_3_SOURCE: case ARIZONA_AIF3TX2MIX_INPUT_3_VOLUME: case ARIZONA_AIF3TX2MIX_INPUT_4_SOURCE: case ARIZONA_AIF3TX2MIX_INPUT_4_VOLUME: case ARIZONA_EQ1MIX_INPUT_1_SOURCE: case ARIZONA_EQ1MIX_INPUT_1_VOLUME: case ARIZONA_EQ1MIX_INPUT_2_SOURCE: case ARIZONA_EQ1MIX_INPUT_2_VOLUME: case ARIZONA_EQ1MIX_INPUT_3_SOURCE: case ARIZONA_EQ1MIX_INPUT_3_VOLUME: case ARIZONA_EQ1MIX_INPUT_4_SOURCE: case ARIZONA_EQ1MIX_INPUT_4_VOLUME: case ARIZONA_EQ2MIX_INPUT_1_SOURCE: case ARIZONA_EQ2MIX_INPUT_1_VOLUME: case ARIZONA_EQ2MIX_INPUT_2_SOURCE: case ARIZONA_EQ2MIX_INPUT_2_VOLUME: case ARIZONA_EQ2MIX_INPUT_3_SOURCE: case ARIZONA_EQ2MIX_INPUT_3_VOLUME: case ARIZONA_EQ2MIX_INPUT_4_SOURCE: case ARIZONA_EQ2MIX_INPUT_4_VOLUME: case ARIZONA_DRC1LMIX_INPUT_1_SOURCE: case ARIZONA_DRC1LMIX_INPUT_1_VOLUME: case ARIZONA_DRC1LMIX_INPUT_2_SOURCE: case ARIZONA_DRC1LMIX_INPUT_2_VOLUME: case ARIZONA_DRC1LMIX_INPUT_3_SOURCE: case ARIZONA_DRC1LMIX_INPUT_3_VOLUME: case ARIZONA_DRC1LMIX_INPUT_4_SOURCE: case ARIZONA_DRC1LMIX_INPUT_4_VOLUME: case ARIZONA_DRC1RMIX_INPUT_1_SOURCE: case ARIZONA_DRC1RMIX_INPUT_1_VOLUME: case ARIZONA_DRC1RMIX_INPUT_2_SOURCE: case ARIZONA_DRC1RMIX_INPUT_2_VOLUME: case ARIZONA_DRC1RMIX_INPUT_3_SOURCE: case ARIZONA_DRC1RMIX_INPUT_3_VOLUME: case ARIZONA_DRC1RMIX_INPUT_4_SOURCE: case ARIZONA_DRC1RMIX_INPUT_4_VOLUME: case ARIZONA_DRC2LMIX_INPUT_1_SOURCE: case ARIZONA_DRC2LMIX_INPUT_1_VOLUME: case ARIZONA_DRC2LMIX_INPUT_2_SOURCE: case ARIZONA_DRC2LMIX_INPUT_2_VOLUME: case ARIZONA_DRC2LMIX_INPUT_3_SOURCE: case ARIZONA_DRC2LMIX_INPUT_3_VOLUME: case ARIZONA_DRC2LMIX_INPUT_4_SOURCE: case ARIZONA_DRC2LMIX_INPUT_4_VOLUME: case ARIZONA_DRC2RMIX_INPUT_1_SOURCE: case ARIZONA_DRC2RMIX_INPUT_1_VOLUME: case ARIZONA_DRC2RMIX_INPUT_2_SOURCE: case ARIZONA_DRC2RMIX_INPUT_2_VOLUME: case ARIZONA_DRC2RMIX_INPUT_3_SOURCE: case ARIZONA_DRC2RMIX_INPUT_3_VOLUME: case ARIZONA_DRC2RMIX_INPUT_4_SOURCE: case ARIZONA_DRC2RMIX_INPUT_4_VOLUME: case ARIZONA_HPLP1MIX_INPUT_1_SOURCE: case ARIZONA_HPLP1MIX_INPUT_1_VOLUME: case ARIZONA_HPLP1MIX_INPUT_2_SOURCE: case ARIZONA_HPLP1MIX_INPUT_2_VOLUME: case ARIZONA_HPLP1MIX_INPUT_3_SOURCE: case ARIZONA_HPLP1MIX_INPUT_3_VOLUME: case ARIZONA_HPLP1MIX_INPUT_4_SOURCE: case ARIZONA_HPLP1MIX_INPUT_4_VOLUME: case ARIZONA_HPLP2MIX_INPUT_1_SOURCE: case ARIZONA_HPLP2MIX_INPUT_1_VOLUME: case ARIZONA_HPLP2MIX_INPUT_2_SOURCE: case ARIZONA_HPLP2MIX_INPUT_2_VOLUME: case ARIZONA_HPLP2MIX_INPUT_3_SOURCE: case ARIZONA_HPLP2MIX_INPUT_3_VOLUME: case ARIZONA_HPLP2MIX_INPUT_4_SOURCE: case ARIZONA_HPLP2MIX_INPUT_4_VOLUME: case ARIZONA_HPLP3MIX_INPUT_1_SOURCE: case ARIZONA_HPLP3MIX_INPUT_1_VOLUME: case ARIZONA_HPLP3MIX_INPUT_2_SOURCE: case ARIZONA_HPLP3MIX_INPUT_2_VOLUME: case ARIZONA_HPLP3MIX_INPUT_3_SOURCE: case ARIZONA_HPLP3MIX_INPUT_3_VOLUME: case ARIZONA_HPLP3MIX_INPUT_4_SOURCE: case ARIZONA_HPLP3MIX_INPUT_4_VOLUME: case ARIZONA_HPLP4MIX_INPUT_1_SOURCE: case ARIZONA_HPLP4MIX_INPUT_1_VOLUME: case ARIZONA_HPLP4MIX_INPUT_2_SOURCE: case ARIZONA_HPLP4MIX_INPUT_2_VOLUME: case ARIZONA_HPLP4MIX_INPUT_3_SOURCE: case ARIZONA_HPLP4MIX_INPUT_3_VOLUME: case ARIZONA_HPLP4MIX_INPUT_4_SOURCE: case ARIZONA_HPLP4MIX_INPUT_4_VOLUME: case ARIZONA_DSP2LMIX_INPUT_1_SOURCE: case ARIZONA_DSP2LMIX_INPUT_1_VOLUME: case ARIZONA_DSP2LMIX_INPUT_2_SOURCE: case ARIZONA_DSP2LMIX_INPUT_2_VOLUME: case ARIZONA_DSP2LMIX_INPUT_3_SOURCE: case ARIZONA_DSP2LMIX_INPUT_3_VOLUME: case ARIZONA_DSP2LMIX_INPUT_4_SOURCE: case ARIZONA_DSP2LMIX_INPUT_4_VOLUME: case ARIZONA_DSP2RMIX_INPUT_1_SOURCE: case ARIZONA_DSP2RMIX_INPUT_1_VOLUME: case ARIZONA_DSP2RMIX_INPUT_2_SOURCE: case ARIZONA_DSP2RMIX_INPUT_2_VOLUME: case ARIZONA_DSP2RMIX_INPUT_3_SOURCE: case ARIZONA_DSP2RMIX_INPUT_3_VOLUME: case ARIZONA_DSP2RMIX_INPUT_4_SOURCE: case ARIZONA_DSP2RMIX_INPUT_4_VOLUME: case ARIZONA_DSP2AUX1MIX_INPUT_1_SOURCE: case ARIZONA_DSP2AUX2MIX_INPUT_1_SOURCE: case ARIZONA_DSP2AUX3MIX_INPUT_1_SOURCE: case ARIZONA_DSP2AUX4MIX_INPUT_1_SOURCE: case ARIZONA_DSP2AUX5MIX_INPUT_1_SOURCE: case ARIZONA_DSP2AUX6MIX_INPUT_1_SOURCE: case ARIZONA_DSP3LMIX_INPUT_1_SOURCE: case ARIZONA_DSP3LMIX_INPUT_1_VOLUME: case ARIZONA_DSP3LMIX_INPUT_2_SOURCE: case ARIZONA_DSP3LMIX_INPUT_2_VOLUME: case ARIZONA_DSP3LMIX_INPUT_3_SOURCE: case ARIZONA_DSP3LMIX_INPUT_3_VOLUME: case ARIZONA_DSP3LMIX_INPUT_4_SOURCE: case ARIZONA_DSP3LMIX_INPUT_4_VOLUME: case ARIZONA_DSP3RMIX_INPUT_1_SOURCE: case ARIZONA_DSP3RMIX_INPUT_1_VOLUME: case ARIZONA_DSP3RMIX_INPUT_2_SOURCE: case ARIZONA_DSP3RMIX_INPUT_2_VOLUME: case ARIZONA_DSP3RMIX_INPUT_3_SOURCE: case ARIZONA_DSP3RMIX_INPUT_3_VOLUME: case ARIZONA_DSP3RMIX_INPUT_4_SOURCE: case ARIZONA_DSP3RMIX_INPUT_4_VOLUME: case ARIZONA_DSP3AUX1MIX_INPUT_1_SOURCE: case ARIZONA_DSP3AUX2MIX_INPUT_1_SOURCE: case ARIZONA_DSP3AUX3MIX_INPUT_1_SOURCE: case ARIZONA_DSP3AUX4MIX_INPUT_1_SOURCE: case ARIZONA_DSP3AUX5MIX_INPUT_1_SOURCE: case ARIZONA_DSP3AUX6MIX_INPUT_1_SOURCE: case ARIZONA_ASRC1LMIX_INPUT_1_SOURCE: case ARIZONA_ASRC1RMIX_INPUT_1_SOURCE: case ARIZONA_ASRC2LMIX_INPUT_1_SOURCE: case ARIZONA_ASRC2RMIX_INPUT_1_SOURCE: case ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE: case ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE: case ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE: case ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE: case ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE: case ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE: case ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE: case ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE: case ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE: case ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE: case ARIZONA_ISRC2DEC3MIX_INPUT_1_SOURCE: case ARIZONA_ISRC2DEC4MIX_INPUT_1_SOURCE: case ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE: case ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE: case ARIZONA_ISRC2INT3MIX_INPUT_1_SOURCE: case ARIZONA_ISRC2INT4MIX_INPUT_1_SOURCE: case ARIZONA_ISRC3DEC1MIX_INPUT_1_SOURCE: case ARIZONA_ISRC3DEC2MIX_INPUT_1_SOURCE: case ARIZONA_ISRC3DEC3MIX_INPUT_1_SOURCE: case ARIZONA_ISRC3DEC4MIX_INPUT_1_SOURCE: case ARIZONA_ISRC3INT1MIX_INPUT_1_SOURCE: case ARIZONA_ISRC3INT2MIX_INPUT_1_SOURCE: case ARIZONA_ISRC3INT3MIX_INPUT_1_SOURCE: case ARIZONA_ISRC3INT4MIX_INPUT_1_SOURCE: case ARIZONA_GPIO1_CTRL: case ARIZONA_GPIO2_CTRL: case ARIZONA_IRQ_CTRL_1: case ARIZONA_GPIO_DEBOUNCE_CONFIG: case ARIZONA_MISC_PAD_CTRL_1: case ARIZONA_MISC_PAD_CTRL_2: case ARIZONA_MISC_PAD_CTRL_3: case ARIZONA_MISC_PAD_CTRL_4: case ARIZONA_MISC_PAD_CTRL_5: case ARIZONA_MISC_PAD_CTRL_6: case ARIZONA_MISC_PAD_CTRL_7: case ARIZONA_MISC_PAD_CTRL_9: case ARIZONA_MISC_PAD_CTRL_10: case ARIZONA_MISC_PAD_CTRL_11: case ARIZONA_MISC_PAD_CTRL_12: case ARIZONA_MISC_PAD_CTRL_13: case ARIZONA_MISC_PAD_CTRL_14: case ARIZONA_MISC_PAD_CTRL_16: case ARIZONA_INTERRUPT_STATUS_1: case ARIZONA_INTERRUPT_STATUS_2: case ARIZONA_INTERRUPT_STATUS_3: case ARIZONA_INTERRUPT_STATUS_4: case ARIZONA_INTERRUPT_STATUS_5: case ARIZONA_INTERRUPT_STATUS_6: case ARIZONA_INTERRUPT_STATUS_1_MASK: case ARIZONA_INTERRUPT_STATUS_2_MASK: case ARIZONA_INTERRUPT_STATUS_3_MASK: case ARIZONA_INTERRUPT_STATUS_4_MASK: case ARIZONA_INTERRUPT_STATUS_5_MASK: case ARIZONA_INTERRUPT_STATUS_6_MASK: case ARIZONA_INTERRUPT_CONTROL: case ARIZONA_IRQ2_STATUS_1: case ARIZONA_IRQ2_STATUS_2: case ARIZONA_IRQ2_STATUS_3: case ARIZONA_IRQ2_STATUS_4: case ARIZONA_IRQ2_STATUS_5: case ARIZONA_IRQ2_STATUS_6: case ARIZONA_IRQ2_STATUS_1_MASK: case ARIZONA_IRQ2_STATUS_2_MASK: case ARIZONA_IRQ2_STATUS_3_MASK: case ARIZONA_IRQ2_STATUS_4_MASK: case ARIZONA_IRQ2_STATUS_5_MASK: case ARIZONA_IRQ2_STATUS_6_MASK: case ARIZONA_IRQ2_CONTROL: case ARIZONA_INTERRUPT_RAW_STATUS_2: case ARIZONA_INTERRUPT_RAW_STATUS_3: case ARIZONA_INTERRUPT_RAW_STATUS_4: case ARIZONA_INTERRUPT_RAW_STATUS_5: case ARIZONA_INTERRUPT_RAW_STATUS_6: case ARIZONA_INTERRUPT_RAW_STATUS_7: case ARIZONA_INTERRUPT_RAW_STATUS_8: case ARIZONA_INTERRUPT_RAW_STATUS_9: case ARIZONA_IRQ_PIN_STATUS: case ARIZONA_FX_CTRL1: case ARIZONA_FX_CTRL2: case ARIZONA_EQ1_1: case ARIZONA_EQ1_2: case ARIZONA_EQ1_3: case ARIZONA_EQ1_4: case ARIZONA_EQ1_5: case ARIZONA_EQ1_6: case ARIZONA_EQ1_7: case ARIZONA_EQ1_8: case ARIZONA_EQ1_9: case ARIZONA_EQ1_10: case ARIZONA_EQ1_11: case ARIZONA_EQ1_12: case ARIZONA_EQ1_13: case ARIZONA_EQ1_14: case ARIZONA_EQ1_15: case ARIZONA_EQ1_16: case ARIZONA_EQ1_17: case ARIZONA_EQ1_18: case ARIZONA_EQ1_19: case ARIZONA_EQ1_20: case ARIZONA_EQ1_21: case ARIZONA_EQ2_1: case ARIZONA_EQ2_2: case ARIZONA_EQ2_3: case ARIZONA_EQ2_4: case ARIZONA_EQ2_5: case ARIZONA_EQ2_6: case ARIZONA_EQ2_7: case ARIZONA_EQ2_8: case ARIZONA_EQ2_9: case ARIZONA_EQ2_10: case ARIZONA_EQ2_11: case ARIZONA_EQ2_12: case ARIZONA_EQ2_13: case ARIZONA_EQ2_14: case ARIZONA_EQ2_15: case ARIZONA_EQ2_16: case ARIZONA_EQ2_17: case ARIZONA_EQ2_18: case ARIZONA_EQ2_19: case ARIZONA_EQ2_20: case ARIZONA_EQ2_21: case ARIZONA_DRC1_CTRL1: case ARIZONA_DRC1_CTRL2: case ARIZONA_DRC1_CTRL3: case ARIZONA_DRC1_CTRL4: case ARIZONA_DRC1_CTRL5: case ARIZONA_DRC2_CTRL1: case ARIZONA_DRC2_CTRL2: case ARIZONA_DRC2_CTRL3: case ARIZONA_DRC2_CTRL4: case ARIZONA_DRC2_CTRL5: case ARIZONA_HPLPF1_1: case ARIZONA_HPLPF1_2: case ARIZONA_HPLPF2_1: case ARIZONA_HPLPF2_2: case ARIZONA_HPLPF3_1: case ARIZONA_HPLPF3_2: case ARIZONA_HPLPF4_1: case ARIZONA_HPLPF4_2: case ARIZONA_ASRC_ENABLE: case ARIZONA_ASRC_STATUS: case ARIZONA_ASRC_RATE1: case ARIZONA_ASRC_RATE2: case ARIZONA_ISRC_1_CTRL_1: case ARIZONA_ISRC_1_CTRL_2: case ARIZONA_ISRC_1_CTRL_3: case ARIZONA_ISRC_2_CTRL_1: case ARIZONA_ISRC_2_CTRL_2: case ARIZONA_ISRC_2_CTRL_3: case ARIZONA_ISRC_3_CTRL_1: case ARIZONA_ISRC_3_CTRL_2: case ARIZONA_ISRC_3_CTRL_3: case ARIZONA_DSP2_CONTROL_1: case ARIZONA_DSP2_CLOCKING_1: case ARIZONA_DSP2_STATUS_1: case ARIZONA_DSP2_STATUS_2: case ARIZONA_DSP2_STATUS_3: case ARIZONA_DSP2_STATUS_4: case ARIZONA_DSP2_WDMA_BUFFER_1: case ARIZONA_DSP2_WDMA_BUFFER_2: case ARIZONA_DSP2_WDMA_BUFFER_3: case ARIZONA_DSP2_WDMA_BUFFER_4: case ARIZONA_DSP2_WDMA_BUFFER_5: case ARIZONA_DSP2_WDMA_BUFFER_6: case ARIZONA_DSP2_WDMA_BUFFER_7: case ARIZONA_DSP2_WDMA_BUFFER_8: case ARIZONA_DSP2_RDMA_BUFFER_1: case ARIZONA_DSP2_RDMA_BUFFER_2: case ARIZONA_DSP2_RDMA_BUFFER_3: case ARIZONA_DSP2_RDMA_BUFFER_4: case ARIZONA_DSP2_RDMA_BUFFER_5: case ARIZONA_DSP2_RDMA_BUFFER_6: case ARIZONA_DSP2_WDMA_CONFIG_1: case ARIZONA_DSP2_WDMA_CONFIG_2: case ARIZONA_DSP2_WDMA_OFFSET_1: case ARIZONA_DSP2_RDMA_CONFIG_1: case ARIZONA_DSP2_RDMA_OFFSET_1: case ARIZONA_DSP2_EXTERNAL_START_SELECT_1: case ARIZONA_DSP2_SCRATCH_0: case ARIZONA_DSP2_SCRATCH_1: case ARIZONA_DSP2_SCRATCH_2: case ARIZONA_DSP2_SCRATCH_3: case ARIZONA_DSP3_CONTROL_1: case ARIZONA_DSP3_CLOCKING_1: case ARIZONA_DSP3_STATUS_1: case ARIZONA_DSP3_STATUS_2: case ARIZONA_DSP3_STATUS_3: case ARIZONA_DSP3_STATUS_4: case ARIZONA_DSP3_WDMA_BUFFER_1: case ARIZONA_DSP3_WDMA_BUFFER_2: case ARIZONA_DSP3_WDMA_BUFFER_3: case ARIZONA_DSP3_WDMA_BUFFER_4: case ARIZONA_DSP3_WDMA_BUFFER_5: case ARIZONA_DSP3_WDMA_BUFFER_6: case ARIZONA_DSP3_WDMA_BUFFER_7: case ARIZONA_DSP3_WDMA_BUFFER_8: case ARIZONA_DSP3_RDMA_BUFFER_1: case ARIZONA_DSP3_RDMA_BUFFER_2: case ARIZONA_DSP3_RDMA_BUFFER_3: case ARIZONA_DSP3_RDMA_BUFFER_4: case ARIZONA_DSP3_RDMA_BUFFER_5: case ARIZONA_DSP3_RDMA_BUFFER_6: case ARIZONA_DSP3_WDMA_CONFIG_1: case ARIZONA_DSP3_WDMA_CONFIG_2: case ARIZONA_DSP3_WDMA_OFFSET_1: case ARIZONA_DSP3_RDMA_CONFIG_1: case ARIZONA_DSP3_RDMA_OFFSET_1: case ARIZONA_DSP3_EXTERNAL_START_SELECT_1: case ARIZONA_DSP3_SCRATCH_0: case ARIZONA_DSP3_SCRATCH_1: case ARIZONA_DSP3_SCRATCH_2: case ARIZONA_DSP3_SCRATCH_3: return true; default: return cs47l24_is_adsp_memory(reg); } } static bool cs47l24_volatile_register(struct device *dev, unsigned int reg) { switch (reg) { case ARIZONA_SOFTWARE_RESET: case ARIZONA_DEVICE_REVISION: case ARIZONA_WRITE_SEQUENCER_CTRL_0: case ARIZONA_WRITE_SEQUENCER_CTRL_1: case ARIZONA_WRITE_SEQUENCER_CTRL_2: case ARIZONA_HAPTICS_STATUS: case ARIZONA_SAMPLE_RATE_1_STATUS: case ARIZONA_SAMPLE_RATE_2_STATUS: case ARIZONA_SAMPLE_RATE_3_STATUS: case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS: case ARIZONA_HP_CTRL_1L: case ARIZONA_HP_CTRL_1R: case ARIZONA_INPUT_ENABLES_STATUS: case ARIZONA_OUTPUT_STATUS_1: case ARIZONA_RAW_OUTPUT_STATUS_1: case ARIZONA_INTERRUPT_STATUS_1: case ARIZONA_INTERRUPT_STATUS_2: case ARIZONA_INTERRUPT_STATUS_3: case ARIZONA_INTERRUPT_STATUS_4: case ARIZONA_INTERRUPT_STATUS_5: case ARIZONA_INTERRUPT_STATUS_6: case ARIZONA_IRQ2_STATUS_1: case ARIZONA_IRQ2_STATUS_2: case ARIZONA_IRQ2_STATUS_3: case ARIZONA_IRQ2_STATUS_4: case ARIZONA_IRQ2_STATUS_5: case ARIZONA_IRQ2_STATUS_6: case ARIZONA_INTERRUPT_RAW_STATUS_2: case ARIZONA_INTERRUPT_RAW_STATUS_3: case ARIZONA_INTERRUPT_RAW_STATUS_4: case ARIZONA_INTERRUPT_RAW_STATUS_5: case ARIZONA_INTERRUPT_RAW_STATUS_6: case ARIZONA_INTERRUPT_RAW_STATUS_7: case ARIZONA_INTERRUPT_RAW_STATUS_8: case ARIZONA_INTERRUPT_RAW_STATUS_9: case ARIZONA_IRQ_PIN_STATUS: case ARIZONA_FX_CTRL2: case ARIZONA_ASRC_STATUS: case ARIZONA_DSP2_STATUS_1: case ARIZONA_DSP2_STATUS_2: case ARIZONA_DSP2_STATUS_3: case ARIZONA_DSP2_STATUS_4: case ARIZONA_DSP2_WDMA_BUFFER_1: case ARIZONA_DSP2_WDMA_BUFFER_2: case ARIZONA_DSP2_WDMA_BUFFER_3: case ARIZONA_DSP2_WDMA_BUFFER_4: case ARIZONA_DSP2_WDMA_BUFFER_5: case ARIZONA_DSP2_WDMA_BUFFER_6: case ARIZONA_DSP2_WDMA_BUFFER_7: case ARIZONA_DSP2_WDMA_BUFFER_8: case ARIZONA_DSP2_RDMA_BUFFER_1: case ARIZONA_DSP2_RDMA_BUFFER_2: case ARIZONA_DSP2_RDMA_BUFFER_3: case ARIZONA_DSP2_RDMA_BUFFER_4: case ARIZONA_DSP2_RDMA_BUFFER_5: case ARIZONA_DSP2_RDMA_BUFFER_6: case ARIZONA_DSP2_WDMA_CONFIG_1: case ARIZONA_DSP2_WDMA_CONFIG_2: case ARIZONA_DSP2_WDMA_OFFSET_1: case ARIZONA_DSP2_RDMA_CONFIG_1: case ARIZONA_DSP2_RDMA_OFFSET_1: case ARIZONA_DSP2_EXTERNAL_START_SELECT_1: case ARIZONA_DSP2_SCRATCH_0: case ARIZONA_DSP2_SCRATCH_1: case ARIZONA_DSP2_SCRATCH_2: case ARIZONA_DSP2_SCRATCH_3: case ARIZONA_DSP2_CLOCKING_1: case ARIZONA_DSP3_STATUS_1: case ARIZONA_DSP3_STATUS_2: case ARIZONA_DSP3_STATUS_3: case ARIZONA_DSP3_STATUS_4: case ARIZONA_DSP3_WDMA_BUFFER_1: case ARIZONA_DSP3_WDMA_BUFFER_2: case ARIZONA_DSP3_WDMA_BUFFER_3: case ARIZONA_DSP3_WDMA_BUFFER_4: case ARIZONA_DSP3_WDMA_BUFFER_5: case ARIZONA_DSP3_WDMA_BUFFER_6: case ARIZONA_DSP3_WDMA_BUFFER_7: case ARIZONA_DSP3_WDMA_BUFFER_8: case ARIZONA_DSP3_RDMA_BUFFER_1: case ARIZONA_DSP3_RDMA_BUFFER_2: case ARIZONA_DSP3_RDMA_BUFFER_3: case ARIZONA_DSP3_RDMA_BUFFER_4: case ARIZONA_DSP3_RDMA_BUFFER_5: case ARIZONA_DSP3_RDMA_BUFFER_6: case ARIZONA_DSP3_WDMA_CONFIG_1: case ARIZONA_DSP3_WDMA_CONFIG_2: case ARIZONA_DSP3_WDMA_OFFSET_1: case ARIZONA_DSP3_RDMA_CONFIG_1: case ARIZONA_DSP3_RDMA_OFFSET_1: case ARIZONA_DSP3_EXTERNAL_START_SELECT_1: case ARIZONA_DSP3_SCRATCH_0: case ARIZONA_DSP3_SCRATCH_1: case ARIZONA_DSP3_SCRATCH_2: case ARIZONA_DSP3_SCRATCH_3: case ARIZONA_DSP3_CLOCKING_1: return true; default: return cs47l24_is_adsp_memory(reg); } } #define CS47L24_MAX_REGISTER 0x3b3fff const struct regmap_config cs47l24_spi_regmap = { .reg_bits = 32, .pad_bits = 16, .val_bits = 16, .reg_format_endian = REGMAP_ENDIAN_BIG, .val_format_endian = REGMAP_ENDIAN_BIG, .max_register = CS47L24_MAX_REGISTER, .readable_reg = cs47l24_readable_register, .volatile_reg = cs47l24_volatile_register, .cache_type = REGCACHE_MAPLE, .reg_defaults = cs47l24_reg_default, .num_reg_defaults = ARRAY_SIZE(cs47l24_reg_default), }; EXPORT_SYMBOL_GPL(cs47l24_spi_regmap);