drv_wm8978.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2018-11-14 ZeroFree first implementation
  9. * 2019-07-28 Ernest perfect player, add record and other APIs
  10. */
  11. #ifndef __DRV_WM8978_H__
  12. #define __DRV_WM8978_H__
  13. #include <rtthread.h>
  14. #include <rtdevice.h>
  15. enum data_fomat_select
  16. {
  17. RIGHT_FOMAT_SELECT,
  18. LEFT_FOMAT_SELECT,
  19. I2S_FOMAT_SELECT,
  20. PCM_FOMAT_SELECT,
  21. };
  22. rt_err_t wm8978_init(struct rt_i2c_bus_device *dev);
  23. void wm8978_player_start(struct rt_i2c_bus_device *dev);
  24. void wm8978_record_start(struct rt_i2c_bus_device *dev);
  25. int wm8978_set_volume(struct rt_i2c_bus_device *dev, int vol);
  26. void wm8978_reset(struct rt_i2c_bus_device *dev);
  27. /* enable ADC/DAC */
  28. void wm8978_ADC_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool);
  29. void wm8978_DAC_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool);
  30. void wm8978_mic_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool);
  31. void wm8978_linein_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool);
  32. void wm8978_aux_enabled(struct rt_i2c_bus_device *dev, rt_bool_t bool);
  33. void wm8978_linein_gain(struct rt_i2c_bus_device *dev, rt_uint8_t value);
  34. void wm8978_aux_gain(struct rt_i2c_bus_device *dev, rt_uint8_t value);
  35. void wm8978_mic_gain(struct rt_i2c_bus_device *dev, rt_uint8_t gain);
  36. void wm8978_output_set(struct rt_i2c_bus_device *dev, rt_bool_t dac, rt_bool_t bypass);
  37. void wm8978_hpvol_set(struct rt_i2c_bus_device *dev, rt_uint8_t volume);
  38. void wm8978_spkvol_set(struct rt_i2c_bus_device *dev, rt_uint8_t volume);
  39. /* set interface mode */
  40. void wm8978_interface_cfg(struct rt_i2c_bus_device *dev, enum data_fomat_select fmt, rt_uint32_t bitBand);
  41. void wm8978_mute_enabled(struct rt_i2c_bus_device *dev, rt_bool_t enable);
  42. rt_err_t wm8978_set_EQ1(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain);
  43. rt_err_t wm8978_set_EQ2(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain);
  44. rt_err_t wm8978_set_EQ3(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain);
  45. rt_err_t wm8978_set_EQ4(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain);
  46. rt_err_t wm8978_set_EQ5(struct rt_i2c_bus_device *dev, rt_uint8_t freq, rt_uint8_t gain);
  47. void wm8978_3D_Set(struct rt_i2c_bus_device *dev, rt_uint8_t depth);
  48. #endif