From mboxrd@z Thu Jan 1 00:00:00 1970 From: Markus Niebel Subject: Re: [PATCH v3 06/11] staging: drm/imx: Add LDB support Date: Fri, 07 Jun 2013 09:40:04 +0200 Message-ID: <51B18E54.5030501@tqsc.de> References: <1364484215-13935-1-git-send-email-p.zabel@pengutronix.de> <1364484215-13935-7-git-send-email-p.zabel@pengutronix.de> Reply-To: list-09@tqsc.de Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1364484215-13935-7-git-send-email-p.zabel@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: devel-bounces@linuxdriverproject.org Sender: "devel" To: Philipp Zabel Cc: devel@driverdev.osuosl.org, Fabio Estevam , Sascha Hauer , Greg Kroah-Hartman , devicetree-discuss@lists.ozlabs.org, kernel@pengutronix.de, Martin Fuzzey , Sean Cross , Shawn Guo , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org Am 28.03.2013 16:23, wrote Philipp Zabel: > From: Sascha Hauer > > This adds support for the LVDS Display Bridge contained > in i.MX5 and i.MX6 SoCs. > > Bit mapping, data width, and video timings are configurable > via device tree. Dual-channel mode is supported for a single > high-resolution source. > > Signed-off-by: Sascha Hauer > Signed-off-by: Philipp Zabel > --- > Changes since v2: > - Removed commented out code > - Replaced magic constants > - Select OF_VIDEOMODE > --- > .../devicetree/bindings/staging/imx-drm/ldb.txt | 99 ++++ > drivers/staging/imx-drm/Kconfig | 8 + > drivers/staging/imx-drm/Makefile | 1 + > drivers/staging/imx-drm/imx-ldb.c | 609 +++++++++++++++++++++ > 4 files changed, 717 insertions(+) > create mode 100644 Documentation/devicetree/bindings/staging/imx-drm/ldb.txt > create mode 100644 drivers/staging/imx-drm/imx-ldb.c > > diff --git a/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt > new file mode 100644 > index 0000000..ed93778 > --- /dev/null > +++ b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt > @@ -0,0 +1,99 @@ > +Device-Tree bindings for LVDS Display Bridge (ldb) > + > +LVDS Display Bridge > +=================== > + > +The LVDS Display Bridge device tree node contains up to two lvds-channel > +nodes describing each of the two LVDS encoder channels of the bridge. > + > +Required properties: > + - #address-cells : should be <1> > + - #size-cells : should be <0> > + - compatible : should be "fsl,imx53-ldb" or "fsl,imx6q-ldb". > + Both LDB versions are similar, but i.MX6 has an additional > + multiplexer in the front to select any of the four IPU display > + interfaces as input for each LVDS channel. > + - gpr : should be <&gpr> on i.MX53 and i.MX6q. > + The phandle points to the iomuxc-gpr region containing the LVDS > + control register. > +- clocks, clock-names : phandles to the LDB divider and selector clocks and to > + the display interface selector clocks, as described in > + Documentation/devicetree/bindings/clock/clock-bindings.txt > + The following clocks are expected on i.MX53: > + "di0_pll" - LDB LVDS channel 0 mux > + "di1_pll" - LDB LVDS channel 1 mux > + "di0" - LDB LVDS channel 0 gate > + "di1" - LDB LVDS channel 1 gate > + "di0_sel" - IPU1 DI0 mux > + "di1_sel" - IPU1 DI1 mux > + On i.MX6q the following additional clocks are needed: > + "di2_sel" - IPU2 DI0 mux > + "di3_sel" - IPU2 DI1 mux > + The needed clock numbers for each are documented in > + Documentation/devicetree/bindings/clock/imx5-clock.txt, and in > + Documentation/devicetree/bindings/clock/imx6q-clock.txt. > + > +Optional properties: > + - pinctrl-names : should be "default" on i.MX53, not used on i.MX6q > + - pinctrl-0 : a phandle pointing to LVDS pin settings on i.MX53, > + not used on i.MX6q > + - fsl,dual-channel : boolean. if it exists, only LVDS channel 0 should > + be configured - one input will be distributed on both outputs in dual > + channel mode > + > +LVDS Channel > +============ > + > +Each LVDS Channel has to contain a display-timings node that describes the > +video timings for the connected LVDS display. For detailed information, also > +have a look at Documentation/devicetree/bindings/video/display-timing.txt. > + > +Required properties: > + - reg : should be <0> or <1> > + - crtcs : a list of phandles with index pointing to the IPU display interfaces > + that can be used as video source for this channel. > + - fsl,data-mapping : should be "spwg" or "jeida" > + This describes how the color bits are laid out in the > + serialized LVDS signal. > + - fsl,data-width : should be <18> or <24> > + > +example: > + > +gpr: iomuxc-gpr@53fa8000 { > + /* ... */ > +}; > + > +ldb: ldb@53fa8008 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "fsl,imx53-ldb"; > + gpr = <&gpr>; > + clocks = <&clks 122>, <&clks 120>, > + <&clks 115>, <&clks 116>, > + <&clks 123>, <&clks 85>; > + clock-names = "di0_pll", "di1_pll", > + "di0_sel", "di1_sel", > + "di0", "di1"; > + > + lvds-channel@0 { > + reg = <0>; > + crtcs = <&ipu 0>; > + fsl,data-mapping = "spwg"; > + fsl,data-width = <24>; > + > + display-timings { > + /* ... */ > + }; > + }; > + > + lvds-channel@1 { > + reg = <1>; > + crtcs = <&ipu 1>; > + fsl,data-mapping = "spwg"; > + fsl,data-width = <24>; > + > + display-timings { > + /* ... */ > + }; > + }; > +}; > diff --git a/drivers/staging/imx-drm/Kconfig b/drivers/staging/imx-drm/Kconfig > index be7e2e3..3b1355c 100644 > --- a/drivers/staging/imx-drm/Kconfig > +++ b/drivers/staging/imx-drm/Kconfig > @@ -20,6 +20,14 @@ config DRM_IMX_PARALLEL_DISPLAY > tristate "Support for parallel displays" > depends on DRM_IMX > > +config DRM_IMX_LDB > + tristate "Support for LVDS displays" > + depends on DRM_IMX > + select OF_VIDEOMODE > + help > + Choose this to enable the internal LVDS Display Bridge (LDB) > + found on i.MX53 and i.MX6 processors. > + > config DRM_IMX_IPUV3_CORE > tristate "IPUv3 core support" > depends on DRM_IMX > diff --git a/drivers/staging/imx-drm/Makefile b/drivers/staging/imx-drm/Makefile > index 83a9056..9bfac13 100644 > --- a/drivers/staging/imx-drm/Makefile > +++ b/drivers/staging/imx-drm/Makefile > @@ -4,6 +4,7 @@ imxdrm-objs := imx-drm-core.o imx-fb.o > obj-$(CONFIG_DRM_IMX) += imxdrm.o > > obj-$(CONFIG_DRM_IMX_PARALLEL_DISPLAY) += parallel-display.o > +obj-$(CONFIG_DRM_IMX_LDB) += imx-ldb.o > obj-$(CONFIG_DRM_IMX_FB_HELPER) += imx-fbdev.o > obj-$(CONFIG_DRM_IMX_IPUV3_CORE) += ipu-v3/ > obj-$(CONFIG_DRM_IMX_IPUV3) += ipuv3-crtc.o > diff --git a/drivers/staging/imx-drm/imx-ldb.c b/drivers/staging/imx-drm/imx-ldb.c > new file mode 100644 > index 0000000..75607b3 > --- /dev/null > +++ b/drivers/staging/imx-drm/imx-ldb.c > @@ -0,0 +1,609 @@ > +/* > + * i.MX drm driver - LVDS display bridge > + * > + * Copyright (C) 2012 Sascha Hauer, Pengutronix > + * > + * 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. > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, > + * MA 02110-1301, USA. > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include