14 Jan, 2018

1 commit


08 Nov, 2017

1 commit


14 Aug, 2017

1 commit

  • Now that we have a custom printf format specifier, convert users of
    full_name to use %pOF instead. This is preparation to remove storing
    of the full path string for each node.

    Signed-off-by: Rob Herring
    Cc: Tien Hock Loh
    Cc: Linus Walleij
    Cc: Alexandre Courbot
    Cc: Brian Norris
    Cc: Florian Fainelli
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: Michal Simek
    Cc: "Sören Brinkmann"
    Cc: linux-gpio@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Acked-by: Gregory Fong
    Signed-off-by: Linus Walleij

    Rob Herring
     

05 May, 2017

1 commit

  • Pull GPIO updates from Linus Walleij:
    "This is the bulk of GPIO changes for the v4.12 kernel cycle.

    Core changes:

    - Return NULL from gpiod_get_optional() when GPIOLIB is disabled.
    This was a much discussed change. It affects use cases where people
    write drivers that might or might not be using GPIO resources. I
    have decided that this is the lesser evil right now.

    - Make gpiod_count() behave consistently across different hardware
    descriptions.

    - Fix the syntax around open drain/open source to not infer active
    high/low semantics.

    New drivers:

    - A new single-register fixed-direction framework driver for hardware
    that have lines controlled by a single register that just work in
    one direction (out or in), including IRQ support.

    - Support the Fintek F71889A GPIO SuperIO controller.

    - Support the National NI 169445 MMIO GPIO.

    - Support for the X-Gene derivative of the DWC GPIO controller

    - Support for the Rohm BD9571MWV-M PMIC GPIO controller.

    - Refactor the Gemini GPIO driver to a generic Faraday FTGPIO driver
    and replace both the Gemini and the Moxa ART custom drivers with
    this driver.

    Driver improvements:

    - A whole slew of drivers have their spinlocks chaned to raw
    spinlocks as they provide irqchips, and thus we are progressing on
    realtime compliance.

    - Use devm_irq_alloc_descs() in a slew of drivers, getting managed
    resources.

    - Support for the embedded PWM controller inside the MVEBU driver.

    - Debounce, open source and open drain support for the Aspeed driver.

    - Misc smaller fixes like spelling and syntax and whatnot"

    * tag 'gpio-v4.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (77 commits)
    gpio: f7188x: Add a missing break
    gpio: omap: return error if requested debounce time is not possible
    gpio: Add ROHM BD9571MWV-M PMIC GPIO driver
    gpio: gpio-wcove: fix GPIO IRQ status mask
    gpio: DT bindings, move tca9554 from pcf857x to pca953x
    gpio: move tca9554 from pcf857x to pca953x
    gpio: arizona: Correct check whether the pin is an input
    gpio: Add XRA1403 DTS binding documentation
    dt-bindings: add exar to vendor prefixes list
    gpio: gpio-wcove: fix irq pending status bit width
    gpio: dwapb: use dwapb_read instead of readl_relaxed
    gpio: aspeed: Add open-source and open-drain support
    gpio: aspeed: Add debounce support
    gpio: aspeed: dt: Add optional clocks property
    gpio: aspeed: dt: Fix description alignment in bindings document
    gpio: mvebu: Add limited PWM support
    gpio: Use unsigned int for interrupt numbers
    gpio: f7188x: Add F71889A GPIO support.
    gpio: core: Decouple open drain/source flag with active low/high
    gpio: arizona: Correct handling for reading input GPIOs
    ...

    Linus Torvalds
     

17 Mar, 2017

1 commit

  • The altera gpio driver currently implements an irq_chip for handling
    interrupts; due to how irq_chip handling is done, it's necessary for the
    irq_chip methods to be invoked from hardirq context, even on a a real-time
    kernel. Because the spinlock_t type becomes a "sleeping" spinlock w/ RT
    kernels, it is not suitable to be used with irq_chips.

    A quick audit of the operations under the lock reveal that they do only
    minimal, bounded work, and are therefore safe to do under a raw spinlock.

    Signed-off-by: Julia Cartwright
    Signed-off-by: Linus Walleij

    Julia Cartwright
     

06 Mar, 2017

1 commit

  • When a threaded irq handler is chained attached to one of the gpio
    pins when configure for level irq the altera_gpio_irq_leveL_high_handler
    does not mask the interrupt while being handled by the chained irq.
    This resulting in the threaded irq not getting enough cycles to complete
    quickly enough before the irq was disabled as faulty. handle_level_irq
    should be used in this situation instead of handle_simple_irq.

    In gpiochip_irqchip_add set default handler to handle_bad_irq as
    per Documentation/gpio/driver.txt. Then set the correct handler in
    the set_type callback.

    Signed-off-by: Phil Reid
    Signed-off-by: Linus Walleij

    Phil Reid
     

15 Sep, 2016

1 commit

  • The Kconfig for this file is:

    drivers/gpio/Kconfig:config GPIO_ALTERA
    drivers/gpio/Kconfig: tristate "Altera GPIO"

    ...but however it does not include module.h -- it in turn gets it from
    another header (gpio/driver.h) and we'd like to replace that with a
    forward delcaration of "struct module;" but if we do, this file will
    fail to compile.

    So we fix this first to avoid putting build failures into the bisect
    commit history.

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

    Paul Gortmaker
     

