@@ -205,6 +205,52 @@ static int intel_flipq_exec_time_lines(const struct intel_crtc_state *crtc_state
205
205
intel_flipq_exec_time_us (display ));
206
206
}
207
207
208
+ void intel_flipq_dump (struct intel_crtc * crtc ,
209
+ enum intel_flipq_id flipq_id )
210
+ {
211
+ struct intel_display * display = to_intel_display (crtc );
212
+ struct intel_flipq * flipq = & crtc -> flipq [flipq_id ];
213
+ u32 tmp ;
214
+
215
+ drm_dbg_kms (display -> drm ,
216
+ "[CRTC:%d:%s] FQ %d @ 0x%x: " ,
217
+ crtc -> base .base .id , crtc -> base .name , flipq_id ,
218
+ flipq -> start_mmioaddr );
219
+ for (int i = 0 ; i < intel_flipq_size_dw (flipq_id ); i ++ ) {
220
+ printk (KERN_CONT " 0x%08x" ,
221
+ intel_de_read (display , PIPEDMC_FQ_RAM (flipq -> start_mmioaddr , i )));
222
+ if (i % intel_flipq_elem_size_dw (flipq_id ) == intel_flipq_elem_size_dw (flipq_id ) - 1 )
223
+ printk (KERN_CONT "\n" );
224
+ }
225
+
226
+ drm_dbg_kms (display -> drm ,
227
+ "[CRTC:%d:%s] FQ %d: chp=0x%x, hp=0x%x\n" ,
228
+ crtc -> base .base .id , crtc -> base .name , flipq_id ,
229
+ intel_de_read (display , PIPEDMC_FPQ_CHP (crtc -> pipe , flipq_id )),
230
+ intel_de_read (display , PIPEDMC_FPQ_HP (crtc -> pipe , flipq_id )));
231
+
232
+ drm_dbg_kms (display -> drm ,
233
+ "[CRTC:%d:%s] FQ %d: current head %d\n" ,
234
+ crtc -> base .base .id , crtc -> base .name , flipq_id ,
235
+ intel_flipq_current_head (crtc , flipq_id ));
236
+
237
+ drm_dbg_kms (display -> drm ,
238
+ "[CRTC:%d:%s] flip queue timestamp: 0x%x\n" ,
239
+ crtc -> base .base .id , crtc -> base .name ,
240
+ intel_de_read (display , PIPEDMC_FPQ_TS (crtc -> pipe )));
241
+
242
+ tmp = intel_de_read (display , PIPEDMC_FPQ_ATOMIC_TP (crtc -> pipe ));
243
+
244
+ drm_dbg_kms (display -> drm ,
245
+ "[CRTC:%d:%s] flip queue atomic tails: P3 %d, P2 %d, P1 %d, G %d, F %d\n" ,
246
+ crtc -> base .base .id , crtc -> base .name ,
247
+ REG_FIELD_GET (PIPEDMC_FPQ_PLANEQ_3_TP_MASK , tmp ),
248
+ REG_FIELD_GET (PIPEDMC_FPQ_PLANEQ_2_TP_MASK , tmp ),
249
+ REG_FIELD_GET (PIPEDMC_FPQ_PLANEQ_1_TP_MASK , tmp ),
250
+ REG_FIELD_GET (PIPEDMC_FPQ_GENERALQ_TP_MASK , tmp ),
251
+ REG_FIELD_GET (PIPEDMC_FPQ_FASTQ_TP_MASK , tmp ));
252
+ }
253
+
208
254
void intel_flipq_reset (struct intel_display * display , enum pipe pipe )
209
255
{
210
256
struct intel_crtc * crtc = intel_crtc_for_pipe (display , pipe );
0 commit comments