13 Sep, 2016

1 commit

  • These structures are only used to copy into other structures, so declare
    them as const.

    The semantic patch that makes this change is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @r disable optional_qualifier@
    identifier i;
    position p;
    @@
    static struct gpio_chip i@p = { ... };

    @ok@
    identifier r.i;
    expression e;
    position p;
    @@
    e = i@p;

    @bad@
    position p != {r.p,ok.p};
    identifier r.i;
    struct gpio_chip e;
    @@
    e@i@p

    @depends on !bad disable optional_qualifier@
    identifier r.i;
    @@
    static
    +const
    struct gpio_chip i = { ... };
    //

    Signed-off-by: Julia Lawall
    Acked-by: Joachim Eastwood
    Signed-off-by: Linus Walleij

    Julia Lawall
     

05 Jan, 2016

1 commit


27 Dec, 2015

1 commit

  • As we want gpio_chip .get() calls to be able to return negative
    error codes and propagate to drivers, we need to go over all
    drivers and make sure their return values are clamped to [0,1].
    We do this by using the ret = !!(val) design pattern.

    This also makes the driver start to return the error code, as the
    end of the series make this work.

    Cc: Roger Quadros
    Cc: Tony Lindgren
    Signed-off-by: Linus Walleij

    Linus Walleij
     

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
     

20 Oct, 2014

1 commit


22 Jul, 2014

1 commit


09 Jul, 2014

1 commit


27 Mar, 2014

1 commit


22 Jan, 2014

1 commit

  • Pull GPIO tree bulk changes from Linus Walleij:
    "A big set this merge window, as we have much going on in this
    subsystem. The changes to other subsystems (notably a slew of ARM
    machines as I am doing away with their custom APIs) have all been
    ACKed to the extent possible.

    Major changes this time:

    - Some core improvements and cleanups to the new GPIO descriptor API.
    This seems to be working now so we can start the exodus to this
    API, moving gradually away from the global GPIO numberspace.

    - Incremental improvements to the ACPI GPIO core, and move the few
    GPIO ACPI clients we have to the GPIO descriptor API right *now*
    before we go any further. We actually managed to contain this
    *before* we started to litter the kernel with yet another hackish
    global numberspace for the ACPI GPIOs, which is a big win.

    - The RFkill GPIO driver and all platforms using it have been
    migrated to use the GPIO descriptors rather than fixed number
    assignments. Tegra machine has been migrated as part of this.

    - New drivers for MOXA ART, Xtensa GPIO32 and SMSC SCH311x. Those
    should be really good examples of how I expect a nice GPIO driver
    to look these days.

    - Do away with custom GPIO implementations on a major part of the ARM
    machines: ks8695, lpc32xx, mv78xx0. Make a first step towards the
    same in the horribly convoluted Samsung S3C include forest. We
    expect to continue to clean this up as we move forward.

    - Flag GPIO lines used for IRQ on adnp, bcm-kona, em, intel-mid and
    lynxpoint.

    This makes the GPIOlib core aware that a certain GPIO line is used
    for IRQs and can then enforce some semantics such as disallowing a
    GPIO line marked as in use for IRQ to be switched to output mode.

    - Drop all use of irq_set_chip_and_handler_name(). The name provided
    in these cases were just unhelpful tags like "mux" or "demux".

    - Extend the MCP23s08 driver to handle interrupts.

    - Minor incremental improvements for rcar, lynxpoint, em 74x164 and
    msm drivers.

    - Some non-urgent bug fixes here and there, duplicate #includes and
    that usual kind of cleanups"

    Fix up broken Kconfig file manually to make this all compile.

    * tag 'gpio-v3.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (71 commits)
    gpio: mcp23s08: fix casting caused build warning
    gpio: mcp23s08: depend on OF_GPIO
    gpio: mcp23s08: Add irq functionality for i2c chips
    ARM: S5P[v210|c100|64x0]: Fix build error
    gpio: pxa: clamp gpio get value to [0,1]
    ARM: s3c24xx: explicit dependency on
    ARM: S3C[24|64]xx: move includes back under scope
    Documentation / ACPI: update to GPIO descriptor API
    gpio / ACPI: get rid of acpi_gpio.h
    gpio / ACPI: register to ACPI events automatically
    mmc: sdhci-acpi: convert to use GPIO descriptor API
    ARM: s3c24xx: fix build error
    gpio: f7188x: set can_sleep attribute
    gpio: samsung: Update documentation
    gpio: samsung: Remove hardware.h inclusion
    gpio: xtensa: depend on HAVE_XTENSA_GPIO32
    gpio: clps711x: Enable driver compilation with COMPILE_TEST
    gpio: clps711x: Use of_match_ptr()
    net: rfkill: gpio: convert to descriptor-based GPIO interface
    leds: s3c24xx: Fix build failure
    ...

    Linus Torvalds
     

