Hello, This is a rework of a Rube Goldberg-inspired RFC I posted previously: https://lore.kernel.org/lkml/20210723075858.376378-1-andrew@xxxxxxxx/ This time around there's a lot less Rube - the series: 1. Contains no (ab)use of pinctrl 2. Always exposes all pins as GPIOs 3. Internally tracks the active pins Without these patches the driver limits the number of pins exposed on the gpiochip to the number of pins specified as GPIO in the devicetree, but doesn't map between the GPIO and pin number spaces. The result is that specifying offset or interleaved GPIOs in the devicetree gives unexpected behaviour in userspace. By always exposing all pins as GPIOs the patches resolve the lack of mapping between GPIO offsets and pins on the package in the driver by ensuring we always have a 1-to-1 mapping. The issue is primarily addressed by patch 1/2. Patch 2/2 makes it possible to not expose any pins as LEDs (and therefore make them all accessible as GPIOs). This has a follow-on effect of allowing the driver to bind to a device instantiated at runtime without requiring a description in the devicetree. I've tested the series under qemu to inspect the various interactions between LEDs vs GPIOs as well as conflicting GPIO requests. Please review! Andrew Andrew Jeffery (2): leds: pca955x: Make the gpiochip always expose all pins leds: pca955x: Allow zero LEDs to be specified drivers/leds/leds-pca955x.c | 65 +++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 31 deletions(-) base-commit: 239f32b4f161c1584cd4b386d6ab8766432a6ede -- 2.30.2