[PATCH v5 05/11] drm: add Atmel HLCDC Display Controller support
Boris BREZILLON
boris.brezillon at free-electrons.com
Sat Sep 27 13:12:55 PDT 2014
Hi Rob,
On Fri, 26 Sep 2014 17:10:49 -0400
Rob Clark <robdclark at gmail.com> wrote:
> On Mon, Sep 8, 2014 at 4:43 AM, Boris BREZILLON
> <boris.brezillon at free-electrons.com> wrote:
> > 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 at free-electrons.com>
> > Tested-by: Ludovic Desroches <ludovic.desroches at atmel.com>
>
> A few small comments below, but with those addressed it has my
>
> Reviewed-by: Rob Clark <robdclark at gmail.com>
Thanks for your review.
>
>
> > ---
> > 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 | 286 ++++++++
> > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 488 +++++++++++++
> > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 224 ++++++
> > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.c | 656 ++++++++++++++++++
> > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.h | 403 +++++++++++
> > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c | 476 +++++++++++++
> > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 836 +++++++++++++++++++++++
> > 11 files changed, 3392 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
> >
>
> [snip]
>
> > +
> > +/**
> > + * Atmel HLCDC plane rotation enum
> > + *
> > + * TODO: export DRM_ROTATE_XX macros defined by omap driver and use them
> > + * instead of defining this enum.
> > + */
> > +enum atmel_hlcdc_plane_rotation {
> > + ATMEL_HLCDC_PLANE_NO_ROTATION,
> > + ATMEL_HLCDC_PLANE_90DEG_ROTATION,
> > + ATMEL_HLCDC_PLANE_180DEG_ROTATION,
> > + ATMEL_HLCDC_PLANE_270DEG_ROTATION,
> > +};
>
> DRM_ROTATE_* are already in drm_crtc.h
>
> [snip]
Yep, I changed that, but won't be able to test until next week.
>
> > +static int atmel_hlcdc_rgb_mode_valid(struct drm_connector *connector,
> > + struct drm_display_mode *mode)
> > +{
> > + return MODE_OK;
> > +}
>
> your _mode_valid() should perhaps somehow check the constraints in
> atmel_hlcdc_crtc_mode_set()? This way invalid modes get filtered out
> earlier..
I'm not sure, the test done in atmel_hlcdc_crtc_mode_set are not
connector related, but rather imposed by the display controller
limitations.
Anyway, let me know if you still think I should move those tests in the
connector mode_valid implementation.
>
> [snip]
>
> > +static struct atmel_hlcdc_plane_properties *
> > +atmel_hlcdc_plane_create_properties(struct drm_device *dev)
> > +{
> > + struct atmel_hlcdc_plane_properties *props;
> > + const struct drm_prop_enum_list rotations[] = {
> > + { ATMEL_HLCDC_PLANE_NO_ROTATION, "rotate-0" },
> > + { ATMEL_HLCDC_PLANE_90DEG_ROTATION, "rotate-90" },
> > + { ATMEL_HLCDC_PLANE_180DEG_ROTATION, "rotate-180" },
> > + { ATMEL_HLCDC_PLANE_270DEG_ROTATION, "rotate-270" },
> > + };
> > +
>
> you could just use drm_mode_create_rotation_property() now
>
Yep, I changed that too. Thanks for the tip.
Best Regards,
Boris
--
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
More information about the dri-devel
mailing list