10 Oct, 2014

1 commit

  • Pull GPIO changes from Linus Walleij:
    "This is the bulk of GPIO changes for the v3.18 development cycle:

    - Increase the default ARCH_NR_GPIO from 256 to 512. This was done
    to avoid having a custom header for the x86
    architecture - GPIO is custom and complicated enough as it is
    already! We want to move to a radix to store the descriptors going
    forward, and finally get rid of this fixed array size altogether.

    - Endgame patching of the gpio_remove() semantics initiated by
    Abdoulaye Berthe. It is not accepted by the system that the
    removal of a GPIO chip fails during eg reboot or shutdown, and
    therefore the return value has now painfully been refactored away.
    For special cases like GPIO expanders on a hot-pluggable bus like
    USB, we may later add some gpiochip_try_remove() call, but for the
    cases we have now, return values are moot.

    - Some incremental refactoring of the gpiolib core and ACPI GPIO
    library for more descriptor usage.

    - Refactor the chained IRQ handler set-up method to handle also
    threaded, nested interrupts and set up the parent IRQ correctly.
    Switch STMPE and TC3589x drivers to use this registration method.

    - Add a .irq_not_threaded flag to the struct gpio_chip, so that also
    GPIO expanders that block but are still not using threaded IRQ
    handlers.

    - New drivers for the ARM64 X-Gene SoC GPIO controller.

    - The syscon GPIO driver has been improved to handle the "DSP GPIO"
    found on the TI Keystone 2 SoC:s.

    - ADNP driver switched to use gpiolib irqchip helpers.

    - Refactor the DWAPB driver to support being instantiated from and
    MFD cell (platform device).

    - Incremental feature improvement in the Zynq, MCP23S08, DWAPB, OMAP,
    Xilinx and Crystalcove drivers.

    - Various minor fixes"

    * tag 'gpio-v3.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (52 commits)
    gpio: pch: Build context save/restore only for PM
    pinctrl: abx500: get rid of unused variable
    gpio: ks8695: fix 'else should follow close brace '}''
    gpio: stmpe: add verbose debug code
    gpio: stmpe: fix up interrupt enable logic
    gpio: staticize xway_stp_init()
    gpio: handle also nested irqchips in the chained handler set-up
    gpio: set parent irq on chained handlers
    gpiolib: irqchip: use irq_find_mapping while removing irqchip
    gpio: crystalcove: support virtual GPIO
    pinctrl: bcm281xx: make Kconfig dependency more strict
    gpio: kona: enable only on BCM_MOBILE or for compile testing
    gpio, bcm-kona, LLVMLinux: Remove use of __initconst
    gpio: Fix ngpio in gpio-xilinx driver
    gpio: dwapb: fix pointer to integer cast
    gpio: xgene: Remove unneeded #ifdef CONFIG_OF guard
    gpio: xgene: Remove unneeded forward declation for struct xgene_gpio
    gpio: xgene: Fix missing spin_lock_init()
    gpio: ks8695: fix switch case indentation
    gpiolib: add irq_not_threaded flag to gpio_chip
    ...

    Linus Torvalds
     

08 Oct, 2014

1 commit

  • Pull pin control changes from Linus Walleij:
    "This is the bulk of pin control changes for the v3.18 development
    series:

    - New drivers for the Freescale i.MX21, Qualcomm APQ8084 pin
    controllers.

    - Incremental new features on the Rockchip, atlas 6, OMAP, AM437x,
    APQ8064, prima2, AT91, Tegra, i.MX, Berlin and Nomadik.

    - Push Freescale drivers down into their own subdirectory.

    - Assorted sprays of syntax and semantic fixes"

    * tag 'pinctrl-v3.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (48 commits)
    pinctrl: specify bindings for pins and groups
    pinctrl: nomadik: improve GPIO debug prints
    pinctrl: abx500: refactor DT parser to take two paths
    pinctrl: abx500: use helpers for map allocation/free
    pinctrl: alter device tree bindings for functions
    pinctrl: nomadik: refactor DT parser to take two paths
    pinctrl: nomadik: use utils map free function
    pinctrl: nomadik: use util function to reserve maps
    pinctrl: qcom: use restart_notifier mechanism for ps_hold
    pinctrl: sh-pfc: sh73a0: Remove unnecessary SoC data allocation
    pinctrl: berlin: fix the dt_free_map function
    pinctrl: at91: disable PD or PU before enabling PU or PD
    pinctrl: st: remove gpiochip in failure cases
    pinctrl: at91: Fix error handling while doing gpiochio_irqchip_add
    pinctrl: at91: Fix failure path in at91_gpio_probe path
    pinctrl: lantiq: Release gpiochip resources in fail case
    pinctrl: imx: detect uninitialized pins
    pinctrl: tegra: Add MIPI pad control
    pinctrl: at91: Switch to using managed clk_get
    pinctrl: adi2: Remove duplicate gpiochip_remove_pin_ranges
    ...

    Linus Torvalds
     

23 Sep, 2014

1 commit


04 Sep, 2014

1 commit

  • commit 2243a87d90b42eb38bc281957df3e57c712b5e56
    "pinctrl: avoid duplicated calling enable_pinmux_setting for a pin"
    removed the .disable callback from the struct pinmux_ops,
    making the .enable() callback the only remaining callback.

    However .enable() is a bad name as it seems to imply that a
    muxing can also be disabled. Rename the callback to .set_mux()
    and also take this opportunity to clean out any remaining
    mentions of .disable() from the documentation.

    Acked-by: Stephen Warren
    Acked-by: Bjorn Andersson
    Acked-by: Fan Wu
    Signed-off-by: Linus Walleij

    Linus Walleij
     

21 Aug, 2014

1 commit

  • Currently after configuring a GPIO pin as an interrupt related pinmux
    registers are changed, but there is no protection from calling
    gpio_direction_*() in a badly written driver, which would cause the same
    pinmux register to be reconfigured for regular input/output and this
    disabling interrupt capability of the pin.

    This patch addresses this issue by moving pinmux reconfiguration to
    .irq_{request,release}_resources() callback of irq_chip and calling
    gpio_lock_as_irq() helper to prevent reconfiguration of pin direction.

    Setting up a GPIO interrupt on Samsung SoCs is a two-step operation -
    in addition to trigger configuration in a dedicated register, the pinmux
    must be also reconfigured to GPIO interrupt, which is a different function
    than normal GPIO input, although I/O-wise they both behave in the same way
    and gpio_get_value() can be used on a pin configured as IRQ as well.

    Such design implies subtleties such as gpio_direction_input() not having
    to fail if a pin is already configured as an interrupt nor change the
    configuration to normal input. But the FLAG_USED_AS_IRQ set in gpiolib by
    gpio_lock_as_irq() is only used to check that gpio_direction_output() is
    not called, it's not used to prevent gpio_direction_input() to be called.
    So this is not a complete solution for Samsung SoCs but it's definitely a
    move in the right direction.

    Signed-off-by: Tomasz Figa
    [javier: use request resources instead of startup and expand commit message]
    Signed-off-by: Javier Martinez Canillas
    Signed-off-by: Linus Walleij

    Tomasz Figa
     

11 Jul, 2014

1 commit