From nobody Sun Oct 5 00:07:05 2025 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07F6A2EFDA5 for ; Tue, 12 Aug 2025 12:13:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755000783; cv=none; b=XrELUpEpkOlIXMYnJaMnjJnPTbkA/rkLsD0cH8Bkfhrx2gGlNb45a0rH+4yHXXMJ//GTky18MPlnfFKkcQ2ljstk8LOZhzCiRTK3KLRl1Geuw56V8LBtFOV6//kg2pQSWUNAs+UWSN9/NAFHPgHl4HpimOo34TE2RxaPweNKI/Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755000783; c=relaxed/simple; bh=Kt7kTlN8Qa7Pl4SqU30Df8uHnhys/xXdAQiFzxd+SRY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Voy89sht9AE6D6Oecgp1HTRNK9fHW9K/PpToQmaHH2zWefBM09nPlHhhLad1SxG3chMY3+Vpp+CjO2ksDRAll/WaR94LcBXeGKCsagJ+YR84Zc+YLv4KMzdCgxiMLtz+O6AYqXgSKrQW6taDQgy3ps5p6T3yj5LIidDQxhPIlIY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=iXlrkWyy; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="iXlrkWyy" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-45a0dc77a15so10538795e9.2 for ; Tue, 12 Aug 2025 05:13:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1755000780; x=1755605580; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=3XL7geZnhEu2GHgbcJnrbk4PK9+gLE9ZfzKbGFcoVdE=; b=iXlrkWyy08fsuaSeX4yyxK2+Rjr39cB8uY2LwTEohJjET3QgoE4GY4Y9pfcQGg3MNg HBT6OWrvS3G0c9fFTWyPop8FanJelek+e0fm4b32tiI1NLDNnKsCrwsPVL5HF7RC44+Y WeGVB2x2gnrgWJMJltu/WVsDqKZGEUFB/jw3lZ+UKyBuurlLWhG6j7vz4UWPri4nPvuf cVjsGLg02U8W38hMP1rXHDs50fyuhRFZddye2+KhXN4sgwXE0FrttulgDA+R2W0iZVom hgjSBWiadS1HkASCuvRsp5sD38Bs2q1yg7ZpzomIbOSUbEercxwWVG8ae/6N8I0gflFn H+ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755000780; x=1755605580; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3XL7geZnhEu2GHgbcJnrbk4PK9+gLE9ZfzKbGFcoVdE=; b=vXscVDAmKiqiahl12LN3jSY9ChvfTkXtb2csROXTtAUAK9gdS99npZAJI3fC0LmoDw hsjc7X3OuzcCbpjWDJX9/Qbr22++7wB4A9dANIl86iauJTtgILB2jIq1bySmG9TTqMRo /CsKspxF+eVTUxRod7d0ow2KbrOVhm8MMjI39Q6GCl5vDqWv/f/MgpTVqZvJAYqOJ9EH QNIZv8g+6DaTyRq9cIlA+8xpaa+t9iRLZ4JjHcDC7Ek4fb40+5TPP382HOYsaNS+eAMk P2i067LkZskgfGinU6IS/oXo1ub3a4ON22ngZbT+PCzM70QcG1zUDte+5k83jZpLKInX TWwg== X-Forwarded-Encrypted: i=1; AJvYcCVQfMZVGR9Vhf/P4DeLA6U4bUh2rX81SmwmVy/mOl2ttKKItiQpmPBCEISmuFmAwEvG0fbcVg57d0t1+CM=@vger.kernel.org X-Gm-Message-State: AOJu0YyIn7DW+MDTTeduyaVA5gBE9iV8gkOB1+56V61xXsL72dnA5sO6 sEOi+zHx5ya8QEdS9yPmWOL9VvpykY2StZWu57NdjdHYgOEiwO9UH8PDJGlbWEPMf18= X-Gm-Gg: ASbGnctdTCyIgixXw2DjV1fhweuqBtrhoDKi+uUrVdWcvjT/NlEkIPOb4kG5KdDDzGu /MkyQW90d0Rjoyr//Lkge9Nb9F4liswsJI6U/rOE9PYh75uXmbU2Bh/qUUghUjdFW/XWx4kieCm Couznwtr3XOTkz6IG/sSjvasekh0C8iSmjcn0lFAr98g7jb6flk3u8D/1jA4j7DXkmZPCmF86ZD dgcRgOXJnW1Y9iq3tJrNl4mZT0ZaaK6u81gMHdry89SxjSKDvQFqpsy6j8NKJLCK7stCJQ2Kr31 LKNkUA7tto/DvC7EWiJRgP2XsHmpu0vzYNmVOqvSanYl99+FSPrx6rQTl1lp5aXYAacEO0eNgAJ YIkI0ekLNYpisge4= X-Google-Smtp-Source: AGHT+IEPILn2ezeDHdgHGblO5LnPgpXqCH92o0onA0PD4rlV80i2qnmmx1nZzEAXazpVbXC9rkPt+A== X-Received: by 2002:a05:600c:1c01:b0:442:e9eb:1b48 with SMTP id 5b1f17b1804b1-45a114e631bmr20280695e9.24.1755000780340; Tue, 12 Aug 2025 05:13:00 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:16c8:50:27fe:4d94]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-459e6867193sm298878535e9.6.2025.08.12.05.12.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Aug 2025 05:12:59 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 Aug 2025 14:12:50 +0200 Subject: [PATCH RESEND 08/14] gpio: loongson-64bit: use new generic GPIO chip API Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250812-gpio-mmio-gpio-conv-v1-8-aac41d656979@linaro.org> References: <20250812-gpio-mmio-gpio-conv-v1-0-aac41d656979@linaro.org> In-Reply-To: <20250812-gpio-mmio-gpio-conv-v1-0-aac41d656979@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3657; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=q0nDOolzmEolL80kYOdLVFVSG8jdJDB+vSKLox1kAgw=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBomy/AIO7gnzgnYClDRyJgPa9bqdxWNaS0o7JCo kpEivjPH0WJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaJsvwAAKCRARpy6gFHHX ckAeEACpBuZdd3E7oKBEJYCiIdDjppA7PtJOjKS4jJzjYk38RZIbRF71e+ke3QZ5HXpMq6vmFKW Df4Hr/4AymzpQFGFN2EgHZbbs+3UNvS+urV8lGCZnBYBp2hKiVqGFMJml4z9UMlCXIS95Ugwbrb AXzPWS8wxHrZB1K3QmixEIKBQ7GM/e+REApDKnJry2BAtcOtL5ZJHmEi20mC621eDrbOzKp/21U lc54FDcCErQcZxT1lTSqz1prNxF5JuzZ4yu0gDBnNS7a8P3b3YRUhOKti16ghGnMfyZrZx9m9iC HoBbnkPWOwYoXVGO5jYqfiF9QLxWh5/QZvUkL6CV+IPjUyCTglP6EuKWWa9/q+cQvi7kJk3KbAl kPJhwJ7zqTc1vjFtkyHI6ENUyKB+iz4sTT9hpMOvcWurPTCyOVQlJ3OjRJJMVKKfmE69QF5X18l btvpda3umOPTz/aCGCzFmora7+HHZnqvRYFYUdqP28LLh2zIlb4BXzJdUlWPZkMW4WTPSlc3Da+ EMlV7LFaruqsbbX3RiulvISrogyJXQWQVK8r1XEutJU3V7f0GQqm7wR3YjgdmBAL8JrxWsowPDY BNQAvSJ26ZSA3WrrlzG64KjH5+QCaRRZt0YGBRVkUJ53grAuTPpK13hif1HkzdfiQEBLvMEfmsp qnNaR8CZWTMnYqg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpio-loongson-64bit.c | 42 ++++++++++++++++++++++------------= ---- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/drivers/gpio/gpio-loongson-64bit.c b/drivers/gpio/gpio-loongso= n-64bit.c index 818c606fbc5149b2e4274f0776e558332700d916..482e64ba9b4209443c2f64ae742= 6b8fa9034011a 100644 --- a/drivers/gpio/gpio-loongson-64bit.c +++ b/drivers/gpio/gpio-loongson-64bit.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -30,7 +31,7 @@ struct loongson_gpio_chip_data { }; =20 struct loongson_gpio_chip { - struct gpio_chip chip; + struct gpio_generic_chip chip; spinlock_t lock; void __iomem *reg_base; const struct loongson_gpio_chip_data *chip_data; @@ -38,7 +39,8 @@ struct loongson_gpio_chip { =20 static inline struct loongson_gpio_chip *to_loongson_gpio_chip(struct gpio= _chip *chip) { - return container_of(chip, struct loongson_gpio_chip, chip); + return container_of(to_gpio_generic_chip(chip), + struct loongson_gpio_chip, chip); } =20 static inline void loongson_commit_direction(struct loongson_gpio_chip *lg= pio, unsigned int pin, @@ -138,36 +140,40 @@ static int loongson_gpio_to_irq(struct gpio_chip *chi= p, unsigned int offset) static int loongson_gpio_init(struct device *dev, struct loongson_gpio_chi= p *lgpio, void __iomem *reg_base) { + struct gpio_generic_chip_config config; int ret; =20 lgpio->reg_base =3D reg_base; if (lgpio->chip_data->mode =3D=3D BIT_CTRL_MODE) { - ret =3D bgpio_init(&lgpio->chip, dev, 8, - lgpio->reg_base + lgpio->chip_data->in_offset, - lgpio->reg_base + lgpio->chip_data->out_offset, - NULL, NULL, - lgpio->reg_base + lgpio->chip_data->conf_offset, - 0); + config =3D (typeof(config)){ + .dev =3D dev, + .sz =3D 8, + .dat =3D lgpio->reg_base + lgpio->chip_data->in_offset, + .set =3D lgpio->reg_base + lgpio->chip_data->out_offset, + .dirin =3D lgpio->reg_base + lgpio->chip_data->conf_offset, + }; + + ret =3D gpio_generic_chip_init(&lgpio->chip, &config); if (ret) { dev_err(dev, "unable to init generic GPIO\n"); return ret; } } else { - lgpio->chip.direction_input =3D loongson_gpio_direction_input; - lgpio->chip.get =3D loongson_gpio_get; - lgpio->chip.get_direction =3D loongson_gpio_get_direction; - lgpio->chip.direction_output =3D loongson_gpio_direction_output; - lgpio->chip.set =3D loongson_gpio_set; - lgpio->chip.parent =3D dev; + lgpio->chip.gc.direction_input =3D loongson_gpio_direction_input; + lgpio->chip.gc.get =3D loongson_gpio_get; + lgpio->chip.gc.get_direction =3D loongson_gpio_get_direction; + lgpio->chip.gc.direction_output =3D loongson_gpio_direction_output; + lgpio->chip.gc.set =3D loongson_gpio_set; + lgpio->chip.gc.parent =3D dev; spin_lock_init(&lgpio->lock); } =20 - lgpio->chip.label =3D lgpio->chip_data->label; - lgpio->chip.can_sleep =3D false; + lgpio->chip.gc.label =3D lgpio->chip_data->label; + lgpio->chip.gc.can_sleep =3D false; if (lgpio->chip_data->inten_offset) - lgpio->chip.to_irq =3D loongson_gpio_to_irq; + lgpio->chip.gc.to_irq =3D loongson_gpio_to_irq; =20 - return devm_gpiochip_add_data(dev, &lgpio->chip, lgpio); + return devm_gpiochip_add_data(dev, &lgpio->chip.gc, lgpio); } =20 static int loongson_gpio_probe(struct platform_device *pdev) --=20 2.48.1