1. 29 Jun, 2016 25 commits
    • Neil Armstrong's avatar
      pinctrl: qcom: Add support for MDM9615 TLMM · 8b37e88c
      Neil Armstrong authored
      In order to support the Qualcomm MDM9615 SoC, add support for the TLMM
      using the Qualcomm pinctrl generic driver.
      
      Note: the pinctrl is partial, need Documentation to complete all the groups.
      Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
      Acked-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      8b37e88c
    • Amitoj Kaur Chawla's avatar
      pinctrl: sirf: atlas7: Add missing of_node_put · 151b8c5b
      Amitoj Kaur Chawla authored
      of_find_node_by_name does an of_node_get on its return value,
      so an of_node_put is needed on this value before the corresponding
      variable goes out of scope.
      
      The Coccinelle semantic patch used to make this change is as follows:
      @@
      struct device_node *n;
      struct device_node *n1;
      statement S;
      identifier f;
      expression E;
      constant C;
      @@
      
      n = of_find_node_by_name(...)
      ...
      if (!n) S
      ... when != of_node_put(n)
          when != n1 = f(n,...)
          when != E = n
          when any
          when strict
      (
      + of_node_put(n);
        return -C;
      |
        of_node_put(n);
      |
        n1 = f(n,...)
      |
        E = n
      |
        return ...;
      )
      Signed-off-by: default avatarAmitoj Kaur Chawla <amitoj1606@gmail.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      151b8c5b
    • Yendapally Reddy Dhananjaya Reddy's avatar
      pinctrl: nsp: add pinmux driver support for Broadcom NSP SoC · cc4fa83f
      Yendapally Reddy Dhananjaya Reddy authored
      This adds the initial support of the Broadcom NSP pinmux driver.
      Signed-off-by: default avatarYendapally Reddy Dhananjaya Reddy <yendapally.reddy@broadcom.com>
      Reviewed-by: default avatarRay Jui <rjui@broadcom.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      cc4fa83f
    • Yendapally Reddy Dhananjaya Reddy's avatar
      pinctrl: Broadcom NSP pinctrl device tree bindings · af3f1de4
      Yendapally Reddy Dhananjaya Reddy authored
      Device tree binding documentation for Broadcom NSP IOMUX driver
      Signed-off-by: default avatarYendapally Reddy Dhananjaya Reddy <yendapally.reddy@broadcom.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      af3f1de4
    • Linus Walleij's avatar
      Merge tag 'sh-pfc-for-v4.8-tag1' of... · 53673a51
      Linus Walleij authored
      Merge tag 'sh-pfc-for-v4.8-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers into devel
      
      pinctrl: sh-pfc: Updates for v4.8
      
        - Voltage switching support for R-Car H3,
        - DRIF pin support for R-Car H3,
        - Cleanups and fixes.
      53673a51
    • Andy Shevchenko's avatar
      pinctrl: intel: Add Intel Merrifield pin controller support · 4e80c8f5
      Andy Shevchenko authored
      This driver adds pinctrl support for Intel Merrifield. The IP block which is
      called Family-Level Interface Shim is a separate entity in SoC. The GPIO driver
      (gpio-intel-mid.c) will be updated accordingly to support pinctrl interface.
      Reviewed-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      4e80c8f5
    • Paul Gortmaker's avatar
      pinctrl: remove orphaned exported ".remove" function · 11884b18
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_MXS
      drivers/pinctrl/freescale/Kconfig:	bool
      
      ...meaning that it currently is not being built as a module by anyone.
      
      It also doesn't have any modular functionality, so it doesn't need
      module.h included at all.
      
      What it does have is an exported function that was used as a shared
      ".remove" by other drivers, but those use cases (imx23 and imx28)
      are now gone, and hence this can disappear as well.
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      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>
      11884b18
    • Paul Gortmaker's avatar
      pinctrl: imx28: make it explicitly non-modular · 37824c12
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX28
      drivers/pinctrl/freescale/Kconfig:	bool
      
      ...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.
      
      We explicitly disallow a driver unbind, since that doesn't have a
      sensible use case anyway, and it allows us to drop the ".remove"
      code for non-modular drivers.
      
      Since module_init was not in use by this driver, the init ordering
      remains unchanged with this commit.
      
      Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
      
      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: Linus Walleij <linus.walleij@linaro.org>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      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>
      37824c12
    • Paul Gortmaker's avatar
      pinctrl: imx23: make it explicitly non-modular · 1ab599e7
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX23
      drivers/pinctrl/freescale/Kconfig:	bool
      
      ...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.
      
      We explicitly disallow a driver unbind, since that doesn't have a
      sensible use case anyway, and it allows us to drop the ".remove"
      code for non-modular drivers.
      
      Since module_init wasn't actually used by this driver, the init
      ordering remains unchanged with this commit.
      
      Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
      
      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: Linus Walleij <linus.walleij@linaro.org>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      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>
      1ab599e7
    • Paul Gortmaker's avatar
      pinctrl: vf610: make it explicitly non-modular · 8bab1a7b
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_VF610
      drivers/pinctrl/freescale/Kconfig:	bool "Freescale Vybrid VF610 pinctrl driver"
      
      ...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 wasn't in use by this driver, 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: 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>
      8bab1a7b
    • Paul Gortmaker's avatar
      pinctrl: imx7d: make it explicitly non-modular · bc21f488
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX7D
      drivers/pinctrl/freescale/Kconfig:	bool "IMX7D pinctrl driver"
      
      ...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 driver, 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: Linus Walleij <linus.walleij@linaro.org>
      Cc: Anson Huang <Anson.Huang@freescale.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>
      bc21f488
    • Paul Gortmaker's avatar
      pinctrl: imx6ul: make it explicitly non-modular · f23556d3
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX6UL
      drivers/pinctrl/freescale/Kconfig:	bool "IMX6UL pinctrl driver"
      
      ...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 driver, 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: Linus Walleij <linus.walleij@linaro.org>
      Cc: Anson Huang <Anson.Huang@freescale.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>
      f23556d3
    • Paul Gortmaker's avatar
      pinctrl: imx6sx: make it explicitly non-modular · 7ce3cdda
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX6SX
      drivers/pinctrl/freescale/Kconfig:	bool "IMX6SX pinctrl driver"
      
      ...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 driver, 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: Linus Walleij <linus.walleij@linaro.org>
      Cc: Anson Huang <Anson.Huang@freescale.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>
      7ce3cdda
    • Paul Gortmaker's avatar
      pinctrl: imx6sl: make it explicitly non-modular · c621e070
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX6SL
      drivers/pinctrl/freescale/Kconfig:	bool "IMX6SL pinctrl driver"
      
      ...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 driver, the init ordering
      remains unchanged with this commit.
      
      Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
      
      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: Linus Walleij <linus.walleij@linaro.org>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      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>
      c621e070
    • Paul Gortmaker's avatar
      pinctrl: imx6q: make it explicitly non-modular · 4abaa3c2
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX6Q
      drivers/pinctrl/freescale/Kconfig:	bool "IMX6Q/DL pinctrl driver"
      
      ...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 translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.
      
      We don't replace module.h with init.h since the file already has that.
      But we do add export.h since this file uses the global THIS_MODULE.
      
      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: Dong Aisheng <dong.aisheng@linaro.org>
      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>
      4abaa3c2
    • Paul Gortmaker's avatar
      pinctrl: imx6dl: make it explicitly non-modular · 4277a02d
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX6Q
      drivers/pinctrl/freescale/Kconfig:	bool "IMX6Q/DL pinctrl driver"
      
      ...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 driver, 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: Linus Walleij <linus.walleij@linaro.org>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      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>
      4277a02d
    • Paul Gortmaker's avatar
      pinctrl: imx53: make it explicitly non-modular · 85b80b46
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX53
      drivers/pinctrl/freescale/Kconfig:	bool "IMX53 pinctrl driver"
      
      ...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 driver, 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: Dong Aisheng <dong.aisheng@linaro.org>
      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>
      85b80b46
    • Paul Gortmaker's avatar
      pinctrl: imx51: make it explicitly non-modular · b588cb1e
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX51
      drivers/pinctrl/freescale/Kconfig:	bool "IMX51 pinctrl driver"
      
      ...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 driver, 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: Dong Aisheng <dong.aisheng@linaro.org>
      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>
      b588cb1e
    • Paul Gortmaker's avatar
      pinctrl: imx50: make it explicitly non-modular · 4415db17
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX50
      drivers/pinctrl/freescale/Kconfig:	bool "IMX50 pinctrl driver"
      
      ...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 driver, 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: 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>
      4415db17
    • Paul Gortmaker's avatar
      pinctrl: imx35: make it explicitly non-modular · b2892dfd
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX35
      drivers/pinctrl/freescale/Kconfig:	bool "IMX35 pinctrl driver"
      
      ...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 driver, 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: Dong Aisheng <dong.aisheng@linaro.org>
      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>
      b2892dfd
    • Paul Gortmaker's avatar
      pinctrl: imx27: make it explicitly non-modular · 7fc8f593
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX27
      drivers/pinctrl/freescale/Kconfig:	bool "IMX27 pinctrl driver"
      
      ...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 driver, 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: Markus Pargmann <mpa@pengutronix.de>
      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>
      7fc8f593
    • Paul Gortmaker's avatar
      pinctrl: imx25: make it explicitly non-modular · 734ffc85
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX25
      drivers/pinctrl/freescale/Kconfig:        bool "IMX25 pinctrl driver"
      
      ...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 driver, 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: Denis Carikli <denis@eukrea.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>
      734ffc85
    • Paul Gortmaker's avatar
      pinctrl: imx21: make it explicitly non-modular · e2756baa
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX21
      drivers/pinctrl/freescale/Kconfig:	bool "i.MX21 pinctrl driver"
      
      ...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_platform_driver() uses the same init level priority as
      builtin_platform_driver() 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: Alexander Shiyan <shc_work@mail.ru>
      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>
      e2756baa
    • Paul Gortmaker's avatar
      pinctrl: imx1: make it explicitly non-modular · 4d1db6e7
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      drivers/pinctrl/freescale/Kconfig:config PINCTRL_IMX1
      drivers/pinctrl/freescale/Kconfig:	bool "IMX1 pinctrl driver"
      
      ...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_platform_driver() uses the same init level priority as
      builtin_platform_driver() the init ordering remains unchanged with
      this commit.
      
      Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
      
      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: Alexander Shiyan <shc_work@mail.ru>
      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>
      4d1db6e7
    • Paul Gortmaker's avatar
      pinctrl: freescale: remove needless module.h include · 7f8750ad
      Paul Gortmaker authored
      None of these files have anything modular in them, so they
      don't need to be bringing in module.h and all its dependencies.
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      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>
      7f8750ad
  2. 23 Jun, 2016 7 commits
  3. 22 Jun, 2016 2 commits
    • Paul Gortmaker's avatar
      pinctrl: as3722: convert PINCTRL_AS3722 from bool to tristate · 9385f35d
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      config PINCTRL_AS3722
              bool "Pinctrl and GPIO driver for ams AS3722 PMIC"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      During an audit for non-modular drivers using modular infrastructure
      this driver showed up.
      
      But rather than demodularize it, Laxman indicated that it would be
      prefereable to instead convert the driver option to tristate.
      
      This does that, and confirms that it will compile and modpost as
      such.  However, since I do not have the hardware to confirm that
      no new runtime issues exist when modular, that remains untested.
      
      Cc: Laxman Dewangan <ldewangan@nvidia.com>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      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>
      9385f35d
    • Paul Gortmaker's avatar
      pinctrl: palmas: convert PINCTRL_PALMAS from bool to tristate · 767b8ce3
      Paul Gortmaker authored
      The Kconfig currently controlling compilation of this code is:
      
      config PINCTRL_PALMAS
              bool "Pinctrl driver for the PALMAS Series MFD devices"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      During an audit for non-modular drivers using modular infrastructure
      this driver showed up.
      
      But rather than demodularize it, Laxman indicated that it would be
      prefereable to instead convert the driver option to tristate.
      
      This does that, and confirms that it will compile and modpost as
      such.  However, since I do not have the hardware to confirm that
      no new runtime issues exist when modular, that remains untested.
      
      Cc: Laxman Dewangan <ldewangan@nvidia.com>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      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>
      767b8ce3
  4. 21 Jun, 2016 3 commits
  5. 18 Jun, 2016 3 commits
    • Jon Hunter's avatar
      pinctrl: OF: Don't create a pinctrl handle if no pinctrl entries exist · 98849fa0
      Jon Hunter authored
      When pinctrl_get() is called for a device, it will return a valid handle
      even if the device itself has no pinctrl state entries defined in
      device-tree. This is caused by the function pinctrl_dt_to_map() which
      will return success even if the first pinctrl state, 'pinctrl-0', is not
      found in the device-tree node for a device.
      
      According to the pinctrl device-tree binding documentation, pinctrl
      states must be numbered starting from 0 and so 'pinctrl-0' should always
      be present if a device uses pinctrl and therefore, if 'pinctrl-0' is not
      present it seems valid that we should not return a valid pinctrl handle.
      
      Fix this by returning an error code if the property 'pinctrl-0' is not
      present for a device.
      Signed-off-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      98849fa0
    • Mika Westerberg's avatar
      pinctrl: intel: Prevent force threading of the interrupt handler · 1a7d1cb8
      Mika Westerberg authored
      The pinctrl-intel needs to use request_irq() instead of chained interrupt
      handling because it shares the interrupt with multiple GPIO host
      controllers found on Intel CPUs. In -rt all such interrupts are forced to
      run in thread context which triggers following warning:
      
       WARNING: CPU: 0 PID: 530 at kernel/irq/handle.c:151 handle_irq_event_percpu+0x23d/0x240
       irq 348 handler irq_default_primary_handler+0x0/0x10 enabled interrupts
       Modules linked in:
       CPU: 0 PID: 530 Comm: irq/14-INT3452: Not tainted 4.6.2-rt5 #1060
        0000000000000000 ffff88007a257c98 ffffffff812d8494 ffff88007a257ce8
        0000000000000000 ffff88007a257cd8 ffffffff8105e554 000000977a257d90
        ffff88007a37a380 000000000000015c 0000000000000002 0000000000000000
       Call Trace:
        [<ffffffff812d8494>] dump_stack+0x4f/0x6b
        [<ffffffff8105e554>] __warn+0xe4/0x100
        [<ffffffff8105e5bf>] warn_slowpath_fmt+0x4f/0x60
        [<ffffffff810b18f0>] ? __synchronize_hardirq+0x60/0x60
        [<ffffffff810b17fd>] handle_irq_event_percpu+0x23d/0x240
        [<ffffffff810b1862>] handle_irq_event+0x62/0x90
        [<ffffffff810b4e1f>] handle_edge_irq+0x8f/0x190
        [<ffffffff810b0d82>] generic_handle_irq+0x22/0x30
        [<ffffffff81307abc>] intel_gpio_irq+0xdc/0x150
        [<ffffffff810b2293>] irq_forced_thread_fn+0x23/0x70
        [<ffffffff810b250b>] irq_thread+0x13b/0x1d0
        [<ffffffff8167b844>] ? __schedule+0x2e4/0x5a0
        [<ffffffff810b2270>] ? irq_finalize_oneshot.part.37+0xd0/0xd0
        [<ffffffff810b25a0>] ? irq_thread+0x1d0/0x1d0
        [<ffffffff810b23d0>] ? wake_threads_waitq+0x30/0x30
        [<ffffffff8107e624>] kthread+0xd4/0xf0
        [<ffffffff8167ec27>] ? _raw_spin_unlock_irq+0x17/0x40
        [<ffffffff8167f592>] ret_from_fork+0x22/0x40
        [<ffffffff8107e550>] ? kthread_worker_fn+0x190/0x190
      
      The handle_irq_event_* functions (and I suppose generic_handle_irq()) is
      expected to be called with interrupts disabled and they rightfully complain
      here because we run in thread context with interrupts enabled.
      
      Fix this by adding IRQF_NO_THREAD flag when the master interrupt is
      requested. This prevents forced threading of the interrupt used by the GPIO
      host controllers.
      Reported-by: default avatarKim Tatt Chuah <kim.tatt.chuah@intel.com>
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      1a7d1cb8
    • Mika Westerberg's avatar
      pinctrl: intel: Use raw_spinlock for locking · 27d9098c
      Mika Westerberg authored
      When running -rt kernel and GPIO interrupt happens we get following
      
       BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:931
       in_atomic(): 1, irqs_disabled(): 0, pid: 530, name: irq/14-INT3452:
       Preemption disabled at:[<ffffffff810b4dab>] handle_edge_irq+0x1b/0x190
      
       CPU: 0 PID: 530 Comm: irq/14-INT3452: Not tainted 4.6.2-rt5 #1060
        0000000000000000 ffff88007a257d58 ffffffff812d8494 0000000000000000
        ffff88017a330000 ffff88007a257d78 ffffffff81083a11 ffff88007a252430
        ffff88007a252430 ffff88007a257d90 ffffffff8167ef20 000000000000001a
       Call Trace:
        [<ffffffff812d8494>] dump_stack+0x4f/0x6b
        [<ffffffff81083a11>] ___might_sleep+0xe1/0x160
        [<ffffffff8167ef20>] rt_spin_lock+0x20/0x50
        [<ffffffff81308c6d>] intel_gpio_irq_ack+0x2d/0x80
        [<ffffffff810b4e0b>] handle_edge_irq+0x7b/0x190
        [<ffffffff810b0d82>] generic_handle_irq+0x22/0x30
        [<ffffffff81307abc>] intel_gpio_irq+0xdc/0x150
        [<ffffffff810b2293>] irq_forced_thread_fn+0x23/0x70
        [<ffffffff810b250b>] irq_thread+0x13b/0x1d0
        [<ffffffff8167b844>] ? __schedule+0x2e4/0x5a0
        [<ffffffff810b2270>] ? irq_finalize_oneshot.part.37+0xd0/0xd0
        [<ffffffff810b25a0>] ? irq_thread+0x1d0/0x1d0
        [<ffffffff810b23d0>] ? wake_threads_waitq+0x30/0x30
        [<ffffffff8107e624>] kthread+0xd4/0xf0
        [<ffffffff8167ec27>] ? _raw_spin_unlock_irq+0x17/0x40
        [<ffffffff8167f592>] ret_from_fork+0x22/0x40
        [<ffffffff8107e550>] ? kthread_worker_fn+0x190/0x190
      
      The reason why this happens is because intel_gpio_irq_ack() is called with
      desc->lock raw_spinlock locked which cannot sleep but our normal spinlock
      (which is converted to rtmutex in -rt) is allowed to sleep. This causes
      might_sleep() to trigger.
      
      Fix this by converting the normal spinlock to a raw_spinlock.
      Reported-by: default avatarKim Tatt Chuah <kim.tatt.chuah@intel.com>
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      27d9098c