This patchset contains the initial GPIO/PINCONF support for the Broadcom Cygnus SoC. Cygnus has 3 GPIO controllers: 1) the ASIU GPIO; 2) the chipCommonG GPIO; and 3) the ALWAYS-ON GPIO. All 3 types of GPIO controllers are supported by the this driver. All 3 Cygnus GPIO controllers support basic PINCONF functions such as bias pull up, pull down, and drive strength configurations, when these pins are muxed to GPIO. Pins from the ASIU GPIO can be individually muxed to GPIO function, through interaction with the Cygnus IOMUX controller. Note this patchset has a dependency on the other patchset "Add pinctrl support to Broadcom Cygnus SoC" that is also under review Changes from v8: - Add code in function 'cygnus_gpio_pinmux_add_range' to free pinmux node resource by calling of_node_put - Drop .suppress_bind_attrs = true, since this is already done in platform_driver_probe Changes from v7: - Use 'bool' instead of 'int' for flag that indicates pinmux support in the driver - Call put_device to drop reference to the pinmux dev after call to of_find_device_by_node - Replace kasprintf with devm_kasprintf and remove memory deallocation logic in the driver - Set suppress_bind_attrs to true for the driver Changes from v6: - Move the driver from drivers/gpio/* to drivers/pinctrl/* since this driver supports both GPIO and some basic PINCONF features - Support PINCONF features through standard DT subnodes properties including "bias-disable", "bias-pull-up", "bias-pull-down", and "drive-strength", by creating local PINCONF controller - Add support to allow individual ASIU GPIO pins to be muxed as GPIO, through interactions with the Cygnus IOMUX driver - Convert the driver to use standard GPIOCHIP_IRQ APIs. This helps to reduce customized code in the driver - Other miscellaneous imrpovements in the driver - Enable GPIO based phone hook detection support for BCM911360 phone factor board Changes from v5: - Get rid of DT property "linux,gpio-base". Use dynamic allocation for GPIO base number Changes from v4: - Use DT property "linux,gpio-base" to define GPIO base number - factorize common code to improve code readability and reduce code size - remove "bcm_" prefix on function and struct names - improve debugging prints - default GPIO_BCM_CYGNUS to y in Kconfig (it still depends on ARCH_BCM_CYGNUS). This way we do not need to select it from the arch/arm/mach-bcm/Kconfig - Get rid of redundant MAINTAINER entry for this driver. It will be maintained by Broadcom iProc/Cygnus maintainers - Update device tree document based on driver changes Changes from v3: - Fix dt property tpyo - Fix incorrect GPIO compatible ID in device tree binding document example Changes from v2: - Consolidate different compatible IDs into "brcm,cygnus-gpio" - Get rid of redundant "no-interrupt" property Changes from v1: - Get rid of inline qualifier - Get rid of redundant check in the ISR - Other minor fixes to imrove code readability Ray Jui (4): pinctrl: Cygnus: define Broadcom Cygnus GPIO/PINCONF binding pinctrl: cygnus: add gpio/pinconf driver ARM: dts: enable GPIO for Broadcom Cygnus ARM: dts: cygnus: enable GPIO based hook detection .../bindings/pinctrl/brcm,cygnus-gpio.txt | 102 +++ arch/arm/boot/dts/bcm-cygnus.dtsi | 33 + arch/arm/boot/dts/bcm911360_entphn.dts | 13 + drivers/pinctrl/bcm/Kconfig | 22 + drivers/pinctrl/bcm/Makefile | 1 + drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c | 908 ++++++++++++++++++++ 6 files changed, 1079 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt create mode 100644 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c -- 1.7.9.5 -- 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