diff options
| -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 | ||