10 Dec, 2013

1 commit

  • Commit 0b2aa8be introduced a regression that causes failure
    in setting LED GPO direction to OUT.

    This causes USB host probe failures for Beagleboard C4.

    platform usb_phy_gen_xceiv.2: Driver usb_phy_gen_xceiv requests probe deferral
    hsusb2_vcc: Failed to request enable GPIO510: -22
    reg-fixed-voltage reg-fixed-voltage.0.auto: Failed to register regulator: -22
    reg-fixed-voltage: probe of reg-fixed-voltage.0.auto failed with error -22

    direction_out/direction_in must return 0 if the operation succeeded.

    Also, don't update direction flag and output data if twl4030_set_gpio_direction()
    failed inside twl_direction_out();

    Cc: stable@vger.kernel.org
    Signed-off-by: Roger Quadros
    Acked-by: Tony Lindgren
    Signed-off-by: Linus Walleij

    Roger Quadros
     

09 Dec, 2013

1 commit


04 Dec, 2013

1 commit

  • This switches the two members of struct gpio_chip that were
    defined as unsigned foo:1 to bool, because that is indeed what
    they are. Switch all users in the gpio and pinctrl subsystems
    to assign these values with true/false instead of 0/1. The
    users outside these subsystems will survive since true/false
    is 1/0, atleast we set some kind of more strict typing example.

    Signed-off-by: Linus Walleij

    Linus Walleij
     

19 Nov, 2013

2 commits

  • We still have some legacy code needing the callback functions
    that won't work properly without platform data. To use platform
    data for twl4030-gpio, we need to not trash the possible data.

    Cc: linux-gpio@vger.kernel.org
    Acked-by: Linus Walleij
    Signed-off-by: Fengguang Wu
    [tony@atomide.com: folded in fix from Fengguang to use struct assignment]
    Signed-off-by: Tony Lindgren

    Tony Lindgren
     
  • Commit c111feabe2e2 (gpio: twl4030: Cache the direction and output
    states in private data) improved things in general, but caused a
    regression for setting the GPIO output direction.

    The change reorganized twl_direction_out() and twl_set() and swapped
    the function names around in the process. While doing that, a bug got
    introduced that's not obvious while reading the patch as it appears
    as no change to the code.

    The bug is we now call function twl4030_set_gpio_dataout() twice in
    both twl_direction_out() and twl_set(). Instead, we should first
    call twl_direction_out() in twl_direction_out() followed by
    twl4030_set_gpio_dataout() in twl_set().

    This regression probably has gone unnoticed for a long time as the
    bootloader may have set the GPIO direction properly in many cases.
    This fixes at least the LCD panel not turning on omap3 LDP for
    example.

    Cc: linux-gpio@vger.kernel.org
    Cc: stable@vger.kernel.org #v3.9+
    Reviewed-by: Peter Ujfalusi
    Acked-by: Linus Walleij
    Signed-off-by: Tony Lindgren

    Tony Lindgren
     

02 Oct, 2013

1 commit


16 Aug, 2013

1 commit


17 Jan, 2013

2 commits


17 Dec, 2012

