dm_pp_interface.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Copyright 2016 Advanced Micro Devices, Inc.
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a
  5. * copy of this software and associated documentation files (the "Software"),
  6. * to deal in the Software without restriction, including without limitation
  7. * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  8. * and/or sell copies of the Software, and to permit persons to whom the
  9. * Software is furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  17. * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
  18. * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  19. * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  20. * OTHER DEALINGS IN THE SOFTWARE.
  21. *
  22. */
  23. #ifndef _DM_PP_INTERFACE_
  24. #define _DM_PP_INTERFACE_
  25. #define PP_MAX_CLOCK_LEVELS 8
  26. struct pp_clock_with_latency {
  27. uint32_t clocks_in_khz;
  28. uint32_t latency_in_us;
  29. };
  30. struct pp_clock_levels_with_latency {
  31. uint32_t num_levels;
  32. struct pp_clock_with_latency data[PP_MAX_CLOCK_LEVELS];
  33. };
  34. struct pp_clock_with_voltage {
  35. uint32_t clocks_in_khz;
  36. uint32_t voltage_in_mv;
  37. };
  38. struct pp_clock_levels_with_voltage {
  39. uint32_t num_levels;
  40. struct pp_clock_with_voltage data[PP_MAX_CLOCK_LEVELS];
  41. };
  42. #define PP_MAX_WM_SETS 4
  43. enum pp_wm_set_id {
  44. DC_WM_SET_A = 0,
  45. DC_WM_SET_B,
  46. DC_WM_SET_C,
  47. DC_WM_SET_D,
  48. DC_WM_SET_INVALID = 0xffff,
  49. };
  50. struct pp_wm_set_with_dmif_clock_range_soc15 {
  51. enum pp_wm_set_id wm_set_id;
  52. uint32_t wm_min_dcefclk_in_khz;
  53. uint32_t wm_max_dcefclk_in_khz;
  54. uint32_t wm_min_memclk_in_khz;
  55. uint32_t wm_max_memclk_in_khz;
  56. };
  57. struct pp_wm_set_with_mcif_clock_range_soc15 {
  58. enum pp_wm_set_id wm_set_id;
  59. uint32_t wm_min_socclk_in_khz;
  60. uint32_t wm_max_socclk_in_khz;
  61. uint32_t wm_min_memclk_in_khz;
  62. uint32_t wm_max_memclk_in_khz;
  63. };
  64. struct pp_wm_sets_with_clock_ranges_soc15 {
  65. uint32_t num_wm_sets_dmif;
  66. uint32_t num_wm_sets_mcif;
  67. struct pp_wm_set_with_dmif_clock_range_soc15
  68. wm_sets_dmif[PP_MAX_WM_SETS];
  69. struct pp_wm_set_with_mcif_clock_range_soc15
  70. wm_sets_mcif[PP_MAX_WM_SETS];
  71. };
  72. #endif /* _DM_PP_INTERFACE_ */