A lot of pinctrl aware gpio chip drivers use the following pattern: int foo_request_gpio(struct gpio_chip *gc, unsigned offset) { return pinctrl_request_gpio(gc->base + offset); } void foo_request_gpio(struct gpio_chip *gc, unsigned offset) { pinctrl_free_gpio(gc->base + offset); } static struct gpio_chip foo_chip { ... .request = foo_request_gpio; .free = foo_request_gpio; ... }; To prevent this from spreading any further, add and export generic versions that gpio chip drivers can just use. * Patch 1 adds the trivial implementations. * Patch 2 replaces all identical (+/- debug output/comments) versions in gpio/ * Patch 3/4 modifies drivers that use a boolean for conditional calling request/free by just not populating the callbacks if the boolean is false (which is only set at probe) * Patch 5 replaces all identical version in pinctrl/ Build tested as far as possible (which isn't much when only using COMPILE_TEST, even when forcing PINCTRL to y). I don't expect this to break anything, and I triple checked that I did not introduce any typos, but I can't actually test most of the changed drivers lacking hardware. Patches apply cleanly to HEAD of linux-gpio/for-next. Changes RFT -> V2: * rebased onto current HEAD * renamed gpio argument of callbacks to offset and reworded the description. Jonas Gorski (5): gpiolib: provide generic request/free implementations gpio: replace trivial implementations of request/free with generic one gpio: gpio-xz: use the generic request/free implementations gpio: gpio-pl061: use the generic request/free implementations pinctrl: replace trivial implementations of gpio_chip request/free drivers/gpio/gpio-lpc18xx.c | 14 ++---------- drivers/gpio/gpio-moxart.c | 14 ++---------- drivers/gpio/gpio-mvebu.c | 14 ++---------- drivers/gpio/gpio-pl061.c | 32 ++++----------------------- drivers/gpio/gpio-tb10x.c | 14 ++---------- drivers/gpio/gpio-tz1090-pdc.c | 14 ++---------- drivers/gpio/gpio-vf610.c | 14 ++---------- drivers/gpio/gpio-zx.c | 28 ++++------------------- drivers/gpio/gpiolib.c | 23 +++++++++++++++++++ drivers/pinctrl/bcm/pinctrl-bcm2835.c | 14 ++---------- drivers/pinctrl/intel/pinctrl-cherryview.c | 14 ++---------- drivers/pinctrl/intel/pinctrl-intel.c | 14 ++---------- drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 14 ++---------- drivers/pinctrl/nomadik/pinctrl-abx500.c | 18 ++------------- drivers/pinctrl/nomadik/pinctrl-nomadik.c | 22 ++---------------- drivers/pinctrl/pinctrl-adi2.c | 14 ++---------- drivers/pinctrl/pinctrl-as3722.c | 14 ++---------- drivers/pinctrl/pinctrl-at91.c | 26 ++-------------------- drivers/pinctrl/pinctrl-coh901.c | 22 ++---------------- drivers/pinctrl/pinctrl-digicolor.c | 14 ++---------- drivers/pinctrl/pinctrl-pistachio.c | 14 ++---------- drivers/pinctrl/pinctrl-rockchip.c | 14 ++---------- drivers/pinctrl/pinctrl-st.c | 14 ++---------- drivers/pinctrl/pinctrl-xway.c | 18 ++------------- drivers/pinctrl/qcom/pinctrl-msm.c | 16 ++------------ drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | 14 ++---------- drivers/pinctrl/qcom/pinctrl-spmi-mpp.c | 14 ++---------- drivers/pinctrl/samsung/pinctrl-samsung.c | 14 ++---------- drivers/pinctrl/sunxi/pinctrl-sunxi.c | 14 ++---------- drivers/pinctrl/vt8500/pinctrl-wmt.c | 14 ++---------- include/linux/gpio/driver.h | 3 +++ 31 files changed, 88 insertions(+), 414 deletions(-) -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html