1 commit

  • Pull MFS update from Samuel Ortiz:
    "This is the MFD patch set for the 3.8 merge window.

    We have several new drivers, most of the time coming with their sub
    devices drivers:

    - Austria Microsystem's AS3711
    - Nano River's viperboard
    - TI's TPS80031, AM335x TS/ADC,
    - Realtek's MMC/memstick card reader
    - Nokia's retu

    We also got some notable cleanups and improvements:

    - tps6586x got converted to IRQ domains.
    - tps65910 and tps65090 moved to the regmap IRQ API.
    - STMPE is now Device Tree aware.
    - A general twl6040 and twl-core cleanup, with moves to the regmap
    I/O and IRQ APIs and a conversion to the recently added PWM
    framework.
    - sta2x11 gained regmap support.

    Then the rest is mostly tiny cleanups and fixes, among which we have
    Mark's wm5xxx and wm8xxx patchset."

    Far amount of annoying but largely trivial conflicts. Many due to
    __devinit/exit removal, others due to one or two of the new drivers also
    having come in through another tree.

    * tag 'mfd-3.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (119 commits)
    mfd: tps6507x: Convert to devm_kzalloc
    mfd: stmpe: Update DT support for stmpe driver
    mfd: wm5102: Add readback of DSP status 3 register
    mfd: arizona: Log if we fail to create the primary IRQ domain
    mfd: tps80031: MFD_TPS80031 needs to select REGMAP_IRQ
    mfd: tps80031: Add terminating entry for tps80031_id_table
    mfd: sta2x11: Fix potential NULL pointer dereference in __sta2x11_mfd_mask()
    mfd: wm5102: Add tuning for revision B
    mfd: arizona: Defer patch initialistation until after first device boot
    mfd: tps65910: Fix wrong ack_base register
    mfd: tps65910: Remove unused data
    mfd: stmpe: Get rid of irq_invert_polarity
    mfd: ab8500-core: Fix invalid free of devm_ allocated data
    mfd: wm5102: Mark DSP memory regions as volatile
    mfd: wm5102: Correct default for LDO1_CONTROL_2
    mfd: arizona: Register haptics devices
    mfd: wm8994: Make current device behaviour the default
    mfd: tps65090: MFD_TPS65090 needs to select REGMAP_IRQ
    mfd: Fix stmpe.c build when OF is not enabled
    mfd: jz4740-adc: Use devm_kzalloc
    ...

    Linus Torvalds
     

12 Dec, 2012

