1. 06 3月, 2015 3 次提交
    • M
      pinctrl: baytrail: Rework interrupt handling · 31e4329f
      Mika Westerberg 提交于
      Instead of handling everything in the driver's first level interrupt
      handler, we can take advantage of already existing flow handlers that are
      provided by the IRQ core.
      
      This changes the functionality a bit also. Previously the driver looped
      over pending interrupts in a single loop, restarting the loop if some
      interrupt changed state. This caused problem with Lenovo Thinkpad 10
      digitizer that it was not able to deassert the interrupt before the driver
      disabled the interrupt for good (looplimit was exhausted).
      
      Rework the interrupt handling logic a bit so that we provide proper mask,
      ack and unmask operations in terms of Baytrail GPIO hardware and loop over
      pending interrupts only once. If the interrupt remains asserted the first
      level handler will be re-triggered automatically.
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      31e4329f
    • M
      pinctrl: baytrail: Clear interrupt triggering from pins that are in GPIO mode · 95f0972c
      Mika Westerberg 提交于
      If the pin is already configured as GPIO and it has any of the triggering
      flags set, we may get spurious interrupts depending on the state of the
      pin.
      
      Prevent this by clearing the triggering flags on such pins. However, if the
      pin is also configured as "direct IRQ" we leave the flags as is. Otherwise
      it will prevent interrupts that are routed directly to IO-APIC.
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      95f0972c
    • M
      pinctrl: baytrail: Relax GPIO request rules · f8323b6b
      Mika Westerberg 提交于
      Zotac ZBOX PI320, a Baytrail based mini-PC, has power button connected to a
      GPIO pin and it is exposed to the operating system as Windows 8 button
      array. This is implemented in Linux as a driver using gpio_keys.
      
      However, BIOS on this particula machine forgot to mux the pin to be a GPIO
      instead of native function, which results following message to be seen on
      the console:
      
       byt_gpio INT33FC:02: pin 16 cannot be used as GPIO.
      
      This causes power button to not work as the driver was not able to request
      the GPIO it needs.
      
      So instead of completely preventing this we allow turning the pin as GPIO
      but issue warning that something might be wrong.
      Reported-by: NBenjamin Adler <benadler@gmx.net>
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      f8323b6b
  2. 05 2月, 2015 1 次提交
  3. 04 2月, 2015 1 次提交
  4. 03 2月, 2015 2 次提交
  5. 30 1月, 2015 6 次提交
  6. 29 1月, 2015 1 次提交
  7. 27 1月, 2015 2 次提交
  8. 26 1月, 2015 2 次提交
  9. 21 1月, 2015 1 次提交
  10. 19 1月, 2015 2 次提交
  11. 16 1月, 2015 3 次提交
  12. 14 1月, 2015 11 次提交
  13. 12 1月, 2015 3 次提交
    • S
      pinctrl: Add driver for Zynq · add958ce
      Soren Brinkmann 提交于
      This adds a pin-control driver for Zynq.
      
      Changes since v2:
      - driver-specific DT properties are passed to the core in two arrays,
        one for the actual DT parsing one for the debugfs representation.
        Issue a compiler warning when the number of entries is not the same
        for both arrays.
      
      Changes since v1:
       - fix EMIO_SD1_CD pin name
       - add USB to pinmux options
      
      changes since RFCv2:
       - let Zynq select PINCTRL_ZYNQ. Boot hangs when pinctrl information is
         present in DT but no driver available.
       - add #defines to get rid of magical constants
       - add commas at end of initializers
       - separate changes in mach-zynq in separate patch
       - add driver specific io-standard DT property
       - refactored pinconf set function to not require arguments for
         argument-less properties
       - squash other patches in
         - support for IO-standard property
         - support for low-power mode property
         - migration to pinconf_generic_dt_node_to_map_all()
       - use newly created infrastructure to add pass driver-specific DT
         params to pinconf-generic
      
      changes since RFC:
       - use syscon/regmap to access registers in SLCR space
       - rebase to 3.18: rename enable -> set_mux
       - add kernel-doc
       - support pinconf
         - supported attributes
           - pin-bias: pull up, tristate, disable
           - slew-rate: 0 == slow, 1 == fast; generic pinconf does not display
             argument
      Signed-off-by: NSoren Brinkmann <soren.brinkmann@xilinx.com>
      Tested-by: NAndreas Färber <afaerber@suse.de>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      add958ce
    • S
      pinctrl: pinconf-generic: Allow driver to specify DT params · dd4d01f7
      Soren Brinkmann 提交于
      Additionally to the generic DT parameters, allow drivers to provide
      driver-specific DT parameters to be used with the generic parser
      infrastructure.
      
      To achieve this 'struct pinctrl_desc' is extended to pass custom pinconf
      option to the core. In order to pass this kind of information, the
      related data structures - 'struct pinconf_generic_dt_params',
      'pin_config_item' - are moved from pinconf internals to the
      pinconf-generic header.
      
      Additionally pinconfg-generic is refactored to not only iterate over the
      generic pinconf parameters but also take the parameters into account
      that are provided through the driver's 'struct pinctrl_desc'.
      In particular 'pinconf_generic_parse_dt_config()' and
      'pinconf_generic_dump' helpers are split into two parts each. In order
      to have a more generic helper that can be used to process the generic
      parameters as well as the driver-specific ones.
      
      v2:
       - fix typo
       - add missing documentation for @conf_items member in struct
       - rebase to pinctrl/devel: conflict in abx500
       - rename _pinconf_generic_dump() to pinconf_generic_dump_one()
       - removed '_' from _parse_dt_cfg()
       - removed BUG_ONs, error condition is handled in if statements
       - removed pinconf_generic_dump_group() & pinconf_generic_dump_pin
         helpers
         - fixed up corresponding call sites
         - renamed pinconf_generic_dump() to pinconf_generic_dump_pins()
         - added kernel-doc to pinconf_generic_dump_pins()
       - add kernel-doc
       - more verbose commit message
      Signed-off-by: NSoren Brinkmann <soren.brinkmann@xilinx.com>
      Tested-by: NAndreas Färber <afaerber@suse.de>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      dd4d01f7
    • S
      pinctrl: pinconf-generic: Infer map type from DT property · 31c89c95
      Soren Brinkmann 提交于
      With the new 'groups' property, the DT parser can infer the map type
      from the fact whether 'pins' or 'groups' is used to specify the pin
      group to work on.
      
      To maintain backwards compatibitliy with current usage of the DT
      binding, this is only done when PIN_MAP_TYPE_INVALID is passed to the
      parsing function as type.
      
      Also, a new helper 'pinconf_generic_dt_node_to_map_all()' is introduced,
      which can be used by drivers as generic callback for dt_node_to_map() to
      leverage the new feature.
      
      Changes since v2:
       - rename dt_pin_specifier to subnode_target_type
       - add additional comment in header file explaining passing an invalid
         map type
       - mention map_all() helper in commit message
      Changes since RFC v2:
       - none
      Signed-off-by: NSoren Brinkmann <soren.brinkmann@xilinx.com>
      Tested-by: NAndreas Färber <afaerber@suse.de>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      31c89c95
  14. 11 1月, 2015 2 次提交