BD37033.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /*
  2. * Copyright(c) 2017 Arkmicro Science and Technology
  3. * all rights reserved
  4. * Proprietary and Confidential Information.
  5. *
  6. * This source file is the property of ASTRI, and may not be copied or
  7. * distributed in any isomorphic form without the prior written consent
  8. * of ASTRI.
  9. *
  10. * Name:
  11. * BD37033.h
  12. *
  13. * Description:
  14. * This file contains BD37033 register definitions
  15. *
  16. * Author:
  17. * ark
  18. *
  19. * Remarks:
  20. *
  21. */
  22. #ifndef _BD37033_H_
  23. #define _BD37033_H_
  24. #include <linux/platform_device.h>
  25. #include <linux/i2c.h>
  26. #define BD37033_I2C_NAME "drv_bd37033"
  27. //Selector Register Address
  28. enum{
  29. SELECT_ADDR_INITIAL_SETUP = 0x01,
  30. SELECT_ADDR_LPF_SETUP = 0x02,
  31. SELECT_ADDR_MIXING_SETUP = 0x03,
  32. SELECT_ADDR_INPUT_SELECTOR = 0x05,
  33. SELECT_ADDR_INPUT_GAIN = 0x06,
  34. SELECT_ADDR_VOLUME_GAIN = 0x20,
  35. SELECT_ADDR_FADER_1CH_FRONT = 0x28,
  36. SELECT_ADDR_FADER_2CH_FRONT = 0x29,
  37. SELECT_ADDR_FADER_1CH_REAR = 0x2A,
  38. SELECT_ADDR_FADER_2CH_REAR = 0x2B,
  39. SELECT_ADDR_FADER_1CH_SUB = 0x2C,
  40. SELECT_ADDR_MIXINT_2CH_SUB = 0x30,
  41. SELECT_ADDR_BASS_SETUP = 0x41,
  42. SELECT_ADDR_MIDDLE_SETUP = 0x44,
  43. SELECT_ADDR_TREBLE_SETUP = 0x47,
  44. SELECT_ADDR_BASS_GAIN = 0x51,
  45. SELECT_ADDR_MIDDLE_GAIN = 0x54,
  46. SELECT_ADDR_TREBLE_GAIN = 0x57,
  47. SELECT_ADDR_LOUDNESS_GAIN = 0x75,
  48. SELECT_ADDR_SYSTEM_RESET = 0xFE,
  49. };
  50. //Selector Register Data
  51. typedef struct _select_data{
  52. unsigned char select_data_initial_setup;
  53. unsigned char select_data_lpf_setup;
  54. unsigned char select_data_mixing_setup;
  55. unsigned char select_data_input_selector;
  56. unsigned char select_data_input_gain;
  57. unsigned char select_data_volume_gain;
  58. unsigned char select_data_fader_1ch_front_gain;
  59. unsigned char select_data_fader_2ch_front_gain;
  60. unsigned char select_data_fader_1ch_rear_gain;
  61. unsigned char select_data_fader_2ch_rear_gain;
  62. unsigned char select_data_fader_1ch_sub_gain;
  63. unsigned char select_data_mixing_2ch_sub_gain;
  64. unsigned char select_data_bass_setup;
  65. unsigned char select_data_middle_setup;
  66. unsigned char select_data_treble_setup;
  67. unsigned char select_data_bass_gain;
  68. unsigned char select_data_middle_gain;
  69. unsigned char select_data_treble_gain;
  70. unsigned char select_data_loudness_gain;
  71. unsigned char select_data_system_reset;
  72. }SELECT_DARA;
  73. struct sddac_platform_data {
  74. unsigned int reg_base;
  75. unsigned int reg_size;
  76. };
  77. struct ark1668e_dac_gain{
  78. unsigned int vol_flout;
  79. unsigned int vol_frout;
  80. unsigned int vol_rlout;
  81. unsigned int vol_rrout;
  82. };
  83. struct bd37033_data{
  84. //spinlock_t spin_lock;
  85. struct i2c_client *client;
  86. struct i2c_device_id *id;
  87. struct sddac_platform_data pd;
  88. struct ark1668e_dac_gain dac;
  89. //struct platform_device *bd37033_snd_device;
  90. };
  91. struct bd37033_module_param
  92. {
  93. int mute;
  94. int input_channel;
  95. int volume;
  96. int input_gain;
  97. int fl_gain;
  98. int fr_gain;
  99. int rl_gain;
  100. int rr_gain;
  101. int bass_gain;
  102. int middle_gain;
  103. int treble_gain;
  104. };
  105. //Printk Level
  106. #define KERN_LEVEL KERN_ALERT
  107. //Mute State
  108. #define MUTE_OFF 0
  109. #define MUTE_ON 1
  110. //Subwoofer
  111. #define BD37033_LPF_SETUP_SUB_LPF_FC_TYPE 0x0
  112. #define BD37033_LPF_SETUP_SUB_INPUT_SELECT_TYPE 0x01
  113. #define BD37033_LPF_SETUP_SUB_OUTPUT_SELECT_TYPE 0x02
  114. #define BD37033_LPF_SETUP_LEVEL_METER_RESET_TYPE 0x03
  115. #define BD37033_LPF_SETUP_LPF_PHASE_TYPE 0x04
  116. //Mixing
  117. #define BD37033_MIXING_1CH_SWITCH_TYPE 0x0
  118. #define BD37033_MIXING_2CH_SWITCH_TYPE 0x01
  119. #define BD37033_MIXING_LOUDNESS_F0_TYPE 0x02
  120. #define BD37033_MIXING_INPUT_SELECT_TYPE 0x03
  121. //Secect Input Channel
  122. #define BD37033_INPUT_SELECTOR_A_SINGLE 0x0
  123. #define BD37033_INPUT_SELECTOR_B_SINGLE 0x01
  124. #define BD37033_INPUT_SELECTOR_C_SINGLE 0x02
  125. #define BD37033_INPUT_SELECTOR_D_SINGLE 0x03
  126. #define BD37033_INPUT_SELECTOR_E1_SINGLE 0x0A
  127. #define BD37033_INPUT_SELECTOR_E2_SINGLE 0x0B
  128. #define BD37033_INPUT_SELECTOR_D_DIFF 0x06
  129. #define BD37033_INPUT_SELECTOR_E_FULL_DIFF 0x08
  130. #define BD37033_INPUT_SELECTOR_INPUT_SHORT 0x09
  131. #define BD37033_INPUT_SELECTOR_FULL_DIFF_TYPE_NEGATIVE_INPUT 0x0f
  132. #define BD37033_INPUT_SELECTOR_FULL_DIFF_TYPE_BIAS 0x1f
  133. #define BD37033_STREAM_A_SINGLE 0x0
  134. #define BD37033_STREAM_B_SINGLE 0x01
  135. #define BD37033_STREAM_C_SINGLE 0x02
  136. #define BD37033_STREAM_D_SINGLE 0x03
  137. #define BD37033_STREAM_E1_SINGLE 0x04
  138. #define BD37033_STREAM_E2_SINGL 0x05
  139. #define BD37033_STREAM_D_DIF 0x06
  140. #define BD37033_STREAM_E_FULL_DIFF 0x07
  141. #define BD37033_STREAM_INPUT_SHORT 0x08
  142. //Tone
  143. #define BASS_Q 0x10
  144. #define BASS_F0 0x11
  145. #define MIDDLE_Q 0x12
  146. #define MIDDLE_F0 0x13
  147. #define TREBLE_Q 0x14
  148. #define TREBLE_F0 0x15
  149. #define I2S_BASE 0xE4000000
  150. #endif