From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH 15/15] drm/panel: Add Sharp LQ101R1SX01 support Date: Mon, 20 Oct 2014 17:56:57 +0200 Message-ID: <544530C9.1070105@samsung.com> References: <1413195395-3355-1-git-send-email-thierry.reding@gmail.com> <1413195395-3355-15-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-reply-to: <1413195395-3355-15-git-send-email-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding , dri-devel@lists.freedesktop.org Cc: Mark Rutland , devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , Rob Herring , Kumar Gala List-Id: devicetree@vger.kernel.org On 10/13/2014 12:16 PM, Thierry Reding wrote: > From: Thierry Reding > > This panel requires dual-channel mode. The device accepts command-mode > data on 8 lanes and will therefore need a dual-channel DSI controller. > The two interfaces that make up this device need to be instantiated in > the controllers that gang up to provide the dual-channel DSI host. > > Signed-off-by: Thierry Reding > --- > .../bindings/panel/sharp,lq101r1sx01.txt | 46 +++ > drivers/gpu/drm/panel/Kconfig | 13 + > drivers/gpu/drm/panel/Makefile | 1 + > drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c | 426 +++++++++++++++++++++ > 4 files changed, 486 insertions(+) > create mode 100644 Documentation/devicetree/bindings/panel/sharp,lq101r1sx01.txt > create mode 100644 drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c > > diff --git a/Documentation/devicetree/bindings/panel/sharp,lq101r1sx01.txt b/Documentation/devicetree/bindings/panel/sharp,lq101r1sx01.txt > new file mode 100644 > index 000000000000..4ab4380ddac8 > --- /dev/null > +++ b/Documentation/devicetree/bindings/panel/sharp,lq101r1sx01.txt > @@ -0,0 +1,46 @@ > +Sharp Microelectronics 10.1" WQXGA TFT LCD panel > + > +This panel requires a dual-channel DSI host to operate. It supports two modes: > +- left-right: each channel drives the left or right half of the screen > +- even-odd: each channel drives the even or odd lines of the screen > + > +Each of the DSI channels controls a separate DSI peripheral. The peripheral > +driven by the first link (DSI-LINK1), left or even, is considered the primary > +peripheral and controls the device. The 'link2' property contains a phandle > +to the peripheral driven by the second link (DSI-LINK2, right or odd). > + > +Note that in video mode the DSI-LINK1 interface always provides the left/even > +pixels and DSI-LINK2 always provides the right/odd pixels. In command mode it > +is possible to program either link to drive the left/even or right/odd pixels > +but for the sake of consistency this binding assumes that the same assignment > +is chosen as for video mode. > + > +Required properties: > +- compatible: should be "sharp,lq101r1sx01" > +- link2: phandle to the DSI peripheral on the secondary link. Note that the > + presence of this property marks the containing node as DSI-LINK1. > +- power-supply: phandle of the regulator that provides the supply voltage > + > +Optional properties: > +- backlight: phandle of the backlight device attached to the panel > + > +Example: > + > + dsi@54300000 { > + panel: panel@0 { > + compatible = "sharp,lq101r1sx01"; > + reg = <0>; > + > + link2 = <&secondary>; > + > + power-supply = <...>; > + backlight = <...>; > + }; > + }; > + > + dsi@54400000 { > + secondary: panel@0 { > + compatible = "sharp,lq101r1sx01"; > + reg = <0>; > + }; > + }; The example does not follow rules above, 2nd node does not contain required properties. Maybe it should be clearly stated that power-supply, link2 and backlight properties can be present only in LINK1 node; LINK2 node should contain nothing more than compatible and reg. I guess if it wouldn't be better if different compatibles could be used to distinguish LINK1 and LINK2 nodes, this way you can provide different sets of required/optional properties for both nodes. As a bonus you can have different probe/remove/shutdown callback per link. > diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig > index bee9f72b3a93..024e98ef8e4d 100644 > --- a/drivers/gpu/drm/panel/Kconfig > +++ b/drivers/gpu/drm/panel/Kconfig > @@ -27,4 +27,17 @@ config DRM_PANEL_S6E8AA0 > select DRM_MIPI_DSI > select VIDEOMODE_HELPERS > > +config DRM_PANEL_SHARP_LQ101R1SX01 > + tristate "Sharp LQ101R1SX01 panel" > + depends on OF > + depends on DRM_MIPI_DSI > + help > + Say Y here if you want to enable support for Sharp LQ101R1SX01 > + TFT-LCD modules. The panel has a 2560x1600 resolution and uses > + 24 bit RGB per pixel. It provides a dual MIPI DSI interface to > + the host and has a built-in LED backlight. > + > + To compile this driver as a module, choose M here: the module > + will be called panel-sharp-lq101r1sx01. > + > endmenu > diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile > index 8b929212fad7..4b2a0430804b 100644 > --- a/drivers/gpu/drm/panel/Makefile > +++ b/drivers/gpu/drm/panel/Makefile > @@ -1,3 +1,4 @@ > obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o > obj-$(CONFIG_DRM_PANEL_LD9040) += panel-ld9040.o > obj-$(CONFIG_DRM_PANEL_S6E8AA0) += panel-s6e8aa0.o > +obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o > diff --git a/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c b/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c > new file mode 100644 > index 000000000000..09356697d22f > --- /dev/null > +++ b/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c > @@ -0,0 +1,426 @@ > +/* > + * Copyright (C) 2014 NVIDIA Corporation > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + */ > + > +#include > +#include > +#include > +#include > +#include > + > +#include > +#include > +#include > +#include > + > +#include