If we're using gpio-mmio with a pinctrl backend the direction callbacks need to finalize their work by calling into the pin control back-end. As I was made aware that the vf610 driver was missing only that to use gpio-mmio instead of custom code, I took a stab at it. This patch is made on top of Johan Korsnes bug fix (v3), so it needs to be applied after that is in, if this works. Plese try it out on vf610! Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> --- Changes in v3: - Use the port->gpio_base for accessing GPIO registers. - Specify only GPOR for setting/clearing/reading the output, hoping a RMW on that register works with MMIO. - Rebased on the applied v3 version of Johan's fix patch. - Link to v2: https://lore.kernel.org/r/20250215-vf610-mmio-v2-0-4a91f8c8e8d5@xxxxxxxxxx Changes in v2: - Use the dual input/output set/clear registers for output. - Provide the BGPIOF_READ_OUTPUT_REG_SET flag so the driver behaves as described in the commit message... - Drop the now unused spinlock (gpio-mmio has its own). - Fix a speling mistake. - Link to v1: https://lore.kernel.org/r/20250214-vf610-mmio-v1-0-6cccd0292e84@xxxxxxxxxx --- Linus Walleij (2): gpio: mmio: Add flag for calling pinctrl back-end gpio: vf610: Switch to gpio-mmio drivers/gpio/Kconfig | 1 + drivers/gpio/gpio-mmio.c | 36 +++++++++++---- drivers/gpio/gpio-vf610.c | 105 +++++++------------------------------------- include/linux/gpio/driver.h | 3 ++ 4 files changed, 49 insertions(+), 96 deletions(-) --- base-commit: f751bf0670cbb166c58e99d57373765405178426 change-id: 20250213-vf610-mmio-eddfaeb6b197 Best regards, -- Linus Walleij <linus.walleij@xxxxxxxxxx>