From patchwork Fri Aug 31 09:29:20 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "AnilKumar, Chimata" X-Patchwork-Id: 1392301 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id D64793FDF6 for ; Fri, 31 Aug 2012 09:39:22 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1T7NcU-0003KK-CV; Fri, 31 Aug 2012 09:34:32 +0000 Received: from comal.ext.ti.com ([198.47.26.152]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1T7NXz-0000Mw-Ml for linux-arm-kernel@lists.infradead.org; Fri, 31 Aug 2012 09:29:55 +0000 Received: from dbdp20.itg.ti.com ([172.24.170.38]) by comal.ext.ti.com (8.13.7/8.13.7) with ESMTP id q7V9TiXt005267; Fri, 31 Aug 2012 04:29:45 -0500 Received: from DBDE70.ent.ti.com (localhost [127.0.0.1]) by dbdp20.itg.ti.com (8.13.8/8.13.8) with ESMTP id q7V9TeFV020853; Fri, 31 Aug 2012 14:59:44 +0530 (IST) Received: from dbdp32.itg.ti.com (172.24.170.251) by dbde70.ent.ti.com (172.24.170.148) with Microsoft SMTP Server id 14.1.323.3; Fri, 31 Aug 2012 14:59:40 +0530 Received: from localhost.localdomain (dbdp20.itg.ti.com [172.24.170.38]) by dbdp32.itg.ti.com (8.13.8/8.13.8) with ESMTP id q7V9TXQ8013319; Fri, 31 Aug 2012 14:59:40 +0530 From: AnilKumar Ch To: Subject: [PATCH 4/5] leds: leds-gpio: adopt pinctrl support Date: Fri, 31 Aug 2012 14:59:20 +0530 Message-ID: <1346405361-29711-5-git-send-email-anilkumar@ti.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1346405361-29711-1-git-send-email-anilkumar@ti.com> References: <1346405361-29711-1-git-send-email-anilkumar@ti.com> MIME-Version: 1.0 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -7.1 (-------) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-7.1 points) pts rule name description ---- ---------------------- -------------------------------------------------- -5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/, high trust [198.47.26.152 listed in list.dnswl.org] 0.0 KHOP_BIG_TO_CC Sent to 10+ recipients instaed of Bcc or a list -0.0 SPF_PASS SPF: sender matches SPF record -0.2 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: linux-arm-kernel@lists.infradead.org, devicetree-discuss@lists.ozlabs.org, grant.likely@secretlab.ca, rpurdie@rpsys.net, wg@grandegger.com, AnilKumar Ch , bryan.wu@canonical.com, mkl@pengutronix.de, linux-omap@vger.kernel.org, linux-leds@vger.kernel.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Adopt pinctrl support to leds-gpio driver, based on the device pointer (leds-gpio) pinctrl driver configure SoC pins to GPIO mode. Signed-off-by: AnilKumar Ch --- drivers/leds/leds-gpio.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c index c032b21..d98dfb9 100644 --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c @@ -20,6 +20,7 @@ #include #include #include +#include struct gpio_led_data { struct led_classdev cdev; @@ -236,14 +237,23 @@ static int __devinit gpio_led_probe(struct platform_device *pdev) { struct gpio_led_platform_data *pdata = pdev->dev.platform_data; struct gpio_leds_priv *priv; - int i, ret = 0; + struct pinctrl *pinctrl; + int i = 0; + int ret = 0; + + pinctrl = devm_pinctrl_get_select_default(&pdev->dev); + if (IS_ERR(pinctrl)) { + return PTR_ERR(pinctrl); + } if (pdata && pdata->num_leds) { priv = devm_kzalloc(&pdev->dev, sizeof_gpio_leds_priv(pdata->num_leds), GFP_KERNEL); - if (!priv) - return -ENOMEM; + if (!priv) { + ret = -ENOMEM; + goto err_pctrl_put; + } priv->num_leds = pdata->num_leds; for (i = 0; i < priv->num_leds; i++) { @@ -254,18 +264,25 @@ static int __devinit gpio_led_probe(struct platform_device *pdev) /* On failure: unwind the led creations */ for (i = i - 1; i >= 0; i--) delete_gpio_led(&priv->leds[i]); - return ret; + goto err_pctrl_put; } } } else { priv = gpio_leds_create_of(pdev); - if (!priv) - return -ENODEV; + if (!priv) { + ret = -ENODEV; + goto err_del_gpio_led; + } } platform_set_drvdata(pdev, priv); - return 0; +err_pctrl_put: + pinctrl_put(pinctrl); +err_del_gpio_led: + while (--i >= 0) + delete_gpio_led(&priv->leds[i]); + return ret; } static int __devexit gpio_led_remove(struct platform_device *pdev)