sde_rsc_hw.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
  4. * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
  5. */
  6. #ifndef _SDE_RSC_HW_H_
  7. #define _SDE_RSC_HW_H_
  8. #include <linux/kernel.h>
  9. #include <linux/sde_io_util.h>
  10. #include <linux/sde_rsc.h>
  11. /* display rsc offset */
  12. #define SDE_RSCC_RSC_ID_DRV0 0x0
  13. #define SDE_RSCC_PDC_SEQ_START_ADDR_REG_OFFSET_DRV0 0x020
  14. #define SDE_RSCC_PDC_MATCH_VALUE_LO_REG_OFFSET_DRV0 0x024
  15. #define SDE_RSCC_PDC_MATCH_VALUE_HI_REG_OFFSET_DRV0 0x028
  16. #define SDE_RSCC_PDC_SLAVE_ID_DRV0 0x02c
  17. #define SDE_RSCC_SEQ_PROGRAM_COUNTER 0x408
  18. #define SDE_RSCC_SEQ_CFG_BR_ADDR_0_DRV0 0x410
  19. #define SDE_RSCC_SEQ_CFG_BR_ADDR_1_DRV0 0x414
  20. #define SDE_RSCC_SEQ_CFG_BR_ADDR_0_DRV0_V3 0x4bc
  21. #define SDE_RSCC_SEQ_CFG_BR_ADDR_1_DRV0_V3 0x4c0
  22. #define SDE_RSCC_SEQ_CFG_BR_ADDR_0_DRV0_V2 0x500
  23. #define SDE_RSCC_SEQ_CFG_BR_ADDR_1_DRV0_V2 0x504
  24. #define SDE_RSCC_SEQ_MEM_0_DRV0_V3 0x550
  25. #define SDE_RSCC_SEQ_MEM_0_DRV0 0x600
  26. #define SDE_RSCC_SOLVER_OVERRIDE_CTRL_DRV0 0xc14
  27. #define SDE_RSCC_ERROR_IRQ_STATUS_DRV0 0x0d0
  28. #define SDE_RSCC_SEQ_BUSY_DRV0 0x404
  29. #define SDE_RSCC_SOLVER_STATUS0_DRV0 0xc24
  30. #define SDE_RSCC_SOLVER_STATUS1_DRV0 0xc28
  31. #define SDE_RSCC_SOLVER_STATUS2_DRV0 0xc2c
  32. #define SDE_RSCC_AMC_TCS_MODE_IRQ_STATUS_DRV0 0x1c00
  33. #define SDE_RSCC_SOFT_WAKEUP_TIME_LO_DRV0 0xc04
  34. #define SDE_RSCC_SOFT_WAKEUP_TIME_HI_DRV0 0xc08
  35. #define SDE_RSCC_MAX_IDLE_DURATION_DRV0 0xc0c
  36. #define SDE_RSC_SOLVER_TIME_SLOT_TABLE_0_DRV0 0x1000
  37. #define SDE_RSC_SOLVER_TIME_SLOT_TABLE_1_DRV0 0x1004
  38. #define SDE_RSC_SOLVER_TIME_SLOT_TABLE_2_DRV0 0x1008
  39. #define SDE_RSC_SOLVER_TIME_SLOT_TABLE_3_DRV0 0x100c
  40. #define SDE_RSC_SOLVER_SOLVER_MODES_ENABLED_DRV0 0xc20
  41. #define SDE_RSC_SOLVER_MODE_PRI_TABLE_SLOT0_PRI0_DRV0 0x1080
  42. #define SDE_RSC_SOLVER_MODE_PRI_TABLE_SLOT1_PRI0_DRV0 0x1100
  43. #define SDE_RSC_SOLVER_MODE_PRI_TABLE_SLOT1_PRI3_DRV0 0x110c
  44. #define SDE_RSC_SOLVER_MODE_PRI_TABLE_SLOT2_PRI0_DRV0 0x1180
  45. #define SDE_RSC_SOLVER_MODE_PRI_TABLE_SLOT2_PRI3_DRV0 0x118c
  46. #define SDE_RSC_SOLVER_OVERRIDE_MODE_DRV0 0xc18
  47. #define SDE_RSC_SOLVER_OVERRIDE_CTRL_DRV0 0xc14
  48. #define SDE_RSC_TIMERS_CONSIDERED_DRV0 0xc00
  49. #define SDE_RSC_SOLVER_OVERRIDE_IDLE_TIME_DRV0 0xc1c
  50. #define SDE_RSC_SOLVER_MODE_PARM0_DRV0_MODE0 0xc30
  51. #define SDE_RSC_SOLVER_MODE_PARM1_DRV0_MODE0 0xc34
  52. #define SDE_RSC_SOLVER_MODE_PARM2_DRV0_MODE0 0xc38
  53. #define SDE_RSC_SOLVER_MODE_PARM3_DRV0_MODE0 0xc40
  54. #define SDE_RSC_SOLVER_MODE_PARM0_DRV0_MODE1 0xc4c
  55. #define SDE_RSC_SOLVER_MODE_PARM1_DRV0_MODE1 0xc50
  56. #define SDE_RSC_SOLVER_MODE_PARM2_DRV0_MODE1 0xc54
  57. #define SDE_RSC_SOLVER_MODE_PARM3_DRV0_MODE1 0xc5c
  58. #define SDE_RSC_SOLVER_MODE_PARM0_DRV0_MODE2 0xc68
  59. #define SDE_RSC_SOLVER_MODE_PARM1_DRV0_MODE2 0xc6c
  60. #define SDE_RSC_SOLVER_MODE_PARM2_DRV0_MODE2 0xc70
  61. #define SDE_RSC_SOLVER_MODE_PARM3_DRV0_MODE2 0xc78
  62. #define SDE_RSCC_TCS_DRV0_CONTROL 0x1c14
  63. #define SDE_RSCC_LPM_PROFILING_COUNTER0_EN_DRV0 0x4d00
  64. #define SDE_RSCC_LPM_PROFILING_COUNTER0_CLR_DRV0 0x4d04
  65. #define SDE_RSCC_LPM_PROFILING_COUNTER0_STATUS_DRV0 0x4d08
  66. #define SDE_RSCC_WRAPPER_CTRL 0x000
  67. #define SDE_RSCC_WRAPPER_OVERRIDE_CTRL 0x004
  68. #define SDE_RSCC_WRAPPER_STATIC_WAKEUP_0 0x008
  69. #define SDE_RSCC_WRAPPER_RSCC_MODE_THRESHOLD 0x00c
  70. #define SDE_RSCC_WRAPPER_DEBUG_BUS 0x010
  71. #define SDE_RSCC_WRAPPER_VSYNC_TIMESTAMP0 0x018
  72. #define SDE_RSCC_WRAPPER_VSYNC_TIMESTAMP1 0x01c
  73. #define SDE_RSCC_SPARE_PWR_EVENT 0x020
  74. #define SDE_RSCC_PWR_CTRL 0x024
  75. #define SDE_RSCC_WRAPPER_OVERRIDE_CTRL2 0x040
  76. #define SDE_RSCC_WRAPPER_MODE_MIN_THRESHOLD 0x044
  77. #define SDE_RSCC_WRAPPER_BW_INDICATION 0x048
  78. #define SDE_RSCC_WRAPPER_DEBUG_CTRL2 0x050
  79. /* qtimer offset */
  80. #define SDE_RSCC_QTMR_AC_HW_FRAME_SEL_1 0x1FE0
  81. #define SDE_RSCC_QTMR_AC_HW_FRAME_SEL_2 0x1FF0
  82. #define SDE_RSCC_QTMR_AC_CNTACR0_FG0 0x1040
  83. #define SDE_RSCC_QTMR_AC_CNTACR1_FG0 0x1044
  84. #define SDE_RSCC_F0_QTMR_V1_CNTP_CVAL_LO 0x2020
  85. #define SDE_RSCC_F0_QTMR_V1_CNTP_CVAL_HI 0x2024
  86. #define SDE_RSCC_F1_QTMR_V1_CNTP_CVAL_LO 0x3020
  87. #define SDE_RSCC_F1_QTMR_V1_CNTP_CVAL_HI 0x3024
  88. #define SDE_RSCC_F0_QTMR_V1_CNTP_CTL 0x202C
  89. #define SDE_RSCC_F1_QTMR_V1_CNTP_CTL 0x302C
  90. #define MAX_CHECK_LOOPS 500
  91. #define POWER_CTRL_BIT_12 12
  92. #define SDE_RSC_MODE_0_VAL 0
  93. #define SDE_RSC_MODE_1_VAL 1
  94. #define MAX_MODE2_ENTRY_TRY 3
  95. int rsc_hw_vsync(struct sde_rsc_priv *rsc, enum rsc_vsync_req request,
  96. char *buffer, int buffer_size, u32 mode);
  97. void rsc_hw_debug_dump(struct sde_rsc_priv *rsc, u32 mux_sel);
  98. int sde_rsc_debug_show(struct seq_file *s, struct sde_rsc_priv *rsc);
  99. int rsc_hw_mode_ctrl(struct sde_rsc_priv *rsc, enum rsc_mode_req request,
  100. char *buffer, int buffer_size, u32 mode);
  101. int sde_rsc_mode2_exit(struct sde_rsc_priv *rsc, enum sde_rsc_state state);
  102. int rsc_hw_tcs_use_ok(struct sde_rsc_priv *rsc);
  103. int rsc_hw_tcs_wait(struct sde_rsc_priv *rsc);
  104. #endif /* _SDE_RSC_HW_H_ */