1 commit

  • Pull driver core updates from Greg Kroah-Hartman:
    "Here's the large driver core updates for 3.8-rc1.

    The biggest thing here is the various __dev* marking removals. This
    is going to be a pain for the merge with different subsystem trees, I
    know, but all of the patches included here have been ACKed by their
    various subsystem maintainers, as they wanted them to go through here.

    If this is too much of a pain, I can pull all of them out of this tree
    and just send you one with the other fixes/updates and then, after
    3.8-rc1 is out, do the rest of the removals to ensure we catch them
    all, it's up to you. The merges should all be trivial, and Stephen
    has been doing them all in linux-next for a few weeks now quite
    easily.

    Other than the __dev* marking removals, there's nothing major here,
    some firmware loading updates and other minor things in the driver
    core.

    All of these have (much to Stephen's annoyance), been in linux-next
    for a while.

    Signed-off-by: Greg Kroah-Hartman "

    Fixed up trivial conflicts in drivers/gpio/gpio-{em,stmpe}.c due to gpio
    update.

    * tag 'driver-core-3.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (93 commits)
    modpost.c: Stop checking __dev* section mismatches
    init.h: Remove __dev* sections from the kernel
    acpi: remove use of __devinit
    PCI: Remove __dev* markings
    PCI: Always build setup-bus when PCI is enabled
    PCI: Move pci_uevent into pci-driver.c
    PCI: Remove CONFIG_HOTPLUG ifdefs
    unicore32/PCI: Remove CONFIG_HOTPLUG ifdefs
    sh/PCI: Remove CONFIG_HOTPLUG ifdefs
    powerpc/PCI: Remove CONFIG_HOTPLUG ifdefs
    mips/PCI: Remove CONFIG_HOTPLUG ifdefs
    microblaze/PCI: Remove CONFIG_HOTPLUG ifdefs
    dma: remove use of __devinit
    dma: remove use of __devexit_p
    firewire: remove use of __devinitdata
    firewire: remove use of __devinit
    leds: remove use of __devexit
    leds: remove use of __devinit
    leds: remove use of __devexit_p
    mmc: remove use of __devexit
    ...

    Linus Torvalds
     

29 Nov, 2012

2 commits

  • CONFIG_HOTPLUG is going away as an option so __devexit is no
    longer needed.

    Signed-off-by: Bill Pemberton
    Cc: Grant Likely
    Acked-by: Linus Walleij
    Cc: Peter Tyser
    Acked-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Bill Pemberton
     
  • CONFIG_HOTPLUG is going away as an option so __devinit is no longer
    needed.

    Signed-off-by: Bill Pemberton
    Cc: Grant Likely
    Cc: Peter Tyser
    Cc: Santosh Shilimkar
    Cc: Kevin Hilman
    Acked-by: Linus Walleij
    Acked-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Bill Pemberton
     

21 Nov, 2012

1 commit


18 Nov, 2012

1 commit


17 Sep, 2012

1 commit

  • This branch contains changes needed to make omap2+
    work properly with sparse IRQ. It also removes
    dependencies to mach/hardware.h. These help moving
    things towards ARM single zImage support.

    This branch is based on a commit in tty-next
    branch with omap-devel-gpmc-fixed-for-v3.7 and
    cleanup-omap-tags-for-v3.7 merged in to keep things
    compiling and sort out some merge conflicts.

    Conflicts:
    arch/arm/mach-omap2/omap4-common.c
    drivers/gpio/gpio-twl4030.c

    Tony Lindgren
     

13 Sep, 2012

1 commit


08 Sep, 2012

1 commit

  • Adds a number of missing device tree properties for
    twl4030/gpio, and update bindings:
    - "ti,use-leds" -> .use_leds
    - "ti,debounce" -> .debounce
    - "ti,mmc-cd" -> .mmc_cd
    - "ti,pullups" -> .pullups
    - "ti,pulldowns" -> .pulldowns

    Signed-off-by: Florian Vaussard
    Acked-by: Linus Walleij
    Acked-by: Vaibhav Hiremath
    [b-cousson@ti.com: Fix some checkpatch CHECK issues]
    Signed-off-by: Benoit Cousson

    Florian Vaussard
     

22 Mar, 2012

3 commits

  • Add the DT support for the I2C GPIO expander inside the twl4030.

    Note: The pdata parameters still have to be properly adapted using
    dedicated bindings.

    Signed-off-by: Benoit Cousson
    Acked-by: Felipe Balbi
    Acked-by: Grant Likely
    Signed-off-by: Samuel Ortiz

    Benoit Cousson
     
  • Do not use the board pdata for irq_base, but allocate them dynamically
    to allow a proper support of SPARSE_IRQ.

    Fix an unneeded line wrap.

    Signed-off-by: Benoit Cousson
    Acked-by: Felipe Balbi
    Acked-by: Grant Likely
    Signed-off-by: Samuel Ortiz

    Benoit Cousson
     
  • twl4030 is using a two level irq controllers infrastruture.
    So far, only the first level was using dynamic irq_desc allocation
    to be able to have irq_domain support for device tree.
    There is a need to allocate separate irq_descs for the SIH too to
    avoid hacking the first level with interrupts from the second level.

    Add an irq_base parameter to allow the caller to provide the base from
    pdata or from dynamic allocation.

    Affect TWL4030_NR_IRQS to the twl-core IRQs only.

    Moreover that will allow the extraction of the of_node pointer for further
    Device Tree conversion.

    Signed-off-by: Felipe Balbi
    Signed-off-by: Benoit Cousson
    Signed-off-by: Samuel Ortiz

    Benoit Cousson
     

07 Jun, 2011

1 commit

  • Sort the gpio makefile and enforce the naming convention gpio-*.c for
    gpio drivers.

    v2: cleaned up filenames in Kconfig and comment blocks
    v3: fixup use of BASIC_MMIO to GENERIC_GPIO for mxc

    Signed-off-by: Grant Likely

    Grant Likely