Re: [PATCH v6 05/11] drm: add Atmel HLCDC Display Controller support

From: Boris BREZILLON
Date: Mon Sep 29 2014 - 13:21:15 EST


On Mon, 29 Sep 2014 16:44:18 +0200
Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx> wrote:

> From: Boris BREZILLON <boris.brezillon@xxxxxxxxxxxxxxxxxx>
>
> The Atmel HLCDC (HLCD Controller) IP available on some Atmel SoCs (i.e.
> at91sam9n12, at91sam9x5 family or sama5d3 family) provides a display
> controller device.
>
> This display controller supports at least one primary plane and might
> provide several overlays and an hardware cursor depending on the IP
> version.
>
> At the moment, this driver only implements an RGB connector to interface
> with LCD panels, but support for other kind of external devices might be
> added later.
>
> Signed-off-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx>
> Reviewed-by: Rob Clark <robdclark@xxxxxxxxx>
> Tested-by: Anthony Harivel <anthony.harivel@xxxxxxxxxx>
> Tested-by: Ludovic Desroches <ludovic.desroches@xxxxxxxxx>
> ---
> drivers/gpu/drm/Kconfig | 2 +
> drivers/gpu/drm/Makefile | 1 +
> drivers/gpu/drm/atmel-hlcdc/Kconfig | 13 +
> drivers/gpu/drm/atmel-hlcdc/Makefile | 7 +
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 392 +++++++++++
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 527 ++++++++++++++
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 216 ++++++
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.c | 659 ++++++++++++++++++
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.h | 403 +++++++++++
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c | 443 ++++++++++++
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 833 +++++++++++++++++++++++
> 11 files changed, 3496 insertions(+)
> create mode 100644 drivers/gpu/drm/atmel-hlcdc/Kconfig
> create mode 100644 drivers/gpu/drm/atmel-hlcdc/Makefile
> create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
> create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h
> create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.c
> create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.h
> create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c
> create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c
>
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index b066bb3..2d97f7e 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -185,6 +185,8 @@ source "drivers/gpu/drm/cirrus/Kconfig"
>

[...]

> +
> +int atmel_hlcdc_crtc_mode_valid(struct drm_crtc *c,
> + struct drm_display_mode *mode)
> +{
> + struct videomode vm;
> +
> + vm.vfront_porch = mode->vsync_start - mode->vdisplay;
> + vm.vback_porch = mode->vtotal - mode->vsync_end;
> + vm.vsync_len = mode->vsync_end - mode->vsync_start;
> + vm.hfront_porch = mode->hsync_start - mode->hdisplay;
> + vm.hback_porch = mode->htotal - mode->hsync_end;
> + vm.hsync_len = mode->hsync_end - mode->hsync_start;
> +
> + if (vm.hsync_len > 0x40 || vm.hsync_len < 1)
> + return MODE_HSYNC;
> +
> + if (vm.vsync_len > 0x40 || vm.vsync_len < 1)
> + return MODE_VSYNC;
> +
> + if (vm.vfront_porch > 0x40 || vm.hfront_porch < 1 ||
> + vm.vback_porch > 0x40 || vm.vback_porch < 0 ||
> + mode->hdisplay > 2048 || mode->hdisplay < 1)
> + return MODE_H_ILLEGAL;
> +
> + if (vm.hfront_porch > 0x200 || vm.hfront_porch < 1 ||
> + vm.hback_porch > 0x200 || vm.hback_porch < 1 ||
> + mode->hdisplay > 2048 || mode->hdisplay < 1)
> + return MODE_V_ILLEGAL;
> +
> + return MODE_OK;
> +}
> +

I forgot to squash the commit removing this function which a vestige
from one of my attempt to provide a common mode_valid function that can
be called from the connector mode_valid function.

--
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/