From patchwork Tue Jan 20 16:38:49 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kumar X-Patchwork-Id: 5673081 Return-Path: X-Original-To: patchwork-dri-devel@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 CD5679F2ED for ; Wed, 21 Jan 2015 02:20:23 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id D5092203AE for ; Wed, 21 Jan 2015 02:20:22 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id E163D204A2 for ; Wed, 21 Jan 2015 02:20:21 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 64ACC6E6DB; Tue, 20 Jan 2015 18:20:18 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by gabe.freedesktop.org (Postfix) with ESMTP id C7BB36E5F7 for ; Tue, 20 Jan 2015 08:47:05 -0800 (PST) Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NIH001VWIMHS370@mailout1.samsung.com> for dri-devel@lists.freedesktop.org; Wed, 21 Jan 2015 01:47:05 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.123]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id BF.5E.18484.8868EB45; Wed, 21 Jan 2015 01:47:05 +0900 (KST) X-AuditID: cbfee68f-f791c6d000004834-b2-54be86888ed0 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 64.89.09430.8868EB45; Wed, 21 Jan 2015 01:47:04 +0900 (KST) Received: from chromebld-server.sisodomain.com ([107.108.73.106]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0NIH00K6NILOY370@mmp2.samsung.com>; Wed, 21 Jan 2015 01:47:04 +0900 (KST) From: Ajay Kumar To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org Subject: [PATCH V9 08/14] drm/bridge: ptn3460: use gpiod interface Date: Tue, 20 Jan 2015 22:08:49 +0530 Message-id: <1421771935-31618-9-git-send-email-ajaykumar.rs@samsung.com> X-Mailer: git-send-email 2.2.0 In-reply-to: <1421771935-31618-1-git-send-email-ajaykumar.rs@samsung.com> References: <1421771935-31618-1-git-send-email-ajaykumar.rs@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpjkeLIzCtJLcpLzFFi42JZI2JSrdvZti/E4FEzs8WB9wdZLDa8Wchs sWztPxaLhQ/vMlvMP3KO1eLK1/dsFpPuT2CxuLzwEqtF74KrbBabHl9jtZhxfh+TxarDG9gt 5h7Mtfi5ax6LA5/H3m8LWDx2zrrL7rFgU6nH/e7jTB6bl9R79G1ZxejxeZNcAHsUl01Kak5m WWqRvl0CV8ako4eYCt6pVRw4v5q5gXG1QhcjJ4eEgInEpfb37BC2mMSFe+vZuhi5OIQEljJK HH94gaWLkQOs6MRfDoj4dEaJ/l+bGSGcCUwSlx5dYgLpZhPQltg2/SYLiC0i0MUose2gOkgR s8AfRonPv/YzgiSEBZwk7s1bDmazCKhKbHzxjhnE5hXwkPg+ZQYrxBlyEltuPQI7iVPAU2LH h6tgcSGgmsXrDzODDJUQuMcONPQQE8QgAYlvkw9BnSorsekAM8QcSYmDK26wTGAUXsDIsIpR NLUguaA4Kb3IWK84Mbe4NC9dLzk/dxMjMHpO/3vWv4Px7gHrQ4wCHIxKPLwvVu0NEWJNLCuu zD3EaAq0YSKzlGhyPjBG80riDY3NjCxMTUyNjcwtzZTEeRdK/QwWEkhPLEnNTk0tSC2KLyrN SS0+xMjEwSnVwLirJ3/l1PtOyjbS/3SvLGEOvpX1TLblFqP86oL6lM7mjMuLTR7me778N6PQ 9t0rvs8fK/muP2sqn74vpU9pMQ/HzE272fsarMtjnqjs21kS/s5ahflpLOuWRqeQ6F//DiQc Wr3kzOzq68bM0zSStn1lX3j7tcfEltDwI5f0qifrXLL1Xuobna7EUpyRaKjFXFScCAC9V/k7 mQIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrAIsWRmVeSWpSXmKPExsVy+t9jQd2Otn0hBpP6zSwOvD/IYrHhzUJm i2Vr/7FYLHx4l9li/pFzrBZXvr5ns5h0fwKLxeWFl1gtehdcZbPY9Pgaq8WM8/uYLFYd3sBu MfdgrsXPXfNYHPg89n5bwOKxc9Zddo8Fm0o97ncfZ/LYvKTeo2/LKkaPz5vkAtijGhhtMlIT U1KLFFLzkvNTMvPSbZW8g+Od403NDAx1DS0tzJUU8hJzU22VXHwCdN0yc4AuVlIoS8wpBQoF JBYXK+nbYZoQGuKmawHTGKHrGxIE12NkgAYS1jBmTDp6iKngnVrFgfOrmRsYVyt0MXJwSAiY SJz4y9HFyAlkiklcuLeerYuRi0NIYDqjRP+vzYwQzgQmiUuPLjGBVLEJaEtsm36TBcQWEehi lNh2UB2kiFngD6PE51/7GUESwgJOEvfmLQezWQRUJTa+eMcMYvMKeEh8nzKDFWKdnMSWW4/Y QWxOAU+JHR+ugsWFgGoWrz/MPIGRdwEjwypG0dSC5ILipPRcI73ixNzi0rx0veT83E2M4Nh8 Jr2DcVWDxSFGAQ5GJR5eh7V7Q4RYE8uKK3MPMUpwMCuJ8DLV7QsR4k1JrKxKLcqPLyrNSS0+ xGgKdNVEZinR5Hxg2sgriTc0NjE3NTa1NLEwMbNUEudVsm8LERJITyxJzU5NLUgtgulj4uCU amBckaSY9vKlVPb9sP1cH/v5z5YVxRtOalE/cLL9Zu0MmZKaUxcNU/sMp5Y6Z0QYnH/dFjUn PUziuNZMM+X3FUXzz5f9Pr887ND22o/LVrl+XaJ6OnF6CePebRLi7/kDylvuLdc6Hh2nHuzT P+dX/iv3X2cXRn+rld9z/wf7SxOBLXqlz0pfBJ5VYinOSDTUYi4qTgQAoFnpx+MCAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Mailman-Approved-At: Tue, 20 Jan 2015 18:20:08 -0800 Cc: kgene.kim@samsung.com, seanpaul@google.com, daniel.vetter@ffwll.ch, jg1.han@samsung.com, ajaynumb@gmail.com, bhushan.r@samsung.com, prashanth.g@samsung.com, Ajay Kumar X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, 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 Modify driver to support gpiod interface. Signed-off-by: Ajay Kumar Acked-by: Inki Dae Tested-by: Rahul Sharma Tested-by: Javier Martinez Canillas Tested-by: Gustavo Padovan Tested-by: Sjoerd Simons --- drivers/gpu/drm/bridge/ptn3460.c | 88 ++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 52 deletions(-) diff --git a/drivers/gpu/drm/bridge/ptn3460.c b/drivers/gpu/drm/bridge/ptn3460.c index 9f800a1..826833e 100644 --- a/drivers/gpu/drm/bridge/ptn3460.c +++ b/drivers/gpu/drm/bridge/ptn3460.c @@ -42,8 +42,8 @@ struct ptn3460_bridge { struct drm_bridge bridge; struct edid *edid; struct drm_panel *panel; - int gpio_pd_n; - int gpio_rst_n; + struct gpio_desc *gpio_pd_n; + struct gpio_desc *gpio_rst_n; u32 edid_emulation; bool enabled; }; @@ -132,14 +132,11 @@ static void ptn3460_pre_enable(struct drm_bridge *bridge) if (ptn_bridge->enabled) return; - if (gpio_is_valid(ptn_bridge->gpio_pd_n)) - gpio_set_value(ptn_bridge->gpio_pd_n, 1); + gpiod_set_value(ptn_bridge->gpio_pd_n, 1); - if (gpio_is_valid(ptn_bridge->gpio_rst_n)) { - gpio_set_value(ptn_bridge->gpio_rst_n, 0); - usleep_range(10, 20); - gpio_set_value(ptn_bridge->gpio_rst_n, 1); - } + gpiod_set_value(ptn_bridge->gpio_rst_n, 0); + usleep_range(10, 20); + gpiod_set_value(ptn_bridge->gpio_rst_n, 1); if (drm_panel_prepare(ptn_bridge->panel)) { DRM_ERROR("failed to prepare panel\n"); @@ -184,11 +181,8 @@ static void ptn3460_disable(struct drm_bridge *bridge) return; } - if (gpio_is_valid(ptn_bridge->gpio_rst_n)) - gpio_set_value(ptn_bridge->gpio_rst_n, 1); - - if (gpio_is_valid(ptn_bridge->gpio_pd_n)) - gpio_set_value(ptn_bridge->gpio_pd_n, 0); + gpiod_set_value(ptn_bridge->gpio_rst_n, 1); + gpiod_set_value(ptn_bridge->gpio_pd_n, 0); } static void ptn3460_post_disable(struct drm_bridge *bridge) @@ -335,39 +329,41 @@ static int ptn3460_probe(struct i2c_client *client, } ptn_bridge->client = client; - ptn_bridge->gpio_pd_n = of_get_named_gpio(dev->of_node, - "powerdown-gpio", 0); - if (gpio_is_valid(ptn_bridge->gpio_pd_n)) { - ret = gpio_request_one(ptn_bridge->gpio_pd_n, - GPIOF_OUT_INIT_HIGH, "PTN3460_PD_N"); - if (ret) { - dev_err(dev, "Request powerdown-gpio failed (%d)\n", - ret); - return ret; - } + + ptn_bridge->gpio_pd_n = devm_gpiod_get(&client->dev, "powerdown"); + if (IS_ERR(ptn_bridge->gpio_pd_n)) { + ret = PTR_ERR(ptn_bridge->gpio_pd_n); + dev_err(dev, "cannot get gpio_pd_n %d\n", ret); + return ret; } - ptn_bridge->gpio_rst_n = of_get_named_gpio(dev->of_node, - "reset-gpio", 0); - if (gpio_is_valid(ptn_bridge->gpio_rst_n)) { - /* - * Request the reset pin low to avoid the bridge being - * initialized prematurely - */ - ret = gpio_request_one(ptn_bridge->gpio_rst_n, - GPIOF_OUT_INIT_LOW, "PTN3460_RST_N"); - if (ret) { - dev_err(dev, "Request reset-gpio failed (%d)\n", ret); - gpio_free(ptn_bridge->gpio_pd_n); - return ret; - } + ret = gpiod_direction_output(ptn_bridge->gpio_pd_n, 1); + if (ret) { + DRM_ERROR("cannot configure gpio_pd_n\n"); + return ret; + } + + ptn_bridge->gpio_rst_n = devm_gpiod_get(&client->dev, "reset"); + if (IS_ERR(ptn_bridge->gpio_rst_n)) { + ret = PTR_ERR(ptn_bridge->gpio_rst_n); + DRM_ERROR("cannot get gpio_rst_n %d\n", ret); + return ret; + } + /* + * Request the reset pin low to avoid the bridge being + * initialized prematurely + */ + ret = gpiod_direction_output(ptn_bridge->gpio_rst_n, 0); + if (ret) { + DRM_ERROR("cannot configure gpio_rst_n\n"); + return ret; } ret = of_property_read_u32(dev->of_node, "edid-emulation", &ptn_bridge->edid_emulation); if (ret) { dev_err(dev, "Can't read EDID emulation value\n"); - goto err; + return ret; } ptn_bridge->bridge.funcs = &ptn3460_bridge_funcs; @@ -375,19 +371,12 @@ static int ptn3460_probe(struct i2c_client *client, ret = drm_bridge_add(&ptn_bridge->bridge); if (ret) { DRM_ERROR("Failed to add bridge\n"); - goto err; + return ret; } i2c_set_clientdata(client, ptn_bridge); return 0; - -err: - if (gpio_is_valid(ptn_bridge->gpio_pd_n)) - gpio_free(ptn_bridge->gpio_pd_n); - if (gpio_is_valid(ptn_bridge->gpio_rst_n)) - gpio_free(ptn_bridge->gpio_rst_n); - return ret; } static int ptn3460_remove(struct i2c_client *client) @@ -396,11 +385,6 @@ static int ptn3460_remove(struct i2c_client *client) drm_bridge_remove(&ptn_bridge->bridge); - if (gpio_is_valid(ptn_bridge->gpio_pd_n)) - gpio_free(ptn_bridge->gpio_pd_n); - if (gpio_is_valid(ptn_bridge->gpio_rst_n)) - gpio_free(ptn_bridge->gpio_rst_n); - return 0; }