From patchwork Mon Oct 9 18:34:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Duje_Mihanovi=C4=87?= X-Patchwork-Id: 13414293 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C1F6CD6128 for ; Mon, 9 Oct 2023 18:34:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378058AbjJISeV (ORCPT ); Mon, 9 Oct 2023 14:34:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37720 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377721AbjJISeT (ORCPT ); Mon, 9 Oct 2023 14:34:19 -0400 Received: from mx.skole.hr (mx1.hosting.skole.hr [161.53.165.185]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4438FAF; Mon, 9 Oct 2023 11:34:17 -0700 (PDT) Received: from mx1.hosting.skole.hr (localhost.localdomain [127.0.0.1]) by mx.skole.hr (mx.skole.hr) with ESMTP id D927D84C3E; Mon, 9 Oct 2023 20:34:15 +0200 (CEST) From: =?utf-8?q?Duje_Mihanovi=C4=87?= Date: Mon, 09 Oct 2023 20:34:00 +0200 Subject: [PATCH RFT v7 3/6] ARM: pxa: Convert Spitz CF power control to GPIO descriptors MIME-Version: 1.0 Message-Id: <20231009-pxa-gpio-v7-3-c8f5f403e856@skole.hr> References: <20231009-pxa-gpio-v7-0-c8f5f403e856@skole.hr> In-Reply-To: <20231009-pxa-gpio-v7-0-c8f5f403e856@skole.hr> To: Daniel Mack , Haojian Zhuang , Robert Jarzmik , Russell King , Alan Stern , Greg Kroah-Hartman , Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Dmitry Torokhov , Mark Brown Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, linux-gpio@vger.kernel.org, linux-input@vger.kernel.org, linux-spi@vger.kernel.org, =?utf-8?q?Duje_Miha?= =?utf-8?q?novi=C4=87?= , Bartosz Golaszewski X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2281; i=duje.mihanovic@skole.hr; h=from:subject:message-id; bh=+fxcsarubc2tXSSH1K644VHfXQAJtw0ZRrtO0ziZod4=; b=owEBbQKS/ZANAwAIAZoRnrBCLZbhAcsmYgBlJEebBzCQ8D7a6o2IA9iJM6L4IKQvEJLF/EMXP D8/dTCglt+JAjMEAAEIAB0WIQRT351NnD/hEPs2LXiaEZ6wQi2W4QUCZSRHmwAKCRCaEZ6wQi2W 4W7nD/oDYI8OQRD1Xb/8LN/F2NAL5p3w4cjcV3gKEe69yyhOfsWRfhWuScix3/DvzARzdyQGoN4 7pLtVaz+giD3aR+FRcQzL5Wh2petHAporVzUTsKk3MxGx4wAZui7UnUAgwb0mF/Lie3xpeNkC3j K5nxi2Q5Xw9FDDN7AUuSAdCrEkUDzbRjX3ZBzad35xbYZ9+T83rm3Xo2TJMa07lkPYB06bFo49/ p9IdsgwYjevs8TWQxI4tHkuTQ0dgoVCqynJtR1w28S0TgYMQE9g1puhBjwqgkI9tg9RZtdv5CsQ nKMVlg4juTc7xfawDkPtexGwtU0OA09wXkxYTambLcXVcVnf2Cvzc/mcqYVE9vpXwENTCpFclYt uYjQ8ufCg7TQsmdokaVG01ZbxxcfjESE+Xp5GSrGn8uduC4ZCYIY3OtrUuuodLz1LN+ftYTVJlN gZYl5lrhe8RgOaAYLri+cp+VG7u6z8bPAEbOhMHheG0LKF4/mmbIJOuMnNNcmYn2nLNYH898UMb NwGnwR6g0CgnYSreN6kil9/SZ94KgP975Tya9dNXdapiSljTl2tkPdvzBfa+cffRIyXd7tDfwyw AqHp5gqMz4hr+lgM6RgM3xkI8+pNZ3VLPBkZ42Ly9Xve3RKbFBoB7Du8xpSNsmfDFL8KvXk9M1e Zh+8jJaWR9Q0dRQ== X-Developer-Key: i=duje.mihanovic@skole.hr; a=openpgp; fpr=53DF9D4D9C3FE110FB362D789A119EB0422D96E1 Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org Sharp's Spitz board still uses the legacy GPIO interface for controlling the power supply to its CF and SD card slots. Convert it to use the GPIO descriptor interface. Acked-by: Linus Walleij Reviewed-by: Bartosz Golaszewski Signed-off-by: Duje Mihanović --- arch/arm/mach-pxa/spitz.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 29907abc4513..c8fc333c2017 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c @@ -133,6 +133,10 @@ static unsigned long spitz_pin_config[] __initdata = { * Scoop GPIO expander ******************************************************************************/ #if defined(CONFIG_SHARP_SCOOP) || defined(CONFIG_SHARP_SCOOP_MODULE) +GPIO_LOOKUP_SINGLE(spitz_card_pwr_ctrl_gpio_table, "pxa2xx-mci.0", + "sharp-scoop", SPITZ_GPIO_CF_POWER, "cf_power", + GPIO_ACTIVE_HIGH); + /* SCOOP Device #1 */ static struct resource spitz_scoop_1_resources[] = { [0] = { @@ -190,6 +194,7 @@ struct platform_device spitz_scoop_2_device = { static void __init spitz_scoop_init(void) { platform_device_register(&spitz_scoop_1_device); + gpiod_add_lookup_table(&spitz_card_pwr_ctrl_gpio_table); /* Akita doesn't have the second SCOOP chip */ if (!machine_is_akita()) @@ -201,9 +206,18 @@ static void __maybe_unused spitz_card_pwr_ctrl(uint8_t enable, uint8_t new_cpr) { unsigned short cpr; unsigned long flags; + struct gpio_desc *cf_power; + + cf_power = gpiod_get(&pxa_device_mci.dev, "cf_power", GPIOD_ASIS); + if (IS_ERR(cf_power)) { + dev_err(&pxa_device_mci.dev, + "failed to get power control GPIO with %ld\n", + PTR_ERR(cf_power)); + return; + } if (new_cpr & 0x7) { - gpio_set_value(SPITZ_GPIO_CF_POWER, 1); + gpiod_direction_output(cf_power, 1); mdelay(5); } @@ -222,8 +236,10 @@ static void __maybe_unused spitz_card_pwr_ctrl(uint8_t enable, uint8_t new_cpr) if (!(cpr & 0x7)) { mdelay(1); - gpio_set_value(SPITZ_GPIO_CF_POWER, 0); + gpiod_direction_output(cf_power, 0); } + + gpiod_put(cf_power); } #else