diff options
author | Axel Lin <axel.lin@ingics.com> | 2015-07-28 01:29:00 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-07-29 09:53:41 -0400 |
commit | f102aa1414d9aa28491414cf4103bad1ddb3ea1f (patch) | |
tree | f629721c3057ca644ce4c8446e00c19506b3ef4e /sound/soc/codecs/max98088.c | |
parent | b650247da5a8c5d8991eeb9cf31e2e71d7be1b08 (diff) |
ASoC: max98088: Get rid of max98088_access table
The max98088_access table is used for look up readable/writable/volatile
attributes of registers. The readable/writable/volatile registers are
mostly in continuous ranges, so we can replace the max98088_access table
entirely by using case range.
Below is a summary of the readable/writeable/volatile registers:
readable registers:
0x00 ~ 0xC9, 0xFF
writeable registers:
0x03 ~ 0xC9
volatile registers:
0x00 ~ 0x03, 0xFF
Note, 0x00 should be read-only according to the datasheet.
This patch reworks the implement for .readable and .volatile and also add
implementation for .writable callback.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/max98088.c')
-rw-r--r-- | sound/soc/codecs/max98088.c | 305 |
1 files changed, 25 insertions, 280 deletions
diff --git a/sound/soc/codecs/max98088.c b/sound/soc/codecs/max98088.c index d0f45348bfbb..419c65f26bbe 100644 --- a/sound/soc/codecs/max98088.c +++ b/sound/soc/codecs/max98088.c | |||
@@ -258,292 +258,36 @@ static const struct reg_default max98088_reg[] = { | |||
258 | { 0xc9, 0x00 }, /* C9 DAI2 biquad */ | 258 | { 0xc9, 0x00 }, /* C9 DAI2 biquad */ |
259 | }; | 259 | }; |
260 | 260 | ||
261 | static struct { | ||
262 | int readable; | ||
263 | int writable; | ||
264 | int vol; | ||
265 | } max98088_access[M98088_REG_CNT] = { | ||
266 | { 0xFF, 0xFF, 1 }, /* 00 IRQ status */ | ||
267 | { 0xFF, 0x00, 1 }, /* 01 MIC status */ | ||
268 | { 0xFF, 0x00, 1 }, /* 02 jack status */ | ||
269 | { 0x1F, 0x1F, 1 }, /* 03 battery voltage */ | ||
270 | { 0xFF, 0xFF, 0 }, /* 04 */ | ||
271 | { 0xFF, 0xFF, 0 }, /* 05 */ | ||
272 | { 0xFF, 0xFF, 0 }, /* 06 */ | ||
273 | { 0xFF, 0xFF, 0 }, /* 07 */ | ||
274 | { 0xFF, 0xFF, 0 }, /* 08 */ | ||
275 | { 0xFF, 0xFF, 0 }, /* 09 */ | ||
276 | { 0xFF, 0xFF, 0 }, /* 0A */ | ||
277 | { 0xFF, 0xFF, 0 }, /* 0B */ | ||
278 | { 0xFF, 0xFF, 0 }, /* 0C */ | ||
279 | { 0xFF, 0xFF, 0 }, /* 0D */ | ||
280 | { 0xFF, 0xFF, 0 }, /* 0E */ | ||
281 | { 0xFF, 0xFF, 0 }, /* 0F interrupt enable */ | ||
282 | |||
283 | { 0xFF, 0xFF, 0 }, /* 10 master clock */ | ||
284 | { 0xFF, 0xFF, 0 }, /* 11 DAI1 clock mode */ | ||
285 | { 0xFF, 0xFF, 0 }, /* 12 DAI1 clock control */ | ||
286 | { 0xFF, 0xFF, 0 }, /* 13 DAI1 clock control */ | ||
287 | { 0xFF, 0xFF, 0 }, /* 14 DAI1 format */ | ||
288 | { 0xFF, 0xFF, 0 }, /* 15 DAI1 clock */ | ||
289 | { 0xFF, 0xFF, 0 }, /* 16 DAI1 config */ | ||
290 | { 0xFF, 0xFF, 0 }, /* 17 DAI1 TDM */ | ||
291 | { 0xFF, 0xFF, 0 }, /* 18 DAI1 filters */ | ||
292 | { 0xFF, 0xFF, 0 }, /* 19 DAI2 clock mode */ | ||
293 | { 0xFF, 0xFF, 0 }, /* 1A DAI2 clock control */ | ||
294 | { 0xFF, 0xFF, 0 }, /* 1B DAI2 clock control */ | ||
295 | { 0xFF, 0xFF, 0 }, /* 1C DAI2 format */ | ||
296 | { 0xFF, 0xFF, 0 }, /* 1D DAI2 clock */ | ||
297 | { 0xFF, 0xFF, 0 }, /* 1E DAI2 config */ | ||
298 | { 0xFF, 0xFF, 0 }, /* 1F DAI2 TDM */ | ||
299 | |||
300 | { 0xFF, 0xFF, 0 }, /* 20 DAI2 filters */ | ||
301 | { 0xFF, 0xFF, 0 }, /* 21 data config */ | ||
302 | { 0xFF, 0xFF, 0 }, /* 22 DAC mixer */ | ||
303 | { 0xFF, 0xFF, 0 }, /* 23 left ADC mixer */ | ||
304 | { 0xFF, 0xFF, 0 }, /* 24 right ADC mixer */ | ||
305 | { 0xFF, 0xFF, 0 }, /* 25 left HP mixer */ | ||
306 | { 0xFF, 0xFF, 0 }, /* 26 right HP mixer */ | ||
307 | { 0xFF, 0xFF, 0 }, /* 27 HP control */ | ||
308 | { 0xFF, 0xFF, 0 }, /* 28 left REC mixer */ | ||
309 | { 0xFF, 0xFF, 0 }, /* 29 right REC mixer */ | ||
310 | { 0xFF, 0xFF, 0 }, /* 2A REC control */ | ||
311 | { 0xFF, 0xFF, 0 }, /* 2B left SPK mixer */ | ||
312 | { 0xFF, 0xFF, 0 }, /* 2C right SPK mixer */ | ||
313 | { 0xFF, 0xFF, 0 }, /* 2D SPK control */ | ||
314 | { 0xFF, 0xFF, 0 }, /* 2E sidetone */ | ||
315 | { 0xFF, 0xFF, 0 }, /* 2F DAI1 playback level */ | ||
316 | |||
317 | { 0xFF, 0xFF, 0 }, /* 30 DAI1 playback level */ | ||
318 | { 0xFF, 0xFF, 0 }, /* 31 DAI2 playback level */ | ||
319 | { 0xFF, 0xFF, 0 }, /* 32 DAI2 playbakc level */ | ||
320 | { 0xFF, 0xFF, 0 }, /* 33 left ADC level */ | ||
321 | { 0xFF, 0xFF, 0 }, /* 34 right ADC level */ | ||
322 | { 0xFF, 0xFF, 0 }, /* 35 MIC1 level */ | ||
323 | { 0xFF, 0xFF, 0 }, /* 36 MIC2 level */ | ||
324 | { 0xFF, 0xFF, 0 }, /* 37 INA level */ | ||
325 | { 0xFF, 0xFF, 0 }, /* 38 INB level */ | ||
326 | { 0xFF, 0xFF, 0 }, /* 39 left HP volume */ | ||
327 | { 0xFF, 0xFF, 0 }, /* 3A right HP volume */ | ||
328 | { 0xFF, 0xFF, 0 }, /* 3B left REC volume */ | ||
329 | { 0xFF, 0xFF, 0 }, /* 3C right REC volume */ | ||
330 | { 0xFF, 0xFF, 0 }, /* 3D left SPK volume */ | ||
331 | { 0xFF, 0xFF, 0 }, /* 3E right SPK volume */ | ||
332 | { 0xFF, 0xFF, 0 }, /* 3F MIC config */ | ||
333 | |||
334 | { 0xFF, 0xFF, 0 }, /* 40 MIC threshold */ | ||
335 | { 0xFF, 0xFF, 0 }, /* 41 excursion limiter filter */ | ||
336 | { 0xFF, 0xFF, 0 }, /* 42 excursion limiter threshold */ | ||
337 | { 0xFF, 0xFF, 0 }, /* 43 ALC */ | ||
338 | { 0xFF, 0xFF, 0 }, /* 44 power limiter threshold */ | ||
339 | { 0xFF, 0xFF, 0 }, /* 45 power limiter config */ | ||
340 | { 0xFF, 0xFF, 0 }, /* 46 distortion limiter config */ | ||
341 | { 0xFF, 0xFF, 0 }, /* 47 audio input */ | ||
342 | { 0xFF, 0xFF, 0 }, /* 48 microphone */ | ||
343 | { 0xFF, 0xFF, 0 }, /* 49 level control */ | ||
344 | { 0xFF, 0xFF, 0 }, /* 4A bypass switches */ | ||
345 | { 0xFF, 0xFF, 0 }, /* 4B jack detect */ | ||
346 | { 0xFF, 0xFF, 0 }, /* 4C input enable */ | ||
347 | { 0xFF, 0xFF, 0 }, /* 4D output enable */ | ||
348 | { 0xFF, 0xFF, 0 }, /* 4E bias control */ | ||
349 | { 0xFF, 0xFF, 0 }, /* 4F DAC power */ | ||
350 | |||
351 | { 0xFF, 0xFF, 0 }, /* 50 DAC power */ | ||
352 | { 0xFF, 0xFF, 0 }, /* 51 system */ | ||
353 | { 0xFF, 0xFF, 0 }, /* 52 DAI1 EQ1 */ | ||
354 | { 0xFF, 0xFF, 0 }, /* 53 DAI1 EQ1 */ | ||
355 | { 0xFF, 0xFF, 0 }, /* 54 DAI1 EQ1 */ | ||
356 | { 0xFF, 0xFF, 0 }, /* 55 DAI1 EQ1 */ | ||
357 | { 0xFF, 0xFF, 0 }, /* 56 DAI1 EQ1 */ | ||
358 | { 0xFF, 0xFF, 0 }, /* 57 DAI1 EQ1 */ | ||
359 | { 0xFF, 0xFF, 0 }, /* 58 DAI1 EQ1 */ | ||
360 | { 0xFF, 0xFF, 0 }, /* 59 DAI1 EQ1 */ | ||
361 | { 0xFF, 0xFF, 0 }, /* 5A DAI1 EQ1 */ | ||
362 | { 0xFF, 0xFF, 0 }, /* 5B DAI1 EQ1 */ | ||
363 | { 0xFF, 0xFF, 0 }, /* 5C DAI1 EQ2 */ | ||
364 | { 0xFF, 0xFF, 0 }, /* 5D DAI1 EQ2 */ | ||
365 | { 0xFF, 0xFF, 0 }, /* 5E DAI1 EQ2 */ | ||
366 | { 0xFF, 0xFF, 0 }, /* 5F DAI1 EQ2 */ | ||
367 | |||
368 | { 0xFF, 0xFF, 0 }, /* 60 DAI1 EQ2 */ | ||
369 | { 0xFF, 0xFF, 0 }, /* 61 DAI1 EQ2 */ | ||
370 | { 0xFF, 0xFF, 0 }, /* 62 DAI1 EQ2 */ | ||
371 | { 0xFF, 0xFF, 0 }, /* 63 DAI1 EQ2 */ | ||
372 | { 0xFF, 0xFF, 0 }, /* 64 DAI1 EQ2 */ | ||
373 | { 0xFF, 0xFF, 0 }, /* 65 DAI1 EQ2 */ | ||
374 | { 0xFF, 0xFF, 0 }, /* 66 DAI1 EQ3 */ | ||
375 | { 0xFF, 0xFF, 0 }, /* 67 DAI1 EQ3 */ | ||
376 | { 0xFF, 0xFF, 0 }, /* 68 DAI1 EQ3 */ | ||
377 | { 0xFF, 0xFF, 0 }, /* 69 DAI1 EQ3 */ | ||
378 | { 0xFF, 0xFF, 0 }, /* 6A DAI1 EQ3 */ | ||
379 | { 0xFF, 0xFF, 0 }, /* 6B DAI1 EQ3 */ | ||
380 | { 0xFF, 0xFF, 0 }, /* 6C DAI1 EQ3 */ | ||
381 | { 0xFF, 0xFF, 0 }, /* 6D DAI1 EQ3 */ | ||
382 | { 0xFF, 0xFF, 0 }, /* 6E DAI1 EQ3 */ | ||
383 | { 0xFF, 0xFF, 0 }, /* 6F DAI1 EQ3 */ | ||
384 | |||
385 | { 0xFF, 0xFF, 0 }, /* 70 DAI1 EQ4 */ | ||
386 | { 0xFF, 0xFF, 0 }, /* 71 DAI1 EQ4 */ | ||
387 | { 0xFF, 0xFF, 0 }, /* 72 DAI1 EQ4 */ | ||
388 | { 0xFF, 0xFF, 0 }, /* 73 DAI1 EQ4 */ | ||
389 | { 0xFF, 0xFF, 0 }, /* 74 DAI1 EQ4 */ | ||
390 | { 0xFF, 0xFF, 0 }, /* 75 DAI1 EQ4 */ | ||
391 | { 0xFF, 0xFF, 0 }, /* 76 DAI1 EQ4 */ | ||
392 | { 0xFF, 0xFF, 0 }, /* 77 DAI1 EQ4 */ | ||
393 | { 0xFF, 0xFF, 0 }, /* 78 DAI1 EQ4 */ | ||
394 | { 0xFF, 0xFF, 0 }, /* 79 DAI1 EQ4 */ | ||
395 | { 0xFF, 0xFF, 0 }, /* 7A DAI1 EQ5 */ | ||
396 | { 0xFF, 0xFF, 0 }, /* 7B DAI1 EQ5 */ | ||
397 | { 0xFF, 0xFF, 0 }, /* 7C DAI1 EQ5 */ | ||
398 | { 0xFF, 0xFF, 0 }, /* 7D DAI1 EQ5 */ | ||
399 | { 0xFF, 0xFF, 0 }, /* 7E DAI1 EQ5 */ | ||
400 | { 0xFF, 0xFF, 0 }, /* 7F DAI1 EQ5 */ | ||
401 | |||
402 | { 0xFF, 0xFF, 0 }, /* 80 DAI1 EQ5 */ | ||
403 | { 0xFF, 0xFF, 0 }, /* 81 DAI1 EQ5 */ | ||
404 | { 0xFF, 0xFF, 0 }, /* 82 DAI1 EQ5 */ | ||
405 | { 0xFF, 0xFF, 0 }, /* 83 DAI1 EQ5 */ | ||
406 | { 0xFF, 0xFF, 0 }, /* 84 DAI2 EQ1 */ | ||
407 | { 0xFF, 0xFF, 0 }, /* 85 DAI2 EQ1 */ | ||
408 | { 0xFF, 0xFF, 0 }, /* 86 DAI2 EQ1 */ | ||
409 | { 0xFF, 0xFF, 0 }, /* 87 DAI2 EQ1 */ | ||
410 | { 0xFF, 0xFF, 0 }, /* 88 DAI2 EQ1 */ | ||
411 | { 0xFF, 0xFF, 0 }, /* 89 DAI2 EQ1 */ | ||
412 | { 0xFF, 0xFF, 0 }, /* 8A DAI2 EQ1 */ | ||
413 | { 0xFF, 0xFF, 0 }, /* 8B DAI2 EQ1 */ | ||
414 | { 0xFF, 0xFF, 0 }, /* 8C DAI2 EQ1 */ | ||
415 | { 0xFF, 0xFF, 0 }, /* 8D DAI2 EQ1 */ | ||
416 | { 0xFF, 0xFF, 0 }, /* 8E DAI2 EQ2 */ | ||
417 | { 0xFF, 0xFF, 0 }, /* 8F DAI2 EQ2 */ | ||
418 | |||
419 | { 0xFF, 0xFF, 0 }, /* 90 DAI2 EQ2 */ | ||
420 | { 0xFF, 0xFF, 0 }, /* 91 DAI2 EQ2 */ | ||
421 | { 0xFF, 0xFF, 0 }, /* 92 DAI2 EQ2 */ | ||
422 | { 0xFF, 0xFF, 0 }, /* 93 DAI2 EQ2 */ | ||
423 | { 0xFF, 0xFF, 0 }, /* 94 DAI2 EQ2 */ | ||
424 | { 0xFF, 0xFF, 0 }, /* 95 DAI2 EQ2 */ | ||
425 | { 0xFF, 0xFF, 0 }, /* 96 DAI2 EQ2 */ | ||
426 | { 0xFF, 0xFF, 0 }, /* 97 DAI2 EQ2 */ | ||
427 | { 0xFF, 0xFF, 0 }, /* 98 DAI2 EQ3 */ | ||
428 | { 0xFF, 0xFF, 0 }, /* 99 DAI2 EQ3 */ | ||
429 | { 0xFF, 0xFF, 0 }, /* 9A DAI2 EQ3 */ | ||
430 | { 0xFF, 0xFF, 0 }, /* 9B DAI2 EQ3 */ | ||
431 | { 0xFF, 0xFF, 0 }, /* 9C DAI2 EQ3 */ | ||
432 | { 0xFF, 0xFF, 0 }, /* 9D DAI2 EQ3 */ | ||
433 | { 0xFF, 0xFF, 0 }, /* 9E DAI2 EQ3 */ | ||
434 | { 0xFF, 0xFF, 0 }, /* 9F DAI2 EQ3 */ | ||
435 | |||
436 | { 0xFF, 0xFF, 0 }, /* A0 DAI2 EQ3 */ | ||
437 | { 0xFF, 0xFF, 0 }, /* A1 DAI2 EQ3 */ | ||
438 | { 0xFF, 0xFF, 0 }, /* A2 DAI2 EQ4 */ | ||
439 | { 0xFF, 0xFF, 0 }, /* A3 DAI2 EQ4 */ | ||
440 | { 0xFF, 0xFF, 0 }, /* A4 DAI2 EQ4 */ | ||
441 | { 0xFF, 0xFF, 0 }, /* A5 DAI2 EQ4 */ | ||
442 | { 0xFF, 0xFF, 0 }, /* A6 DAI2 EQ4 */ | ||
443 | { 0xFF, 0xFF, 0 }, /* A7 DAI2 EQ4 */ | ||
444 | { 0xFF, 0xFF, 0 }, /* A8 DAI2 EQ4 */ | ||
445 | { 0xFF, 0xFF, 0 }, /* A9 DAI2 EQ4 */ | ||
446 | { 0xFF, 0xFF, 0 }, /* AA DAI2 EQ4 */ | ||
447 | { 0xFF, 0xFF, 0 }, /* AB DAI2 EQ4 */ | ||
448 | { 0xFF, 0xFF, 0 }, /* AC DAI2 EQ5 */ | ||
449 | { 0xFF, 0xFF, 0 }, /* AD DAI2 EQ5 */ | ||
450 | { 0xFF, 0xFF, 0 }, /* AE DAI2 EQ5 */ | ||
451 | { 0xFF, 0xFF, 0 }, /* AF DAI2 EQ5 */ | ||
452 | |||
453 | { 0xFF, 0xFF, 0 }, /* B0 DAI2 EQ5 */ | ||
454 | { 0xFF, 0xFF, 0 }, /* B1 DAI2 EQ5 */ | ||
455 | { 0xFF, 0xFF, 0 }, /* B2 DAI2 EQ5 */ | ||
456 | { 0xFF, 0xFF, 0 }, /* B3 DAI2 EQ5 */ | ||
457 | { 0xFF, 0xFF, 0 }, /* B4 DAI2 EQ5 */ | ||
458 | { 0xFF, 0xFF, 0 }, /* B5 DAI2 EQ5 */ | ||
459 | { 0xFF, 0xFF, 0 }, /* B6 DAI1 biquad */ | ||
460 | { 0xFF, 0xFF, 0 }, /* B7 DAI1 biquad */ | ||
461 | { 0xFF, 0xFF, 0 }, /* B8 DAI1 biquad */ | ||
462 | { 0xFF, 0xFF, 0 }, /* B9 DAI1 biquad */ | ||
463 | { 0xFF, 0xFF, 0 }, /* BA DAI1 biquad */ | ||
464 | { 0xFF, 0xFF, 0 }, /* BB DAI1 biquad */ | ||
465 | { 0xFF, 0xFF, 0 }, /* BC DAI1 biquad */ | ||
466 | { 0xFF, 0xFF, 0 }, /* BD DAI1 biquad */ | ||
467 | { 0xFF, 0xFF, 0 }, /* BE DAI1 biquad */ | ||
468 | { 0xFF, 0xFF, 0 }, /* BF DAI1 biquad */ | ||
469 | |||
470 | { 0xFF, 0xFF, 0 }, /* C0 DAI2 biquad */ | ||
471 | { 0xFF, 0xFF, 0 }, /* C1 DAI2 biquad */ | ||
472 | { 0xFF, 0xFF, 0 }, /* C2 DAI2 biquad */ | ||
473 | { 0xFF, 0xFF, 0 }, /* C3 DAI2 biquad */ | ||
474 | { 0xFF, 0xFF, 0 }, /* C4 DAI2 biquad */ | ||
475 | { 0xFF, 0xFF, 0 }, /* C5 DAI2 biquad */ | ||
476 | { 0xFF, 0xFF, 0 }, /* C6 DAI2 biquad */ | ||
477 | { 0xFF, 0xFF, 0 }, /* C7 DAI2 biquad */ | ||
478 | { 0xFF, 0xFF, 0 }, /* C8 DAI2 biquad */ | ||
479 | { 0xFF, 0xFF, 0 }, /* C9 DAI2 biquad */ | ||
480 | { 0x00, 0x00, 0 }, /* CA */ | ||
481 | { 0x00, 0x00, 0 }, /* CB */ | ||
482 | { 0x00, 0x00, 0 }, /* CC */ | ||
483 | { 0x00, 0x00, 0 }, /* CD */ | ||
484 | { 0x00, 0x00, 0 }, /* CE */ | ||
485 | { 0x00, 0x00, 0 }, /* CF */ | ||
486 | |||
487 | { 0x00, 0x00, 0 }, /* D0 */ | ||
488 | { 0x00, 0x00, 0 }, /* D1 */ | ||
489 | { 0x00, 0x00, 0 }, /* D2 */ | ||
490 | { 0x00, 0x00, 0 }, /* D3 */ | ||
491 | { 0x00, 0x00, 0 }, /* D4 */ | ||
492 | { 0x00, 0x00, 0 }, /* D5 */ | ||
493 | { 0x00, 0x00, 0 }, /* D6 */ | ||
494 | { 0x00, 0x00, 0 }, /* D7 */ | ||
495 | { 0x00, 0x00, 0 }, /* D8 */ | ||
496 | { 0x00, 0x00, 0 }, /* D9 */ | ||
497 | { 0x00, 0x00, 0 }, /* DA */ | ||
498 | { 0x00, 0x00, 0 }, /* DB */ | ||
499 | { 0x00, 0x00, 0 }, /* DC */ | ||
500 | { 0x00, 0x00, 0 }, /* DD */ | ||
501 | { 0x00, 0x00, 0 }, /* DE */ | ||
502 | { 0x00, 0x00, 0 }, /* DF */ | ||
503 | |||
504 | { 0x00, 0x00, 0 }, /* E0 */ | ||
505 | { 0x00, 0x00, 0 }, /* E1 */ | ||
506 | { 0x00, 0x00, 0 }, /* E2 */ | ||
507 | { 0x00, 0x00, 0 }, /* E3 */ | ||
508 | { 0x00, 0x00, 0 }, /* E4 */ | ||
509 | { 0x00, 0x00, 0 }, /* E5 */ | ||
510 | { 0x00, 0x00, 0 }, /* E6 */ | ||
511 | { 0x00, 0x00, 0 }, /* E7 */ | ||
512 | { 0x00, 0x00, 0 }, /* E8 */ | ||
513 | { 0x00, 0x00, 0 }, /* E9 */ | ||
514 | { 0x00, 0x00, 0 }, /* EA */ | ||
515 | { 0x00, 0x00, 0 }, /* EB */ | ||
516 | { 0x00, 0x00, 0 }, /* EC */ | ||
517 | { 0x00, 0x00, 0 }, /* ED */ | ||
518 | { 0x00, 0x00, 0 }, /* EE */ | ||
519 | { 0x00, 0x00, 0 }, /* EF */ | ||
520 | |||
521 | { 0x00, 0x00, 0 }, /* F0 */ | ||
522 | { 0x00, 0x00, 0 }, /* F1 */ | ||
523 | { 0x00, 0x00, 0 }, /* F2 */ | ||
524 | { 0x00, 0x00, 0 }, /* F3 */ | ||
525 | { 0x00, 0x00, 0 }, /* F4 */ | ||
526 | { 0x00, 0x00, 0 }, /* F5 */ | ||
527 | { 0x00, 0x00, 0 }, /* F6 */ | ||
528 | { 0x00, 0x00, 0 }, /* F7 */ | ||
529 | { 0x00, 0x00, 0 }, /* F8 */ | ||
530 | { 0x00, 0x00, 0 }, /* F9 */ | ||
531 | { 0x00, 0x00, 0 }, /* FA */ | ||
532 | { 0x00, 0x00, 0 }, /* FB */ | ||
533 | { 0x00, 0x00, 0 }, /* FC */ | ||
534 | { 0x00, 0x00, 0 }, /* FD */ | ||
535 | { 0x00, 0x00, 0 }, /* FE */ | ||
536 | { 0xFF, 0x00, 1 }, /* FF */ | ||
537 | }; | ||
538 | |||
539 | static bool max98088_readable_register(struct device *dev, unsigned int reg) | 261 | static bool max98088_readable_register(struct device *dev, unsigned int reg) |
540 | { | 262 | { |
541 | return max98088_access[reg].readable; | 263 | switch (reg) { |
264 | case M98088_REG_00_IRQ_STATUS ... 0xC9: | ||
265 | case M98088_REG_FF_REV_ID: | ||
266 | return true; | ||
267 | default: | ||
268 | return false; | ||
269 | } | ||
270 | } | ||
271 | |||
272 | static bool max98088_writeable_register(struct device *dev, unsigned int reg) | ||
273 | { | ||
274 | switch (reg) { | ||
275 | case M98088_REG_03_BATTERY_VOLTAGE ... 0xC9: | ||
276 | return true; | ||
277 | default: | ||
278 | return false; | ||
279 | } | ||
542 | } | 280 | } |
543 | 281 | ||
544 | static bool max98088_volatile_register(struct device *dev, unsigned int reg) | 282 | static bool max98088_volatile_register(struct device *dev, unsigned int reg) |
545 | { | 283 | { |
546 | return max98088_access[reg].vol; | 284 | switch (reg) { |
285 | case M98088_REG_00_IRQ_STATUS ... M98088_REG_03_BATTERY_VOLTAGE: | ||
286 | case M98088_REG_FF_REV_ID: | ||
287 | return true; | ||
288 | default: | ||
289 | return false; | ||
290 | } | ||
547 | } | 291 | } |
548 | 292 | ||
549 | static const struct regmap_config max98088_regmap = { | 293 | static const struct regmap_config max98088_regmap = { |
@@ -551,6 +295,7 @@ static const struct regmap_config max98088_regmap = { | |||
551 | .val_bits = 8, | 295 | .val_bits = 8, |
552 | 296 | ||
553 | .readable_reg = max98088_readable_register, | 297 | .readable_reg = max98088_readable_register, |
298 | .writeable_reg = max98088_writeable_register, | ||
554 | .volatile_reg = max98088_volatile_register, | 299 | .volatile_reg = max98088_volatile_register, |
555 | .max_register = 0xff, | 300 | .max_register = 0xff, |
556 | 301 | ||