skl-i2s.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * skl-i2s.h - i2s blob mapping
  3. *
  4. * Copyright (C) 2017 Intel Corp
  5. * Author: Subhransu S. Prusty < subhransu.s.prusty@intel.com>
  6. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; version 2 of the License.
  10. *
  11. * This program is distributed in the hope that it will be useful, but
  12. * WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * General Public License for more details.
  15. *
  16. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  17. *
  18. */
  19. #ifndef __SOUND_SOC_SKL_I2S_H
  20. #define __SOUND_SOC_SKL_I2S_H
  21. #define SKL_I2S_MAX_TIME_SLOTS 8
  22. #define SKL_MCLK_DIV_CLK_SRC_MASK GENMASK(17, 16)
  23. #define SKL_MNDSS_DIV_CLK_SRC_MASK GENMASK(21, 20)
  24. #define SKL_SHIFT(x) (ffs(x) - 1)
  25. #define SKL_MCLK_DIV_RATIO_MASK GENMASK(11, 0)
  26. struct skl_i2s_config {
  27. u32 ssc0;
  28. u32 ssc1;
  29. u32 sscto;
  30. u32 sspsp;
  31. u32 sstsa;
  32. u32 ssrsa;
  33. u32 ssc2;
  34. u32 sspsp2;
  35. u32 ssc3;
  36. u32 ssioc;
  37. } __packed;
  38. struct skl_i2s_config_mclk {
  39. u32 mdivctrl;
  40. u32 mdivr;
  41. };
  42. /**
  43. * struct skl_i2s_config_blob_legacy - Structure defines I2S Gateway
  44. * configuration legacy blob
  45. *
  46. * @gtw_attr: Gateway attribute for the I2S Gateway
  47. * @tdm_ts_group: TDM slot mapping against channels in the Gateway.
  48. * @i2s_cfg: I2S HW registers
  49. * @mclk: MCLK clock source and divider values
  50. */
  51. struct skl_i2s_config_blob_legacy {
  52. u32 gtw_attr;
  53. u32 tdm_ts_group[SKL_I2S_MAX_TIME_SLOTS];
  54. struct skl_i2s_config i2s_cfg;
  55. struct skl_i2s_config_mclk mclk;
  56. };
  57. #endif /* __SOUND_SOC_SKL_I2S_H */