1. 29 Jun, 2016 19 commits
    • 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 5 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. 18 Jun, 2016 5 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
    • Masahiro Yamada's avatar
      pinctrl: uniphier: fix meaningless drive control offsets · 53501c97
      Masahiro Yamada authored
      These are input-only pins.  They do not support drive controlling
      in the first place.
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      53501c97
    • Masahiro Yamada's avatar
      pinctrl: uniphier: prohibit drive control for pin 61-66 of PH1-LD11 · 96c8b690
      Masahiro Yamada authored
      According to the hardware document, setting the drive control is
      prohibited for these pins (N-channel Open Drain pins).  Set their
      drive control attribute to "fixed".
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      96c8b690
  5. 15 Jun, 2016 8 commits
  6. 13 Jun, 2016 1 commit