@@ -205,6 +205,52 @@ static int intel_flipq_exec_time_lines(const struct intel_crtc_state *crtc_state
205205 intel_flipq_exec_time_us (display ));
206206}
207207
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+
208254void intel_flipq_reset (struct intel_display * display , enum pipe pipe )
209255{
210256 struct intel_crtc * crtc = intel_crtc_for_pipe (display , pipe );
0 commit comments