14 Dec, 2020

5 commits

  • Add runtime pm support to automatically enable the ipg clock and power
    domain if present.

    To save power, suggest all sub-devices of the gpiochip/irq domain should
    dynamically manage gpio/irq resources like:
    gpio:
    gpiod_request()
    ... //set gpio direction
    gpiod_free()
    irq:
    devm_request_irq() //=> module active
    devm_free_irq() //=>module is non-active or runtime idle

    Since the driver support irqchip and gpiochip, any irq/gpio resource
    requested by other modules the gpio controller clock and power domain
    should be enabled. And the irqchip's parent's clock and power also should
    be enabled if irq resoruce requested.

    Signed-off-by: Fugang Duan
    Tested-by: Guoniu.Zhou
    Reviewed-by: Frank Li
    [Arul: Fix merge conflicts]
    Signed-off-by: Arulpandiyan Vadivel

    Fugang Duan
     
  • Remove redundant definition of IMX_SC_IRQ_GROUP_WAKE which is already
    defined in include/linux/firmware/imx/sci.h to fix below coverity issue:

    CID 11172090 (#1 of 2): Parse warning (PW.BAD_MACRO_REDEF)
    1. bad_macro_redef: incompatible redefinition of macro
    "IMX_SC_IRQ_GROUP_WAKE" (declared at line 20 of
    "./include/linux/firmware/imx/sci.h")

    Signed-off-by: Anson Huang
    Reviewed-by: Jacky Bai

    Anson Huang
     
  • The imx SC api strongly assumes that messages are composed out of
    4-bytes words but some of our message structs have sizeof "6" and "7".

    This produces many oopses with CONFIG_KASAN=y:

    BUG: KASAN: stack-out-of-bounds in imx_mu_send_data+0x108/0x1f0

    It shouldn't cause an issues in normal use because these structs are
    always allocated on the stack.

    Reported-by: Iuliana Prodan
    Signed-off-by: Leonard Crestez
    Reviewed-by: Jason Liu
    Reviewed-by: Aisheng Dong

    Leonard Crestez
     
  • Use platform_get_irq_optional() to avoid error message for the
    optional irq.

    Fixes: 7723f4c5ecdb ("driver core: platform: Add an error message to platform_get_irq*()")
    Signed-off-by: Fugang Duan

    Fugang Duan
     
  • This patch enables gpio pin's pad wakeup function which
    is supported by SCFW, with pad wakeup enabled, GPIO's
    power is no need to be enabled after suspend, hence
    save a sub-system's power.

    To enable pad wakeup, dtb needs to provide pad wakeup
    number for each gpio port, and each pin has to provide
    , they should be inside each gpio node,

    To enable pad wakeup, dtb needs to provide pad wakeup
    number for each gpio port, and each pin has to provide
    , they should be inside each gpio node,
    this is for calling SCFW APIs to enable/disable pad wakeup,
    example of adding GPIO4_22 pad wakeup in dtb:

    &lsio_gpio4 {
    /* total pad wakeup number in gpio4 */
    pad-wakeup-num = ;
    /* SC_P_USDHC1_CD_B, SC_PAD_WAKEUP_LOW_LVL, LINE 22 */
    pad-wakeup = ;
    };

    Pad wakeup will be enabled after GPIO port suspend, and
    once any pad wakes up system, gpio driver will get the
    wakeup line and handles the event during noirq resume
    phase.

    Signed-off-by: Anson Huang

    Anson Huang
     

29 Sep, 2020

1 commit

  • Change config to tristate, add module device table, module author,
    description and license to support module build for i.MX GPIO driver.

    As this is a SoC GPIO module, it provides common functions for most
    of the peripheral devices, such as GPIO pins control, secondary
    interrupt controller for GPIO pins IRQ etc., without GPIO driver, most
    of the peripheral devices will NOT work properly, so GPIO module is
    similar with clock, pinctrl driver that should be loaded ONCE and
    never unloaded.

    Since MXC GPIO driver needs to have init function to register syscore
    ops once, here still use subsys_initcall(), NOT module_platform_driver().

    Signed-off-by: Anson Huang
    Link: https://lore.kernel.org/r/1600320829-1453-1-git-send-email-Anson.Huang@nxp.com
    Signed-off-by: Linus Walleij

    Anson Huang
     

02 Apr, 2020

1 commit

  • The gpiochip_generic_request() and gpiochip_generic_free() functions can
    now deal properly with chips that don't have any pin-ranges defined, so
    they can be assigned unconditionally.

    Suggested-by: Linus Walleij
    Signed-off-by: Thierry Reding
    Link: https://lore.kernel.org/r/20200401200527.2982450-1-thierry.reding@gmail.com
    Signed-off-by: Linus Walleij

    Thierry Reding
     

01 Oct, 2019

1 commit

  • On some of i.MX SoCs like i.MX8QXP, there is ONLY one IRQ for each
    GPIO bank, so it is better to check the IRQ count before getting
    second IRQ to avoid below error message during probe:

    [ 1.070908] gpio-mxc 5d080000.gpio: IRQ index 1 not found
    [ 1.077420] gpio-mxc 5d090000.gpio: IRQ index 1 not found
    [ 1.083766] gpio-mxc 5d0a0000.gpio: IRQ index 1 not found
    [ 1.090122] gpio-mxc 5d0b0000.gpio: IRQ index 1 not found
    [ 1.096470] gpio-mxc 5d0c0000.gpio: IRQ index 1 not found
    [ 1.102804] gpio-mxc 5d0d0000.gpio: IRQ index 1 not found
    [ 1.109144] gpio-mxc 5d0e0000.gpio: IRQ index 1 not found
    [ 1.115475] gpio-mxc 5d0f0000.gpio: IRQ index 1 not found

    Signed-off-by: Anson Huang
    Signed-off-by: Bartosz Golaszewski

    Anson Huang
     

02 Aug, 2019

1 commit


05 Apr, 2019

1 commit


25 Feb, 2019

1 commit

  • On i.MX8MQ platform, clock driver uses platform driver
    model and it is probed after GPIO driver, so when GPIO
    driver fails to get clock, it should check the error type
    to decide whether to return defer probe or just ignore
    the clock operation.

    Fixes: 2808801aab8a ("gpio: mxc: add clock operation")
    Signed-off-by: Anson Huang
    Signed-off-by: Linus Walleij

    Anson Huang
     

17 Nov, 2018

1 commit

  • During noirq suspend/resume phase, GPIO irq could arrive
    and its registers like IMR will be changed by irq handle
    process, to make the GPIO registers exactly when it is
    powered ON after resume, move the GPIO noirq suspend/resume
    callback to syscore suspend/resume phase, local irq is
    disabled at this phase so GPIO registers are atomic.

    Signed-off-by: Anson Huang
    Signed-off-by: Linus Walleij

    Anson Huang
     

05 Nov, 2018

1 commit


30 Jul, 2018

1 commit

  • GPIO registers could lose context on i.MX7D, when
    enter LPSR mode, the whole SoC will be powered off
    except LPSR domain, GPIO banks will lose context
    in this case, need to restore the context after
    resume from LPSR mode.

    This patch adds new compatible string for i.MX7D
    which supports GPIO power off feature in suspend,
    and adds the GPIO save/restore operations in noirq
    suspend/resume phase, since GPIO is fundamental
    module which could be used by other peripherals'
    resume phase.

    Signed-off-by: Anson Huang
    Reviewed-by: Fabio Estevam
    Signed-off-by: Linus Walleij

    Anson Huang
     

24 May, 2018

2 commits


16 May, 2018

1 commit

  • This is a driver so we should only include .
    However this driver was using gpio_get_value() to fetch the
    current value of a GPIO used as IRQ line to determine trigger
    direction, so we need a better way than looping over the
    global GPIO numberspace.

    Fix this by just calling the .get() function in the GPIO chip,
    as we don't want to end up creating a consumer dependency
    on ourselves.

    Cc: Vladimir Zapolskiy
    Cc: Fabio Estevam
    Acked-by: Shawn Guo
    Signed-off-by: Linus Walleij

    Linus Walleij
     

21 Aug, 2017

2 commits


14 Aug, 2017

1 commit


01 Aug, 2017

1 commit

  • In the function gpio_set_wake_irq(), port->irq_high is only checked for
    zero. As platform_get_irq() returns a value less then zero if no interrupt
    was found, any gpio >= 16 was handled like an irq_high interrupt was
    available. On iMX27 for example no high interrupt is available. This lead
    to the problem that only some gpios (the lower 16) were useable as wake
    sources.

    Signed-off-by: Philipp Rosenberger
    Signed-off-by: Linus Walleij

    Philipp Rosenberger
     

15 Mar, 2017

1 commit


06 Oct, 2016

1 commit

  • Pull GPIO updates from Linus Walleij:
    "This is the bulk of GPIO changes for the v4.9 series:

    Subsystem improvements:

    - do away with the last users of the obsolete Kconfig options
    ARCH_REQUIRE_GPIOLIB and ARCH_WANT_OPTIONAL_GPIOLIB (the latter
    always sounded like an item on a wishlist to Santa Claus to me). We
    can now select GPIOLIB and be done with it, for all archs. After
    some struggle it even work on UM. Not that it has GPIO, but if it
    wants to, it can select the library.

    - continued efforts to make drivers properly either tristate or bool.

    - introduce a warning for drivers assigning default triggers to their
    irqchip lines when probed from device tree, so we find and fix
    these ambigous drivers. It is agreed that in the OF config path,
    the device tree defines trigger characteristics.

    - the same warning, mutatis mutandis, for ACPI-probed GPIO irqchips.

    - we introduce the ability to mark certain IRQ lines as "unusable" as
    they can be taken by BIOS/firmware, unrouted in silicon and
    generally nasty if you use them, and such things. This is put to
    good use in the STMPE driver and also in the Cherryview pin control
    driver.

    - a new "mockup" virtual GPIO device that can be used for testing.
    The plan is to add unit tests under tools/* for exercising this
    device and verify that the kernel code paths are working as they
    should.

    - make memory-mapped I/O-drivers depend on HAS_IOMEM. This was
    implicit all the time, but when people started building UM with
    allyesconfig or allmodconfig it exploded in their face.

    - move some stray bits of device tree and ACPI HW description
    callbacks down into their respective implementation silo. These
    were causing issues when compiling on !HAS_IOMEM as well, so now
    eventually UM compiles the GPIOLIB library if it wants to.

    New drivers:

    - new driver for the Aspeed GPIO front-end companion to the pin
    controller merged through the pin control tree.

    - new driver for the LP873x PMIC GPIO portions.

    - new driver for Technologic Systems' I2C FPGA GPIO such as TS4900,
    TS-7970, TS-7990 and TS-4100.

    - new driver for the Broadcom BCM63xx series including BCM6338 and
    BCM6345.

    - new driver for the Intel WhiskeyCove PMIC GPIO.

    - new driver for the Allwinner AXP209 PMIC GPIO portions.

    - new driver for Diamond Systems 48 line GPIO-MM, another of these
    port-mapped I/O expansion cards.

    - support the STMicroelectronics STMPE1600 variant in the STMPE
    driver.

    Driver improvements:

    - the STMPE driver now supports rising/falling edge detection
    properly for IRQs.

    - the PCA954x will now fetch and enable its VCC regulator properly.

    - major rework of the PCA953x driver with the goal of eventually
    switching it over to use regmap and thus modernize it even more.

    - switch the IOP driver to use the generic MMIO GPIO library.

    - move the ages old HTC EGPIO (extended GPIO) GPIO expander driver
    over to this subsystem from MFD, achieveing some separation of
    concerns"

    * tag 'gpio-v4.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (81 commits)
    gpio: add missing static inline
    gpio: OF: localize some gpiochip init functions
    gpio: acpi: separation of concerns
    gpio: OF: separation of concerns
    gpio: make memory-mapped drivers depend on HAS_IOMEM
    gpio: stmpe: use BIT() macro
    gpio: stmpe: forbid unused lines to be mapped as IRQs
    mfd/gpio: Move HTC GPIO driver to GPIO subsystem
    gpio: MAINTAINERS: Add an entry for GPIO mockup driver
    gpio/mockup: add virtual gpio device
    gpio: Added zynq specific check for special pins on bank zero
    gpio: axp209: Implement get_direction
    gpio: aspeed: remove redundant return value check
    gpio: loongson1: remove redundant return value check
    ARM: omap2: fix missing include
    gpio: tc3589x: fix up complaints on unsigned
    gpio: tc3589x: add .get_direction() and small cleanup
    gpio: f7188x: use gpiochip_get_data instead of container_of
    gpio: tps65218: use devm_gpiochip_add_data() for gpio registration
    gpio: aspeed: fix return value check in aspeed_gpio_probe()
    ...

    Linus Torvalds
     

12 Sep, 2016

2 commits

  • If a GPIO controller description in board DTB contains information
    about mappings between GPIOs and pads under IOMUX control use it to
    request and free GPIOs with respect to pinctrl/pinmux subsystems.

    One of immediate positive functional changes is inability to
    request non-existing GPIOs, i.e. if there is no pad such. Also
    pinctrl/pinmux may now properly account pads occupied by requested
    GPIOs.

    The change has no effect, if "gpio-ranges" property is not found
    including the case if a board has no DTB firmware.

    Signed-off-by: Vladimir Zapolskiy
    Acked-by: Shawn Guo
    Signed-off-by: Linus Walleij

    Vladimir Zapolskiy
     
  • In general situation on-SoC GPIO controller drivers should be probed
    after pinctrl/pinmux controller driver, because on-SoC GPIOs utilize a
    pin/pad as a resource provided and controlled by pinctrl subsystem.

    This is stated in multiple places, e.g. from drivers/Makefile:

    GPIO must come after pinctrl as gpios may need to mux pins etc

    Looking at Freescale iMX SoC series specifics, imx*_pinctrl_init()
    functions are called at arch_initcall and postcore_initcall init
    levels, so the change of initcall level for gpio-mxc driver from
    postcore_initcall to subsys_initcall level is sufficient. Also note
    that the most of GPIO controller drivers settled at subsys_initcall
    level.

    If pinctrl subsystem manages pads with GPIO functions, the change is
    needed to avoid unwanted driver probe deferrals during kernel boot.

    Signed-off-by: Vladimir Zapolskiy
    Acked-by: Shawn Guo
    Signed-off-by: Linus Walleij

    Vladimir Zapolskiy
     

23 Aug, 2016

1 commit

  • The Kconfig currently controlling compilation of this code is:

    drivers/gpio/Kconfig:config GPIO_MXC
    drivers/gpio/Kconfig: def_bool y

    ...meaning that it currently is not being built as a module by anyone.

    Lets remove the couple traces of modular infrastructure use, so that
    when reading the driver there is no doubt it is builtin-only.

    We delete the MODULE_LICENSE tag etc. since all that information
    was (or is now) contained at the top of the file in the comments.
    Note the original e-mail had a missing/typo'd @ symbol anyway.

    We don't replace module.h with init.h since the file already has that.

    Cc: Alexandre Courbot
    Cc: Daniel Mack
    Cc: Juergen Beisert
    Cc: linux-gpio@vger.kernel.org
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Linus Walleij

    Paul Gortmaker
     

23 Feb, 2016

1 commit


05 Jan, 2016

1 commit

  • The separate struct bgpio_chip has been a pain to handle, both
    by being confusingly similar in name to struct gpio_chip and
    for being contained inside a struct so that struct gpio_chip
    is contained in a struct contained in a struct, making several
    steps of dereferencing necessary.

    Make things simpler: include the fields directly into
    , #ifdef:ed for CONFIG_GENERIC_GPIO, and
    get rid of the altogether. Prefix
    some of the member variables with bgpio_* and add proper
    kerneldoc while we're at it.

    Modify all users to handle the change and use a struct
    gpio_chip directly. And while we're at it: replace all
    container_of() dereferencing by gpiochip_get_data() and
    registering the gpio_chip with gpiochip_add_data().

    Cc: arm@kernel.org
    Cc: Alexander Shiyan
    Cc: Shawn Guo
    Cc: Sascha Hauer
    Cc: Kukjin Kim
    Cc: Alexandre Courbot
    Cc: Brian Norris
    Cc: Florian Fainelli
    Cc: Sudeep Holla
    Cc: Lorenzo Pieralisi
    Cc: Nicolas Pitre
    Cc: Olof Johansson
    Cc: Vladimir Zapolskiy
    Cc: Rabin Vincent
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-omap@vger.kernel.org
    Cc: linux-samsung-soc@vger.kernel.org
    Cc: bcm-kernel-feedback-list@broadcom.com
    Acked-by: Gregory Fong
    Acked-by: Liviu Dudau
    Acked-by: H Hartley Sweeten
    Acked-by: Tony Lindgren
    Acked-by: Krzysztof Kozlowski
    Acked-by: Lee Jones
    Signed-off-by: Linus Walleij

    Linus Walleij
     

15 Oct, 2015

1 commit


18 Sep, 2015

1 commit

  • Pull irq updates from Thomas Gleixner:
    "This is a rather large update post rc1 due to the final steps of
    cleanups and API changes which had to wait for the preparatory patches
    to hit your tree.

    - Regression fixes for ARM GIC irqchips

    - Regression fixes and lockdep anotations for renesas irq chips

    - The leftovers of the cleanup and preparatory patches which have
    been ignored by maintainers

    - Final conversions of the newly merged users of obsolete APIs

    - Final removal of obsolete APIs

    - Final removal of ARM artifacts which had been introduced during the
    conversion of ARM to the generic interrupt code.

    - Final split of the irq_data into chip specific and common data to
    reflect the needs of hierarchical irq domains.

    - Treewide removal of the first argument of interrupt flow handlers,
    i.e. the irq number, which is not used by the majority of handlers
    and simple to retrieve from the other argument the irq descriptor.

    - A few comment updates and build warning fixes"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (40 commits)
    arm64: Remove ununsed set_irq_flags
    ARM: Remove ununsed set_irq_flags
    sh: Kill off set_irq_flags usage
    irqchip: Kill off set_irq_flags usage
    gpu/drm: Kill off set_irq_flags usage
    genirq: Remove irq argument from irq flow handlers
    genirq: Move field 'msi_desc' from irq_data into irq_common_data
    genirq: Move field 'affinity' from irq_data into irq_common_data
    genirq: Move field 'handler_data' from irq_data into irq_common_data
    genirq: Move field 'node' from irq_data into irq_common_data
    irqchip/gic-v3: Use IRQD_FORWARDED_TO_VCPU flag
    irqchip/gic: Use IRQD_FORWARDED_TO_VCPU flag
    genirq: Provide IRQD_FORWARDED_TO_VCPU status flag
    genirq: Simplify irq_data_to_desc()
    genirq: Remove __irq_set_handler_locked()
    pinctrl/pistachio: Use irq_set_handler_locked
    gpio: vf610: Use irq_set_handler_locked
    powerpc/mpc8xx: Use irq_set_handler_locked()
    powerpc/ipic: Use irq_set_handler_locked()
    powerpc/cpm2: Use irq_set_handler_locked()
    ...

    Linus Torvalds
     

16 Sep, 2015

1 commit

  • Most interrupt flow handlers do not use the irq argument. Those few
    which use it can retrieve the irq number from the irq descriptor.

    Remove the argument.

    Search and replace was done with coccinelle and some extra helper
    scripts around it. Thanks to Julia for her help!

    Signed-off-by: Thomas Gleixner
    Cc: Julia Lawall
    Cc: Jiang Liu

    Thomas Gleixner
     

14 Sep, 2015

1 commit

  • Need to check return value of irq_alloc_generic_chip, because
    it may return NULL.
    1. Change mxc_gpio_init_gc return type from void to int.
    2. Add a new lable out_irqdomain_remove to remove the irq domain
    when mxc_gpio_init_gc fail.

    Signed-off-by: Peng Fan
    Cc: Alexandre Courbot
    [Manually rebased]
    Signed-off-by: Linus Walleij

    Peng Fan
     

13 Aug, 2015

2 commits

  • Fix the section mismatch warning

    WARNING: vmlinux.o(.text+0x2b2788): Section mismatch in reference from the function mxc_gpio_probe() to the function .init.text:mxc_gpio_init_gc()
    The function mxc_gpio_probe() references
    the function __init mxc_gpio_init_gc().
    This is often because mxc_gpio_probe lacks a __init
    annotation or the annotation of mxc_gpio_init_gc is wrong.

    Signed-off-by: Dirk Behme
    Signed-off-by: Vladimir Zapolskiy
    Signed-off-by: Linus Walleij

    Dirk Behme
     
  • Currently in the FSL platform all GPIO interrupts in a bank are muxed
    into two GPIO lines to the GPC interrupt controller. In each GPIO bank
    GPIOs 0-15 are OR'ed into one GPC interrupt controller interrupt and 16-31
    are OR'ed into another. With the current code, if any of the 0-15 or
    16-31 interrupts are marked as wakeup capable, all interrupts belonging
    to that sub-bank (either 0-15 or 16-31) will wake up the device. This is
    because interrupts are only being masked at the interrupt controller
    and not at the GPIO controller.

    This patch allows masking of GPIO interrupts at the GPIO controller during
    suspend if they have not been labeled wakeup capable. This patch uses
    preexisting IRQCHIP_MASK_ON_SUSPEND flag while initializing the GPIO
    interrupts to get the desired behavior.

    Cc: Linus Walleij
    Cc: Alexandre Courbot
    Cc: linux-gpio@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Eduardo Valentin
    Signed-off-by: Ulises Brindis
    Signed-off-by: Linus Walleij

    Ulises Brindis
     

14 Jul, 2015

1 commit


24 Jun, 2015

1 commit

  • Pull gpio updates from Linus Walleij:
    "This is the big bulk of GPIO changes queued for the v4.2 kernel
    series:

    - a big set of cleanups to the aged sysfs interface from Johan
    Hovold. To get these in, v4.1-rc3 was merged into the tree as the
    first patch in that series had to go into stable. This makes the
    locking much more fine-grained (get rid of the "big GPIO lock(s)"
    and store states in the GPIO descriptors.

    - rename gpiod_[g|s]et_array() to gpiod_[g|s]et_array_value() to
    avoid confusions.

    - New drivers for:
    * NXP LPC18xx (currently LPC1850)
    * NetLogic XLP
    * Broadcom STB SoC's
    * Axis ETRAXFS
    * Zynq Ultrascale+ (subdriver)

    - ACPI:
    * make it possible to retrieve GpioInt resources from a GPIO
    device using acpi_dev_gpio_irq_get()
    * merge some dependent I2C changes exploiting this.
    * support the ARM X-Gene GPIO standby driver.

    - make it possible for the generic GPIO driver to read back the value
    set registers to reflect current status.

    - loads of OMAP IRQ handling fixes.

    - incremental improvements to Kona, max732x, OMAP, MXC, RCAR,
    PCA953x, STP-XWAY, PCF857x, Crystalcove, TB10x.

    - janitorial (constification, checkpatch cleanups)"

    * tag 'gpio-v4.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (71 commits)
    gpio: Fix checkpatch.pl issues
    gpio: pcf857x: handle only enabled irqs
    gpio / ACPI: Return -EPROBE_DEFER if the gpiochip was not found
    GPIO / ACPI: export acpi_gpiochip_request(free)_interrupts for module use
    gpio: improve error reporting on own descriptors
    gpio: promote own request failure to pr_err()
    gpio: Added support to Zynq Ultrascale+ MPSoC
    gpio: add ETRAXFS GPIO driver
    fix documentation after renaming gpiod_set_array to gpiod_set_array_value
    gpio: Add GPIO support for Broadcom STB SoCs
    gpio: xgene: add ACPI support for APM X-Gene GPIO standby driver
    gpio: tb10x: Drop unneeded free_irq() call
    gpio: crystalcove: set IRQCHIP_SKIP_SET_WAKE for the irqchip
    gpio: stp-xway: Use the of_property_read_u32 helper
    gpio: pcf857x: Check for irq_set_irq_wake() failures
    gpio-stp-xway: Fix enabling the highest bit of the PHY LEDs
    gpio: Prevent an integer overflow in the pca953x driver
    gpio: omap: rework omap_gpio_irq_startup to handle current pin state properly
    gpio: omap: rework omap_gpio_request to touch only gpio specific registers
    gpio: omap: rework omap_x_irq_shutdown to touch only irqs specific registers
    ...

    Linus Torvalds
     

18 Jun, 2015

1 commit

  • Fix a race where a pending interrupt could be received and the handler
    called before the handler's data has been setup, by converting to
    irq_set_chained_handler_and_data().

    Signed-off-by: Russell King
    Cc: Alexandre Courbot
    Cc: Hans Ulli Kroll
    Cc: Jason Cooper
    Cc: Lee Jones
    Cc: Linus Walleij
    Cc: Thierry Reding
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/E1Z4z0C-0002SX-Lj@rmk-PC.arm.linux.org.uk
    Signed-off-by: Thomas Gleixner

    Russell King
     

12 May, 2015

1 commit


11 May, 2015

1 commit

  • All supported iMX GPIO controllers store configured GPIO output value
    in GPIO_DR data register, which is represented by GPIO generic reg_set.
    Provide a BGPIOF_READ_OUTPUT_REG_SET flag to bgpio_init() to allow
    correct getting of previously set output value.

    Signed-off-by: Vladimir Zapolskiy
    Signed-off-by: Linus Walleij

    Vladimir Zapolskiy
     

20 Oct, 2014

1 commit