1. 14 Apr, 2016 8 commits
    • Linus Walleij's avatar
      gpio: wm831x: use the new open drain callback · 51c27da1
      Linus Walleij authored
      The WM831x GPIOs clearly have a dedicated open drain control
      register. Implement support for controlling this from GPIO
      descriptor tables or other hardware descriptions such as
      device tree by implementing the .set_single_ended() callback.
      
      Before this patch, lines requesting open drain will just be
      switched to input mode by the framework, thus emulating open
      drain. But the hardware can do the real thing, so let's
      support that.
      
      As part of this, rename the debugfs string for output mode
      from "CMOS" to "push-pull" because it is the term used in
      the framework to signify a tomem-pole CMOS output.
      
      Cc: patches@opensource.wolfsonmicro.com
      Cc: Mark Brown <broonie@kernel.org>
      Acked-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      51c27da1
    • Linus Walleij's avatar
      gpio: vx855: use the new open drain callback · 640b9135
      Linus Walleij authored
      The vx855 driver clearly states it has three groups of lines:
      GPI, GPO and GPIO. The GPO are assumedly push-pull. The GPIO
      are implicit open drain, but if the GPIO subsystem ask for them
      to be explicitly open drain (i.e. set the flag on a machine table
      that we want open drain) it will currently misbehave: it will
      switch the GPIOs to input mode (emulate open drain). Instead:
      indicate in the .set_single_ended() callback that we support
      open drain and open drain only.
      
      Cc: Daniel Drake <drake@endlessm.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      640b9135
    • Linus Walleij's avatar
      gpio: menz127: use the new open drain callback · 811a1882
      Linus Walleij authored
      The menz127 driver tries to support open drain by detecting it
      at request time. However: without the new callbacks from the
      gpiolib it is not really working: the core will still just emulate
      the open drain mode by switching the line to an input.
      
      By adding a hook into the new .set_single_ended() call rather than
      trying to autodetect at request() time, proper open drain can be
      supported.
      
      Cc: Andreas Werner <andy@wernerandy.de>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      811a1882
    • Linus Walleij's avatar
      gpio: f7188x: use the new open drain callback · f90c6bdb
      Linus Walleij authored
      The F7188x chips supports setting the pins in open drain mode.
      Activate the new .set_single_ended() callback.
      
      Cc: Peter Hung <hpeter@gmail.com>
      Cc: Andreas Bofjall <andreas@gazonk.org>
      Cc: Simon Guinot <simon.guinot@sequanux.org>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      f90c6bdb
    • Linus Walleij's avatar
      gpio: f7188x: use BIT() macro · 148c8642
      Linus Walleij authored
      Align to how we handle bitmasks in most drivers in the
      subsystem: using the BIT(n) macro over (1 << n).
      
      Cc: Peter Hung <hpeter@gmail.com>
      Cc: Andreas Bofjall <andreas@gazonk.org>
      Cc: Simon Guinot <simon.guinot@sequanux.org>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      148c8642
    • Linus Walleij's avatar
      gpio: sx150x: use the new open drain callback · 04b86956
      Linus Walleij authored
      One variant of the SX150X GPIO chip supports setting the pins in
      open drain mode. This is currently available to set from platform
      data, but completely unused in the kernel.
      
      Activate the new .set_single_ended() callback so users can set
      this up from e.g. device tree or board files using the new
      GPIO descriptors.
      
      As part of this, delete the platform data open drain setting
      method.
      
      Cc: Wei Chen <Wei.Chen@csr.com>
      Cc: Peter Rosin <peda@axentia.se>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      04b86956
    • Linus Walleij's avatar
      gpio: sx150x: move platform data into driver · d17322fe
      Linus Walleij authored
      The sx150x has some platform data definition in <linux/i2c/sx150x.h>
      but this file is only included from the driver in the whole kernel
      so move its contents into the driver.
      
      Cc: Wei Chen <Wei.Chen@csr.com>
      Cc: Peter Rosin <peda@axentia.se>
      Acked-by: default avatarWolfram Sang <wsa@the-dreams.de>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      d17322fe
    • Linus Walleij's avatar
      gpio: tps65218: use the new open drain callback · f30e49f1
      Linus Walleij authored
      The TPS65218 supports open drain mode on its three pins,
      with one of them configurable also as push-pull. Use the
      new .set_single_ended() callback to set this up properly
      from the core, so the core actually see it can drive the
      pin(s) as open drain, and does not attempt to emulate
      open drain by switching the pin to an input.
      Acked-by: default avatarNicolas Saenz Julienne <nicolassaenzj@gmail.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      f30e49f1
  2. 13 Apr, 2016 2 commits
  3. 09 Apr, 2016 4 commits
  4. 05 Apr, 2016 9 commits
    • Paul Gortmaker's avatar
      gpio: tps6586x: make explicitly non-modular · a0e63738
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/gpio/Kconfig:config GPIO_TPS6586X
      drivers/gpio/Kconfig:   bool "TPS6586X GPIO"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init was not in use by this code, the init ordering
      remains unchanged with this commit.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      is already contained at the top of the file in the comments.
      
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Laxman Dewangan <ldewangan@nvidia.com>
      Cc: linux-gpio@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      a0e63738
    • Paul Gortmaker's avatar
      gpio: tps65910: make explicitly non-modular · 02c7a13e
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/gpio/Kconfig:config GPIO_TPS65910
      drivers/gpio/Kconfig:   bool "TPS65910 GPIO"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init was not in use by this code, the init ordering
      remains unchanged with this commit.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      is already contained at the top of the file in the comments.
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Graeme Gregory <gg@slimlogic.co.uk>
      Cc: Jorge Eduardo Candelaria <jedu@slimlogic.co.uk>
      Cc: linux-gpio@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      02c7a13e
    • Paul Gortmaker's avatar
      gpio: palmas: make explicitly non-modular · f9f2b5cb
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/gpio/Kconfig:config GPIO_PALMAS
      drivers/gpio/Kconfig:   bool "TI PALMAS series PMICs GPIO"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init was not in use by this code, the init ordering
      remains unchanged with this commit.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      is already contained at the top of the file in the comments.
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Laxman Dewangan <ldewangan@nvidia.com>
      Cc: linux-gpio@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      f9f2b5cb
    • Paul Gortmaker's avatar
      gpio: sx150x: make explicitly non-modular · 24a876ce
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/gpio/Kconfig:config GPIO_SX150X
      drivers/gpio/Kconfig:   bool "Semtech SX150x I2C GPIO expander"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init was not in use by this code, the init ordering
      remains unchanged with this commit.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      was (or is now) contained at the top of the file in the comments.
      
      Cc: Gregory Bean <gbean@codeaurora.org>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: linux-gpio@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      24a876ce
    • Paul Gortmaker's avatar
      gpio: tc3589x: make explicitly non-modular · 85133341
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/gpio/Kconfig:config GPIO_TC3589X
      drivers/gpio/Kconfig:   bool "TC3589X GPIOs"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init was not in use by this code, the init ordering
      remains unchanged with this commit.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      is already contained at the top of the file in the comments.
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Rabin Vincent <rabin.vincent@stericsson.com>
      Cc: Hanumath Prasad <hanumath.prasad@stericsson.com>
      Cc: linux-gpio@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      85133341
    • Paul Gortmaker's avatar
      gpio: rc5t583: make explicitly non-modular · fe7b7788
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/gpio/Kconfig:config GPIO_RC5T583
      drivers/gpio/Kconfig:   bool "RICOH RC5T583 GPIO"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init was not in use by this code, the init ordering
      remains unchanged with this commit.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      is already contained at the top of the file in the comments.
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: Laxman Dewangan <ldewangan@nvidia.com>
      Cc: linux-gpio@vger.kernel.org
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      fe7b7788
    • Linus Walleij's avatar
      gpio: tc3589x: implement open drain/source callback · 8b866b06
      Linus Walleij authored
      This makes use of the new .set_single_ended() callback to
      set the GPIO line as open drain/open source using hardware.
      The TC3589x can do this by either disabling the N-MOS
      transistor (open drain) or the P-MOS transistor (open source)
      of the output driver stage, in the first case making the signal
      drive actively low and high impedance as "high" and in the second
      case actively high and high impedance, which is as close to native
      open drain support as we come.
      
      Cc: Michael Hennerich <michael.hennerich@analog.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      8b866b06
    • Linus Walleij's avatar
      gpio: tc3589x: use BIT() macro · cee1b40d
      Linus Walleij authored
      This switch to use BIT(n) instead of (1 << n) which is less
      to the point. Most GPIO drivers do this to avoid mistakes.
      Also switch from using <linux/gpio.h> to the apropriate
      <linux/gpio/driver.h> include.
      Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      cee1b40d
    • Linus Walleij's avatar
      gpio: support native single-ended hardware drivers · c663e5f5
      Linus Walleij authored
      Some GPIO controllers has a special hardware bit we can flip
      to support open drain / source. This means that on these hardwares
      we do not need to emulate OD/OS by setting the line to input
      instead of actively driving it high/low. Add an optional vtable
      callback to the driver set_single_ended() so that driver can
      implement this in hardware if they have it.
      
      We may need a pinctrl_gpio_set_config() call at some point to
      propagate this down to a backing pin control device on systems
      with split GPIO/pin control.
      Reported-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      c663e5f5
  5. 31 Mar, 2016 17 commits