hpm_i2s_common.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (c) 2021 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_I2S_COMMON_H
  8. #define HPM_I2S_COMMON_H
  9. /**
  10. * @brief I2S common driver APIs
  11. * @defgroup i2s_common_interface I2S common driver APIs
  12. * @ingroup io_interfaces
  13. * @{
  14. */
  15. #define I2S_PROTOCOL_I2S_PHILIPS (0U)
  16. #define I2S_PROTOCOL_MSB_JUSTIFIED (1U)
  17. #define I2S_PROTOCOL_LEFT_JUSTIFIED (1U)
  18. #define I2S_PROTOCOL_LSB_JUSTIFIED (2U)
  19. #define I2S_PROTOCOL_RIGHT_JUSTIFIED (2U)
  20. #define I2S_PROTOCOL_PCM (3U)
  21. /* i2s channel slot mask */
  22. #define I2S_CHANNEL_SLOT_MASK(x) (1U << (x))
  23. /* convert audio depth value into CFGR[DATASIZ] value map */
  24. #define I2S_CFGR_DATASIZ(x) ((x - 16) >> 3)
  25. /* convert channel length value into CFGR[CHSIZ] value map */
  26. #define I2S_CFGR_CHSIZ(x) ((x - 16) >> 4)
  27. /**
  28. * @brief I2S audio depth
  29. */
  30. enum {
  31. i2s_audio_depth_16_bits = 16,
  32. i2s_audio_depth_24_bits = 24,
  33. i2s_audio_depth_32_bits = 32,
  34. };
  35. /**
  36. * @brief I2S channel length
  37. */
  38. enum {
  39. i2s_channel_length_16_bits = 16,
  40. i2s_channel_length_32_bits = 32,
  41. };
  42. /**
  43. * @brief I2S stereo/mono channel
  44. */
  45. enum {
  46. i2s_mono_left = 0,
  47. i2s_mono_right = 1,
  48. i2s_stereo = 2,
  49. };
  50. /**
  51. * @}
  52. */
  53. #endif /* HPM_I2S_COMMON_H */