From patchwork Fri May 18 21:09:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Janusz Krzysztofik X-Patchwork-Id: 10412229 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 504F360230 for ; Fri, 18 May 2018 21:21:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 37AE828ABA for ; Fri, 18 May 2018 21:21:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 29BC328AF6; Fri, 18 May 2018 21:21:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, MAILING_LIST_MULTI autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 806C328ABA for ; Fri, 18 May 2018 21:21:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=k8xgYyJW+UaKz87PVosXKqhCbUAG4K9s1fIk9ecAKdo=; b=NkfNlx/AB36hvs19pF1jjofuhr L5LtusTG9d1lzCsRyggBC4TSN0sTSh18jEUgZgWSXdWO9b3nSjFCVgLLwOLZDppbwGDiEQakvEDNh PZikOsZpsDeeMFKLPb8QuQp84euwajd2cZQ0e3ziOZdvI1GzoS2BAdMq1kD1UP0M1/4tSWCvtgE9g 2+ANFHuflPFxdpBP6ebplQOwjil8hhoHI3w9Nz//rCoMOsBPt+29lnOruQoWA8IhjZkZJwLrrEEpK dAMxHVhyXfhANy4XGlNkgnTYdOmC6VBQXjivewX25x9yjHxIDhup8Mxc7s8+Hv9+UzCwtlpND9WJ8 zs/drGrg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fJmoL-0000Y2-4y; Fri, 18 May 2018 21:21:13 +0000 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fJmdg-0003BN-8x; Fri, 18 May 2018 21:10:14 +0000 Received: by mail-lf0-x242.google.com with SMTP id r2-v6so15897198lff.4; Fri, 18 May 2018 14:10:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=LFcczNLbf/ZY1wQoa2RXWSmVimkH8VU7wDjHsgBj7HY=; b=qvV/HxR9Kxukc5P+ynzGmFuwpqf6WsiMHjOdqxvu6ZrNHqixivWMIOCHHM5ixNCDSO jD89gLMbtcBXHTiqAPyj4hMxSJ3h2Ggr3WcdpMkA0HGUFsX071lb1DZl0n1zeiCD1IHB Eu7SCDVYwPgUQ6f4kxVoOv5mI8JkQeu20qHPkbtMm/9KjpMDWUzypItSJ4zdnf/beaY5 +83VZ9lXKnbX8gEvRkQEZmkGl/KWNoKDN8aL0wZsXU0Le1NjIIUHn8AmwQbLN3u09J+d RzFhdzmbNaEXP81xl7eV52EO0BGcWXLo5HwINYOs+vlx0N2HwMp7dc1uMrDcrS201zuy K8NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=LFcczNLbf/ZY1wQoa2RXWSmVimkH8VU7wDjHsgBj7HY=; b=CbJ/A9gq7JwQsa8PBg+PCk/6dVny87KF789I0y6gsrSDKVAqwmf3PTSdcFIBzh57jL d4pV1u9LBSpCYHYRBT7rFcZiFiGHOti0qua1BTAEZN7rDvMZgJGXhF+as6VPOLUmA2xS vUbKcj0qYKzIsBmHJa3WoFFYQZbVVb5GO9xZNJRE23IMYs2MDYd0U1t4RCEHGxK5v8VM dzeCHgeHL2AhPcwFaupuYBUdkfW+pKFBaIFdI3q0DpVtsqvhGEK3gxZ9F2Q7FcCyr+WR BS0stLl837nAhAr5JUkvFKET5gKxkYGpiMnPWwgmNspACrF/YALhPFegNwHsPly3vP5F LQDA== X-Gm-Message-State: ALKqPwee0a6N/fKddoE4EhyolJOS8mD934X79VxbtQYxRAqdvf1SJ/R4 lQLXLbFJLq3AkoPajNBWygw= X-Google-Smtp-Source: AB8JxZrkVRW7+IY5gjeTcDQ4H1FwsSeE73QGDuuT+HEeaaOO1AE0RKGDbyhTSFx0H0idsnz9SLUumg== X-Received: by 2002:a19:7d05:: with SMTP id y5-v6mr2931512lfc.95.1526677809448; Fri, 18 May 2018 14:10:09 -0700 (PDT) Received: from localhost.localdomain (apn-31-0-34-132.dynamic.gprs.plus.pl. [31.0.34.132]) by smtp.gmail.com with ESMTPSA id 23-v6sm2057026lfw.64.2018.05.18.14.10.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 May 2018 14:10:08 -0700 (PDT) From: Janusz Krzysztofik To: Tony Lindgren , Dmitry Torokhov , Boris Brezillon , Tomi Valkeinen , Mark Brown Subject: [PATCH 4/6] fbdev: omapfb: lcd_ams_delta: use GPIO lookup table Date: Fri, 18 May 2018 23:09:52 +0200 Message-Id: <20180518210954.29044-4-jmkrzyszt@gmail.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180518210954.29044-1-jmkrzyszt@gmail.com> References: <20180518210954.29044-1-jmkrzyszt@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180518_141012_311799_917B2E72 X-CRM114-Status: GOOD ( 16.36 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-fbdev@vger.kernel.org, alsa-devel@alsa-project.org, Aaro Koskinen , Richard Weinberger , Janusz Krzysztofik , Liam Girdwood , linux-kernel@vger.kernel.org, Peter Ujfalusi , linux-mtd@lists.infradead.org, Jarkko Nikula , linux-input@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Now as the Amstrad Delta board provides GPIO lookup tables, switch from GPIO numbers to GPIO descriptors and use the table to locate required GPIO pins. Declare static variables for storing GPIO descriptors and replace gpio_ functions with their gpiod_ equivalents. Move GPIO lookup to the driver probe function so device initialization can be postponed instead of aborted if the GPIO pin is not yet available. Pin naming used by the driver should be followed while respective GPIO lookup table is initialized by a board init code. Created and tested against linux-4.17-rc3, on top of patch 1/6 "ARM: OMAP1: ams-delta: add GPIO lookup tables" Signed-off-by: Janusz Krzysztofik --- drivers/video/fbdev/omap/lcd_ams_delta.c | 59 ++++++++++++++------------------ 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/drivers/video/fbdev/omap/lcd_ams_delta.c b/drivers/video/fbdev/omap/lcd_ams_delta.c index a4ee947006c7..19b6425b54be 100644 --- a/drivers/video/fbdev/omap/lcd_ams_delta.c +++ b/drivers/video/fbdev/omap/lcd_ams_delta.c @@ -24,11 +24,10 @@ #include #include #include +#include #include -#include #include -#include #include "omapfb.h" @@ -41,6 +40,8 @@ /* LCD class device section */ static int ams_delta_lcd; +static struct gpio_desc *gpiod_vblen; +static struct gpio_desc *gpiod_ndisp; static int ams_delta_lcd_set_power(struct lcd_device *dev, int power) { @@ -99,41 +100,17 @@ static struct lcd_ops ams_delta_lcd_ops = { /* omapfb panel section */ -static const struct gpio _gpios[] = { - { - .gpio = AMS_DELTA_GPIO_PIN_LCD_VBLEN, - .flags = GPIOF_OUT_INIT_LOW, - .label = "lcd_vblen", - }, - { - .gpio = AMS_DELTA_GPIO_PIN_LCD_NDISP, - .flags = GPIOF_OUT_INIT_LOW, - .label = "lcd_ndisp", - }, -}; - -static int ams_delta_panel_init(struct lcd_panel *panel, - struct omapfb_device *fbdev) -{ - return gpio_request_array(_gpios, ARRAY_SIZE(_gpios)); -} - -static void ams_delta_panel_cleanup(struct lcd_panel *panel) -{ - gpio_free_array(_gpios, ARRAY_SIZE(_gpios)); -} - static int ams_delta_panel_enable(struct lcd_panel *panel) { - gpio_set_value(AMS_DELTA_GPIO_PIN_LCD_NDISP, 1); - gpio_set_value(AMS_DELTA_GPIO_PIN_LCD_VBLEN, 1); + gpiod_set_value(gpiod_ndisp, 1); + gpiod_set_value(gpiod_vblen, 1); return 0; } static void ams_delta_panel_disable(struct lcd_panel *panel) { - gpio_set_value(AMS_DELTA_GPIO_PIN_LCD_VBLEN, 0); - gpio_set_value(AMS_DELTA_GPIO_PIN_LCD_NDISP, 0); + gpiod_set_value(gpiod_vblen, 0); + gpiod_set_value(gpiod_ndisp, 0); } static struct lcd_panel ams_delta_panel = { @@ -154,8 +131,6 @@ static struct lcd_panel ams_delta_panel = { .pcd = 0, .acb = 37, - .init = ams_delta_panel_init, - .cleanup = ams_delta_panel_cleanup, .enable = ams_delta_panel_enable, .disable = ams_delta_panel_disable, }; @@ -166,9 +141,27 @@ static struct lcd_panel ams_delta_panel = { static int ams_delta_panel_probe(struct platform_device *pdev) { struct lcd_device *lcd_device = NULL; -#ifdef CONFIG_LCD_CLASS_DEVICE int ret; + gpiod_vblen = devm_gpiod_get(&pdev->dev, "vblen", GPIOD_OUT_LOW); + if (IS_ERR(gpiod_vblen)) { + ret = PTR_ERR(gpiod_vblen); + dev_err(&pdev->dev, "VBLEN GPIO request failed (%d)\n", ret); + if (ret == -ENODEV || ret == -ENOENT) + ret = -EPROBE_DEFER; + return ret; + } + + gpiod_ndisp = devm_gpiod_get(&pdev->dev, "ndisp", GPIOD_OUT_LOW); + if (IS_ERR(gpiod_ndisp)) { + ret = PTR_ERR(gpiod_ndisp); + dev_err(&pdev->dev, "NDISP GPIO request failed (%d)\n", ret); + if (ret == -ENODEV || ret == -ENOENT) + ret = -EPROBE_DEFER; + return ret; + } + +#ifdef CONFIG_LCD_CLASS_DEVICE lcd_device = lcd_device_register("omapfb", &pdev->dev, NULL, &ams_delta_lcd_ops);