Re: [PATCH] pinctrl: mediatek: common-v1: Use a raw spinlock for the pinctrl regmap

From: Ryan Brue

Date: Tue Oct 06 2026 - 20:57:23 EST


Hi Chen-Yu and Sebastian,

Thanks for looking at this.

On 9/30/26 3:17 AM, Chen-Yu Tsai wrote:
The syscon node is the provider of the regmap. You need to fix it there,
not duplicate it in the consumer.

Unless I'm misunderstanding, no driver binds to that node, so its regmap comes from the generic syscon code, and changing it there would affect every syscon. Lee, Arnd, Mark, would that be acceptable?

These are the options I see. Please let me know if there's a better one:

- Do what Sebastian suggested and make syscon use a raw spinlock, except when the node has a clock, since regmap-mmio calls clk_enable() under the lock. Off PREEMPT_RT, nothing changes. On RT the lock would no longer be preemptible for most syscons, including across bulk writes. Most syscon users that do bulk writes only write a few registers, but enabling the Amlogic G12A PCIe PLL writes a sequence with 40 us of udelay() under the lock.
- Have the pinctrl ioremap() the node a second time alongside syscon's mapping and read the input register (DIN) with readl(). That read is the only access the EINT code makes in raw context. This would go around the syscon, and it requires that DIN never be written in a multi-step sequence, which is currently the case.

I'd like to know the best approach before sending out a v2.

Best regards,
Ryan Brue