From patchwork Sun Oct 1 14:12:54 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: 728525 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 0B2FEE748F7 for ; Sun, 1 Oct 2023 14:22:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235102AbjJAOWv (ORCPT ); Sun, 1 Oct 2023 10:22:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235088AbjJAOWu (ORCPT ); Sun, 1 Oct 2023 10:22:50 -0400 Received: from mx.skole.hr (mx2.hosting.skole.hr [161.53.165.186]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F3ADB0; Sun, 1 Oct 2023 07:22:47 -0700 (PDT) Received: from mx2.hosting.skole.hr (localhost.localdomain [127.0.0.1]) by mx.skole.hr (mx.skole.hr) with ESMTP id 9FC7284920; Sun, 1 Oct 2023 16:13:03 +0200 (CEST) From: =?utf-8?q?Duje_Mihanovi=C4=87?= Date: Sun, 01 Oct 2023 16:12:54 +0200 Subject: [PATCH RFC v4 3/6] ARM: pxa: Convert Spitz CF power control to GPIO descriptors MIME-Version: 1.0 Message-Id: <20231001-pxa-gpio-v4-3-0f3b975e6ed5@skole.hr> References: <20231001-pxa-gpio-v4-0-0f3b975e6ed5@skole.hr> In-Reply-To: <20231001-pxa-gpio-v4-0-0f3b975e6ed5@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?= X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2214; i=duje.mihanovic@skole.hr; h=from:subject:message-id; bh=KS0wJeQAKLB5dKzgUIGP98I3G2fGCey57KOguPJsj3Y=; b=owEBbQKS/ZANAwAIAZoRnrBCLZbhAcsmYgBlGX5oGOZ/36VGpBrhdXBH5NSPjJz6Lj1UACbIz AMK77fWzjaJAjMEAAEIAB0WIQRT351NnD/hEPs2LXiaEZ6wQi2W4QUCZRl+aAAKCRCaEZ6wQi2W 4c9wD/9RY/iEtMcmEwtCHgo1J8A4DSWLfa83U2AGPgZUCGseig6F3xvOl8v3j5TZPplKKBcDLFp AaD98ANxx7IbR0GIMXWQGxZfZzhh8epNOj+JI8m3NTiiMpH4fGv2uUVktdaXZv0f7kVSIIuMnyZ kvXcRqUCWAT8gCRJMA1fCKjBeV21VosCt5KKXRrEcE5WmPwGGMp6U41WC0fBgw9VI/xAbeNHk1h qrVN5wS6vyHvSzGg1y3rCxPnxhNjMDpkbDlmYwIisq0EOKQMrE0br3tZt0M3xlJehqW/C+Rdlqq HC4C7EUMJqzxQ0pzUvHlfZpixYbbEIfyWVOxrxiXxNnRVD+n6Hkl6LrjxlhrBY/ra2Yn5lYWVvz Rq+jz3PfbiB6Jv0sRvxIMCINYlzTU7eg8aK8Gkrn1CFJ56z/10al/DTq6XkRDynFFDJihXl6DCQ 672bFWd4+6RyVxbAhsB299Oa6nVJk6PwQkvU10ICRqnHsn4PLNpranzaPbO2YnDCMEmqJR9N5Pw ZPvgVZJdk/EmX/SiDP2DOkTgB7OUXNY1Ahas4gie1IeMFqTYGyaE68bFDL3sUQk4xTuw/lmtgYG 1E0nXSuJ9Uy6GRqIvflbJgx/EfJLqFaoq8T90+gyEHLpeLAC9zbDSsrJBTHEZKE2bJDxGfQca79 uXfyiH3ReB4Azsg== 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 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 b6a4085e9fb0..965354e64c68 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