Commit | Line | Data |
---|---|---|
6fa3eb70 S |
1 | /* |
2 | * This confidential and proprietary software may be used only as | |
3 | * authorised by a licensing agreement from ARM Limited | |
02af6beb | 4 | * (C) COPYRIGHT 2012-2015 ARM Limited |
6fa3eb70 S |
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 | ||
11 | /** | |
12 | * @file mali_utgard.h | |
13 | * Defines types and interface exposed by the Mali Utgard device driver | |
14 | */ | |
15 | ||
16 | #ifndef __MALI_UTGARD_H__ | |
17 | #define __MALI_UTGARD_H__ | |
18 | ||
19 | #include "mali_osk_types.h" | |
20 | ||
21 | #define MALI_GPU_NAME_UTGARD "mali-utgard" | |
22 | ||
6fa3eb70 | 23 | |
02af6beb S |
24 | #define MALI_OFFSET_GP 0x00000 |
25 | #define MALI_OFFSET_GP_MMU 0x03000 | |
26 | ||
27 | #define MALI_OFFSET_PP0 0x08000 | |
28 | #define MALI_OFFSET_PP0_MMU 0x04000 | |
29 | #define MALI_OFFSET_PP1 0x0A000 | |
30 | #define MALI_OFFSET_PP1_MMU 0x05000 | |
31 | #define MALI_OFFSET_PP2 0x0C000 | |
32 | #define MALI_OFFSET_PP2_MMU 0x06000 | |
33 | #define MALI_OFFSET_PP3 0x0E000 | |
34 | #define MALI_OFFSET_PP3_MMU 0x07000 | |
35 | ||
36 | #define MALI_OFFSET_PP4 0x28000 | |
37 | #define MALI_OFFSET_PP4_MMU 0x1C000 | |
38 | #define MALI_OFFSET_PP5 0x2A000 | |
39 | #define MALI_OFFSET_PP5_MMU 0x1D000 | |
40 | #define MALI_OFFSET_PP6 0x2C000 | |
41 | #define MALI_OFFSET_PP6_MMU 0x1E000 | |
42 | #define MALI_OFFSET_PP7 0x2E000 | |
43 | #define MALI_OFFSET_PP7_MMU 0x1F000 | |
44 | ||
45 | #define MALI_OFFSET_L2_RESOURCE0 0x01000 | |
46 | #define MALI_OFFSET_L2_RESOURCE1 0x10000 | |
47 | #define MALI_OFFSET_L2_RESOURCE2 0x11000 | |
48 | ||
49 | #define MALI400_OFFSET_L2_CACHE0 MALI_OFFSET_L2_RESOURCE0 | |
50 | #define MALI450_OFFSET_L2_CACHE0 MALI_OFFSET_L2_RESOURCE1 | |
51 | #define MALI450_OFFSET_L2_CACHE1 MALI_OFFSET_L2_RESOURCE0 | |
52 | #define MALI450_OFFSET_L2_CACHE2 MALI_OFFSET_L2_RESOURCE2 | |
53 | #define MALI470_OFFSET_L2_CACHE1 MALI_OFFSET_L2_RESOURCE0 | |
54 | ||
55 | #define MALI_OFFSET_BCAST 0x13000 | |
56 | #define MALI_OFFSET_DLBU 0x14000 | |
57 | ||
58 | #define MALI_OFFSET_PP_BCAST 0x16000 | |
59 | #define MALI_OFFSET_PP_BCAST_MMU 0x15000 | |
60 | ||
61 | #define MALI_OFFSET_PMU 0x02000 | |
62 | #define MALI_OFFSET_DMA 0x12000 | |
6fa3eb70 S |
63 | |
64 | /* Mali-300 */ | |
65 | ||
66 | #define MALI_GPU_RESOURCES_MALI300(base_addr, gp_irq, gp_mmu_irq, pp_irq, pp_mmu_irq) \ | |
67 | MALI_GPU_RESOURCES_MALI400_MP1(base_addr, gp_irq, gp_mmu_irq, pp_irq, pp_mmu_irq) | |
68 | ||
69 | #define MALI_GPU_RESOURCES_MALI300_PMU(base_addr, gp_irq, gp_mmu_irq, pp_irq, pp_mmu_irq) \ | |
70 | MALI_GPU_RESOURCES_MALI400_MP1_PMU(base_addr, gp_irq, gp_mmu_irq, pp_irq, pp_mmu_irq) | |
71 | ||
72 | /* Mali-400 */ | |
73 | ||
74 | #define MALI_GPU_RESOURCES_MALI400_MP1(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq) \ | |
02af6beb S |
75 | MALI_GPU_RESOURCE_L2(base_addr + MALI400_OFFSET_L2_CACHE0) \ |
76 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
77 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) | |
6fa3eb70 S |
78 | |
79 | #define MALI_GPU_RESOURCES_MALI400_MP1_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq) \ | |
80 | MALI_GPU_RESOURCES_MALI400_MP1(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq) \ | |
02af6beb | 81 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) |
6fa3eb70 S |
82 | |
83 | #define MALI_GPU_RESOURCES_MALI400_MP2(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq) \ | |
02af6beb S |
84 | MALI_GPU_RESOURCE_L2(base_addr + MALI400_OFFSET_L2_CACHE0) \ |
85 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
86 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
87 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) | |
6fa3eb70 S |
88 | |
89 | #define MALI_GPU_RESOURCES_MALI400_MP2_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq) \ | |
90 | MALI_GPU_RESOURCES_MALI400_MP2(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq) \ | |
02af6beb | 91 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) |
6fa3eb70 S |
92 | |
93 | #define MALI_GPU_RESOURCES_MALI400_MP3(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq) \ | |
02af6beb S |
94 | MALI_GPU_RESOURCE_L2(base_addr + MALI400_OFFSET_L2_CACHE0) \ |
95 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
96 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
97 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
98 | MALI_GPU_RESOURCE_PP_WITH_MMU(2, base_addr + MALI_OFFSET_PP2, pp2_irq, base_addr + MALI_OFFSET_PP2_MMU, pp2_mmu_irq) | |
6fa3eb70 S |
99 | |
100 | #define MALI_GPU_RESOURCES_MALI400_MP3_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq) \ | |
101 | MALI_GPU_RESOURCES_MALI400_MP3(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq) \ | |
02af6beb | 102 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) |
6fa3eb70 S |
103 | |
104 | #define MALI_GPU_RESOURCES_MALI400_MP4(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq) \ | |
02af6beb S |
105 | MALI_GPU_RESOURCE_L2(base_addr + MALI400_OFFSET_L2_CACHE0) \ |
106 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
107 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
108 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
109 | MALI_GPU_RESOURCE_PP_WITH_MMU(2, base_addr + MALI_OFFSET_PP2, pp2_irq, base_addr + MALI_OFFSET_PP2_MMU, pp2_mmu_irq) \ | |
110 | MALI_GPU_RESOURCE_PP_WITH_MMU(3, base_addr + MALI_OFFSET_PP3, pp3_irq, base_addr + MALI_OFFSET_PP3_MMU, pp3_mmu_irq) | |
6fa3eb70 S |
111 | |
112 | #define MALI_GPU_RESOURCES_MALI400_MP4_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq) \ | |
113 | MALI_GPU_RESOURCES_MALI400_MP4(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq) \ | |
02af6beb | 114 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ |
6fa3eb70 | 115 | |
02af6beb | 116 | /* Mali-450 */ |
6fa3eb70 | 117 | #define MALI_GPU_RESOURCES_MALI450_MP2(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp_bcast_irq) \ |
02af6beb S |
118 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE0) \ |
119 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
120 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE1) \ | |
121 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
122 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
123 | MALI_GPU_RESOURCE_BCAST(base_addr + MALI_OFFSET_BCAST) \ | |
124 | MALI_GPU_RESOURCE_DLBU(base_addr + MALI_OFFSET_DLBU) \ | |
125 | MALI_GPU_RESOURCE_PP_BCAST(base_addr + MALI_OFFSET_PP_BCAST, pp_bcast_irq) \ | |
126 | MALI_GPU_RESOURCE_PP_MMU_BCAST(base_addr + MALI_OFFSET_PP_BCAST_MMU) \ | |
127 | MALI_GPU_RESOURCE_DMA(base_addr + MALI_OFFSET_DMA) | |
6fa3eb70 S |
128 | |
129 | #define MALI_GPU_RESOURCES_MALI450_MP2_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp_bcast_irq) \ | |
130 | MALI_GPU_RESOURCES_MALI450_MP2(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp_bcast_irq) \ | |
02af6beb S |
131 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ |
132 | ||
6fa3eb70 | 133 | #define MALI_GPU_RESOURCES_MALI450_MP3(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp_bcast_irq) \ |
02af6beb S |
134 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE0) \ |
135 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
136 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE1) \ | |
137 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
138 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
139 | MALI_GPU_RESOURCE_PP_WITH_MMU(2, base_addr + MALI_OFFSET_PP2, pp2_irq, base_addr + MALI_OFFSET_PP2_MMU, pp2_mmu_irq) \ | |
140 | MALI_GPU_RESOURCE_BCAST(base_addr + MALI_OFFSET_BCAST) \ | |
141 | MALI_GPU_RESOURCE_DLBU(base_addr + MALI_OFFSET_DLBU) \ | |
142 | MALI_GPU_RESOURCE_PP_BCAST(base_addr + MALI_OFFSET_PP_BCAST, pp_bcast_irq) \ | |
143 | MALI_GPU_RESOURCE_PP_MMU_BCAST(base_addr + MALI_OFFSET_PP_BCAST_MMU) | |
6fa3eb70 S |
144 | |
145 | #define MALI_GPU_RESOURCES_MALI450_MP3_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp_bcast_irq) \ | |
146 | MALI_GPU_RESOURCES_MALI450_MP3(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp_bcast_irq) \ | |
02af6beb S |
147 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ |
148 | ||
6fa3eb70 | 149 | #define MALI_GPU_RESOURCES_MALI450_MP4(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp_bcast_irq) \ |
02af6beb S |
150 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE0) \ |
151 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
152 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE1) \ | |
153 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
154 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
155 | MALI_GPU_RESOURCE_PP_WITH_MMU(2, base_addr + MALI_OFFSET_PP2, pp2_irq, base_addr + MALI_OFFSET_PP2_MMU, pp2_mmu_irq) \ | |
156 | MALI_GPU_RESOURCE_PP_WITH_MMU(3, base_addr + MALI_OFFSET_PP3, pp3_irq, base_addr + MALI_OFFSET_PP3_MMU, pp3_mmu_irq) \ | |
157 | MALI_GPU_RESOURCE_BCAST(base_addr + MALI_OFFSET_BCAST) \ | |
158 | MALI_GPU_RESOURCE_DLBU(base_addr + MALI_OFFSET_DLBU) \ | |
159 | MALI_GPU_RESOURCE_PP_BCAST(base_addr + MALI_OFFSET_PP_BCAST, pp_bcast_irq) \ | |
160 | MALI_GPU_RESOURCE_PP_MMU_BCAST(base_addr + MALI_OFFSET_PP_BCAST_MMU) \ | |
161 | MALI_GPU_RESOURCE_DMA(base_addr + MALI_OFFSET_DMA) | |
6fa3eb70 S |
162 | |
163 | #define MALI_GPU_RESOURCES_MALI450_MP4_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp_bcast_irq) \ | |
164 | MALI_GPU_RESOURCES_MALI450_MP4(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp_bcast_irq) \ | |
02af6beb S |
165 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ |
166 | ||
6fa3eb70 | 167 | #define MALI_GPU_RESOURCES_MALI450_MP6(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp4_irq, pp4_mmu_irq, pp5_irq, pp5_mmu_irq, pp_bcast_irq) \ |
02af6beb S |
168 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE0) \ |
169 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
170 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE1) \ | |
171 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
172 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
173 | MALI_GPU_RESOURCE_PP_WITH_MMU(2, base_addr + MALI_OFFSET_PP2, pp2_irq, base_addr + MALI_OFFSET_PP2_MMU, pp2_mmu_irq) \ | |
174 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE2) \ | |
175 | MALI_GPU_RESOURCE_PP_WITH_MMU(3, base_addr + MALI_OFFSET_PP4, pp3_irq, base_addr + MALI_OFFSET_PP4_MMU, pp3_mmu_irq) \ | |
176 | MALI_GPU_RESOURCE_PP_WITH_MMU(4, base_addr + MALI_OFFSET_PP5, pp4_irq, base_addr + MALI_OFFSET_PP5_MMU, pp4_mmu_irq) \ | |
177 | MALI_GPU_RESOURCE_PP_WITH_MMU(5, base_addr + MALI_OFFSET_PP6, pp5_irq, base_addr + MALI_OFFSET_PP6_MMU, pp5_mmu_irq) \ | |
178 | MALI_GPU_RESOURCE_BCAST(base_addr + MALI_OFFSET_BCAST) \ | |
179 | MALI_GPU_RESOURCE_DLBU(base_addr + MALI_OFFSET_DLBU) \ | |
180 | MALI_GPU_RESOURCE_PP_BCAST(base_addr + MALI_OFFSET_PP_BCAST, pp_bcast_irq) \ | |
181 | MALI_GPU_RESOURCE_PP_MMU_BCAST(base_addr + MALI_OFFSET_PP_BCAST_MMU) \ | |
182 | MALI_GPU_RESOURCE_DMA(base_addr + MALI_OFFSET_DMA) | |
6fa3eb70 S |
183 | |
184 | #define MALI_GPU_RESOURCES_MALI450_MP6_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp4_irq, pp4_mmu_irq, pp5_irq, pp5_mmu_irq, pp_bcast_irq) \ | |
185 | MALI_GPU_RESOURCES_MALI450_MP6(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp4_irq, pp4_mmu_irq, pp5_irq, pp5_mmu_irq, pp_bcast_irq) \ | |
02af6beb S |
186 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ |
187 | ||
6fa3eb70 | 188 | #define MALI_GPU_RESOURCES_MALI450_MP8(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp4_irq, pp4_mmu_irq, pp5_irq, pp5_mmu_irq, pp6_irq, pp6_mmu_irq, pp7_irq, pp7_mmu_irq, pp_bcast_irq) \ |
02af6beb S |
189 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE0) \ |
190 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
191 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE1) \ | |
192 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
193 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
194 | MALI_GPU_RESOURCE_PP_WITH_MMU(2, base_addr + MALI_OFFSET_PP2, pp2_irq, base_addr + MALI_OFFSET_PP2_MMU, pp2_mmu_irq) \ | |
195 | MALI_GPU_RESOURCE_PP_WITH_MMU(3, base_addr + MALI_OFFSET_PP3, pp3_irq, base_addr + MALI_OFFSET_PP3_MMU, pp3_mmu_irq) \ | |
196 | MALI_GPU_RESOURCE_L2(base_addr + MALI450_OFFSET_L2_CACHE2) \ | |
197 | MALI_GPU_RESOURCE_PP_WITH_MMU(4, base_addr + MALI_OFFSET_PP4, pp4_irq, base_addr + MALI_OFFSET_PP4_MMU, pp4_mmu_irq) \ | |
198 | MALI_GPU_RESOURCE_PP_WITH_MMU(5, base_addr + MALI_OFFSET_PP5, pp5_irq, base_addr + MALI_OFFSET_PP5_MMU, pp5_mmu_irq) \ | |
199 | MALI_GPU_RESOURCE_PP_WITH_MMU(6, base_addr + MALI_OFFSET_PP6, pp6_irq, base_addr + MALI_OFFSET_PP6_MMU, pp6_mmu_irq) \ | |
200 | MALI_GPU_RESOURCE_PP_WITH_MMU(7, base_addr + MALI_OFFSET_PP7, pp7_irq, base_addr + MALI_OFFSET_PP7_MMU, pp7_mmu_irq) \ | |
201 | MALI_GPU_RESOURCE_BCAST(base_addr + MALI_OFFSET_BCAST) \ | |
202 | MALI_GPU_RESOURCE_DLBU(base_addr + MALI_OFFSET_DLBU) \ | |
203 | MALI_GPU_RESOURCE_PP_BCAST(base_addr + MALI_OFFSET_PP_BCAST, pp_bcast_irq) \ | |
204 | MALI_GPU_RESOURCE_PP_MMU_BCAST(base_addr + MALI_OFFSET_PP_BCAST_MMU) \ | |
205 | MALI_GPU_RESOURCE_DMA(base_addr + MALI_OFFSET_DMA) | |
6fa3eb70 S |
206 | |
207 | #define MALI_GPU_RESOURCES_MALI450_MP8_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp4_irq, pp4_mmu_irq, pp5_irq, pp5_mmu_irq, pp6_irq, pp6_mmu_irq, pp7_irq, pp7_mmu_irq, pp_bcast_irq) \ | |
208 | MALI_GPU_RESOURCES_MALI450_MP8(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp4_irq, pp4_mmu_irq, pp5_irq, pp5_mmu_irq, pp6_irq, pp6_mmu_irq, pp7_irq, pp7_mmu_irq, pp_bcast_irq) \ | |
02af6beb S |
209 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ |
210 | ||
211 | /* Mali - 470 */ | |
212 | #define MALI_GPU_RESOURCES_MALI470_MP1(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp_bcast_irq) \ | |
213 | MALI_GPU_RESOURCE_L2(base_addr + MALI470_OFFSET_L2_CACHE1) \ | |
214 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
215 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
216 | MALI_GPU_RESOURCE_BCAST(base_addr + MALI_OFFSET_BCAST) \ | |
217 | MALI_GPU_RESOURCE_DLBU(base_addr + MALI_OFFSET_DLBU) \ | |
218 | MALI_GPU_RESOURCE_PP_BCAST(base_addr + MALI_OFFSET_PP_BCAST, pp_bcast_irq) \ | |
219 | MALI_GPU_RESOURCE_PP_MMU_BCAST(base_addr + MALI_OFFSET_PP_BCAST_MMU) | |
220 | ||
221 | #define MALI_GPU_RESOURCES_MALI470_MP1_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp_bcast_irq) \ | |
222 | MALI_GPU_RESOURCES_MALI470_MP1(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp_bcast_irq) \ | |
223 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ | |
224 | ||
225 | #define MALI_GPU_RESOURCES_MALI470_MP2(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp_bcast_irq) \ | |
226 | MALI_GPU_RESOURCE_L2(base_addr + MALI470_OFFSET_L2_CACHE1) \ | |
227 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
228 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
229 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
230 | MALI_GPU_RESOURCE_BCAST(base_addr + MALI_OFFSET_BCAST) \ | |
231 | MALI_GPU_RESOURCE_DLBU(base_addr + MALI_OFFSET_DLBU) \ | |
232 | MALI_GPU_RESOURCE_PP_BCAST(base_addr + MALI_OFFSET_PP_BCAST, pp_bcast_irq) \ | |
233 | MALI_GPU_RESOURCE_PP_MMU_BCAST(base_addr + MALI_OFFSET_PP_BCAST_MMU) | |
234 | ||
235 | #define MALI_GPU_RESOURCES_MALI470_MP2_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp_bcast_irq) \ | |
236 | MALI_GPU_RESOURCES_MALI470_MP2(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp_bcast_irq) \ | |
237 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ | |
238 | ||
239 | #define MALI_GPU_RESOURCES_MALI470_MP3(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp_bcast_irq) \ | |
240 | MALI_GPU_RESOURCE_L2(base_addr + MALI470_OFFSET_L2_CACHE1) \ | |
241 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
242 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
243 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
244 | MALI_GPU_RESOURCE_PP_WITH_MMU(2, base_addr + MALI_OFFSET_PP2, pp2_irq, base_addr + MALI_OFFSET_PP2_MMU, pp2_mmu_irq) \ | |
245 | MALI_GPU_RESOURCE_BCAST(base_addr + MALI_OFFSET_BCAST) \ | |
246 | MALI_GPU_RESOURCE_DLBU(base_addr + MALI_OFFSET_DLBU) \ | |
247 | MALI_GPU_RESOURCE_PP_BCAST(base_addr + MALI_OFFSET_PP_BCAST, pp_bcast_irq) \ | |
248 | MALI_GPU_RESOURCE_PP_MMU_BCAST(base_addr + MALI_OFFSET_PP_BCAST_MMU) | |
249 | ||
250 | #define MALI_GPU_RESOURCES_MALI470_MP3_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp_bcast_irq) \ | |
251 | MALI_GPU_RESOURCES_MALI470_MP3(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp_bcast_irq) \ | |
252 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ | |
253 | ||
254 | #define MALI_GPU_RESOURCES_MALI470_MP4(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp_bcast_irq) \ | |
255 | MALI_GPU_RESOURCE_L2(base_addr + MALI470_OFFSET_L2_CACHE1) \ | |
256 | MALI_GPU_RESOURCE_GP_WITH_MMU(base_addr + MALI_OFFSET_GP, gp_irq, base_addr + MALI_OFFSET_GP_MMU, gp_mmu_irq) \ | |
257 | MALI_GPU_RESOURCE_PP_WITH_MMU(0, base_addr + MALI_OFFSET_PP0, pp0_irq, base_addr + MALI_OFFSET_PP0_MMU, pp0_mmu_irq) \ | |
258 | MALI_GPU_RESOURCE_PP_WITH_MMU(1, base_addr + MALI_OFFSET_PP1, pp1_irq, base_addr + MALI_OFFSET_PP1_MMU, pp1_mmu_irq) \ | |
259 | MALI_GPU_RESOURCE_PP_WITH_MMU(2, base_addr + MALI_OFFSET_PP2, pp2_irq, base_addr + MALI_OFFSET_PP2_MMU, pp2_mmu_irq) \ | |
260 | MALI_GPU_RESOURCE_PP_WITH_MMU(3, base_addr + MALI_OFFSET_PP3, pp3_irq, base_addr + MALI_OFFSET_PP3_MMU, pp3_mmu_irq) \ | |
261 | MALI_GPU_RESOURCE_BCAST(base_addr + MALI_OFFSET_BCAST) \ | |
262 | MALI_GPU_RESOURCE_DLBU(base_addr + MALI_OFFSET_DLBU) \ | |
263 | MALI_GPU_RESOURCE_PP_BCAST(base_addr + MALI_OFFSET_PP_BCAST, pp_bcast_irq) \ | |
264 | MALI_GPU_RESOURCE_PP_MMU_BCAST(base_addr + MALI_OFFSET_PP_BCAST_MMU) | |
265 | ||
266 | #define MALI_GPU_RESOURCES_MALI470_MP4_PMU(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp_bcast_irq) \ | |
267 | MALI_GPU_RESOURCES_MALI470_MP4(base_addr, gp_irq, gp_mmu_irq, pp0_irq, pp0_mmu_irq, pp1_irq, pp1_mmu_irq, pp2_irq, pp2_mmu_irq, pp3_irq, pp3_mmu_irq, pp_bcast_irq) \ | |
268 | MALI_GPU_RESOURCE_PMU(base_addr + MALI_OFFSET_PMU) \ | |
269 | ||
6fa3eb70 S |
270 | #define MALI_GPU_RESOURCE_L2(addr) \ |
271 | { \ | |
272 | .name = "Mali_L2", \ | |
02af6beb S |
273 | .flags = IORESOURCE_MEM, \ |
274 | .start = addr, \ | |
275 | .end = addr + 0x200, \ | |
6fa3eb70 S |
276 | }, |
277 | ||
278 | #define MALI_GPU_RESOURCE_GP(gp_addr, gp_irq) \ | |
279 | { \ | |
280 | .name = "Mali_GP", \ | |
02af6beb S |
281 | .flags = IORESOURCE_MEM, \ |
282 | .start = gp_addr, \ | |
283 | .end = gp_addr + 0x100, \ | |
6fa3eb70 S |
284 | }, \ |
285 | { \ | |
286 | .name = "Mali_GP_IRQ", \ | |
02af6beb S |
287 | .flags = IORESOURCE_IRQ, \ |
288 | .start = gp_irq, \ | |
289 | .end = gp_irq, \ | |
6fa3eb70 | 290 | }, \ |
02af6beb | 291 | |
6fa3eb70 S |
292 | #define MALI_GPU_RESOURCE_GP_WITH_MMU(gp_addr, gp_irq, gp_mmu_addr, gp_mmu_irq) \ |
293 | { \ | |
294 | .name = "Mali_GP", \ | |
02af6beb S |
295 | .flags = IORESOURCE_MEM, \ |
296 | .start = gp_addr, \ | |
297 | .end = gp_addr + 0x100, \ | |
6fa3eb70 S |
298 | }, \ |
299 | { \ | |
300 | .name = "Mali_GP_IRQ", \ | |
02af6beb S |
301 | .flags = IORESOURCE_IRQ, \ |
302 | .start = gp_irq, \ | |
303 | .end = gp_irq, \ | |
6fa3eb70 S |
304 | }, \ |
305 | { \ | |
306 | .name = "Mali_GP_MMU", \ | |
02af6beb S |
307 | .flags = IORESOURCE_MEM, \ |
308 | .start = gp_mmu_addr, \ | |
309 | .end = gp_mmu_addr + 0x100, \ | |
6fa3eb70 S |
310 | }, \ |
311 | { \ | |
312 | .name = "Mali_GP_MMU_IRQ", \ | |
02af6beb S |
313 | .flags = IORESOURCE_IRQ, \ |
314 | .start = gp_mmu_irq, \ | |
315 | .end = gp_mmu_irq, \ | |
6fa3eb70 S |
316 | }, |
317 | ||
318 | #define MALI_GPU_RESOURCE_PP(pp_addr, pp_irq) \ | |
319 | { \ | |
320 | .name = "Mali_PP", \ | |
02af6beb S |
321 | .flags = IORESOURCE_MEM, \ |
322 | .start = pp_addr, \ | |
323 | .end = pp_addr + 0x1100, \ | |
6fa3eb70 S |
324 | }, \ |
325 | { \ | |
326 | .name = "Mali_PP_IRQ", \ | |
02af6beb S |
327 | .flags = IORESOURCE_IRQ, \ |
328 | .start = pp_irq, \ | |
329 | .end = pp_irq, \ | |
6fa3eb70 | 330 | }, \ |
02af6beb | 331 | |
6fa3eb70 S |
332 | #define MALI_GPU_RESOURCE_PP_WITH_MMU(id, pp_addr, pp_irq, pp_mmu_addr, pp_mmu_irq) \ |
333 | { \ | |
334 | .name = "Mali_PP" #id, \ | |
02af6beb S |
335 | .flags = IORESOURCE_MEM, \ |
336 | .start = pp_addr, \ | |
337 | .end = pp_addr + 0x1100, \ | |
6fa3eb70 S |
338 | }, \ |
339 | { \ | |
340 | .name = "Mali_PP" #id "_IRQ", \ | |
02af6beb S |
341 | .flags = IORESOURCE_IRQ, \ |
342 | .start = pp_irq, \ | |
343 | .end = pp_irq, \ | |
6fa3eb70 S |
344 | }, \ |
345 | { \ | |
346 | .name = "Mali_PP" #id "_MMU", \ | |
02af6beb S |
347 | .flags = IORESOURCE_MEM, \ |
348 | .start = pp_mmu_addr, \ | |
349 | .end = pp_mmu_addr + 0x100, \ | |
6fa3eb70 S |
350 | }, \ |
351 | { \ | |
352 | .name = "Mali_PP" #id "_MMU_IRQ", \ | |
02af6beb S |
353 | .flags = IORESOURCE_IRQ, \ |
354 | .start = pp_mmu_irq, \ | |
355 | .end = pp_mmu_irq, \ | |
6fa3eb70 S |
356 | }, |
357 | ||
358 | #define MALI_GPU_RESOURCE_MMU(mmu_addr, mmu_irq) \ | |
359 | { \ | |
360 | .name = "Mali_MMU", \ | |
02af6beb S |
361 | .flags = IORESOURCE_MEM, \ |
362 | .start = mmu_addr, \ | |
363 | .end = mmu_addr + 0x100, \ | |
6fa3eb70 S |
364 | }, \ |
365 | { \ | |
366 | .name = "Mali_MMU_IRQ", \ | |
02af6beb S |
367 | .flags = IORESOURCE_IRQ, \ |
368 | .start = mmu_irq, \ | |
369 | .end = mmu_irq, \ | |
6fa3eb70 S |
370 | }, |
371 | ||
372 | #define MALI_GPU_RESOURCE_PMU(pmu_addr) \ | |
373 | { \ | |
374 | .name = "Mali_PMU", \ | |
02af6beb S |
375 | .flags = IORESOURCE_MEM, \ |
376 | .start = pmu_addr, \ | |
377 | .end = pmu_addr + 0x100, \ | |
6fa3eb70 S |
378 | }, |
379 | ||
380 | #define MALI_GPU_RESOURCE_DMA(dma_addr) \ | |
381 | { \ | |
382 | .name = "Mali_DMA", \ | |
02af6beb S |
383 | .flags = IORESOURCE_MEM, \ |
384 | .start = dma_addr, \ | |
385 | .end = dma_addr + 0x100, \ | |
6fa3eb70 S |
386 | }, |
387 | ||
388 | #define MALI_GPU_RESOURCE_DLBU(dlbu_addr) \ | |
389 | { \ | |
390 | .name = "Mali_DLBU", \ | |
02af6beb S |
391 | .flags = IORESOURCE_MEM, \ |
392 | .start = dlbu_addr, \ | |
393 | .end = dlbu_addr + 0x100, \ | |
6fa3eb70 S |
394 | }, |
395 | ||
396 | #define MALI_GPU_RESOURCE_BCAST(bcast_addr) \ | |
397 | { \ | |
398 | .name = "Mali_Broadcast", \ | |
02af6beb S |
399 | .flags = IORESOURCE_MEM, \ |
400 | .start = bcast_addr, \ | |
401 | .end = bcast_addr + 0x100, \ | |
6fa3eb70 S |
402 | }, |
403 | ||
404 | #define MALI_GPU_RESOURCE_PP_BCAST(pp_addr, pp_irq) \ | |
405 | { \ | |
406 | .name = "Mali_PP_Broadcast", \ | |
02af6beb S |
407 | .flags = IORESOURCE_MEM, \ |
408 | .start = pp_addr, \ | |
409 | .end = pp_addr + 0x1100, \ | |
6fa3eb70 S |
410 | }, \ |
411 | { \ | |
412 | .name = "Mali_PP_Broadcast_IRQ", \ | |
02af6beb S |
413 | .flags = IORESOURCE_IRQ, \ |
414 | .start = pp_irq, \ | |
415 | .end = pp_irq, \ | |
6fa3eb70 | 416 | }, \ |
02af6beb | 417 | |
6fa3eb70 S |
418 | #define MALI_GPU_RESOURCE_PP_MMU_BCAST(pp_mmu_bcast_addr) \ |
419 | { \ | |
420 | .name = "Mali_PP_MMU_Broadcast", \ | |
02af6beb S |
421 | .flags = IORESOURCE_MEM, \ |
422 | .start = pp_mmu_bcast_addr, \ | |
423 | .end = pp_mmu_bcast_addr + 0x100, \ | |
6fa3eb70 S |
424 | }, |
425 | ||
02af6beb S |
426 | struct mali_gpu_utilization_data { |
427 | unsigned int utilization_gpu; /* Utilization for GP and all PP cores combined, 0 = no utilization, 256 = full utilization */ | |
428 | unsigned int utilization_gp; /* Utilization for GP core only, 0 = no utilization, 256 = full utilization */ | |
429 | unsigned int utilization_pp; /* Utilization for all PP cores combined, 0 = no utilization, 256 = full utilization */ | |
430 | }; | |
431 | ||
432 | struct mali_gpu_clk_item { | |
433 | unsigned int clock; /* unit(MHz) */ | |
434 | unsigned int vol; | |
435 | }; | |
436 | ||
437 | struct mali_gpu_clock { | |
438 | struct mali_gpu_clk_item *item; | |
439 | unsigned int num_of_steps; | |
440 | }; | |
441 | ||
442 | struct mali_gpu_device_data { | |
443 | /* Shared GPU memory */ | |
444 | unsigned long shared_mem_size; | |
445 | ||
446 | /* | |
447 | * Mali PMU switch delay. | |
448 | * Only needed if the power gates are connected to the PMU in a high fanout | |
449 | * network. This value is the number of Mali clock cycles it takes to | |
450 | * enable the power gates and turn on the power mesh. | |
451 | * This value will have no effect if a daisy chain implementation is used. | |
452 | */ | |
453 | u32 pmu_switch_delay; | |
454 | ||
455 | /* Mali Dynamic power domain configuration in sequence from 0-11 | |
456 | * GP PP0 PP1 PP2 PP3 PP4 PP5 PP6 PP7, L2$0 L2$1 L2$2 | |
457 | */ | |
458 | u16 pmu_domain_config[12]; | |
459 | ||
460 | /* Dedicated GPU memory range (physical). */ | |
461 | unsigned long dedicated_mem_start; | |
462 | unsigned long dedicated_mem_size; | |
463 | ||
464 | /* Frame buffer memory to be accessible by Mali GPU (physical) */ | |
465 | unsigned long fb_start; | |
466 | unsigned long fb_size; | |
467 | ||
468 | /* Max runtime [ms] for jobs */ | |
469 | int max_job_runtime; | |
470 | ||
471 | /* Report GPU utilization and related control in this interval (specified in ms) */ | |
472 | unsigned long control_interval; | |
473 | ||
474 | /* Function that will receive periodic GPU utilization numbers */ | |
475 | void (*utilization_callback)(struct mali_gpu_utilization_data *data); | |
476 | ||
477 | /* Fuction that platform callback for freq setting, needed when CONFIG_MALI_DVFS enabled */ | |
478 | int (*set_freq)(int setting_clock_step); | |
479 | /* Function that platfrom report it's clock info which driver can set, needed when CONFIG_MALI_DVFS enabled */ | |
480 | void (*get_clock_info)(struct mali_gpu_clock **data); | |
481 | /* Function that get the current clock info, needed when CONFIG_MALI_DVFS enabled */ | |
482 | int (*get_freq)(void); | |
483 | }; | |
484 | ||
485 | /** | |
486 | * Pause the scheduling and power state changes of Mali device driver. | |
487 | * mali_dev_resume() must always be called as soon as possible after this function | |
488 | * in order to resume normal operation of the Mali driver. | |
6fa3eb70 | 489 | */ |
02af6beb | 490 | void mali_dev_pause(void); |
6fa3eb70 | 491 | |
02af6beb S |
492 | /** |
493 | * Resume scheduling and allow power changes in Mali device driver. | |
494 | * This must always be called after mali_dev_pause(). | |
6fa3eb70 | 495 | */ |
02af6beb S |
496 | void mali_dev_resume(void); |
497 | ||
498 | /** @brief Set the desired number of PP cores to use. | |
499 | * | |
500 | * The internal Mali PMU will be used, if present, to physically power off the PP cores. | |
501 | * | |
502 | * @param num_cores The number of desired cores | |
503 | * @return 0 on success, otherwise error. -EINVAL means an invalid number of cores was specified. | |
504 | */ | |
505 | int mali_perf_set_num_pp_cores(unsigned int num_cores); | |
6fa3eb70 S |
506 | |
507 | #endif |