ak4458.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Audio driver for AK4458
  4. *
  5. * Copyright (C) 2016 Asahi Kasei Microdevices Corporation
  6. * Copyright 2018 NXP
  7. */
  8. #ifndef _AK4458_H
  9. #define _AK4458_H
  10. #include <linux/regmap.h>
  11. /* Settings */
  12. #define AK4458_00_CONTROL1 0x00
  13. #define AK4458_01_CONTROL2 0x01
  14. #define AK4458_02_CONTROL3 0x02
  15. #define AK4458_03_LCHATT 0x03
  16. #define AK4458_04_RCHATT 0x04
  17. #define AK4458_05_CONTROL4 0x05
  18. #define AK4458_06_DSD1 0x06
  19. #define AK4458_07_CONTROL5 0x07
  20. #define AK4458_08_SOUND_CONTROL 0x08
  21. #define AK4458_09_DSD2 0x09
  22. #define AK4458_0A_CONTROL6 0x0A
  23. #define AK4458_0B_CONTROL7 0x0B
  24. #define AK4458_0C_CONTROL8 0x0C
  25. #define AK4458_0D_CONTROL9 0x0D
  26. #define AK4458_0E_CONTROL10 0x0E
  27. #define AK4458_0F_L2CHATT 0x0F
  28. #define AK4458_10_R2CHATT 0x10
  29. #define AK4458_11_L3CHATT 0x11
  30. #define AK4458_12_R3CHATT 0x12
  31. #define AK4458_13_L4CHATT 0x13
  32. #define AK4458_14_R4CHATT 0x14
  33. /* Bitfield Definitions */
  34. /* AK4458_00_CONTROL1 (0x00) Fields
  35. * Addr Register Name D7 D6 D5 D4 D3 D2 D1 D0
  36. * 00H Control 1 ACKS 0 0 0 DIF2 DIF1 DIF0 RSTN
  37. */
  38. /* Digital Filter (SD, SLOW, SSLOW) */
  39. #define AK4458_SD_MASK GENMASK(5, 5)
  40. #define AK4458_SLOW_MASK GENMASK(0, 0)
  41. #define AK4458_SSLOW_MASK GENMASK(0, 0)
  42. /* DIF2 1 0
  43. * x 1 0 MSB justified Figure 3 (default)
  44. * x 1 1 I2S Compliment Figure 4
  45. */
  46. #define AK4458_DIF_SHIFT 1
  47. #define AK4458_DIF_MASK GENMASK(3, 1)
  48. #define AK4458_DIF_16BIT_LSB (0 << 1)
  49. #define AK4458_DIF_24BIT_I2S (3 << 1)
  50. #define AK4458_DIF_32BIT_LSB (5 << 1)
  51. #define AK4458_DIF_32BIT_MSB (6 << 1)
  52. #define AK4458_DIF_32BIT_I2S (7 << 1)
  53. /* AK4458_00_CONTROL1 (0x00) D0 bit */
  54. #define AK4458_RSTN_MASK GENMASK(0, 0)
  55. #define AK4458_RSTN (0x1 << 0)
  56. /* AK4458_0A_CONTROL6 Mode bits */
  57. #define AK4458_MODE_SHIFT 6
  58. #define AK4458_MODE_MASK GENMASK(7, 6)
  59. #define AK4458_MODE_NORMAL (0 << AK4458_MODE_SHIFT)
  60. #define AK4458_MODE_TDM128 (1 << AK4458_MODE_SHIFT)
  61. #define AK4458_MODE_TDM256 (2 << AK4458_MODE_SHIFT)
  62. #define AK4458_MODE_TDM512 (3 << AK4458_MODE_SHIFT)
  63. /* DAC Digital attenuator transition time setting
  64. * Table 19
  65. * Mode ATS1 ATS2 ATT speed
  66. * 0 0 0 4080/fs
  67. * 1 0 1 2040/fs
  68. * 2 1 0 510/fs
  69. * 3 1 1 255/fs
  70. * */
  71. #define AK4458_ATS_SHIFT 6
  72. #define AK4458_ATS_MASK GENMASK(7, 6)
  73. #define AK4458_DSDSEL_MASK (0x1 << 0)
  74. #define AK4458_DP_MASK (0x1 << 7)
  75. #endif