mali_200_regs.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /*
  2. * This confidential and proprietary software may be used only as
  3. * authorised by a licensing agreement from ARM Limited
  4. * (C) COPYRIGHT 2007-2010, 2012-2013 ARM Limited
  5. * ALL RIGHTS RESERVED
  6. * The entire notice above must be reproduced on all authorised
  7. * copies and copies may only be made to the extent permitted
  8. * by a licensing agreement from ARM Limited.
  9. */
  10. #ifndef _MALI200_REGS_H_
  11. #define _MALI200_REGS_H_
  12. /**
  13. * Enum for management register addresses.
  14. */
  15. enum mali200_mgmt_reg {
  16. MALI200_REG_ADDR_MGMT_VERSION = 0x1000,
  17. MALI200_REG_ADDR_MGMT_CURRENT_REND_LIST_ADDR = 0x1004,
  18. MALI200_REG_ADDR_MGMT_STATUS = 0x1008,
  19. MALI200_REG_ADDR_MGMT_CTRL_MGMT = 0x100c,
  20. MALI200_REG_ADDR_MGMT_INT_RAWSTAT = 0x1020,
  21. MALI200_REG_ADDR_MGMT_INT_CLEAR = 0x1024,
  22. MALI200_REG_ADDR_MGMT_INT_MASK = 0x1028,
  23. MALI200_REG_ADDR_MGMT_INT_STATUS = 0x102c,
  24. MALI200_REG_ADDR_MGMT_WRITE_BOUNDARY_LOW = 0x1044,
  25. MALI200_REG_ADDR_MGMT_BUS_ERROR_STATUS = 0x1050,
  26. MALI200_REG_ADDR_MGMT_PERF_CNT_0_ENABLE = 0x1080,
  27. MALI200_REG_ADDR_MGMT_PERF_CNT_0_SRC = 0x1084,
  28. MALI200_REG_ADDR_MGMT_PERF_CNT_0_VALUE = 0x108c,
  29. MALI200_REG_ADDR_MGMT_PERF_CNT_1_ENABLE = 0x10a0,
  30. MALI200_REG_ADDR_MGMT_PERF_CNT_1_SRC = 0x10a4,
  31. MALI200_REG_ADDR_MGMT_PERF_CNT_1_VALUE = 0x10ac,
  32. MALI200_REG_ADDR_MGMT_PERFMON_CONTR = 0x10b0,
  33. MALI200_REG_ADDR_MGMT_PERFMON_BASE = 0x10b4,
  34. MALI200_REG_SIZEOF_REGISTER_BANK = 0x10f0
  35. };
  36. #define MALI200_REG_VAL_PERF_CNT_ENABLE 1
  37. enum mali200_mgmt_ctrl_mgmt {
  38. MALI200_REG_VAL_CTRL_MGMT_STOP_BUS = (1<<0),
  39. MALI200_REG_VAL_CTRL_MGMT_FLUSH_CACHES = (1<<3),
  40. MALI200_REG_VAL_CTRL_MGMT_FORCE_RESET = (1<<5),
  41. MALI200_REG_VAL_CTRL_MGMT_START_RENDERING = (1<<6),
  42. MALI400PP_REG_VAL_CTRL_MGMT_SOFT_RESET = (1<<7), /* Only valid for Mali-300 and later */
  43. };
  44. enum mali200_mgmt_irq {
  45. MALI200_REG_VAL_IRQ_END_OF_FRAME = (1<<0),
  46. MALI200_REG_VAL_IRQ_END_OF_TILE = (1<<1),
  47. MALI200_REG_VAL_IRQ_HANG = (1<<2),
  48. MALI200_REG_VAL_IRQ_FORCE_HANG = (1<<3),
  49. MALI200_REG_VAL_IRQ_BUS_ERROR = (1<<4),
  50. MALI200_REG_VAL_IRQ_BUS_STOP = (1<<5),
  51. MALI200_REG_VAL_IRQ_CNT_0_LIMIT = (1<<6),
  52. MALI200_REG_VAL_IRQ_CNT_1_LIMIT = (1<<7),
  53. MALI200_REG_VAL_IRQ_WRITE_BOUNDARY_ERROR = (1<<8),
  54. MALI400PP_REG_VAL_IRQ_INVALID_PLIST_COMMAND = (1<<9),
  55. MALI400PP_REG_VAL_IRQ_CALL_STACK_UNDERFLOW = (1<<10),
  56. MALI400PP_REG_VAL_IRQ_CALL_STACK_OVERFLOW = (1<<11),
  57. MALI400PP_REG_VAL_IRQ_RESET_COMPLETED = (1<<12),
  58. };
  59. #define MALI200_REG_VAL_IRQ_MASK_ALL ((enum mali200_mgmt_irq) (\
  60. MALI200_REG_VAL_IRQ_END_OF_FRAME |\
  61. MALI200_REG_VAL_IRQ_END_OF_TILE |\
  62. MALI200_REG_VAL_IRQ_HANG |\
  63. MALI200_REG_VAL_IRQ_FORCE_HANG |\
  64. MALI200_REG_VAL_IRQ_BUS_ERROR |\
  65. MALI200_REG_VAL_IRQ_BUS_STOP |\
  66. MALI200_REG_VAL_IRQ_CNT_0_LIMIT |\
  67. MALI200_REG_VAL_IRQ_CNT_1_LIMIT |\
  68. MALI200_REG_VAL_IRQ_WRITE_BOUNDARY_ERROR |\
  69. MALI400PP_REG_VAL_IRQ_INVALID_PLIST_COMMAND |\
  70. MALI400PP_REG_VAL_IRQ_CALL_STACK_UNDERFLOW |\
  71. MALI400PP_REG_VAL_IRQ_CALL_STACK_OVERFLOW |\
  72. MALI400PP_REG_VAL_IRQ_RESET_COMPLETED))
  73. #define MALI200_REG_VAL_IRQ_MASK_USED ((enum mali200_mgmt_irq) (\
  74. MALI200_REG_VAL_IRQ_END_OF_FRAME |\
  75. MALI200_REG_VAL_IRQ_FORCE_HANG |\
  76. MALI200_REG_VAL_IRQ_BUS_ERROR |\
  77. MALI200_REG_VAL_IRQ_WRITE_BOUNDARY_ERROR |\
  78. MALI400PP_REG_VAL_IRQ_INVALID_PLIST_COMMAND |\
  79. MALI400PP_REG_VAL_IRQ_CALL_STACK_UNDERFLOW |\
  80. MALI400PP_REG_VAL_IRQ_CALL_STACK_OVERFLOW))
  81. #define MALI200_REG_VAL_IRQ_MASK_NONE ((enum mali200_mgmt_irq)(0))
  82. enum mali200_mgmt_status {
  83. MALI200_REG_VAL_STATUS_RENDERING_ACTIVE = (1<<0),
  84. MALI200_REG_VAL_STATUS_BUS_STOPPED = (1<<4),
  85. };
  86. enum mali200_render_unit {
  87. MALI200_REG_ADDR_FRAME = 0x0000,
  88. MALI200_REG_ADDR_RSW = 0x0004,
  89. MALI200_REG_ADDR_STACK = 0x0030,
  90. MALI200_REG_ADDR_STACK_SIZE = 0x0034,
  91. MALI200_REG_ADDR_ORIGIN_OFFSET_X = 0x0040
  92. };
  93. enum mali200_wb_unit {
  94. MALI200_REG_ADDR_WB0 = 0x0100,
  95. MALI200_REG_ADDR_WB1 = 0x0200,
  96. MALI200_REG_ADDR_WB2 = 0x0300
  97. };
  98. enum mali200_wb_unit_regs {
  99. MALI200_REG_ADDR_WB_SOURCE_SELECT = 0x0000,
  100. MALI200_REG_ADDR_WB_SOURCE_ADDR = 0x0004,
  101. };
  102. /* This should be in the top 16 bit of the version register of Mali PP */
  103. #define MALI200_PP_PRODUCT_ID 0xC807
  104. #define MALI300_PP_PRODUCT_ID 0xCE07
  105. #define MALI400_PP_PRODUCT_ID 0xCD07
  106. #define MALI450_PP_PRODUCT_ID 0xCF07
  107. #define MALI470_PP_PRODUCT_ID 0xCF08
  108. #endif /* _MALI200_REGS_H_ */