1. 11 5月, 2012 7 次提交
    • L
      pinctrl/nomadik: implement pin configuration · d41af627
      Linus Walleij 提交于
      This implements the pin configuration interface for the
      Nomadik pin controller.
      
      As part of the exercise we add a bit in the pin_cfg_t for
      the Nomadik pinctrl driver that indicates if the pin should
      be forced into GPIO mode. This is not done to go behind the
      back of the GPIO subsystem, but to ensure that default modes
      can be set by hogs on boot and system suspend/resume states.
      It was used implicitly by the old code defining all config
      settings and modes in a single config word but we now have
      a split between pinmux and pinconf leading to the need to
      have this.
      
      We also add a bit for explicitly setting sleepmode of the
      pin. This was previously handled by custom calls with the
      _sleep() suffix, but we now have one single interface into
      the configuration so we replace this with a bit indicating
      that the pin shall be configured into sleep mode.
      
      Some of the configuration can be refactored later to use
      less custom fields on the pin_cfg_t but we are currently
      leaving the old function calls in place so we stay
      compatible.
      
      ChangeLog v1->v2:
      - Drop a hunk changing pinmuxing for GPIO and move it
        over to the preceding pinmux patch.
      Acked-by: NStephen Warren <swarren@wwwdotorg.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      d41af627
    • L
      pinctrl/nomadik: implement pin multiplexing · dbfe8ca2
      Linus Walleij 提交于
      Implements basic pinmux for the Nomadik pin controller.
      
      The plan is to split the existing singular pin config interface
      nmk_config_pin(), nmk_config_pins(), that will configure muxing
      and other settings at the same time, into two interfaces
      by splitting the code in pinmux and pinctrl and eventually
      deleting the old interface and its helper functions when all
      users are gone.
      
      nmk_gpio_set_mode() and nmk_gpio_get_mode() are two older
      interfaces for just configuring muxing/altfunctions that
      will also be replaced in the end.
      
      We take some extra care to handle the glitch-avoidance here,
      but it is simpler now since there is only one altsetting per
      pingroup so we know immediately if we need to avoid altfunc
      C glitches for a certain group.
      
      As part of the makeover implement the .request() and .free()
      calls on the GPIO chips and have them call back into the
      pinctrl layer to reserve GPIOs.
      
      ChangeLog v1->v2:
      - Rebased on pinctrl-mergebase-20120418 so we get the latest
        driver infrastructure where function count is done by a fixed
        value and we can drop a few range checks since this is now
        handled by the core.
      - Include a GPIO muxing hunk erroneously part of the pin config
        patch.
      Acked-by: NStephen Warren <swarren@wwwdotorg.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      dbfe8ca2
    • L
      pinctrl/nomadik: reuse GPIO debug function for pins · 24cbdd75
      Linus Walleij 提交于
      Since all pins we can control are GPIOs, match a GPIO range to
      each pin in the debug function and call into the GPIO debug
      print function to have the per-pin information.
      Acked-by: NStephen Warren <swarren@wwwdotorg.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      24cbdd75
    • L
      pinctrl/nomadik: break out single GPIO debug function · 6f4350a6
      Linus Walleij 提交于
      Break out the code displaying the status of a single pin so we
      can use the same code in the pinctrl debug function.
      Acked-by: NStephen Warren <swarren@wwwdotorg.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      6f4350a6
    • L
      pinctrl/nomadik: basic Nomadik pinctrl interface · e98ea774
      Linus Walleij 提交于
      This adds a scratch pin control interface to the Nomadik pinctrl
      driver, and defines the pins and groups in the DB8500 ASIC. We
      define GPIO ranges to cover the pins exposed. The DB8500 has
      more pins than this but we restrict the driver to the pins that
      can be controlled from the combined GPIO and pin control hardware
      to begin with.
      
      ChangeLog v1->v2:
      - Base on the latest pinctrl development from
        pinctrl-mergebase-20120418 so we can get rid of legacy
        group count mechanism. Also drop the range checks for group
        index, this is handled by the core now.
      Acked-by: NStephen Warren <swarren@wwwdotorg.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      e98ea774
    • A
      pinctrl/nomadik: !CONFIG_OF build error · 072e82a1
      Arnd Bergmann 提交于
      a60b57ed "drivers/gpio: gpio-nomadik: Add support for irqdomains" broke
      building with CONFIG_OF_GPIO disabled.
      
      Without this patch, building nhk8815_defconfig results in:
      
      /home/arnd/linux-arm/drivers/gpio/gpio-nomadik.c: In function 'nmk_gpio_probe':
      /home/arnd/linux-arm/drivers/gpio/gpio-nomadik.c:1238:6: error: 'struct gpio_chip' has no member named 'of_node'
      make[3]: *** [drivers/gpio/gpio-nomadik.o] Error 1
      make[2]: *** [drivers/gpio] Error 2
      make[2]: *** Waiting for unfinished jobs....
      make[1]: *** [drivers] Error 2
      make[1]: *** Waiting for unfinished jobs....
      make: *** [sub-make] Error 2
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      072e82a1
    • L
      gpio: move the Nomadik GPIO driver to pinctrl · 1ae4e592
      Linus Walleij 提交于
      I'm moving this driver over to the pinctrl subsystem to convert
      the custom pin mux/config scheme over to use pinctrl.
      Acked-by: NStephen Warren <swarren@wwwdotorg.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      1ae4e592
  2. 07 5月, 2012 1 次提交
  3. 02 5月, 2012 4 次提交
  4. 27 4月, 2012 2 次提交
    • D
      pinctrl: add pinctrl_provide_dummies interface for platforms to use · 5b3aa5f7
      Dong Aisheng 提交于
      Add a interface pinctrl_provide_dummies for platform to indicate
      whether it needs use pinctrl dummy state.
      
      ChangeLog v3->v4:
      * remove dummy gpio support in pinctrl subsystem.
        Let gpio driver decide whether it wants to use pinctrl gpio mux
        function.
      ChangeLog v2->v3:
      * Also changed the missed pinctrl gpio APIs in v1.
      ChangeLog v1->v2:
      * Based on sascha's suggestion, drop using kconfig since it will hide
        pinctrl errors on all other boards.
        See: https://lkml.org/lkml/2012/4/18/282
        It seemed both Linus and Stephen agreed with this way, so i'm ok
        with it too.
      * Add dummy gpio support.
        pinctrl gpio in the same situation as state.
      * Patch name changed.
        Original is pinctrl: handle dummy state in core.
      * Split removing old dt dummy interface into a separate patch
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Sascha Hauer <s.hauer@pengutronix.de>
      Acked-by: NStephen Warren <swarren@wwwdotorg.org>
      Signed-off-by: NDong Aisheng <dong.aisheng@linaro.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      5b3aa5f7
    • J
      pinctrl: enhance reporting of errors when loading from DT · ad6e1107
      John Crispin 提交于
      There are a few places in the api where the code simply returns -EINVAL when
      it finds an error. An example is pinmux_map_to_setting() which now reports an
      error if we try to match a group with a function that it does not support.
      
      The reporting of errors in pinconf_check_ops and pinmux_check_ops now has the
      same style and is located inside the according functions and not the calling
      code.
      
      When the map is found in the DT but the default state can not be selected we
      get an error to know that the code at least tried.
      
      The patch also removes a stray word from one comment and a "->" from another
      for the sake of consistency.
      
      Finally we replace a few pr_err/debug() calls with dev_err/dbg().
      
      Thanks go to Stephen Warren for reviewing the patch and enhancing the reporting
      inside pinmux_map_to_setting().
      Signed-off-by: NJohn Crispin <blogic@openwrt.org>
      Acked-by: NStephen Warren <swarren@wwwdotorg.org>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      ad6e1107
  5. 26 4月, 2012 2 次提交
  6. 24 4月, 2012 1 次提交
  7. 23 4月, 2012 2 次提交
  8. 19 4月, 2012 3 次提交
    • S
      pinctrl: tegra: debugfs enhancements · b5badbaa
      Stephen Warren 提交于
      * Only provide debugfs-relates ops when CONFIG_DEBUG_FS is enabled.
      * Implement pin_config_group_dbg_show op.
      * Implement pin_config_config_dbg_show op.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      b5badbaa
    • S
      pinctrl: tegra: refactor probe handling · 52f48fe0
      Stephen Warren 提交于
      Rather than having a single tegra-pinctrl driver that determines whether
      it's running on Tegra20 or Tegra30, instead have separate drivers for
      each that call into utility functions to implement the majority of the
      driver. This change is based on review feedback of the SPEAr pinctrl
      driver, which had originally copied to Tegra driver structure.
      
      This requires that the two drivers have unique names. Update a couple
      spots in arch/arm/mach-tegra for the name change.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      52f48fe0
    • S
      ARM: tegra: Switch to new pinctrl driver · f30d12b3
      Stephen Warren 提交于
      * Rename old pinmux and new pinctrl platform driver and DT match table
        entries, so the new driver gets instantiated.
      * Re-write board-pinmux.c, so that it uses pinctrl APIs to configura the
        pinmux.
      * Re-write board-*-pinmux.c so that the pinmux configuration tables are
        in pinctrl format.
      
      Ventana's pin mux table needed some edits on top of the basic format
      conversion, since some mux options that were previously marked as
      reserved are now valid in the new pinctrl driver. Attempting to use the
      old reserved names will result in a failure. Specifically, groups lpw0,
      lpw2, lsc1, lsck, and lsda were changed from function rsvd4 to displaya,
      and group pta was changed from function rsvd2 to hdmi.
      
      All boards' pin mux tables needed some edits on top of the based format
      conversion, since function i2c was split into i2c1 (first general I2C
      controller) and i2cp (power I2C controller) to better align function
      definitions with HW blocks.
      
      Due to the split of mux tables into pure mux and pull/tristate tables,
      many entries in the separate Seaboard/Ventana tables could be merged
      into the common table, since the entries differed only in the portion
      in one of the tables, not both.
      
      Most pin groups allow configuration of mux, tri-state, and pull. However,
      some don't allow pull configuration, which is instead configured by new
      groups that only allow pull configuration. This is a reflection of the
      true HW capabilities, which weren't fully represented by the old pinmux
      driver. This required adding new pull table entries for those new groups,
      and setting many other entries' pull configuration to
      TEGRA_PINCONFIG_DONT_SET.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      Acked-by: NOlof Johansson <olof@lixom.net>
      f30d12b3
  9. 18 4月, 2012 17 次提交
  10. 11 4月, 2012 1 次提交