27 Jan, 2016

1 commit

  • On failure to setup the irq altera_gpio_probe would return an error
    but not go to cleanup. This resulted in kernel fault
    "Unable to handle kernel paging request at virtual address xxxxxxxx"
    later on in of_gpiochip_find_and_xlate.

    Signed-off-by: Phil Reid
    Signed-off-by: Linus Walleij

    Phil Reid
     

05 Jan, 2016

1 commit


19 Nov, 2015

1 commit

  • The name .dev in a struct is normally reserved for a struct device
    that is let us say a superclass to the thing described by the struct.
    struct gpio_chip stands out by confusingly using a struct device *dev
    to point to the parent device (such as a platform_device) that
    represents the hardware. As we want to give gpio_chip:s real devices,
    this is not working. We need to rename this member to parent.

    This was done by two coccinelle scripts, I guess it is possible to
    combine them into one, but I don't know such stuff. They look like
    this:

    @@
    struct gpio_chip *var;
    @@
    -var->dev
    +var->parent

    and:

    @@
    struct gpio_chip var;
    @@
    -var.dev
    +var.parent

    and:

    @@
    struct bgpio_chip *var;
    @@
    -var->gc.dev
    +var->gc.parent

    Plus a few instances of bgpio that I couldn't figure out how
    to teach Coccinelle to rewrite.

    This patch hits all over the place, but I *strongly* prefer this
    solution to any piecemal approaches that just exercise patch
    mechanics all over the place. It mainly hits drivers/gpio and
    drivers/pinctrl which is my own backyard anyway.

    Cc: Haavard Skinnemoen
    Cc: Rafał Miłecki
    Cc: Richard Purdie
    Cc: Mauro Carvalho Chehab
    Cc: Alek Du
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Acked-by: Dmitry Torokhov
    Acked-by: Greg Kroah-Hartman
    Acked-by: Lee Jones
    Acked-by: Jiri Kosina
    Acked-by: Hans-Christian Egtvedt
    Acked-by: Jacek Anaszewski
    Signed-off-by: Linus Walleij

    Linus Walleij
     

02 Oct, 2015

1 commit

  • The state container of the Altera GPIO driver is extracted from
    the gpio_chip exploiting the fact that offsetof() the
    struct gpio_chip inside the struct of_mm_gpio_chip are both 0, so
    the container_of() is in practice a noop. However if a member
    is added to struct altera_gpio_chip in front of
    struct of_mm_gpio_chip, things will break. Using proper
    container_of() avoids this problem.

    Semantically this is a noop, the compiler will optimize it away,
    but syntactically it makes me happier.

    Cc: Tien Hock Loh
    Signed-off-by: Linus Walleij

    Linus Walleij
     

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
     

16 Jul, 2015

2 commits


16 Jun, 2015

1 commit


27 Mar, 2015

1 commit


08 Mar, 2015

1 commit

  • Adds a new driver for Altera soft GPIO IP. The driver is able to do
    read/write and allows GPIO to be a interrupt controller.

    Tested on Altera GHRD on interrupt handling and IO.

    v10:
    - Updated conflicting device tree parameters
    - Removed unused headers
    - Used macro instead of magic numbers for ngpio
    - Code readability cleanup using ?: and temporal variables
    - Removed leftover garbage and unnecessary function calls
    - Checked bgpio_init but unusable because Altera GPIO may not
    be a multiple of 8 bits

    v9:
    - Removed duplicated initialization on set_type using temporals
    to improve code readability in calling generic_handle_irq
    - Using ?: ternary to reduce code size

    v8:
    - Using for_each_set_bit
    - Added const for struct definition
    - Removed naggy pr_err
    - Sort alpha header
    - Remove unused macros
    - Use fixed width data types instead of unsigned long
    - Whitespace issue fixes
    - Removed _relaxed function for better compatibility across different
    CPU
    - Changed irq_create_mapping to platform_get_irq updated implementation
    to use gpiochip_irqchip_add
    - Reserve interrupt-cells number 2 in device tree binding for future
    use
    - Remove confusing sections on devicetree bindings
    - Added tristate Kconfig help text

    v7:
    - Used dev_warn instead of pr_warn
    - Clean up unnecesarry if else indentation

    v6:
    - Added irq_startup and irq_shutdown
    - Changed bitwise clamping style
    - Cleanup bitwise operation to improve readability change naming of
    mapped irqs from virq to mapped_irq

    v5:
    - Dispose irq_domain mapping correctly
    - Update optional binding description in binding docs

    v4:
    - Added vendor prefix to devicetree binding for IP specific properties
    using MMIO GPIO helper library instead of manually map PIO to memory
    - altera_gpio_chip inline struct documentation to kerneldoc
    - Using dev_ print to print a better failure message

    v2, v3:
    - Do not reference NO_IRQ
    - Updated irq_set_type to only allow the hardware configured irq type

    Signed-off-by: Tien Hock Loh
    Signed-off-by: Linus Walleij

    Tien Hock Loh