From patchwork Thu Dec 10 13:11:46 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= X-Patchwork-Id: 7818941 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id E96F99F1C2 for ; Thu, 10 Dec 2015 13:17:50 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1EE5D205B5 for ; Thu, 10 Dec 2015 13:17:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2DD0D205C2 for ; Thu, 10 Dec 2015 13:17:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752009AbbLJNRj (ORCPT ); Thu, 10 Dec 2015 08:17:39 -0500 Received: from arcturus.kleine-koenig.org ([78.47.169.190]:60544 "EHLO arcturus.kleine-koenig.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751681AbbLJNRV (ORCPT ); Thu, 10 Dec 2015 08:17:21 -0500 Received: by arcturus.kleine-koenig.org (Postfix, from userid 1000) id D0CB781EAF; Thu, 10 Dec 2015 14:12:09 +0100 (CET) From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Tomi Valkeinen , Jean-Christophe Plagniol-Villard Cc: linux-omap@vger.kernel.org, kernel@pengutronix.de, linux-fbdev@vger.kernel.org, =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= Subject: [PATCH 4/5] fbdev: omap2: panel-dpi: allow specification of a reset gpio Date: Thu, 10 Dec 2015 14:11:46 +0100 Message-Id: <1449753107-11410-4-git-send-email-uwe@kleine-koenig.org> X-Mailer: git-send-email 2.6.2 In-Reply-To: <1449753107-11410-1-git-send-email-uwe@kleine-koenig.org> References: <1449753107-11410-1-git-send-email-uwe@kleine-koenig.org> MIME-Version: 1.0 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Uwe Kleine-König Some displays have a reset input. To assert that the display is functional the reset gpio must be deasserted. Teach the driver to get and drive such a gpio accordingly. Signed-off-by: Uwe Kleine-König --- Documentation/devicetree/bindings/video/panel-dpi.txt | 1 + drivers/video/fbdev/omap2/displays-new/panel-dpi.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/video/panel-dpi.txt b/Documentation/devicetree/bindings/video/panel-dpi.txt index a40180b05bab..1a1d8f6f884f 100644 --- a/Documentation/devicetree/bindings/video/panel-dpi.txt +++ b/Documentation/devicetree/bindings/video/panel-dpi.txt @@ -7,6 +7,7 @@ Required properties: Optional properties: - label: a symbolic name for the panel - enable-gpios: panel enable gpio +- reset-gpios: GPIO to control the RESET pin Required nodes: - "panel-timing" containing video timings diff --git a/drivers/video/fbdev/omap2/displays-new/panel-dpi.c b/drivers/video/fbdev/omap2/displays-new/panel-dpi.c index 1216341a0d19..7e2f9e0813dc 100644 --- a/drivers/video/fbdev/omap2/displays-new/panel-dpi.c +++ b/drivers/video/fbdev/omap2/displays-new/panel-dpi.c @@ -32,6 +32,7 @@ struct panel_drv_data { int backlight_gpio; struct gpio_desc *enable_gpio; + struct gpio_desc *reset_gpio; }; #define to_panel_data(p) container_of(p, struct panel_drv_data, dssdev) @@ -83,6 +84,7 @@ static int panel_dpi_enable(struct omap_dss_device *dssdev) if (r) return r; + gpiod_set_value_cansleep(ddata->reset_gpio, 0); gpiod_set_value_cansleep(ddata->enable_gpio, 1); if (gpio_is_valid(ddata->backlight_gpio)) @@ -211,6 +213,11 @@ static int panel_dpi_probe_of(struct platform_device *pdev) if (IS_ERR(ddata->enable_gpio)) return PTR_ERR(ddata->enable_gpio); + ddata->reset_gpio = devm_gpiod_get_optional(&pdev->dev, + "reset", GPIOD_OUT_HIGH); + if (IS_ERR(ddata->reset_gpio)) + return PTR_ERR(ddata->reset_gpio); + ddata->backlight_gpio = -ENOENT; r = of_get_display_timing(node, "panel-timing", &timing);