From patchwork Wed Oct 4 14:56:27 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: 13408871 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 454B0E7C4CE for ; Wed, 4 Oct 2023 14:57:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243201AbjJDO5C (ORCPT ); Wed, 4 Oct 2023 10:57:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60308 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243121AbjJDO4v (ORCPT ); Wed, 4 Oct 2023 10:56:51 -0400 Received: from mx.skole.hr (mx1.hosting.skole.hr [161.53.165.185]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 124B1114; Wed, 4 Oct 2023 07:56:46 -0700 (PDT) Received: from mx1.hosting.skole.hr (localhost.localdomain [127.0.0.1]) by mx.skole.hr (mx.skole.hr) with ESMTP id 4820184CB4; Wed, 4 Oct 2023 16:56:45 +0200 (CEST) From: =?utf-8?q?Duje_Mihanovi=C4=87?= Date: Wed, 04 Oct 2023 16:56:27 +0200 Subject: [PATCH RFC v5 3/6] ARM: pxa: Convert Spitz CF power control to GPIO descriptors MIME-Version: 1.0 Message-Id: <20231004-pxa-gpio-v5-3-d99ae6fceea8@skole.hr> References: <20231004-pxa-gpio-v5-0-d99ae6fceea8@skole.hr> In-Reply-To: <20231004-pxa-gpio-v5-0-d99ae6fceea8@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/ZANAwAIAZoRnrBCLZbhAcsmYgBlHX0k0eLl93XWJ77A4HcpvvnTW6rw5IUEBVaZK 9G4+btriQmJAjMEAAEIAB0WIQRT351NnD/hEPs2LXiaEZ6wQi2W4QUCZR19JAAKCRCaEZ6wQi2W 4al3D/9nKmO5AkDvEj4Dgn62yLO4LY2q11bFkySNthbUGi079W8qdL5XjpM4hcehCzuWt9+lHJX ojMd3uCWUDkH0TV+3/IHseAqc45tyqUW+3NuQmQg8w+Lz57z10XbQ+fW6cL2gxtAFK82IJ6XyE/ i8AvmwKFtKIn7Ep4I1wH5q634InRqBZ1iAJqnKd4v9QJTz9yiUNYxQkTybIrPlknUl8325rvpvI y9ZsfIId1Cqw/eTMHocDabeCEaX0sUX4RA2HGnlAReo7vCD+O0inZlg8HgP+qFEp13Tt2De+osJ aC5b+tUDxloW0X0ElXa+GHqqyG/eySgrTTl1Jl3A85BWpLY8eZnEGa9wedRFyAcohXorI/FktAt jT5tpeHTAIp3bsVKzVID7NmDaqpB8bwDFVVY1AO9l6YKnLev+/H19T8rmb6QAQe4PnUdKW07yrk 0FMMig70Z4OVtpUVBOqXeZEgd8/XkOMXpfydjhHhP3w8dvdus8DuihfmLq/aA6/blYGaog9bwgE LWvYMwKLILD2ztenOD5GCtV13nZyH7D4u8g/aI3dl/hhUCOZZDzfG1cZsY3DvF6t3Da12Za5Str z2CDNRKEmWBEZgzKM+GX6m1MIBxaxB1TYeP995KTO+bub5sr+/VRXMUiysxlO5MW/3KLzjymK0I 5pV4u+cS4Gvsg9A== 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ć Reviewed-by: Bartosz Golaszewski --- 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