Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754610AbbEOQjX (ORCPT ); Fri, 15 May 2015 12:39:23 -0400 Received: from mail-wg0-f47.google.com ([74.125.82.47]:35091 "EHLO mail-wg0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754201AbbEOQjQ (ORCPT ); Fri, 15 May 2015 12:39:16 -0400 From: Jens Kuske To: Maxime Ripard , =?UTF-8?q?Emilio=20L=C3=B3pez?= , Mike Turquette , Linus Walleij , Rob Herring Cc: Jens Kuske , Chen-Yu Tsai , Vishnu Patekar , Hans de Goede , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com Subject: [PATCH v2 04/10] pinctrl: sunxi: Prepare for building SoC specific drivers as modules Date: Fri, 15 May 2015 18:38:54 +0200 Message-Id: <1431707940-19372-5-git-send-email-jenskuske@gmail.com> X-Mailer: git-send-email 2.4.0 In-Reply-To: <1431707940-19372-1-git-send-email-jenskuske@gmail.com> References: <1431707940-19372-1-git-send-email-jenskuske@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2755 Lines: 92 Add a remove function and export the init and remove function to allow us to build the SoC specific drivers as modules. Signed-off-by: Jens Kuske --- drivers/pinctrl/sunxi/pinctrl-sunxi.c | 25 +++++++++++++++++++------ drivers/pinctrl/sunxi/pinctrl-sunxi.h | 2 ++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c index f8e171b..4ef6b3d 100644 --- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c +++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c @@ -856,7 +856,6 @@ int sunxi_pinctrl_init(struct platform_device *pdev, struct sunxi_pinctrl *pctl; struct resource *res; int i, ret, last_pin; - struct clk *clk; pctl = devm_kzalloc(&pdev->dev, sizeof(*pctl), GFP_KERNEL); if (!pctl) @@ -954,13 +953,13 @@ int sunxi_pinctrl_init(struct platform_device *pdev, goto gpiochip_error; } - clk = devm_clk_get(&pdev->dev, NULL); - if (IS_ERR(clk)) { - ret = PTR_ERR(clk); + pctl->clk = devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(pctl->clk)) { + ret = PTR_ERR(pctl->clk); goto gpiochip_error; } - ret = clk_prepare_enable(clk); + ret = clk_prepare_enable(pctl->clk); if (ret) goto gpiochip_error; @@ -1015,10 +1014,24 @@ int sunxi_pinctrl_init(struct platform_device *pdev, return 0; clk_error: - clk_disable_unprepare(clk); + clk_disable_unprepare(pctl->clk); gpiochip_error: gpiochip_remove(pctl->chip); pinctrl_error: pinctrl_unregister(pctl->pctl_dev); return ret; } +EXPORT_SYMBOL(sunxi_pinctrl_init); + +int sunxi_pinctrl_remove(struct platform_device *pdev) +{ + struct sunxi_pinctrl *pctl = platform_get_drvdata(pdev); + + gpiochip_remove(pctl->chip); + pinctrl_unregister(pctl->pctl_dev); + + clk_disable_unprepare(pctl->clk); + + return 0; +} +EXPORT_SYMBOL(sunxi_pinctrl_remove); diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.h b/drivers/pinctrl/sunxi/pinctrl-sunxi.h index e248e81..4442676 100644 --- a/drivers/pinctrl/sunxi/pinctrl-sunxi.h +++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.h @@ -126,6 +126,7 @@ struct sunxi_pinctrl { unsigned *irq_array; spinlock_t lock; struct pinctrl_dev *pctl_dev; + struct clk *clk; }; #define SUNXI_PIN(_pin, ...) \ @@ -285,5 +286,6 @@ static inline u32 sunxi_irq_status_offset(u16 irq) int sunxi_pinctrl_init(struct platform_device *pdev, const struct sunxi_pinctrl_desc *desc); +int sunxi_pinctrl_remove(struct platform_device *pdev); #endif /* __PINCTRL_SUNXI_H */ -- 2.4.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/