mt_afe_control.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
  2. *
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License version 2 and
  5. * only version 2 as published by the Free Software Foundation.
  6. *
  7. * This program is distributed in the hope that it will be useful,
  8. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. * GNU General Public License for more details.
  11. */
  12. #ifndef __MT_AFE_CONTROL_H__
  13. #define __MT_AFE_CONTROL_H__
  14. #include "mt_afe_digital_type.h"
  15. #include "mt_afe_connection.h"
  16. #include <sound/pcm.h>
  17. int mt_afe_platform_init(void *dev);
  18. void mt_afe_platform_deinit(void *dev);
  19. void mt_afe_set_sample_rate(uint32_t aud_block, uint32_t sample_rate);
  20. void mt_afe_set_channels(uint32_t memory_interface, uint32_t channel);
  21. void mt_afe_set_mono_type(uint32_t memory_interface, uint32_t mono_type);
  22. void mt_afe_set_irq_counter(uint32_t irq_mode, uint32_t counter);
  23. void mt_afe_set_irq_rate(uint32_t irq_mode, uint32_t sample_rate);
  24. void mt_afe_set_irq_state(uint32_t irq_mode, bool enable);
  25. int mt_afe_get_irq_state(uint32_t irq_mode, struct mt_afe_irq_status *mcu_mode);
  26. int mt_afe_enable_memory_path(uint32_t block);
  27. int mt_afe_disable_memory_path(uint32_t block);
  28. bool mt_afe_get_memory_path_state(uint32_t block);
  29. void mt_afe_set_i2s_dac_out(uint32_t sample_rate);
  30. int mt_afe_enable_i2s_dac(void);
  31. int mt_afe_disable_i2s_dac(void);
  32. void mt_afe_enable_afe(bool enable);
  33. void mt_afe_set_i2s_adc_in(uint32_t sample_rate);
  34. int mt_afe_enable_i2s_adc(void);
  35. int mt_afe_disable_i2s_adc(void);
  36. void mt_afe_set_i2s_adc2_in(uint32_t sample_rate);
  37. int mt_afe_enable_i2s_adc2(void);
  38. int mt_afe_disable_i2s_adc2(void);
  39. void mt_afe_set_2nd_i2s_out(uint32_t sample_rate, uint32_t clock_mode);
  40. int mt_afe_enable_2nd_i2s_out(void);
  41. int mt_afe_disable_2nd_i2s_out(void);
  42. void mt_afe_set_2nd_i2s_in(uint32_t wlen, uint32_t src_mode,
  43. uint32_t bck_inv, uint32_t clock_mode);
  44. int mt_afe_enable_2nd_i2s_in(void);
  45. int mt_afe_disable_2nd_i2s_in(void);
  46. void mt_afe_set_i2s_asrc_config(unsigned int sample_rate);
  47. void mt_afe_set_hw_digital_gain_mode(uint32_t gain_type, uint32_t sample_rate,
  48. uint32_t sample_per_step);
  49. void mt_afe_set_hw_digital_gain_state(int gain_type, bool enable);
  50. void mt_afe_set_hw_digital_gain(uint32_t gain, int gain_type);
  51. int mt_afe_enable_sinegen_hw(uint32_t connection, uint32_t direction);
  52. int mt_afe_disable_sinegen_hw(void);
  53. void mt_afe_set_memif_fetch_format(uint32_t interface_type, uint32_t fetch_format);
  54. void mt_afe_set_out_conn_format(uint32_t connection_format, uint32_t output);
  55. void mt_afe_enable_apll(uint32_t sample_rate);
  56. void mt_afe_disable_apll(uint32_t sample_rate);
  57. void mt_afe_enable_apll_tuner(uint32_t sample_rate);
  58. void mt_afe_disable_apll_tuner(uint32_t sample_rate);
  59. void mt_afe_enable_apll_div_power(uint32_t clock_type, uint32_t sample_rate);
  60. void mt_afe_disable_apll_div_power(uint32_t clock_type, uint32_t sample_rate);
  61. uint32_t mt_afe_set_mclk(uint32_t clock_type, uint32_t sample_rate);
  62. void mt_afe_set_i2s3_bclk(uint32_t mck_div, uint32_t sample_rate, uint32_t channels,
  63. uint32_t sample_bits);
  64. void mt_afe_set_dai_bt(struct mt_afe_digital_dai_bt *dai_bt);
  65. int mt_afe_enable_dai_bt(void);
  66. int mt_afe_disable_dai_bt(void);
  67. int mt_afe_enable_merge_i2s(uint32_t sample_rate);
  68. int mt_afe_disable_merge_i2s(void);
  69. void mt_afe_suspend(void);
  70. void mt_afe_resume(void);
  71. struct mt_afe_mem_control_t *mt_afe_get_mem_ctx(enum mt_afe_mem_context mem_context);
  72. void mt_afe_add_ctx_substream(enum mt_afe_mem_context mem_context,
  73. struct snd_pcm_substream *substream);
  74. void mt_afe_remove_ctx_substream(enum mt_afe_mem_context mem_context);
  75. void mt_afe_init_dma_buffer(enum mt_afe_mem_context mem_context,
  76. struct snd_pcm_runtime *runtime);
  77. void mt_afe_reset_dma_buffer(enum mt_afe_mem_context mem_context);
  78. int mt_afe_update_hw_ptr(enum mt_afe_mem_context mem_context);
  79. unsigned int mt_afe_get_board_channel_type(void);
  80. void mt_afe_set_hdmi_out_channel(unsigned int channels);
  81. int mt_afe_enable_hdmi_out(void);
  82. int mt_afe_disable_hdmi_out(void);
  83. void mt_afe_set_hdmi_tdm1_config(unsigned int channels, unsigned int i2s_wlen);
  84. void mt_afe_set_hdmi_tdm2_config(unsigned int channels);
  85. int mt_afe_enable_hdmi_tdm(void);
  86. int mt_afe_disable_hdmi_tdm(void);
  87. int mt_afe_enable_hdmi_tdm_i2s_loopback(void);
  88. int mt_afe_disable_hdmi_tdm_i2s_loopback(void);
  89. void mt_afe_set_hdmi_tdm_i2s_loopback_data(unsigned int sdata_index);
  90. #endif