[RESEND PATCH v3 05/11] drm: add Atmel HLCDC Display Controller support
From: Boris BREZILLON <hidden>
Date: 2014-07-15 11:26:24
Also in:
dri-devel, linux-devicetree, linux-pwm
On Sat, 12 Jul 2014 14:37:16 -0400 Rob Clark [off-list ref] wrote:
On Sat, Jul 12, 2014 at 2:16 PM, Boris BREZILLON [off-list ref] wrote:quoted
Hello, On Mon, 7 Jul 2014 18:42:58 +0200 Boris BREZILLON [off-list ref] wrote:quoted
+int atmel_hlcdc_layer_disable(struct atmel_hlcdc_layer *layer) +{ + struct atmel_hlcdc_layer_dma_channel *dma = &layer->dma; + unsigned long flags; + int i; + + spin_lock_irqsave(&dma->lock, flags); + for (i = 0; i < layer->max_planes; i++) { + if (!dma->cur[i]) + break; + + dma->cur[i]->ctrl = 0; + } + spin_unlock_irqrestore(&dma->lock, flags); + + return 0; +}I'm trying to simplify the hlcdc_layer code and in order to do that I need to know what's expected when a user calls plane_disable (or more exactly DRM_IOCTL_MODE_SETPLANE ioctl call with the frame buffer ID set to 0). The HLCDC Display Controller support two types of disable: 1) The plane is disabled at the end of the current frame (the is the solution I'm using) 2) The plane is disabled right away (I haven't tested it, but I think this solution could generate some sort of artifacts for a short period of time, because the framebuffer might be partially displayed) If solution 1 is chosen, should I wait for the plane to be actually disabled before returning ?for cursor in particular, if you block, it is going to be a massive slowdown for some apps. I remember at least older gdm would rapidly flash a spinning cursor. As a result, if you wait for vsync each time, it would take a couple minutes to login!
That makes sense.
if #2 works, I'd recommend it. Otherwise you may have to do some of the same hijinks that I have to do in mdp4_crtc for the cursor.
I already have a working solution which does not block with #1, I was just trying to simplify my code ;-). I'll try #2 and if it works without any side effects I'll go for it. Thanks, Boris -- Boris Brezillon, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com