From nobody Mon Feb 9 05:45:15 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 2062E2EFD87 for ; Tue, 12 Aug 2025 12:12:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755000776; cv=none; b=tbGQvo5fB2F+E4jaBzDWXTDhdnRb6eiNDFC+B7QzxFvLMYNcIVttlJRjxu+gcyJBZxiXbbdVICuq0R/Ckvce4nR39f5itlxa5oosUCMxMJ1WyoWmPeIAmmnmS5p8RNI/4TbrCHf151FPwp/GzFJXjWKMyLqNED2uEU8SdwxEg3I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755000776; c=relaxed/simple; bh=vkpZBLTpaIui+7bJpSkDPzFmEy+B6nYwKDayQOON0kA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aViZg8Nfb5gmCWg1paqx8RnljT2wPMRGV+HzMg/mtYpeCTdwY7mb6fN1oUk2UaSTzSr8YXxvI8WmbnMZpsjpPugKTJxyJYYupTZki23mdIxBMbokFCP2OAZk+P7ppQKUuculPWxg5Fo9NX5V9ZgKC/L6RVzGp5Vz2frBYQkF3+0= 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=x7wW6Z49; arc=none smtp.client-ip=209.85.128.52 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="x7wW6Z49" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-455b00339c8so34724585e9.3 for ; Tue, 12 Aug 2025 05:12:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1755000773; x=1755605573; 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=knHQSjIWdfCUEPeYoPW7hFKkqoSdgZ12PWpZI20C2uk=; b=x7wW6Z499699pZJrMPSKosMUyp+f4TKS2WyUih/4aLrtHas/iE3xWa+9OqdG/F6Ifr Ni+vtvxwO30uPuDkpjAhE/QeqFjCGvIhxxiW70Cog8TXNAbRJGfUE+B2FLVqpYNO5jhK r5uZbMrp1Sfj/t+JuxcMpQge34WK5cD4ZDs1Jpz82eTr3oqM8lx47EgPutaSluLHY4aJ SsrHilXSgsqv5y5ldIAD39BY/bxw3HNk/jbI5igeTQ6PAO8DfEkcYID1L973WGboNZBi 8dOw7coftQWlcBn6fnRegnlPXwJ9o27Nxien6gvvVUG1c8cqFS9ySzR5plHqiXTZER6y VDog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755000773; x=1755605573; 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=knHQSjIWdfCUEPeYoPW7hFKkqoSdgZ12PWpZI20C2uk=; b=Q8OsSFn2tghMpUDyqYD6eUjV/gaU+c1OTeHerBjkNxP2WGypY5CWpxRwIrhxI3i7ZG 6pjKmq2ncJMwNU4t9yzDflyCmU6kL6O8s/y3kZkgCbXOkacqvmacKEKhBkabbouzJ0Ka yXFXEQK3xneLsveG+V99ipg/BFDY8BdiZ05tmVLMhHqR1ggoPG7nPCDpQTtTfMp/jY7X ERvVEq5Jy/K/rhdCCsl1RxPBEiGxvI0eNTHw2UYoUKOgk91GLFbd6lSU52hJNUiYgm2s 9six4idovL606R20MTPpc4RQPblFvr1PG53bRVIJJOVSSNX43A3AJyDAdCJtZiLQmfqk 0eGA== X-Forwarded-Encrypted: i=1; AJvYcCWyk1YuToz4y+m8wT4ZoqrtodcuxyK6K5/QNCPvxWFwzkXI0YMkKMFOCUZBNudoFjVr2Qh3/oXHQQevDV8=@vger.kernel.org X-Gm-Message-State: AOJu0YycvOyIgLUc7embBHkJx4hw5QTmLoquMJnFPGl8VWGFKJk/sDy1 la6pDsRTPxxC1PKpzj7RVCwJ4ya6hfzIUdxIujmrZOPU9N/fpydHw4ifGF7YIaBsiDg= X-Gm-Gg: ASbGncuo1QpG3+/631Yhd1fK0W+qo/PMA/3yp5qYAYpTsLbHRLOIQNiOJRDqxqWGy32 CVTrkMwsGP+h1K6NZDrxIuC7miOzVbCqTu0BubKBBOA630xa2cXdIvtwKw4ZS2Suuv8fz3Zj4AC 0LhTaPi6+1jgX53C2oE0gBk3atmYvdkLDOtmLe/q4f62Nr8xCn4N+QMnZ9kdKsL56CSt0jldSg/ LDb9jr3uZZ+cxObSHcm2QexBAqYnQaBGzS9letODBHWYs25L5E2oWFiZjwWKZHe9LwhAf4VWW3R zqwQWHGRP6dNhy6sYMWBQPG3LiOvDEGkDp0Uyl7hFjD5K4iqwEuT6kd6D84x3INsWUBlWULRWjV y7tH9cc+moNJ8BjLFlcWgWimGtg== X-Google-Smtp-Source: AGHT+IEjYBGc/KpeAWjFSaq+JuE16h38uymsb1ZFUiMpW7oYYK1p/4XlxpYj0LWPvpE4j2eNSqrp8Q== X-Received: by 2002:a05:600c:1c04:b0:456:76c:84f2 with SMTP id 5b1f17b1804b1-45a152e2fccmr4110035e9.30.1755000773375; Tue, 12 Aug 2025 05:12:53 -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.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Aug 2025 05:12:52 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 Aug 2025 14:12:44 +0200 Subject: [PATCH RESEND 02/14] gpio: generic: provide helpers for reading and writing registers 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-2-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=1736; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=OZyZWSGy8uPs2UaDZUWXQTJ09CV/XrDYoRGt1dr0Y80=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBomy+/0JW/AnHm83j5bW1jh0kc3KflCAbpm1Nez +QIf94ZPVSJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaJsvvwAKCRARpy6gFHHX ctCWD/9Gpiv2qp0sqepQR7gFmlFChmRPozyq4AM1g7kU1KkrWAwTQoI85kU6hAp/usYcU4rZpBj VjEnamt7ga6KGRF+TbWK0Srw72Z8giKyNnZK/VUgwWTf3vUcFRu1Y20himIjGP5tSw1OO37dXnh GrDIyhtiFYXzX+L8egWIS+XUSW4lzONXcXFjh6dkRie7SojGAxDqwGNMDPC+pegpHGFoeE8BSwG 0zI1KijmtHhgf4PmRImBRE9LzQnaKGnh4WGgz0yBJBpXiBGdBK4YbJTkpQWXl1wPAJbP9zEZR69 1Xqlveq/zYbY4c1fjV+Pcvd7ZrLCbImz2yl+u8LYNuYFjS145kHnwcJUDjVVLb98hmmdl9VAsv6 mhjZkA4WX3fS1u6LP6YtqdvsW7LmtE5vfzczD1V6Rr1jWAXzQJJxmoTBGprIU99KZRmXaNBqEma SQ617U6c/BaiJK03BHURZUlP3QFwt153QiFv17oPRcODIRkfDm0m3BXuR4Mhhx98vGtkzz7hvdJ GJxNXumsYrZMvi3ethW/j6AGvYg30jVnMkXOymDVS2MkO8hKZ1QPG/OrTSto7qvgAfO7l8QI1Us TeAyfHigSJwMeiwvI9KSwA4ZAgYip48Xk4hQfrM8QXyuckZuqXHJmrcTnCVBMzld9KnVLSiMahq 9u5gtMFrkye64EQ== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Provide helpers wrapping the read_reg() and write_reg() callbacks of the generic GPIO API that are called directly by many users. This is done to hide their implementation ahead of moving them into the separate generic GPIO struct. Signed-off-by: Bartosz Golaszewski --- include/linux/gpio/generic.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/include/linux/gpio/generic.h b/include/linux/gpio/generic.h index 5a85ecbef8d234d9cf0c2f1db7a97f5f3781b2e4..4c0626b53ec90388a034bc7797e= efa53e7ea064e 100644 --- a/include/linux/gpio/generic.h +++ b/include/linux/gpio/generic.h @@ -100,6 +100,37 @@ gpio_generic_chip_set(struct gpio_generic_chip *chip, = unsigned int offset, return chip->gc.set(&chip->gc, offset, value); } =20 +/** + * gpio_generic_read_reg() - Read a register using the underlying callback. + * @chip: Generic GPIO chip to use. + * @reg: Register to read. + * + * Returns: value read from register. + */ +static inline unsigned long +gpio_generic_read_reg(struct gpio_generic_chip *chip, void __iomem *reg) +{ + if (WARN_ON(!chip->gc.read_reg)) + return 0; + + return chip->gc.read_reg(reg); +} + +/** + * gpio_generic_write_reg() - Write a register using the underlying callba= ck. + * @chip: Generic GPIO chip to use. + * @reg: Register to write to. + * @val: New value to write. + */ +static inline void gpio_generic_write_reg(struct gpio_generic_chip *chip, + void __iomem *reg, unsigned long val) +{ + if (WARN_ON(!chip->gc.write_reg)) + return; + + chip->gc.write_reg(reg, val); +} + #define gpio_generic_chip_lock(gen_gc) \ raw_spin_lock(&(gen_gc)->gc.bgpio_lock) =20 --=20 2.48.1