aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd/wm5102-tables.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-02-24 23:00:58 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-24 23:00:58 -0500
commitab7826595e9ec51a51f622c5fc91e2f59440481a (patch)
tree34241b399fa7a12c260e06e6c1c31bc69d46e1e3 /drivers/mfd/wm5102-tables.c
parent21fbd5809ad126b949206d78e0a0e07ec872ea11 (diff)
parentff7109fa632654eaef657186f2942f5b679023d6 (diff)
Merge tag 'mfd-3.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
Pull MFS updates from Samuel Ortiz: "This is the MFD pull request for the 3.9 merge window. No new drivers this time, but a bunch of fairly big cleanups: - Roger Quadros worked on a OMAP USBHS and TLL platform data consolidation, OMAP5 support and clock management code cleanup. - The first step of a major sync for the ab8500 driver from Lee Jones. In particular, the debugfs and the sysct interfaces got extended and improved. - Peter Ujfalusi sent a nice patchset for cleaning and fixing the twl-core driver, with a much needed module id lookup code improvement. - The regular wm5102 and arizona cleanups and fixes from Mark Brown. - Laxman Dewangan extended the palmas APIs in order to implement the palmas GPIO and rt drivers. - Laxman also added DT support for the tps65090 driver. - The Intel SCH and ICH drivers got a couple fixes from Aaron Sierra and Darren Hart. - Linus Walleij patchset for the ab8500 driver allowed ab8500 and ab9540 based devices to switch to the new abx500 pin-ctrl driver. - The max8925 now has device tree and irqdomain support thanks to Qing Xu. - The recently added rtsx driver got a few cleanups and fixes for a better card detection code path and now also supports the RTS5227 chipset, thanks to Wei Wang and Roger Tseng." * tag 'mfd-3.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (109 commits) mfd: lpc_ich: Use devres API to allocate private data mfd: lpc_ich: Add Device IDs for Intel Wellsburg PCH mfd: lpc_sch: Accomodate partial population of the MFD devices mfd: da9052-i2c: Staticize da9052_i2c_fix() mfd: syscon: Fix sparse warning mfd: twl-core: Fix kernel panic on boot mfd: rtsx: Fix issue that booting OS with SD card inserted mfd: ab8500: Fix compile error mfd: Add missing GENERIC_HARDIRQS dependecies Documentation: Add docs for max8925 dt mfd: max8925: Add dts mfd: max8925: Support dt for backlight mfd: max8925: Fix onkey driver irq base mfd: max8925: Fix mfd device register failure mfd: max8925: Add irqdomain for dt mfd: vexpress: Allow vexpress-sysreg to self-initialise mfd: rtsx: Support RTS5227 mfd: rtsx: Implement driving adjustment to device-dependent callbacks mfd: vexpress: Add pseudo-GPIO based LEDs mfd: ab8500: Rename ab8500 to abx500 for hwmon driver ...
Diffstat (limited to 'drivers/mfd/wm5102-tables.c')
-rw-r--r--drivers/mfd/wm5102-tables.c130
1 files changed, 59 insertions, 71 deletions
diff --git a/drivers/mfd/wm5102-tables.c b/drivers/mfd/wm5102-tables.c
index a9d9d41d95d3..a433f580aa4c 100644
--- a/drivers/mfd/wm5102-tables.c
+++ b/drivers/mfd/wm5102-tables.c
@@ -59,12 +59,13 @@ static const struct reg_default wm5102_reva_patch[] = {
59static const struct reg_default wm5102_revb_patch[] = { 59static const struct reg_default wm5102_revb_patch[] = {
60 { 0x80, 0x0003 }, 60 { 0x80, 0x0003 },
61 { 0x081, 0xE022 }, 61 { 0x081, 0xE022 },
62 { 0x410, 0x6080 }, 62 { 0x410, 0x4080 },
63 { 0x418, 0x6080 }, 63 { 0x418, 0x4080 },
64 { 0x420, 0x6080 }, 64 { 0x420, 0x4080 },
65 { 0x428, 0xC000 }, 65 { 0x428, 0xC000 },
66 { 0x441, 0x8014 }, 66 { 0x4B0, 0x0066 },
67 { 0x458, 0x000b }, 67 { 0x458, 0x000b },
68 { 0x212, 0x0000 },
68 { 0x80, 0x0000 }, 69 { 0x80, 0x0000 },
69}; 70};
70 71
@@ -231,11 +232,9 @@ const struct regmap_irq_chip wm5102_irq = {
231static const struct reg_default wm5102_reg_default[] = { 232static const struct reg_default wm5102_reg_default[] = {
232 { 0x00000008, 0x0019 }, /* R8 - Ctrl IF SPI CFG 1 */ 233 { 0x00000008, 0x0019 }, /* R8 - Ctrl IF SPI CFG 1 */
233 { 0x00000009, 0x0001 }, /* R9 - Ctrl IF I2C1 CFG 1 */ 234 { 0x00000009, 0x0001 }, /* R9 - Ctrl IF I2C1 CFG 1 */
234 { 0x0000000D, 0x0000 }, /* R13 - Ctrl IF Status 1 */
235 { 0x00000016, 0x0000 }, /* R22 - Write Sequencer Ctrl 0 */ 235 { 0x00000016, 0x0000 }, /* R22 - Write Sequencer Ctrl 0 */
236 { 0x00000017, 0x0000 }, /* R23 - Write Sequencer Ctrl 1 */ 236 { 0x00000017, 0x0000 }, /* R23 - Write Sequencer Ctrl 1 */
237 { 0x00000018, 0x0000 }, /* R24 - Write Sequencer Ctrl 2 */ 237 { 0x00000018, 0x0000 }, /* R24 - Write Sequencer Ctrl 2 */
238 { 0x0000001A, 0x0000 }, /* R26 - Write Sequencer PROM */
239 { 0x00000020, 0x0000 }, /* R32 - Tone Generator 1 */ 238 { 0x00000020, 0x0000 }, /* R32 - Tone Generator 1 */
240 { 0x00000021, 0x1000 }, /* R33 - Tone Generator 2 */ 239 { 0x00000021, 0x1000 }, /* R33 - Tone Generator 2 */
241 { 0x00000022, 0x0000 }, /* R34 - Tone Generator 3 */ 240 { 0x00000022, 0x0000 }, /* R34 - Tone Generator 3 */
@@ -250,12 +249,14 @@ static const struct reg_default wm5102_reg_default[] = {
250 { 0x00000062, 0x01FF }, /* R98 - Sample Rate Sequence Select 2 */ 249 { 0x00000062, 0x01FF }, /* R98 - Sample Rate Sequence Select 2 */
251 { 0x00000063, 0x01FF }, /* R99 - Sample Rate Sequence Select 3 */ 250 { 0x00000063, 0x01FF }, /* R99 - Sample Rate Sequence Select 3 */
252 { 0x00000064, 0x01FF }, /* R100 - Sample Rate Sequence Select 4 */ 251 { 0x00000064, 0x01FF }, /* R100 - Sample Rate Sequence Select 4 */
253 { 0x00000068, 0x01FF }, /* R104 - Always On Triggers Sequence Select 1 */ 252 { 0x00000066, 0x01FF }, /* R102 - Always On Triggers Sequence Select 1 */
254 { 0x00000069, 0x01FF }, /* R105 - Always On Triggers Sequence Select 2 */ 253 { 0x00000067, 0x01FF }, /* R103 - Always On Triggers Sequence Select 2 */
255 { 0x0000006A, 0x01FF }, /* R106 - Always On Triggers Sequence Select 3 */ 254 { 0x00000068, 0x01FF }, /* R104 - Always On Triggers Sequence Select 3 */
256 { 0x0000006B, 0x01FF }, /* R107 - Always On Triggers Sequence Select 4 */ 255 { 0x00000069, 0x01FF }, /* R105 - Always On Triggers Sequence Select 4 */
257 { 0x0000006C, 0x01FF }, /* R108 - Always On Triggers Sequence Select 5 */ 256 { 0x0000006A, 0x01FF }, /* R106 - Always On Triggers Sequence Select 5 */
258 { 0x0000006D, 0x01FF }, /* R109 - Always On Triggers Sequence Select 6 */ 257 { 0x0000006B, 0x01FF }, /* R107 - Always On Triggers Sequence Select 6 */
258 { 0x0000006E, 0x01FF }, /* R110 - Trigger Sequence Select 32 */
259 { 0x0000006F, 0x01FF }, /* R111 - Trigger Sequence Select 33 */
259 { 0x00000070, 0x0000 }, /* R112 - Comfort Noise Generator */ 260 { 0x00000070, 0x0000 }, /* R112 - Comfort Noise Generator */
260 { 0x00000090, 0x0000 }, /* R144 - Haptics Control 1 */ 261 { 0x00000090, 0x0000 }, /* R144 - Haptics Control 1 */
261 { 0x00000091, 0x7FFF }, /* R145 - Haptics Control 2 */ 262 { 0x00000091, 0x7FFF }, /* R145 - Haptics Control 2 */
@@ -265,13 +266,14 @@ static const struct reg_default wm5102_reg_default[] = {
265 { 0x00000095, 0x0000 }, /* R149 - Haptics phase 2 duration */ 266 { 0x00000095, 0x0000 }, /* R149 - Haptics phase 2 duration */
266 { 0x00000096, 0x0000 }, /* R150 - Haptics phase 3 intensity */ 267 { 0x00000096, 0x0000 }, /* R150 - Haptics phase 3 intensity */
267 { 0x00000097, 0x0000 }, /* R151 - Haptics phase 3 duration */ 268 { 0x00000097, 0x0000 }, /* R151 - Haptics phase 3 duration */
268 { 0x00000100, 0x0001 }, /* R256 - Clock 32k 1 */ 269 { 0x00000100, 0x0002 }, /* R256 - Clock 32k 1 */
269 { 0x00000101, 0x0304 }, /* R257 - System Clock 1 */ 270 { 0x00000101, 0x0304 }, /* R257 - System Clock 1 */
270 { 0x00000102, 0x0011 }, /* R258 - Sample rate 1 */ 271 { 0x00000102, 0x0011 }, /* R258 - Sample rate 1 */
271 { 0x00000103, 0x0011 }, /* R259 - Sample rate 2 */ 272 { 0x00000103, 0x0011 }, /* R259 - Sample rate 2 */
272 { 0x00000104, 0x0011 }, /* R260 - Sample rate 3 */ 273 { 0x00000104, 0x0011 }, /* R260 - Sample rate 3 */
273 { 0x00000112, 0x0305 }, /* R274 - Async clock 1 */ 274 { 0x00000112, 0x0305 }, /* R274 - Async clock 1 */
274 { 0x00000113, 0x0011 }, /* R275 - Async sample rate 1 */ 275 { 0x00000113, 0x0011 }, /* R275 - Async sample rate 1 */
276 { 0x00000114, 0x0011 }, /* R276 - Async sample rate 2 */
275 { 0x00000149, 0x0000 }, /* R329 - Output system clock */ 277 { 0x00000149, 0x0000 }, /* R329 - Output system clock */
276 { 0x0000014A, 0x0000 }, /* R330 - Output async clock */ 278 { 0x0000014A, 0x0000 }, /* R330 - Output async clock */
277 { 0x00000152, 0x0000 }, /* R338 - Rate Estimator 1 */ 279 { 0x00000152, 0x0000 }, /* R338 - Rate Estimator 1 */
@@ -280,13 +282,14 @@ static const struct reg_default wm5102_reg_default[] = {
280 { 0x00000155, 0x0000 }, /* R341 - Rate Estimator 4 */ 282 { 0x00000155, 0x0000 }, /* R341 - Rate Estimator 4 */
281 { 0x00000156, 0x0000 }, /* R342 - Rate Estimator 5 */ 283 { 0x00000156, 0x0000 }, /* R342 - Rate Estimator 5 */
282 { 0x00000161, 0x0000 }, /* R353 - Dynamic Frequency Scaling 1 */ 284 { 0x00000161, 0x0000 }, /* R353 - Dynamic Frequency Scaling 1 */
283 { 0x00000171, 0x0000 }, /* R369 - FLL1 Control 1 */ 285 { 0x00000171, 0x0002 }, /* R369 - FLL1 Control 1 */
284 { 0x00000172, 0x0008 }, /* R370 - FLL1 Control 2 */ 286 { 0x00000172, 0x0008 }, /* R370 - FLL1 Control 2 */
285 { 0x00000173, 0x0018 }, /* R371 - FLL1 Control 3 */ 287 { 0x00000173, 0x0018 }, /* R371 - FLL1 Control 3 */
286 { 0x00000174, 0x007D }, /* R372 - FLL1 Control 4 */ 288 { 0x00000174, 0x007D }, /* R372 - FLL1 Control 4 */
287 { 0x00000175, 0x0004 }, /* R373 - FLL1 Control 5 */ 289 { 0x00000175, 0x0004 }, /* R373 - FLL1 Control 5 */
288 { 0x00000176, 0x0000 }, /* R374 - FLL1 Control 6 */ 290 { 0x00000176, 0x0000 }, /* R374 - FLL1 Control 6 */
289 { 0x00000177, 0x0181 }, /* R375 - FLL1 Loop Filter Test 1 */ 291 { 0x00000177, 0x0181 }, /* R375 - FLL1 Loop Filter Test 1 */
292 { 0x00000178, 0x0000 }, /* R376 - FLL1 NCO Test 0 */
290 { 0x00000181, 0x0000 }, /* R385 - FLL1 Synchroniser 1 */ 293 { 0x00000181, 0x0000 }, /* R385 - FLL1 Synchroniser 1 */
291 { 0x00000182, 0x0000 }, /* R386 - FLL1 Synchroniser 2 */ 294 { 0x00000182, 0x0000 }, /* R386 - FLL1 Synchroniser 2 */
292 { 0x00000183, 0x0000 }, /* R387 - FLL1 Synchroniser 3 */ 295 { 0x00000183, 0x0000 }, /* R387 - FLL1 Synchroniser 3 */
@@ -302,6 +305,7 @@ static const struct reg_default wm5102_reg_default[] = {
302 { 0x00000195, 0x0004 }, /* R405 - FLL2 Control 5 */ 305 { 0x00000195, 0x0004 }, /* R405 - FLL2 Control 5 */
303 { 0x00000196, 0x0000 }, /* R406 - FLL2 Control 6 */ 306 { 0x00000196, 0x0000 }, /* R406 - FLL2 Control 6 */
304 { 0x00000197, 0x0000 }, /* R407 - FLL2 Loop Filter Test 1 */ 307 { 0x00000197, 0x0000 }, /* R407 - FLL2 Loop Filter Test 1 */
308 { 0x00000198, 0x0000 }, /* R408 - FLL2 NCO Test 0 */
305 { 0x000001A1, 0x0000 }, /* R417 - FLL2 Synchroniser 1 */ 309 { 0x000001A1, 0x0000 }, /* R417 - FLL2 Synchroniser 1 */
306 { 0x000001A2, 0x0000 }, /* R418 - FLL2 Synchroniser 2 */ 310 { 0x000001A2, 0x0000 }, /* R418 - FLL2 Synchroniser 2 */
307 { 0x000001A3, 0x0000 }, /* R419 - FLL2 Synchroniser 3 */ 311 { 0x000001A3, 0x0000 }, /* R419 - FLL2 Synchroniser 3 */
@@ -317,8 +321,12 @@ static const struct reg_default wm5102_reg_default[] = {
317 { 0x00000218, 0x01A6 }, /* R536 - Mic Bias Ctrl 1 */ 321 { 0x00000218, 0x01A6 }, /* R536 - Mic Bias Ctrl 1 */
318 { 0x00000219, 0x01A6 }, /* R537 - Mic Bias Ctrl 2 */ 322 { 0x00000219, 0x01A6 }, /* R537 - Mic Bias Ctrl 2 */
319 { 0x0000021A, 0x01A6 }, /* R538 - Mic Bias Ctrl 3 */ 323 { 0x0000021A, 0x01A6 }, /* R538 - Mic Bias Ctrl 3 */
324 { 0x00000225, 0x0400 }, /* R549 - HP Ctrl 1L */
325 { 0x00000226, 0x0400 }, /* R550 - HP Ctrl 1R */
320 { 0x00000293, 0x0000 }, /* R659 - Accessory Detect Mode 1 */ 326 { 0x00000293, 0x0000 }, /* R659 - Accessory Detect Mode 1 */
321 { 0x0000029B, 0x0020 }, /* R667 - Headphone Detect 1 */ 327 { 0x0000029B, 0x0020 }, /* R667 - Headphone Detect 1 */
328 { 0x0000029C, 0x0000 }, /* R668 - Headphone Detect 2 */
329 { 0x0000029F, 0x0000 }, /* R671 - Headphone Detect Test */
322 { 0x000002A2, 0x0000 }, /* R674 - Micd clamp control */ 330 { 0x000002A2, 0x0000 }, /* R674 - Micd clamp control */
323 { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ 331 { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */
324 { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ 332 { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */
@@ -350,53 +358,44 @@ static const struct reg_default wm5102_reg_default[] = {
350 { 0x00000400, 0x0000 }, /* R1024 - Output Enables 1 */ 358 { 0x00000400, 0x0000 }, /* R1024 - Output Enables 1 */
351 { 0x00000408, 0x0000 }, /* R1032 - Output Rate 1 */ 359 { 0x00000408, 0x0000 }, /* R1032 - Output Rate 1 */
352 { 0x00000409, 0x0022 }, /* R1033 - Output Volume Ramp */ 360 { 0x00000409, 0x0022 }, /* R1033 - Output Volume Ramp */
353 { 0x00000410, 0x0080 }, /* R1040 - Output Path Config 1L */ 361 { 0x00000410, 0x4080 }, /* R1040 - Output Path Config 1L */
354 { 0x00000411, 0x0180 }, /* R1041 - DAC Digital Volume 1L */ 362 { 0x00000411, 0x0180 }, /* R1041 - DAC Digital Volume 1L */
355 { 0x00000412, 0x0080 }, /* R1042 - DAC Volume Limit 1L */ 363 { 0x00000412, 0x0081 }, /* R1042 - DAC Volume Limit 1L */
356 { 0x00000413, 0x0001 }, /* R1043 - Noise Gate Select 1L */ 364 { 0x00000413, 0x0001 }, /* R1043 - Noise Gate Select 1L */
357 { 0x00000414, 0x0080 }, /* R1044 - Output Path Config 1R */ 365 { 0x00000414, 0x0080 }, /* R1044 - Output Path Config 1R */
358 { 0x00000415, 0x0180 }, /* R1045 - DAC Digital Volume 1R */ 366 { 0x00000415, 0x0180 }, /* R1045 - DAC Digital Volume 1R */
359 { 0x00000416, 0x0080 }, /* R1046 - DAC Volume Limit 1R */ 367 { 0x00000416, 0x0081 }, /* R1046 - DAC Volume Limit 1R */
360 { 0x00000417, 0x0002 }, /* R1047 - Noise Gate Select 1R */ 368 { 0x00000417, 0x0002 }, /* R1047 - Noise Gate Select 1R */
361 { 0x00000418, 0x0080 }, /* R1048 - Output Path Config 2L */ 369 { 0x00000418, 0x4080 }, /* R1048 - Output Path Config 2L */
362 { 0x00000419, 0x0180 }, /* R1049 - DAC Digital Volume 2L */ 370 { 0x00000419, 0x0180 }, /* R1049 - DAC Digital Volume 2L */
363 { 0x0000041A, 0x0080 }, /* R1050 - DAC Volume Limit 2L */ 371 { 0x0000041A, 0x0081 }, /* R1050 - DAC Volume Limit 2L */
364 { 0x0000041B, 0x0004 }, /* R1051 - Noise Gate Select 2L */ 372 { 0x0000041B, 0x0004 }, /* R1051 - Noise Gate Select 2L */
365 { 0x0000041C, 0x0080 }, /* R1052 - Output Path Config 2R */ 373 { 0x0000041C, 0x0080 }, /* R1052 - Output Path Config 2R */
366 { 0x0000041D, 0x0180 }, /* R1053 - DAC Digital Volume 2R */ 374 { 0x0000041D, 0x0180 }, /* R1053 - DAC Digital Volume 2R */
367 { 0x0000041E, 0x0080 }, /* R1054 - DAC Volume Limit 2R */ 375 { 0x0000041E, 0x0081 }, /* R1054 - DAC Volume Limit 2R */
368 { 0x0000041F, 0x0008 }, /* R1055 - Noise Gate Select 2R */ 376 { 0x0000041F, 0x0008 }, /* R1055 - Noise Gate Select 2R */
369 { 0x00000420, 0x0080 }, /* R1056 - Output Path Config 3L */ 377 { 0x00000420, 0x4080 }, /* R1056 - Output Path Config 3L */
370 { 0x00000421, 0x0180 }, /* R1057 - DAC Digital Volume 3L */ 378 { 0x00000421, 0x0180 }, /* R1057 - DAC Digital Volume 3L */
371 { 0x00000422, 0x0080 }, /* R1058 - DAC Volume Limit 3L */ 379 { 0x00000422, 0x0081 }, /* R1058 - DAC Volume Limit 3L */
372 { 0x00000423, 0x0010 }, /* R1059 - Noise Gate Select 3L */ 380 { 0x00000423, 0x0010 }, /* R1059 - Noise Gate Select 3L */
373 { 0x00000424, 0x0080 }, /* R1060 - Output Path Config 3R */ 381 { 0x00000428, 0xC000 }, /* R1064 - Output Path Config 4L */
374 { 0x00000425, 0x0180 }, /* R1061 - DAC Digital Volume 3R */
375 { 0x00000426, 0x0080 }, /* R1062 - DAC Volume Limit 3R */
376 { 0x00000428, 0x0000 }, /* R1064 - Output Path Config 4L */
377 { 0x00000429, 0x0180 }, /* R1065 - DAC Digital Volume 4L */ 382 { 0x00000429, 0x0180 }, /* R1065 - DAC Digital Volume 4L */
378 { 0x0000042A, 0x0080 }, /* R1066 - Out Volume 4L */ 383 { 0x0000042A, 0x0081 }, /* R1066 - Out Volume 4L */
379 { 0x0000042B, 0x0040 }, /* R1067 - Noise Gate Select 4L */ 384 { 0x0000042B, 0x0040 }, /* R1067 - Noise Gate Select 4L */
380 { 0x0000042C, 0x0000 }, /* R1068 - Output Path Config 4R */
381 { 0x0000042D, 0x0180 }, /* R1069 - DAC Digital Volume 4R */ 385 { 0x0000042D, 0x0180 }, /* R1069 - DAC Digital Volume 4R */
382 { 0x0000042E, 0x0080 }, /* R1070 - Out Volume 4R */ 386 { 0x0000042E, 0x0081 }, /* R1070 - Out Volume 4R */
383 { 0x0000042F, 0x0080 }, /* R1071 - Noise Gate Select 4R */ 387 { 0x0000042F, 0x0080 }, /* R1071 - Noise Gate Select 4R */
384 { 0x00000430, 0x0000 }, /* R1072 - Output Path Config 5L */ 388 { 0x00000430, 0x0000 }, /* R1072 - Output Path Config 5L */
385 { 0x00000431, 0x0180 }, /* R1073 - DAC Digital Volume 5L */ 389 { 0x00000431, 0x0180 }, /* R1073 - DAC Digital Volume 5L */
386 { 0x00000432, 0x0080 }, /* R1074 - DAC Volume Limit 5L */ 390 { 0x00000432, 0x0081 }, /* R1074 - DAC Volume Limit 5L */
387 { 0x00000433, 0x0100 }, /* R1075 - Noise Gate Select 5L */ 391 { 0x00000433, 0x0100 }, /* R1075 - Noise Gate Select 5L */
388 { 0x00000434, 0x0000 }, /* R1076 - Output Path Config 5R */
389 { 0x00000435, 0x0180 }, /* R1077 - DAC Digital Volume 5R */ 392 { 0x00000435, 0x0180 }, /* R1077 - DAC Digital Volume 5R */
390 { 0x00000436, 0x0080 }, /* R1078 - DAC Volume Limit 5R */ 393 { 0x00000436, 0x0081 }, /* R1078 - DAC Volume Limit 5R */
391 { 0x00000437, 0x0200 }, /* R1079 - Noise Gate Select 5R */ 394 { 0x00000437, 0x0200 }, /* R1079 - Noise Gate Select 5R */
392 { 0x00000450, 0x0000 }, /* R1104 - DAC AEC Control 1 */ 395 { 0x00000450, 0x0000 }, /* R1104 - DAC AEC Control 1 */
393 { 0x00000458, 0x0001 }, /* R1112 - Noise Gate Control */ 396 { 0x00000458, 0x0001 }, /* R1112 - Noise Gate Control */
394 { 0x00000490, 0x0069 }, /* R1168 - PDM SPK1 CTRL 1 */ 397 { 0x00000490, 0x0069 }, /* R1168 - PDM SPK1 CTRL 1 */
395 { 0x00000491, 0x0000 }, /* R1169 - PDM SPK1 CTRL 2 */ 398 { 0x00000491, 0x0000 }, /* R1169 - PDM SPK1 CTRL 2 */
396 { 0x000004DC, 0x0000 }, /* R1244 - DAC comp 1 */
397 { 0x000004DD, 0x0000 }, /* R1245 - DAC comp 2 */
398 { 0x000004DE, 0x0000 }, /* R1246 - DAC comp 3 */
399 { 0x000004DF, 0x0000 }, /* R1247 - DAC comp 4 */
400 { 0x00000500, 0x000C }, /* R1280 - AIF1 BCLK Ctrl */ 399 { 0x00000500, 0x000C }, /* R1280 - AIF1 BCLK Ctrl */
401 { 0x00000501, 0x0008 }, /* R1281 - AIF1 Tx Pin Ctrl */ 400 { 0x00000501, 0x0008 }, /* R1281 - AIF1 Tx Pin Ctrl */
402 { 0x00000502, 0x0000 }, /* R1282 - AIF1 Rx Pin Ctrl */ 401 { 0x00000502, 0x0000 }, /* R1282 - AIF1 Rx Pin Ctrl */
@@ -424,7 +423,6 @@ static const struct reg_default wm5102_reg_default[] = {
424 { 0x00000518, 0x0007 }, /* R1304 - AIF1 Frame Ctrl 18 */ 423 { 0x00000518, 0x0007 }, /* R1304 - AIF1 Frame Ctrl 18 */
425 { 0x00000519, 0x0000 }, /* R1305 - AIF1 Tx Enables */ 424 { 0x00000519, 0x0000 }, /* R1305 - AIF1 Tx Enables */
426 { 0x0000051A, 0x0000 }, /* R1306 - AIF1 Rx Enables */ 425 { 0x0000051A, 0x0000 }, /* R1306 - AIF1 Rx Enables */
427 { 0x0000051B, 0x0000 }, /* R1307 - AIF1 Force Write */
428 { 0x00000540, 0x000C }, /* R1344 - AIF2 BCLK Ctrl */ 426 { 0x00000540, 0x000C }, /* R1344 - AIF2 BCLK Ctrl */
429 { 0x00000541, 0x0008 }, /* R1345 - AIF2 Tx Pin Ctrl */ 427 { 0x00000541, 0x0008 }, /* R1345 - AIF2 Tx Pin Ctrl */
430 { 0x00000542, 0x0000 }, /* R1346 - AIF2 Rx Pin Ctrl */ 428 { 0x00000542, 0x0000 }, /* R1346 - AIF2 Rx Pin Ctrl */
@@ -440,7 +438,6 @@ static const struct reg_default wm5102_reg_default[] = {
440 { 0x00000552, 0x0001 }, /* R1362 - AIF2 Frame Ctrl 12 */ 438 { 0x00000552, 0x0001 }, /* R1362 - AIF2 Frame Ctrl 12 */
441 { 0x00000559, 0x0000 }, /* R1369 - AIF2 Tx Enables */ 439 { 0x00000559, 0x0000 }, /* R1369 - AIF2 Tx Enables */
442 { 0x0000055A, 0x0000 }, /* R1370 - AIF2 Rx Enables */ 440 { 0x0000055A, 0x0000 }, /* R1370 - AIF2 Rx Enables */
443 { 0x0000055B, 0x0000 }, /* R1371 - AIF2 Force Write */
444 { 0x00000580, 0x000C }, /* R1408 - AIF3 BCLK Ctrl */ 441 { 0x00000580, 0x000C }, /* R1408 - AIF3 BCLK Ctrl */
445 { 0x00000581, 0x0008 }, /* R1409 - AIF3 Tx Pin Ctrl */ 442 { 0x00000581, 0x0008 }, /* R1409 - AIF3 Tx Pin Ctrl */
446 { 0x00000582, 0x0000 }, /* R1410 - AIF3 Rx Pin Ctrl */ 443 { 0x00000582, 0x0000 }, /* R1410 - AIF3 Rx Pin Ctrl */
@@ -456,7 +453,6 @@ static const struct reg_default wm5102_reg_default[] = {
456 { 0x00000592, 0x0001 }, /* R1426 - AIF3 Frame Ctrl 12 */ 453 { 0x00000592, 0x0001 }, /* R1426 - AIF3 Frame Ctrl 12 */
457 { 0x00000599, 0x0000 }, /* R1433 - AIF3 Tx Enables */ 454 { 0x00000599, 0x0000 }, /* R1433 - AIF3 Tx Enables */
458 { 0x0000059A, 0x0000 }, /* R1434 - AIF3 Rx Enables */ 455 { 0x0000059A, 0x0000 }, /* R1434 - AIF3 Rx Enables */
459 { 0x0000059B, 0x0000 }, /* R1435 - AIF3 Force Write */
460 { 0x000005E3, 0x0004 }, /* R1507 - SLIMbus Framer Ref Gear */ 456 { 0x000005E3, 0x0004 }, /* R1507 - SLIMbus Framer Ref Gear */
461 { 0x000005E5, 0x0000 }, /* R1509 - SLIMbus Rates 1 */ 457 { 0x000005E5, 0x0000 }, /* R1509 - SLIMbus Rates 1 */
462 { 0x000005E6, 0x0000 }, /* R1510 - SLIMbus Rates 2 */ 458 { 0x000005E6, 0x0000 }, /* R1510 - SLIMbus Rates 2 */
@@ -780,22 +776,6 @@ static const struct reg_default wm5102_reg_default[] = {
780 { 0x000008CD, 0x0080 }, /* R2253 - DRC1RMIX Input 3 Volume */ 776 { 0x000008CD, 0x0080 }, /* R2253 - DRC1RMIX Input 3 Volume */
781 { 0x000008CE, 0x0000 }, /* R2254 - DRC1RMIX Input 4 Source */ 777 { 0x000008CE, 0x0000 }, /* R2254 - DRC1RMIX Input 4 Source */
782 { 0x000008CF, 0x0080 }, /* R2255 - DRC1RMIX Input 4 Volume */ 778 { 0x000008CF, 0x0080 }, /* R2255 - DRC1RMIX Input 4 Volume */
783 { 0x000008D0, 0x0000 }, /* R2256 - DRC2LMIX Input 1 Source */
784 { 0x000008D1, 0x0080 }, /* R2257 - DRC2LMIX Input 1 Volume */
785 { 0x000008D2, 0x0000 }, /* R2258 - DRC2LMIX Input 2 Source */
786 { 0x000008D3, 0x0080 }, /* R2259 - DRC2LMIX Input 2 Volume */
787 { 0x000008D4, 0x0000 }, /* R2260 - DRC2LMIX Input 3 Source */
788 { 0x000008D5, 0x0080 }, /* R2261 - DRC2LMIX Input 3 Volume */
789 { 0x000008D6, 0x0000 }, /* R2262 - DRC2LMIX Input 4 Source */
790 { 0x000008D7, 0x0080 }, /* R2263 - DRC2LMIX Input 4 Volume */
791 { 0x000008D8, 0x0000 }, /* R2264 - DRC2RMIX Input 1 Source */
792 { 0x000008D9, 0x0080 }, /* R2265 - DRC2RMIX Input 1 Volume */
793 { 0x000008DA, 0x0000 }, /* R2266 - DRC2RMIX Input 2 Source */
794 { 0x000008DB, 0x0080 }, /* R2267 - DRC2RMIX Input 2 Volume */
795 { 0x000008DC, 0x0000 }, /* R2268 - DRC2RMIX Input 3 Source */
796 { 0x000008DD, 0x0080 }, /* R2269 - DRC2RMIX Input 3 Volume */
797 { 0x000008DE, 0x0000 }, /* R2270 - DRC2RMIX Input 4 Source */
798 { 0x000008DF, 0x0080 }, /* R2271 - DRC2RMIX Input 4 Volume */
799 { 0x00000900, 0x0000 }, /* R2304 - HPLP1MIX Input 1 Source */ 779 { 0x00000900, 0x0000 }, /* R2304 - HPLP1MIX Input 1 Source */
800 { 0x00000901, 0x0080 }, /* R2305 - HPLP1MIX Input 1 Volume */ 780 { 0x00000901, 0x0080 }, /* R2305 - HPLP1MIX Input 1 Volume */
801 { 0x00000902, 0x0000 }, /* R2306 - HPLP1MIX Input 2 Source */ 781 { 0x00000902, 0x0000 }, /* R2306 - HPLP1MIX Input 2 Source */
@@ -887,7 +867,7 @@ static const struct reg_default wm5102_reg_default[] = {
887 { 0x00000D1B, 0xFFFF }, /* R3355 - IRQ2 Status 4 Mask */ 867 { 0x00000D1B, 0xFFFF }, /* R3355 - IRQ2 Status 4 Mask */
888 { 0x00000D1C, 0xFFFF }, /* R3356 - IRQ2 Status 5 Mask */ 868 { 0x00000D1C, 0xFFFF }, /* R3356 - IRQ2 Status 5 Mask */
889 { 0x00000D1F, 0x0000 }, /* R3359 - IRQ2 Control */ 869 { 0x00000D1F, 0x0000 }, /* R3359 - IRQ2 Control */
890 { 0x00000D41, 0x0000 }, /* R3393 - ADSP2 IRQ0 */ 870 { 0x00000D50, 0x0000 }, /* R3408 - AOD wkup and trig */
891 { 0x00000D53, 0xFFFF }, /* R3411 - AOD IRQ Mask IRQ1 */ 871 { 0x00000D53, 0xFFFF }, /* R3411 - AOD IRQ Mask IRQ1 */
892 { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ 872 { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */
893 { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ 873 { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */
@@ -982,11 +962,6 @@ static const struct reg_default wm5102_reg_default[] = {
982 { 0x00000E82, 0x0018 }, /* R3714 - DRC1 ctrl3 */ 962 { 0x00000E82, 0x0018 }, /* R3714 - DRC1 ctrl3 */
983 { 0x00000E83, 0x0000 }, /* R3715 - DRC1 ctrl4 */ 963 { 0x00000E83, 0x0000 }, /* R3715 - DRC1 ctrl4 */
984 { 0x00000E84, 0x0000 }, /* R3716 - DRC1 ctrl5 */ 964 { 0x00000E84, 0x0000 }, /* R3716 - DRC1 ctrl5 */
985 { 0x00000E89, 0x0018 }, /* R3721 - DRC2 ctrl1 */
986 { 0x00000E8A, 0x0933 }, /* R3722 - DRC2 ctrl2 */
987 { 0x00000E8B, 0x0018 }, /* R3723 - DRC2 ctrl3 */
988 { 0x00000E8C, 0x0000 }, /* R3724 - DRC2 ctrl4 */
989 { 0x00000E8D, 0x0000 }, /* R3725 - DRC2 ctrl5 */
990 { 0x00000EC0, 0x0000 }, /* R3776 - HPLPF1_1 */ 965 { 0x00000EC0, 0x0000 }, /* R3776 - HPLPF1_1 */
991 { 0x00000EC1, 0x0000 }, /* R3777 - HPLPF1_2 */ 966 { 0x00000EC1, 0x0000 }, /* R3777 - HPLPF1_2 */
992 { 0x00000EC4, 0x0000 }, /* R3780 - HPLPF2_1 */ 967 { 0x00000EC4, 0x0000 }, /* R3780 - HPLPF2_1 */
@@ -997,16 +972,12 @@ static const struct reg_default wm5102_reg_default[] = {
997 { 0x00000ECD, 0x0000 }, /* R3789 - HPLPF4_2 */ 972 { 0x00000ECD, 0x0000 }, /* R3789 - HPLPF4_2 */
998 { 0x00000EE0, 0x0000 }, /* R3808 - ASRC_ENABLE */ 973 { 0x00000EE0, 0x0000 }, /* R3808 - ASRC_ENABLE */
999 { 0x00000EE2, 0x0000 }, /* R3810 - ASRC_RATE1 */ 974 { 0x00000EE2, 0x0000 }, /* R3810 - ASRC_RATE1 */
1000 { 0x00000EE3, 0x4000 }, /* R3811 - ASRC_RATE2 */
1001 { 0x00000EF0, 0x0000 }, /* R3824 - ISRC 1 CTRL 1 */ 975 { 0x00000EF0, 0x0000 }, /* R3824 - ISRC 1 CTRL 1 */
1002 { 0x00000EF1, 0x0000 }, /* R3825 - ISRC 1 CTRL 2 */ 976 { 0x00000EF1, 0x0000 }, /* R3825 - ISRC 1 CTRL 2 */
1003 { 0x00000EF2, 0x0000 }, /* R3826 - ISRC 1 CTRL 3 */ 977 { 0x00000EF2, 0x0000 }, /* R3826 - ISRC 1 CTRL 3 */
1004 { 0x00000EF3, 0x0000 }, /* R3827 - ISRC 2 CTRL 1 */ 978 { 0x00000EF3, 0x0000 }, /* R3827 - ISRC 2 CTRL 1 */
1005 { 0x00000EF4, 0x0000 }, /* R3828 - ISRC 2 CTRL 2 */ 979 { 0x00000EF4, 0x0000 }, /* R3828 - ISRC 2 CTRL 2 */
1006 { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */ 980 { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */
1007 { 0x00000EF6, 0x0000 }, /* R3830 - ISRC 3 CTRL 1 */
1008 { 0x00000EF7, 0x0000 }, /* R3831 - ISRC 3 CTRL 2 */
1009 { 0x00000EF8, 0x0000 }, /* R3832 - ISRC 3 CTRL 3 */
1010 { 0x00001100, 0x0010 }, /* R4352 - DSP1 Control 1 */ 981 { 0x00001100, 0x0010 }, /* R4352 - DSP1 Control 1 */
1011 { 0x00001101, 0x0000 }, /* R4353 - DSP1 Clocking 1 */ 982 { 0x00001101, 0x0000 }, /* R4353 - DSP1 Clocking 1 */
1012}; 983};
@@ -1833,17 +1804,24 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg)
1833 case ARIZONA_DSP1_STATUS_1: 1804 case ARIZONA_DSP1_STATUS_1:
1834 case ARIZONA_DSP1_STATUS_2: 1805 case ARIZONA_DSP1_STATUS_2:
1835 case ARIZONA_DSP1_STATUS_3: 1806 case ARIZONA_DSP1_STATUS_3:
1807 case ARIZONA_DSP1_SCRATCH_0:
1808 case ARIZONA_DSP1_SCRATCH_1:
1809 case ARIZONA_DSP1_SCRATCH_2:
1810 case ARIZONA_DSP1_SCRATCH_3:
1836 return true; 1811 return true;
1837 default: 1812 default:
1838 return false; 1813 if ((reg >= 0x100000 && reg < 0x106000) ||
1814 (reg >= 0x180000 && reg < 0x180800) ||
1815 (reg >= 0x190000 && reg < 0x194800) ||
1816 (reg >= 0x1a8000 && reg < 0x1a9800))
1817 return true;
1818 else
1819 return false;
1839 } 1820 }
1840} 1821}
1841 1822
1842static bool wm5102_volatile_register(struct device *dev, unsigned int reg) 1823static bool wm5102_volatile_register(struct device *dev, unsigned int reg)
1843{ 1824{
1844 if (reg > 0xffff)
1845 return true;
1846
1847 switch (reg) { 1825 switch (reg) {
1848 case ARIZONA_SOFTWARE_RESET: 1826 case ARIZONA_SOFTWARE_RESET:
1849 case ARIZONA_DEVICE_REVISION: 1827 case ARIZONA_DEVICE_REVISION:
@@ -1884,12 +1862,22 @@ static bool wm5102_volatile_register(struct device *dev, unsigned int reg)
1884 case ARIZONA_DSP1_STATUS_1: 1862 case ARIZONA_DSP1_STATUS_1:
1885 case ARIZONA_DSP1_STATUS_2: 1863 case ARIZONA_DSP1_STATUS_2:
1886 case ARIZONA_DSP1_STATUS_3: 1864 case ARIZONA_DSP1_STATUS_3:
1865 case ARIZONA_DSP1_SCRATCH_0:
1866 case ARIZONA_DSP1_SCRATCH_1:
1867 case ARIZONA_DSP1_SCRATCH_2:
1868 case ARIZONA_DSP1_SCRATCH_3:
1887 case ARIZONA_HEADPHONE_DETECT_2: 1869 case ARIZONA_HEADPHONE_DETECT_2:
1888 case ARIZONA_HP_DACVAL: 1870 case ARIZONA_HP_DACVAL:
1889 case ARIZONA_MIC_DETECT_3: 1871 case ARIZONA_MIC_DETECT_3:
1890 return true; 1872 return true;
1891 default: 1873 default:
1892 return false; 1874 if ((reg >= 0x100000 && reg < 0x106000) ||
1875 (reg >= 0x180000 && reg < 0x180800) ||
1876 (reg >= 0x190000 && reg < 0x194800) ||
1877 (reg >= 0x1a8000 && reg < 0x1a9800))
1878 return true;
1879 else
1880 return false;
1893 } 1881 }
1894} 1882}
1895 1883