forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-04 1543e317f1da31b75942316931e8f491a8920811
kernel/drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c
....@@ -23,6 +23,8 @@
2323 *
2424 */
2525
26
+#include <linux/slab.h>
27
+
2628 #include "dm_services.h"
2729
2830 #include "include/logger_interface.h"
....@@ -36,7 +38,7 @@
3638
3739 #include "irq_service_dcn10.h"
3840
39
-#include "ivsrcid/irqsrcs_dcn_1_0.h"
41
+#include "ivsrcid/dcn/irqsrcs_dcn_1_0.h"
4042
4143 enum dc_irq_source to_dal_irq_source_dcn10(
4244 struct irq_service *irq_service,
....@@ -56,6 +58,18 @@
5658 return DC_IRQ_SOURCE_VBLANK5;
5759 case DCN_1_0__SRCID__DC_D6_OTG_VSTARTUP:
5860 return DC_IRQ_SOURCE_VBLANK6;
61
+ case DCN_1_0__SRCID__OTG0_IHC_V_UPDATE_NO_LOCK_INTERRUPT:
62
+ return DC_IRQ_SOURCE_VUPDATE1;
63
+ case DCN_1_0__SRCID__OTG1_IHC_V_UPDATE_NO_LOCK_INTERRUPT:
64
+ return DC_IRQ_SOURCE_VUPDATE2;
65
+ case DCN_1_0__SRCID__OTG2_IHC_V_UPDATE_NO_LOCK_INTERRUPT:
66
+ return DC_IRQ_SOURCE_VUPDATE3;
67
+ case DCN_1_0__SRCID__OTG3_IHC_V_UPDATE_NO_LOCK_INTERRUPT:
68
+ return DC_IRQ_SOURCE_VUPDATE4;
69
+ case DCN_1_0__SRCID__OTG4_IHC_V_UPDATE_NO_LOCK_INTERRUPT:
70
+ return DC_IRQ_SOURCE_VUPDATE5;
71
+ case DCN_1_0__SRCID__OTG5_IHC_V_UPDATE_NO_LOCK_INTERRUPT:
72
+ return DC_IRQ_SOURCE_VUPDATE6;
5973 case DCN_1_0__SRCID__HUBP0_FLIP_INTERRUPT:
6074 return DC_IRQ_SOURCE_PFLIP1;
6175 case DCN_1_0__SRCID__HUBP1_FLIP_INTERRUPT:
....@@ -153,6 +167,11 @@
153167 .ack = NULL
154168 };
155169
170
+static const struct irq_source_info_funcs vupdate_no_lock_irq_info_funcs = {
171
+ .set = NULL,
172
+ .ack = NULL
173
+};
174
+
156175 #define BASE_INNER(seg) \
157176 DCE_BASE__INST0_SEG ## seg
158177
....@@ -203,12 +222,15 @@
203222 .funcs = &pflip_irq_info_funcs\
204223 }
205224
206
-#define vupdate_int_entry(reg_num)\
225
+/* vupdate_no_lock_int_entry maps to DC_IRQ_SOURCE_VUPDATEx, to match semantic
226
+ * of DCE's DC_IRQ_SOURCE_VUPDATEx.
227
+ */
228
+#define vupdate_no_lock_int_entry(reg_num)\
207229 [DC_IRQ_SOURCE_VUPDATE1 + reg_num] = {\
208230 IRQ_REG_ENTRY(OTG, reg_num,\
209
- OTG_GLOBAL_SYNC_STATUS, VUPDATE_INT_EN,\
210
- OTG_GLOBAL_SYNC_STATUS, VUPDATE_EVENT_CLEAR),\
211
- .funcs = &vblank_irq_info_funcs\
231
+ OTG_GLOBAL_SYNC_STATUS, VUPDATE_NO_LOCK_INT_EN,\
232
+ OTG_GLOBAL_SYNC_STATUS, VUPDATE_NO_LOCK_EVENT_CLEAR),\
233
+ .funcs = &vupdate_no_lock_irq_info_funcs\
212234 }
213235
214236 #define vblank_int_entry(reg_num)\
....@@ -315,12 +337,12 @@
315337 dc_underflow_int_entry(6),
316338 [DC_IRQ_SOURCE_DMCU_SCP] = dummy_irq_entry(),
317339 [DC_IRQ_SOURCE_VBIOS_SW] = dummy_irq_entry(),
318
- vupdate_int_entry(0),
319
- vupdate_int_entry(1),
320
- vupdate_int_entry(2),
321
- vupdate_int_entry(3),
322
- vupdate_int_entry(4),
323
- vupdate_int_entry(5),
340
+ vupdate_no_lock_int_entry(0),
341
+ vupdate_no_lock_int_entry(1),
342
+ vupdate_no_lock_int_entry(2),
343
+ vupdate_no_lock_int_entry(3),
344
+ vupdate_no_lock_int_entry(4),
345
+ vupdate_no_lock_int_entry(5),
324346 vblank_int_entry(0),
325347 vblank_int_entry(1),
326348 vblank_int_entry(2),
....@@ -333,7 +355,7 @@
333355 .to_dal_irq_source = to_dal_irq_source_dcn10
334356 };
335357
336
-static void construct(
358
+static void dcn10_irq_construct(
337359 struct irq_service *irq_service,
338360 struct irq_service_init_data *init_data)
339361 {
....@@ -352,6 +374,6 @@
352374 if (!irq_service)
353375 return NULL;
354376
355
- construct(irq_service, init_data);
377
+ dcn10_irq_construct(irq_service, init_data);
356378 return irq_service;
357379 }