From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jianwei.Wang@freescale.com (Jianwei.Wang at freescale.com) Date: Thu, 26 Mar 2015 05:58:53 +0000 Subject: [PATCH 1/3] drm/layerscape: Add fsl dcu DRM driver In-Reply-To: References: <1423825436-47780-1-git-send-email-b52261@freescale.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Stefan, I have tested recently, this driver also works on Vybrid twr board. I send V3 patches just now, Please help test it on Vybrid board if necessary. Regards, Jianwei > -----Original Message----- > From: Stefan Agner [mailto:stefan at agner.ch] > Sent: Wednesday, March 04, 2015 11:04 PM > To: Wang Jianwei-B52261 > Cc: dri-devel at lists.freedesktop.org; jbarnes at virtuousgeek.org; Wood Scott- > B07421; Xiubo Li; Wang Huan-B18965; linux-kernel at vger.kernel.org; linux- > arm-kernel at lists.infradead.org > Subject: Re: [PATCH 1/3] drm/layerscape: Add fsl dcu DRM driver > > On 2015-02-13 12:03, Jianwei Wang wrote: > > This patch add support for Two Dimensional Animation and Compositing > > Engine (2D-ACE) on the Freescale LS102x SoCs. > > > > 2D-ACE is a Freescale display controller. It supports at most four > > plane and provide an hardware cursor. > > > > This is a simplified version, only a primary plane, a fb created for > > fbdev, a crtc, a connector for TFT LCD panel, an encoder, and the > > encoder is not in use. Now this drver support fbdev only. > > Hi, > > Do you know if that driver also works on Vybrid devices? Vybrid has also > DCU4 module with 2D-ACE functionality, also the registers look pretty > similar. I was thinking about creating a driver for Vybrid anyway... > > Some remarks below... > > > > > > Signed-off-by: Alison Wang > > Signed-off-by: Xiubo Li > > Signed-off-by: Jianwei Wang > > --- > > .../devicetree/bindings/video/fsl,dcfb.txt | 50 +++ > > drivers/gpu/drm/Kconfig | 2 + > > drivers/gpu/drm/Makefile | 1 + > > drivers/gpu/drm/fsl/Kconfig | 17 + > > drivers/gpu/drm/fsl/Makefile | 7 + > > drivers/gpu/drm/fsl/fsl_dcu_drm_crtc.c | 412 > +++++++++++++++++++++ > > drivers/gpu/drm/fsl/fsl_dcu_drm_crtc.h | 40 ++ > > drivers/gpu/drm/fsl/fsl_dcu_drm_drv.c | 323 > ++++++++++++++++ > > drivers/gpu/drm/fsl/fsl_dcu_drm_drv.h | 167 +++++++++ > > drivers/gpu/drm/fsl/fsl_dcu_drm_fbdev.c | 43 +++ > > drivers/gpu/drm/fsl/fsl_dcu_drm_kms.c | 45 +++ > > drivers/gpu/drm/fsl/fsl_dcu_drm_kms.h | 22 ++ > > drivers/gpu/drm/fsl/fsl_dcu_drm_plane.c | 124 +++++++ > > drivers/gpu/drm/fsl/fsl_dcu_drm_plane.h | 28 ++ > > 14 files changed, 1281 insertions(+) > > create mode 100644 > > Documentation/devicetree/bindings/video/fsl,dcfb.txt > > create mode 100644 drivers/gpu/drm/fsl/Kconfig create mode 100644 > > drivers/gpu/drm/fsl/Makefile create mode 100644 > > drivers/gpu/drm/fsl/fsl_dcu_drm_crtc.c > > create mode 100644 drivers/gpu/drm/fsl/fsl_dcu_drm_crtc.h > > create mode 100644 drivers/gpu/drm/fsl/fsl_dcu_drm_drv.c > > create mode 100644 drivers/gpu/drm/fsl/fsl_dcu_drm_drv.h > > create mode 100644 drivers/gpu/drm/fsl/fsl_dcu_drm_fbdev.c > > create mode 100644 drivers/gpu/drm/fsl/fsl_dcu_drm_kms.c > > create mode 100644 drivers/gpu/drm/fsl/fsl_dcu_drm_kms.h > > create mode 100644 drivers/gpu/drm/fsl/fsl_dcu_drm_plane.c > > create mode 100644 drivers/gpu/drm/fsl/fsl_dcu_drm_plane.h > > > > diff --git a/Documentation/devicetree/bindings/video/fsl,dcfb.txt > > b/Documentation/devicetree/bindings/video/fsl,dcfb.txt > > new file mode 100644 > > index 0000000..de7da97 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/video/fsl,dcfb.txt > > @@ -0,0 +1,50 @@ > > +* Freescale Simple Display Controller FB Driver > > "FB Driver" probably refers more to a fbdev driver in the Linux kernel > sense, but since this is a DRM driver this is somewhat confusing. The > binding should describe the hardware, in the Vybrid RM mentions the IP as > "Display Control Unit (DCU4)", so maybe > > Freescale Display Controller Unit (DCU4) module > > Also, instead of using dcfb, I would use somewhat more hardware describing, > e.g. dcu4? > > > + > > +Required properties: > > +- compatible: Should be one of "fsl,ls1021a-dcfb". > > If the driver also works for Vybrid, be favorable to have a generic > compatible string, e.g. fsl,dcu4? > > > +- reg: Address and length of the register set for dcfb. > > +- clocks: From common clock binding: handle to dcfb clock. > > +- clock-names: From common clock binding: Shall be "dcfb". > > +- display: The phandle to display node. > > + > > +Optional properties: > > +- scfg-controller: The phandle of scfg node. > > + > > +Required properties: > > +- bits-per-pixel: <16> for RGB565, > > + <24> for RGB888, > > + <32> for RGB8888. > > + > > +Required timing node for dispplay sub-node: > > +- display-timings: Refer to binding doc display-timing.txt for > details. > > + > > +Examples: > > +dcfb: dcfb at 2ce0000 { > > + compatible = "fsl,ls1021a-dcfb"; > > + reg = <0x0 0x2ce0000 0x0 0x10000>; > > + clocks = <&platform_clk 0>; > > + clock-names = "dcfb"; > > + scfg-controller = <&scfg>; > > + display = <&display>; > > + > > + display: display at 0 { > > + bits-per-pixel = <24>; > > + > > + display-timings { > > + native-mode = <&timing0>; > > + timing0: nl4827hc19 { > > + clock-frequency = <10870000>; > > + hactive = <480>; > > + vactive = <272>; > > + hback-porch = <2>; > > + hfront-porch = <2>; > > + vback-porch = <1>; > > + vfront-porch = <1>; > > + hsync-len = <41>; > > + vsync-len = <2>; > > + hsync-active = <1>; > > + vsync-active = <1>; > > + }; > > + }; > > + }; > > +}; > > diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index > > 151a050..a6957aa 100644 > > --- a/drivers/gpu/drm/Kconfig > > +++ b/drivers/gpu/drm/Kconfig > > @@ -199,6 +199,8 @@ source "drivers/gpu/drm/bochs/Kconfig" > > > > source "drivers/gpu/drm/msm/Kconfig" > > > > +source "drivers/gpu/drm/fsl/Kconfig" > > + > > source "drivers/gpu/drm/tegra/Kconfig" > > > > source "drivers/gpu/drm/panel/Kconfig" > > diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile index > > 2c239b9..ab5b9ef 100644 > > --- a/drivers/gpu/drm/Makefile > > +++ b/drivers/gpu/drm/Makefile > > @@ -56,6 +56,7 @@ obj-$(CONFIG_DRM_UDL) += udl/ > > obj-$(CONFIG_DRM_AST) += ast/ > > obj-$(CONFIG_DRM_ARMADA) += armada/ > > obj-$(CONFIG_DRM_ATMEL_HLCDC) += atmel-hlcdc/ > > +obj-$(CONFIG_DRM_FSL_DCU) += fsl/ > > obj-$(CONFIG_DRM_RCAR_DU) += rcar-du/ > > obj-$(CONFIG_DRM_SHMOBILE) +=shmobile/ > > obj-$(CONFIG_DRM_OMAP) += omapdrm/ > > diff --git a/drivers/gpu/drm/fsl/Kconfig b/drivers/gpu/drm/fsl/Kconfig > > new file mode 100644 index 0000000..e4f8df0 > > --- /dev/null > > +++ b/drivers/gpu/drm/fsl/Kconfig > > @@ -0,0 +1,17 @@ > > +config DRM_FSL_DCU > > + tristate "DRM Support for Freescale DCU" > > + depends on DRM && OF && ARM > > + select DRM_KMS_HELPER > > + select DRM_KMS_CMA_HELPER > > + select VIDEOMODE_HELPERS > > + select BACKLIGHT_CLASS_DEVICE > > + select BACKLIGHT_LCD_SUPPORT > > + select REGMAP_MMIO > > + select DRM_KMS_FB_HELPER > > + select FB_SYS_FILLRECT > > + select FB_SYS_COPYAREA > > + select FB_SYS_IMAGEBLIT > > + select FB_SYS_FOPS > > + help > > + Choose this option if you have an Freescale DCU chipset. > > + If M is selected the module will be called fsl-dcu-drm. > > diff --git a/drivers/gpu/drm/fsl/Makefile > > b/drivers/gpu/drm/fsl/Makefile new file mode 100644 index > > 0000000..51c3e1f > > --- /dev/null > > +++ b/drivers/gpu/drm/fsl/Makefile > > @@ -0,0 +1,7 @@ > > +fsl-dcu-drm-y := fsl_dcu_drm_drv.o \ > > + fsl_dcu_drm_kms.o \ > > + fsl_dcu_drm_plane.o \ > > + fsl_dcu_drm_crtc.o \ > > + fsl_dcu_drm_fbdev.o \ > > + > > +obj-$(CONFIG_DRM_FSL_DCU) += fsl-dcu-drm.o > > diff --git a/drivers/gpu/drm/fsl/fsl_dcu_drm_crtc.c > > b/drivers/gpu/drm/fsl/fsl_dcu_drm_crtc.c > > new file mode 100644 > > index 0000000..9f5ba86 > > --- /dev/null > > +++ b/drivers/gpu/drm/fsl/fsl_dcu_drm_crtc.c > > @@ -0,0 +1,412 @@ > > +/* > > + * Copyright 2015 Freescale Semiconductor, Inc. > > + * > > + * Freescale DCU drm device driver > > + * > > + * This program is free software; you can redistribute it and/or > > +modify > > + * it under the terms of the GNU General Public License as published > > +by > > + * the Free Software Foundation; either version 2 of the License, or > > + * (at your option) any later version. > > + */ > > + > > +#include > > +#include > > +#include > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include