luat_audio_tm8211.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #include "luat_base.h"
  2. #include "luat_gpio.h"
  3. #include "luat_audio.h"
  4. #include "luat_rtos.h"
  5. #define LUAT_LOG_TAG "tm8211"
  6. #include "luat_log.h"
  7. static int tm8211_codec_init(luat_audio_codec_conf_t* conf,uint8_t mode){
  8. return 0;
  9. }
  10. static int tm8211_codec_deinit(luat_audio_codec_conf_t* conf){
  11. return 0;
  12. }
  13. static int tm8211_mode_resume(luat_audio_codec_conf_t* conf,uint8_t selece){
  14. luat_audio_power(conf->multimedia_id,1);
  15. return 0;
  16. }
  17. static int tm8211_mode_pwrdown(luat_audio_codec_conf_t* conf){
  18. luat_audio_power(conf->multimedia_id,0);
  19. return 0;
  20. }
  21. static int tm8211_codec_control(luat_audio_codec_conf_t* conf,luat_audio_codec_ctl_t cmd,uint32_t data){
  22. switch (cmd){
  23. case LUAT_CODEC_MODE_RESUME:
  24. tm8211_mode_resume(conf,(uint8_t)data);
  25. break;
  26. case LUAT_CODEC_MODE_STANDBY:
  27. case LUAT_CODEC_MODE_PWRDOWN:
  28. tm8211_mode_pwrdown(conf);
  29. break;
  30. default:
  31. break;
  32. }
  33. return 0;
  34. }
  35. static int tm8211_codec_start(luat_audio_codec_conf_t* conf){
  36. luat_audio_power(conf->multimedia_id,1);
  37. luat_audio_pa(conf->multimedia_id,1, 0);
  38. return 0;
  39. }
  40. static int tm8211_codec_stop(luat_audio_codec_conf_t* conf){
  41. luat_audio_conf_t* audio_conf = luat_audio_get_config(conf->multimedia_id);
  42. luat_audio_pa(conf->multimedia_id,0, 0);
  43. if (audio_conf->power_off_delay_time)
  44. luat_rtos_task_sleep(audio_conf->power_off_delay_time);
  45. luat_audio_power(conf->multimedia_id,0);
  46. return 0;
  47. }
  48. const luat_audio_codec_opts_t codec_opts_tm8211 = {
  49. .name = "tm8211",
  50. .init = tm8211_codec_init,
  51. .deinit = tm8211_codec_deinit,
  52. .control = tm8211_codec_control,
  53. .start = tm8211_codec_start,
  54. .stop = tm8211_codec_stop,
  55. .no_control = 1,
  56. };