From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: longzhao@ambarella.com
Cc: "Arnd Bergmann" <arnd@arndb.de>,
"Krzysztof Kozlowski" <krzk@kernel.org>,
"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
soc@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Michael Turquette" <mturquette@baylibre.com>,
"Stephen Boyd" <sboyd@kernel.org>,
"Linus Walleij" <linusw@kernel.org>,
"Bartosz Golaszewski" <brgl@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Jiri Slaby" <jirislaby@kernel.org>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Will Deacon" <will@kernel.org>, "Long Zhao" <zl020895@163.com>,
"Lee Jones" <lee@kernel.org>,
mfd@lists.linux.dev, devicetree@vger.kernel.org,
linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org,
linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 09/13] gpio: pl061: use gpio-regmap and add Ambarella layout
Date: Fri, 4 Sep 2026 16:14:32 +0300 [thread overview]
Message-ID: <aprEOB7AZQWNed4D@ashevche-desk.local> (raw)
In-Reply-To: <20260904-cv75-v5-v6-9-e918514cb3b1@ambarella.com>
On Fri, Sep 04, 2026 at 02:38:16PM +0800, Long Zhao via B4 Relay wrote:
> Convert PL061 data and direction handling to gpio-regmap while
> keeping the existing PL061 irqchip path.
> Add an Ambarella CV75 register layout variant on the AMBA bus, without
> claiming unverified GPIO suspend/resume support for Ambarella.
This part should be in a separate patch.
So far I see at least 2 patches against gpio-regmap and 2 patches against
gpio-pl061.
...
> +struct pl061_variant_data {
> + unsigned int data;
> + unsigned int dir;
> + unsigned int is;
> + unsigned int ibe;
> + unsigned int iev;
> + unsigned int ie;
> + unsigned int ris;
> + unsigned int mis;
> + unsigned int ic;
> + unsigned int mask;
> + unsigned int enable;
> + unsigned int ngpio;
> + bool access_32bit;
> + bool masked_data_address;
> + bool write_data_after_dir;
> + bool clear_irq_on_type;
> + bool pm_save_restore;
> + const struct regmap_config *regmap_config;
> +};
Should not be like this. Part of it is in the respective regmap config (with
all volatile, precious, et cetera registers, and part of it comes from driver
data (in other words based on the compatible string or other ID).
...
> struct pl061 {
> raw_spinlock_t lock;
> -
Stray change.
> void __iomem *base;
> - struct gpio_chip gc;
> + const struct pl061_variant_data *variant;
> + struct gpio_irq_chip girq;
> int parent_irq;
Here (in this structure) we should get a struct regmap instead of base and
gpio_chip.
> struct pl061_context_save_regs csave_regs;
This is not needed, see how gpio-pca953x does that with enabled regmap cache.
> };
...
> +static u32 pl061_read(struct pl061 *pl061, unsigned int reg)
> {
> - struct pl061 *pl061 = gpiochip_get_data(gc);
> - unsigned long flags;
> - unsigned char gpiodir;
> + if (pl061->variant->access_32bit)
> + return readl(pl061->base + reg);
>
> - raw_spin_lock_irqsave(&pl061->lock, flags);
> - writeb(!!value << offset, pl061->base + (BIT(offset + 2)));
> - gpiodir = readb(pl061->base + GPIODIR);
> - gpiodir |= BIT(offset);
> - writeb(gpiodir, pl061->base + GPIODIR);
> -
> - /*
> - * gpio value is set again, because pl061 doesn't allow to set value of
> - * a gpio pin before configuring it in OUT mode.
> - */
> - writeb(!!value << offset, pl061->base + (BIT(offset + 2)));
> - raw_spin_unlock_irqrestore(&pl061->lock, flags);
> -
> - return 0;
> + return readb(pl061->base + reg);
> }
> -static int pl061_get_value(struct gpio_chip *gc, unsigned offset)
> +static void pl061_write(struct pl061 *pl061, u32 value, unsigned int reg)
> {
> - struct pl061 *pl061 = gpiochip_get_data(gc);
> -
> - return !!readb(pl061->base + (BIT(offset + 2)));
> + if (pl061->variant->access_32bit)
> + writel(value, pl061->base + reg);
> + else
> + writeb(value, pl061->base + reg);
This is achieved by different regmap config — one for 32-bit, one for 8-bit
access.
> }
...
I guess it's enough for now. this needs one more round of designing this.
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2026-09-04 13:14 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 6:38 [PATCH v6 00/13] Ambarella CV75 SoC minimal bring-up Long Zhao via B4 Relay
2026-09-04 6:38 ` [PATCH v6 01/13] dt-bindings: arm: add Ambarella CV75 platforms Long Zhao via B4 Relay
2026-09-04 6:42 ` sashiko-bot
2026-09-04 22:39 ` Linus Walleij
2026-09-04 6:38 ` [PATCH v6 02/13] dt-bindings: mfd: syscon: add Ambarella CV75 secure scratchpad Long Zhao via B4 Relay
2026-09-04 6:45 ` sashiko-bot
2026-09-04 6:38 ` [PATCH v6 03/13] dt-bindings: clock: add Ambarella CV75 RCT Long Zhao via B4 Relay
2026-09-04 6:45 ` sashiko-bot
2026-09-04 6:38 ` [PATCH v6 04/13] dt-bindings: pinctrl: add Ambarella CV75 pinctrl Long Zhao via B4 Relay
2026-09-04 6:45 ` sashiko-bot
2026-09-04 22:40 ` Linus Walleij
2026-09-04 6:38 ` [PATCH v6 05/13] dt-bindings: gpio: pl061: add Ambarella CV75 variant Long Zhao via B4 Relay
2026-09-04 6:47 ` sashiko-bot
2026-09-04 14:45 ` Rob Herring
2026-09-04 6:38 ` [PATCH v6 06/13] dt-bindings: serial: snps-dw-apb-uart: add ambarella,cv75-uart Long Zhao via B4 Relay
2026-09-04 6:42 ` sashiko-bot
2026-09-04 22:41 ` Linus Walleij
2026-09-04 6:38 ` [PATCH v6 07/13] clk: ambarella: add CV75 CCU driver Long Zhao via B4 Relay
2026-09-04 6:53 ` sashiko-bot
2026-09-04 7:44 ` Jerome Brunet
2026-09-04 9:21 ` zl020895
2026-09-04 6:38 ` [PATCH v6 08/13] gpio: regmap: support write_data_after_dir and girq Long Zhao via B4 Relay
2026-09-04 6:54 ` sashiko-bot
2026-09-04 11:55 ` Andy Shevchenko
2026-09-04 6:38 ` [PATCH v6 09/13] gpio: pl061: use gpio-regmap and add Ambarella layout Long Zhao via B4 Relay
2026-09-04 6:49 ` sashiko-bot
2026-09-04 13:14 ` Andy Shevchenko [this message]
2026-09-04 6:38 ` [PATCH v6 10/13] pinctrl: ambarella: add CV75 pin controller Long Zhao via B4 Relay
2026-09-04 6:50 ` sashiko-bot
2026-09-04 13:29 ` Andy Shevchenko
2026-09-04 6:38 ` [PATCH v6 11/13] serial: 8250_dw: add Ambarella CV75 quirks Long Zhao via B4 Relay
2026-09-04 6:51 ` sashiko-bot
2026-09-04 22:45 ` Linus Walleij
2026-09-04 22:43 ` Linus Walleij
2026-09-04 6:38 ` [PATCH v6 12/13] arm64: ambarella: add ARCH_AMBARELLA and CV75 EVK DT Long Zhao via B4 Relay
2026-09-04 6:48 ` sashiko-bot
2026-09-04 22:45 ` Linus Walleij
2026-09-04 6:38 ` [PATCH v6 13/13] MAINTAINERS: add ARM/AMBARELLA SoC support Long Zhao via B4 Relay
2026-09-04 22:45 ` Linus Walleij
2026-09-04 6:54 ` [PATCH v6 00/13] Ambarella CV75 SoC minimal bring-up Jerome Brunet
2026-09-04 6:56 ` Krzysztof Kozlowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aprEOB7AZQWNed4D@ashevche-desk.local \
--to=andriy.shevchenko@linux.intel.com \
--cc=alexandre.belloni@bootlin.com \
--cc=arnd@arndb.de \
--cc=brgl@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jirislaby@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=krzk@kernel.org \
--cc=lee@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=longzhao@ambarella.com \
--cc=mfd@lists.linux.dev \
--cc=mturquette@baylibre.com \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
--cc=soc@lists.linux.dev \
--cc=will@kernel.org \
--cc=zl020895@163.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox