Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac2300d4 authored by Damien Lespiau's avatar Damien Lespiau Committed by Daniel Vetter
Browse files

drm/i915: Sample the frame counter instead of a timestamp for CRCs

parent b2c88f5b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1748,14 +1748,14 @@ static int i915_pipe_crc(struct seq_file *m, void *data)
		return 0;
	}

	seq_puts(m, " timestamp     CRC1     CRC2     CRC3     CRC4     CRC5\n");
	seq_puts(m, "  frame    CRC1     CRC2     CRC3     CRC4     CRC5\n");
	head = atomic_read(&pipe_crc->head);
	tail = atomic_read(&pipe_crc->tail);

	while (CIRC_CNT(head, tail, INTEL_PIPE_CRC_ENTRIES_NR) >= 1) {
		struct intel_pipe_crc_entry *entry = &pipe_crc->entries[tail];

		seq_printf(m, "%12u %8x %8x %8x %8x %8x\n", entry->timestamp,
		seq_printf(m, "%8u %8x %8x %8x %8x %8x\n", entry->frame,
			   entry->crc[0], entry->crc[1], entry->crc[2],
			   entry->crc[3], entry->crc[4]);

+1 −1
Original line number Diff line number Diff line
@@ -1226,7 +1226,7 @@ enum intel_pipe_crc_source {
};

struct intel_pipe_crc_entry {
	uint32_t timestamp;
	uint32_t frame;
	uint32_t crc[5];
};

+2 −6
Original line number Diff line number Diff line
@@ -1195,8 +1195,7 @@ static void ivb_pipe_crc_update(struct drm_device *dev, enum pipe pipe)
	struct drm_i915_private *dev_priv = dev->dev_private;
	struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[pipe];
	struct intel_pipe_crc_entry *entry;
	ktime_t now;
	int ts, head, tail;
	int head, tail;

	head = atomic_read(&pipe_crc->head);
	tail = atomic_read(&pipe_crc->tail);
@@ -1208,10 +1207,7 @@ static void ivb_pipe_crc_update(struct drm_device *dev, enum pipe pipe)

	entry = &pipe_crc->entries[head];

	now = ktime_get();
	ts = ktime_to_us(now);

	entry->timestamp = ts;
	entry->frame = I915_READ(PIPEFRAME(pipe));
	entry->crc[0] = I915_READ(PIPE_CRC_RES_1_IVB(pipe));
	entry->crc[1] = I915_READ(PIPE_CRC_RES_2_IVB(pipe));
	entry->crc[2] = I915_READ(PIPE_CRC_RES_3_IVB(pipe));