From patchwork Sun Dec 10 22:10:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 846719 Return-Path: X-Original-To: incoming-dt@patchwork.ozlabs.org Delivered-To: patchwork-incoming-dt@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=devicetree-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=lechnology.com header.i=@lechnology.com header.b="nCJJGoZM"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yw0fh4GJ5z9sBZ for ; Mon, 11 Dec 2017 09:11:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752449AbdLJWLM (ORCPT ); Sun, 10 Dec 2017 17:11:12 -0500 Received: from vern.gendns.com ([206.190.152.46]:42897 "EHLO vern.gendns.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752256AbdLJWKq (ORCPT ); Sun, 10 Dec 2017 17:10:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lechnology.com; s=default; h=References:In-Reply-To:Message-Id:Date:Subject :Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=lir8PLMzbCLTXmRLha6j1E707atW4hepdGAUtpgw4h0=; b=nCJJGoZMpJAztSReA97aeVon/ tLYrW786ulJw0kQz0KV2wZZxksC/8ZkprSmu9CFwBb3DFKZQhd9yuZCZ3EO65KRuHqc5BKBe8VAWT RIA6qZeJPIboZQmTLXUmYuhmb6gi5TYvjXBUrVisJnoExFsD3rMxI33UnsO0n4PiZ8oNVoiM4geSZ qCZXkXkpCrqPMldGKtjFWAo87Pd65FLQtM7261Ke8nZMJqCs1Cl2pTrzHlwBFuAuIQO7uyOwTqFsz 13nc2AlvWSeT65nRCf7sl939QqisxRTAvC02NwaqAmwIEwZ7YzDXX4CxvDreT6jfROQorQRKcQNS7 6+F8Q9hUw==; Received: from 108-198-5-147.lightspeed.okcbok.sbcglobal.net ([108.198.5.147]:35982 helo=freyr.lechnology.com) by vern.gendns.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-SHA256:128) (Exim 4.89) (envelope-from ) id 1eO9mN-003IPX-Rw; Sun, 10 Dec 2017 17:09:00 -0500 From: David Lechner To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Cc: David Lechner , =?utf-8?q?Noralf_Tr=C3=B8nnes?= , limor@ladyada.net, Linus Walleij , Rob Herring , Mark Rutland , linux-kernel@vger.kernel.org Subject: [PATCH v2 1/2] dt-bindings: Add binding for Sitronix ST7735R display panels Date: Sun, 10 Dec 2017 16:10:32 -0600 Message-Id: <1512943833-31352-2-git-send-email-david@lechnology.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1512943833-31352-1-git-send-email-david@lechnology.com> References: <1512943833-31352-1-git-send-email-david@lechnology.com> X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vern.gendns.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - lechnology.com X-Get-Message-Sender-Via: vern.gendns.com: authenticated_id: davidmain+lechnology.com/only user confirmed/virtual account not confirmed X-Authenticated-Sender: vern.gendns.com: davidmain@lechnology.com X-Source: X-Source-Args: X-Source-Dir: Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org This adds a new device tree binding for Sitronix ST7735R display panels, such as the Adafruit 1.8" TFT. Signed-off-by: David Lechner Acked-by: Rob Herring --- v2: changes: * None, but... I'm wondering about my choice of compatible here. I chose the name "sitronix,st7735r-jd-t18003-t01" to mean a Sitronix ST7735R controller connected to a JD-T18003-T01 LCD screen. What I am actually using, though, is an Adafruit 1.8" TFT breakout [1]. It has some additional electronics which just pass through signals to the controller. The bare display is also available from Adafruit [2]. Limor brought up an interesting point in an off-list discussion. The same controller can be wired to the same LCD in different ways. This is evident in the fbftf drivers in staging. There is an "adafruit18" and an "adafruit18_green" in fbftf_devices.c where apparently, two otherwise identical displays were wired slightly differently at the factory so that on one, the on-board GRAM word 0 does not correspond to pixel 0,0 on the LCD. It requires a special offset to the GRAM starting address in order to have the image displayed correctly. Additionally, fbtft supports a SainSmart 1.8" TFT [3] that uses the same controller, but it appears that these have different gamma curves (perhaps they use different LCDs?). The available pins are exactly the same as the Adafruit display though. As I am writing this, I am looking at the JD-1800 datasheet [4] again for the Adafruit display and I see that in addition to specifying the size of the display it says "IC: ST7735B". So, I am starting to think that "jianda, jd-t18003-t01" would be a better compatible string since it tells you everything you need to know about this display. Just using the controller name by itself ("sitronix,st7735r") is not enough because it does not tell you things like the number of pixels or the physical size of the LCD. What I am not sure about, though, is how to represent the Adafruit display that requires the offset in the device tree. Would it be a different compatible string or should we add an extra property to indicate this quirk? On a related note, I recently submitted device tree bindings for a similar SPI display breakout board [5][6]. After more digging though, I found a datasheet for that display [7], so I'm thinking a compatible string of "vot,v220hf01a-t" would be better by the same reasoning above. And, I know this is getting long, but one more thing... There was a binding acked recently for the LCD on a D-Link DIR-685 Wireless N Storage Router [8]. This uses the compound compatible string of "dlink, dir-685-panel", "ilitek,ili9322". If we want to try to keep things consistent, perhaps I should be adopting this pattern as well? And perhaps it would be better to use the better known vendor name instead of the obscure vendors from the datasheets that I have found? For example, "adafruit,618" "sitronix,st7735r" instead of "jianda,jd-t18003-t01"? [1]: https://www.adafruit.com/product/358 [2]: https://www.adafruit.com/product/618 [3]: https://www.sainsmart.com/products/1-8-tft-spi-lcd-screen-with-microsd-socket [4]: http://www.adafruit.com/datasheets/JD-T1800.pdf [5]: https://patchwork.freedesktop.org/patch/187038/ [6]: https://patchwork.freedesktop.org/patch/189233/ [7]: http://www.hotmcu.com/22-176x220-tft-lcd-with-spi-interface-p-316.html [8]: https://patchwork.freedesktop.org/patch/191462/ .../bindings/display/sitronix,st7735r.txt | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/sitronix,st7735r.txt diff --git a/Documentation/devicetree/bindings/display/sitronix,st7735r.txt b/Documentation/devicetree/bindings/display/sitronix,st7735r.txt new file mode 100644 index 0000000..bbb8ba6 --- /dev/null +++ b/Documentation/devicetree/bindings/display/sitronix,st7735r.txt @@ -0,0 +1,35 @@ +Sitronix ST7735R display panels + +This binding is for display panels using a Sitronix ST7735R controller in SPI +mode. + +Required properties: +- compatible: "sitronix,st7735r-jd-t18003-t01" +- dc-gpios: Display data/command selection (D/CX) +- reset-gpios: Reset signal (RSTX) + +The node for this driver must be a child node of a SPI controller, hence +all mandatory properties described in ../spi/spi-bus.txt must be specified. + +Optional properties: +- rotation: panel rotation in degrees counter clockwise (0,90,180,270) +- backlight: phandle of the backlight device attached to the panel + +Example: + + backlight: backlight { + compatible = "gpio-backlight"; + gpios = <&gpio 44 GPIO_ACTIVE_HIGH>; + } + + ... + + display@0{ + compatible = "sitronix,st7735r-jd-t18003-t01"; + reg = <0>; + spi-max-frequency = <32000000>; + dc-gpios = <&gpio 43 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio 80 GPIO_ACTIVE_HIGH>; + rotation = <270>; + backlight = &backlight; + };