From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932535AbbCDPEQ (ORCPT ); Wed, 4 Mar 2015 10:04:16 -0500 Received: from mail.kmu-office.ch ([178.209.48.109]:51929 "EHLO mail.kmu-office.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758283AbbCDPEN (ORCPT ); Wed, 4 Mar 2015 10:04:13 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Date: Wed, 04 Mar 2015 16:04:05 +0100 From: Stefan Agner To: Jianwei Wang Cc: dri-devel@lists.freedesktop.org, jbarnes@virtuousgeek.org, scottwood@freescale.com, Xiubo Li , Alison Wang , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 1/3] drm/layerscape: Add fsl dcu DRM driver In-Reply-To: <1423825436-47780-1-git-send-email-b52261@freescale.com> References: <1423825436-47780-1-git-send-email-b52261@freescale.com> Message-ID: User-Agent: Roundcube Webmail/1.1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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@2ce0000 { > + compatible = "fsl,ls1021a-dcfb"; > + reg = <0x0 0x2ce0000 0x0 0x10000>; > + clocks = <&platform_clk 0>; > + clock-names = "dcfb"; > + scfg-controller = <&scfg>; > + display = <&display>; > + > + display: display@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