From patchwork Wed Aug 27 14:29:42 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kumar X-Patchwork-Id: 4791691 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.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id D2D5D9F2A9 for ; Thu, 28 Aug 2014 02:17:52 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B2C8B201CD for ; Thu, 28 Aug 2014 02:17:51 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id ADDFB201C7 for ; Thu, 28 Aug 2014 02:17:50 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E17F66E53F; Wed, 27 Aug 2014 19:17:45 -0700 (PDT) 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 C670689A4F for ; Wed, 27 Aug 2014 07:41:10 -0700 (PDT) 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 <0NAY00701ZGM1640@mailout1.samsung.com> for dri-devel@lists.freedesktop.org; Wed, 27 Aug 2014 23:41:10 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.124]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id 22.69.04467.50EEDF35; Wed, 27 Aug 2014 23:41:10 +0900 (KST) X-AuditID: cbfee68f-f797f6d000001173-14-53fdee05db18 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 48.59.05196.50EEDF35; Wed, 27 Aug 2014 23:41:09 +0900 (KST) Received: from chromebld-server.sisodomain.com ([107.108.73.106]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0NAY00EVDZ3VVJ90@mmp1.samsung.com>; Wed, 27 Aug 2014 23:41:09 +0900 (KST) From: Ajay Kumar To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org Subject: [PATCH V7 08/12] drm/bridge: ptn3460: use gpiod interface Date: Wed, 27 Aug 2014 19:59:42 +0530 Message-id: <1409149783-12416-9-git-send-email-ajaykumar.rs@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1409149783-12416-1-git-send-email-ajaykumar.rs@samsung.com> References: <1409149783-12416-1-git-send-email-ajaykumar.rs@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrGLMWRmVeSWpSXmKPExsWyRsSkRpft3d9gg8NPmCwOvD/IYrHhzUJm i4UP7zJbXPn6ns1i0v0JLBaXF15itfi+6wu7xYzz+5gsVh3ewG7xfOEPZou5B3Mtfu6ax+LA 47H32wIWj52z7rJ7LNhU6nG/+ziTR9+WVYwenzfJBbBFcdmkpOZklqUW6dslcGXsfJRa8FK1 4seH9ewNjKvluxg5OCQETCTe/szvYuQEMsUkLtxbz9bFyMUhJLCUUeLftg52iISJxJvb/ewQ iUWMEi3rWxkhnAlMEpumHWIDqWIT0JbYNv0mC4gtIuAm0XR4JitIEbPAN0aJCwvXgRUJCzhJ 7F58mgnEZhFQlXj58AUjiM0r4CHR/eofG8RJChJzJtmAhDkFPCUe7tjPCmILAZUseXwV7DwJ gVPsEt+2/maHmCMg8W3yIRaIXlmJTQeYIa6WlDi44gbLBEbhBYwMqxhFUwuSC4qT0ouM9YoT c4tL89L1kvNzNzECo+P0v2f9OxjvHrA+xCjAwajEw/thwZ9gIdbEsuLK3EOMpkAbJjJLiSbn A2MwryTe0NjMyMLUxNTYyNzSTEmcd6HUz2AhgfTEktTs1NSC1KL4otKc1OJDjEwcnFINjG2n bx21a7owedNZHWu//HKrB10a5Qa5P88LHzsjej/n/LEXV8Xv9ufLz/nno59TfnSXXJ2Zh7Oh 9SYbx3fyZkkl34wm2jRd7+cOr9G/68tndfuPe/eWiAXL95z8furlpfULfuiXle9OV9PjYDti ErzthdzyhBk7JzYv4Xtwpje1f2o8x5R3TUosxRmJhlrMRcWJAETW2P+JAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrIIsWRmVeSWpSXmKPExsVy+t9jAV3Wd3+DDSavMrM48P4gi8WGNwuZ LRY+vMtsceXrezaLSfcnsFhcXniJ1eL7ri/sFjPO72OyWHV4A7vF84U/mC3mHsy1+LlrHosD j8febwtYPHbOusvusWBTqcf97uNMHn1bVjF6fN4kF8AW1cBok5GamJJapJCal5yfkpmXbqvk HRzvHG9qZmCoa2hpYa6kkJeYm2qr5OIToOuWmQN0o5JCWWJOKVAoILG4WEnfDtOE0BA3XQuY xghd35AguB4jAzSQsIYxY+ej1IKXqhU/Pqxnb2BcLd/FyMkhIWAi8eZ2PzuELSZx4d56ti5G Lg4hgUWMEi3rWxkhnAlMEpumHWIDqWIT0JbYNv0mC4gtIuAm0XR4JitIEbPAN0aJCwvXgRUJ CzhJ7F58mgnEZhFQlXj58AUjiM0r4CHR/eofUA0H0DoFiTmTbEDCnAKeEg937GcFsYWASpY8 vso2gZF3ASPDKkbR1ILkguKk9FwjveLE3OLSvHS95PzcTYzg6HsmvYNxVYPFIUYBDkYlHt4P C/4EC7EmlhVX5h5ilOBgVhLhLTvwN1iINyWxsiq1KD++qDQntfgQoynQUROZpUST84GJIa8k 3tDYxNzU2NTSxMLEzFJJnPdgq3WgkEB6YklqdmpqQWoRTB8TB6dUA+PK3b3zttibmDIoPjTZ ljurX71hbsl2xbAVhjtj0/RXMLX5WmfXzdBd95MnXGSG29++mcfVmGwW3VyrVBh/e4qb3Sv9 Y98NGndrSOp75m6Z3GjYtnvbBJO3hezpdxlupyu5ss+NmHPbq7LqxdF1Lt8nPsq/pu70cGXx boukD6HfpUw58kIvcSixFGckGmoxFxUnAgBz+q6g1AIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Mailman-Approved-At: Wed, 27 Aug 2014 19:17:44 -0700 Cc: seanpaul@google.com, daniel.vetter@ffwll.ch, joshi@samsung.com, ajaynumb@gmail.com, prashanth.g@samsung.com, Ajay Kumar X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.15 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, 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 --- 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 1bb4d2b..6f28c13 100644 --- a/drivers/gpu/drm/bridge/ptn3460.c +++ b/drivers/gpu/drm/bridge/ptn3460.c @@ -41,8 +41,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; }; @@ -131,14 +131,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"); @@ -183,11 +180,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) @@ -202,13 +196,7 @@ static void ptn3460_post_disable(struct drm_bridge *bridge) static void ptn3460_bridge_destroy(struct drm_bridge *bridge) { - struct ptn3460_bridge *ptn_bridge = bridge_to_ptn3460(bridge); - drm_bridge_cleanup(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); /* Nothing else to free, we've got devm allocated memory */ } @@ -339,39 +327,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.dev = dev; @@ -379,18 +369,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)