Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp755036rdh; Sun, 24 Sep 2023 10:12:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFd+yDrm5BJK3hbkZ0effGJNFHzjIJzQJcZgr/lOfSB8KKVt7sgtYzO3I3w4PLTzEQi+Q/o X-Received: by 2002:a05:6a20:9782:b0:140:a25:1c1d with SMTP id hx2-20020a056a20978200b001400a251c1dmr2564165pzc.51.1695575557325; Sun, 24 Sep 2023 10:12:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695575557; cv=none; d=google.com; s=arc-20160816; b=oPsOBcK4mf/K8aeRHLBRJG5s65fdYTugScFrmKDAHE2schTmcLvfPvllzkTgmlWnP4 4a6wy/rFBTGqQrDWH+1AGw00KpbE8OdXrujYSAA9JmNaeZ1Yd2Z9U06DR2Ivg3n3ZxEa np83fsgbaI7A/7qm+F5K5PCYjJvAdOxCOZ4fwZZpor4XUgVkzhlj5G6t7UI5FFLnsYRA hp6vKUiXXoexT/3S6ASf1lwUrNF6VvlYHeHusUu/jHQ7TARt5ujW6h63uv0TQIYqwctS ptiU+UvwSak/IEls86jkr1gk6PhkDa8TegAMvy/cynG0NFho4hWwRMmOS7N1/9sNLB2Z 3ylA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from; bh=cPfqbGhDEwzcZdyqJJSAkQvoFMb4ksyWo96UesQDLSs=; fh=UU0GqEaQ9Xnukct86UJbX2/ZB3UfIgAdTfbf6iYszSw=; b=NBurKSlkdLkbUpXU1KWTSaYEKd0sbh6Rn0LcOScP1Uko4GTvWGN390ro+4k5JynXi8 m3kvl4bWnyDIDRx0O4ZUlAGzlDitZm+iPZHLgKM6EtGhpCXUmyu+sRQLSrMVDn1I5xqb SNkMCSyYPoKtHK8GH5UepUXjE4RjFoRtyYGSEHaCcAhB6y6pcI6XFXkl5nnmtpgS0RAH HtNaMg5av9kVIgmVb6qbb3m0rqskRyFskWXuBDyM9sydZo0mIXTk8RZolMphfAYmndzI zVHOasDbJZcwIevrhqUWKXL9tIrlPGaRX5NgzvBtK8bcwrj+xkGydfFO7WAd6tilzzQH fIqg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id lc14-20020a170902fa8e00b001b9ffdd9488si7817916plb.624.2023.09.24.10.12.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Sep 2023 10:12:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id A1517802587C; Sun, 24 Sep 2023 10:11:50 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230183AbjIXRLr (ORCPT + 99 others); Sun, 24 Sep 2023 13:11:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51006 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230045AbjIXRLj (ORCPT ); Sun, 24 Sep 2023 13:11:39 -0400 Received: from mx.skole.hr (mx2.hosting.skole.hr [161.53.165.186]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7F0510A for ; Sun, 24 Sep 2023 10:11:32 -0700 (PDT) Received: from mx2.hosting.skole.hr (localhost.localdomain [127.0.0.1]) by mx.skole.hr (mx.skole.hr) with ESMTP id F0497832A1; Sun, 24 Sep 2023 19:11:30 +0200 (CEST) From: =?utf-8?q?Duje_Mihanovi=C4=87?= Date: Sun, 24 Sep 2023 18:42:57 +0200 Subject: [PATCH RFC 4/6] ARM: pxa: Convert reset driver to GPIO descriptors MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Message-Id: <20230924-pxa-gpio-v1-4-2805b87d8894@skole.hr> References: <20230924-pxa-gpio-v1-0-2805b87d8894@skole.hr> In-Reply-To: <20230924-pxa-gpio-v1-0-2805b87d8894@skole.hr> To: Daniel Mack , Haojian Zhuang , Robert Jarzmik , Russell King , Alan Stern , Greg Kroah-Hartman , Linus Walleij , Bartosz Golaszewski , Andy Shevchenko Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, linux-gpio@vger.kernel.org, =?utf-8?q?Duje_Mihanovi=C4=87?= X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3634; i=duje.mihanovic@skole.hr; h=from:subject:message-id; bh=GrFT9JmOR1zAt3MyVJMcvKbA7dX5Lm6oYSMpmtciw8U=; b=owEBbQKS/ZANAwAIAZoRnrBCLZbhAcsmYgBlEG27USpK03fIklpgxoF4r7AZErPkzYxfE6IT/ 2tZaPhU9wuJAjMEAAEIAB0WIQRT351NnD/hEPs2LXiaEZ6wQi2W4QUCZRBtuwAKCRCaEZ6wQi2W 4RW3EACZMFf0i4zxCdnAKuLp1hs1yPKmYp3h7kd0qSwnkc5Wyc4iZrewxVNd73XebGxBHD0bB+B FgVhUpY/lt4LFRN6uCkuZefuj8q7nUX/3ljkbljlYKdvaag656rJ6FCoU7vLMXTB/xK3TP3mqD/ UnfPjlgn0KhGiKYBz6HcZPPPS3NtACDt44XUspRwqzNIRpGpBUnKlxWQMdkqxWsQoZZ/F5iBb3I VMWyJHWtU5twki0kx+YLV8zpD3cmG5GGEudZXp70cc4DCZbAMorZuynp+8eq9aZIAvXV59dw5uf z/iv9KQInSqIBBFuNAnU1kWJhKQuQA0VwXWX1q9zhodz7b7aOCIlsOhKdgemSHRgKWUcrVhHi0L GX717ffWtMUsJ5rcRGLaG5yzf4CKqptqEKbBkAdqmn5G2Zr7o8SA9HYjhYFN2z/lLI6wkI/hYh9 +Mu1CAHh151ALWrgX9JUanBZZaVdza8LhPFed6ty03fyjcbAsPcHLcIPHjp0oqUYnbkKla1t+2U RSG2N4fuXIQd979OYQ1iJqdJLgV+/DHEV1zEG/cZLefke+TMgyhsniuW/ydSV99zobKlEmQKVMz URrogilsBtjA+RIunY+HF+Cu6Ukr78/O/IhmDxYkLsO1GDh3DZF5t055yDNrd2B9m1IHn0A7fVE 8ymjg3RhjEGjoeQ== X-Developer-Key: i=duje.mihanovic@skole.hr; a=openpgp; fpr=53DF9D4D9C3FE110FB362D789A119EB0422D96E1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Sun, 24 Sep 2023 10:11:51 -0700 (PDT) The PXA reset driver still uses the legacy GPIO interface for configuring and asserting the reset pin. Convert it to use the GPIO descriptor interface. Signed-off-by: Duje Mihanović --- arch/arm/mach-pxa/reset.c | 40 ++++++++++++++-------------------------- arch/arm/mach-pxa/reset.h | 3 +-- arch/arm/mach-pxa/spitz.c | 6 +++++- 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/arch/arm/mach-pxa/reset.c b/arch/arm/mach-pxa/reset.c index 27293549f8ad..1484dce1383c 100644 --- a/arch/arm/mach-pxa/reset.c +++ b/arch/arm/mach-pxa/reset.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include #include #include #include @@ -14,33 +14,21 @@ static void do_hw_reset(void); -static int reset_gpio = -1; +static struct gpio_desc *reset_gpio = NULL; -int init_gpio_reset(int gpio, int output, int level) +int init_gpio_reset(int output, int level) { - int rc; - - rc = gpio_request(gpio, "reset generator"); - if (rc) { - printk(KERN_ERR "Can't request reset_gpio\n"); - goto out; + reset_gpio = gpiod_get(NULL, "reset generator", GPIOD_ASIS); + if (IS_ERR(reset_gpio)) { + printk(KERN_ERR "Can't request reset_gpio: %ld\n", + PTR_ERR(reset_gpio)); + return PTR_ERR(reset_gpio); } if (output) - rc = gpio_direction_output(gpio, level); + return gpiod_direction_output(reset_gpio, level); else - rc = gpio_direction_input(gpio); - if (rc) { - printk(KERN_ERR "Can't configure reset_gpio\n"); - gpio_free(gpio); - goto out; - } - -out: - if (!rc) - reset_gpio = gpio; - - return rc; + return gpiod_direction_input(reset_gpio); } /* @@ -50,16 +38,16 @@ int init_gpio_reset(int gpio, int output, int level) */ static void do_gpio_reset(void) { - BUG_ON(reset_gpio == -1); + BUG_ON(IS_ERR(reset_gpio)); /* drive it low */ - gpio_direction_output(reset_gpio, 0); + gpiod_direction_output(reset_gpio, 0); mdelay(2); /* rising edge or drive high */ - gpio_set_value(reset_gpio, 1); + gpiod_set_value(reset_gpio, 1); mdelay(2); /* falling edge */ - gpio_set_value(reset_gpio, 0); + gpiod_set_value(reset_gpio, 0); /* give it some time */ mdelay(10); diff --git a/arch/arm/mach-pxa/reset.h b/arch/arm/mach-pxa/reset.h index 963dd190bc13..5864f61a0e94 100644 --- a/arch/arm/mach-pxa/reset.h +++ b/arch/arm/mach-pxa/reset.h @@ -13,10 +13,9 @@ extern void pxa_register_wdt(unsigned int reset_status); /** * init_gpio_reset() - register GPIO as reset generator - * @gpio: gpio nr * @output: set gpio as output instead of input during normal work * @level: output level */ -extern int init_gpio_reset(int gpio, int output, int level); +extern int init_gpio_reset(int output, int level); #endif /* __ASM_ARCH_RESET_H */ diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 616305978727..94bcb187713b 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c @@ -1024,9 +1024,13 @@ static void spitz_restart(enum reboot_mode mode, const char *cmd) spitz_poweroff(); } +GPIO_LOOKUP_SINGLE(spitz_reset_gpio_table, NULL, "pxa-gpio", + SPITZ_GPIO_ON_RESET, "reset generator", GPIO_ACTIVE_HIGH); + static void __init spitz_init(void) { - init_gpio_reset(SPITZ_GPIO_ON_RESET, 1, 0); + gpiod_add_lookup_table(&spitz_reset_gpio_table); + init_gpio_reset(1, 0); pm_power_off = spitz_poweroff; PMCR = 0x00; -- 2.42.0