1. 31 10月, 2017 2 次提交
  2. 31 8月, 2017 1 次提交
  3. 09 6月, 2017 1 次提交
  4. 16 3月, 2017 1 次提交
    • J
      pinctrl: sunxi: make use of raw_spinlock variants · f658ed36
      Julia Cartwright 提交于
      The sunxi pinctrl driver currently implement an irq_chip for handling
      interrupts; due to how irq_chip handling is done, it's necessary for the
      irq_chip methods to be invoked from hardirq context, even on a a
      real-time kernel.  Because the spinlock_t type becomes a "sleeping"
      spinlock w/ RT kernels, it is not suitable to be used with irq_chips.
      
      A quick audit of the operations under the lock reveal that they do only
      minimal, bounded work, and are therefore safe to do under a raw spinlock.
      Signed-off-by: NJulia Cartwright <julia@ni.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      f658ed36
  5. 30 1月, 2017 1 次提交
    • M
      pinctrl: sunxi: Don't enforce bias disable (for now) · 2154d94b
      Maxime Ripard 提交于
      Commit 07fe64ba ("pinctrl: sunxi: Handle bias disable") actually
      enforced enforced the disabling of the pull up/down resistors instead of
      ignoring it like it was done before.
      
      This was part of a wider rework to switch to the generic pinconf bindings,
      and was meant to be merged together with DT patches that were switching to
      it, and removing what was considered default values by both the binding and
      the boards. This included no bias on a pin.
      
      However, those DT patches were delayed to 4.11, which would be fine only
      for a significant number boards having the bias setup wrong, which in turns
      break the MMC on those boards (and possibly other devices too).
      
      In order to avoid conflicts as much as possible, bring back the old
      behaviour for 4.10, and we'll revert that commit once all the DT bits will
      have landed.
      Tested-by: NPriit Laes <plaes@plaes.org>
      Signed-off-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Acked-by: NChen-Yu Tsai <wens@csie.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      2154d94b
  6. 26 1月, 2017 1 次提交
  7. 09 1月, 2017 1 次提交
  8. 22 11月, 2016 1 次提交
  9. 17 11月, 2016 1 次提交
    • A
      pinctrl: sunxi: fix theoretical uninitialized variable access · d8a22212
      Arnd Bergmann 提交于
      gcc warns about a  way that it could use an uninitialized variable:
      
      drivers/pinctrl/sunxi/pinctrl-sunxi.c: In function 'sunxi_pinctrl_init':
      drivers/pinctrl/sunxi/pinctrl-sunxi.c:1191:8: error: 'best_div' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      
      This cannot really happen except if 'freq' is UINT_MAX and 'clock' is
      zero, and both of these are forbidden. To shut up the warning anyway,
      this changes the logic to initialize the return code to the first
      divider value before looking at the others.
      
      Fixes: 7c926492 ("pinctrl: sunxi: Add support for interrupt debouncing")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      d8a22212
  10. 15 11月, 2016 5 次提交
  11. 29 10月, 2016 1 次提交
  12. 24 10月, 2016 4 次提交
  13. 04 10月, 2016 1 次提交
    • L
      gpio: acpi: separation of concerns · 031ba28a
      Linus Walleij 提交于
      The generic GPIO library directly implement code for acpi_find_gpio()
      which is only used with CONFIG_ACPI. This was probably done because
      OF did the same thing, but I removed that so remove this too.
      
      Rename the internal acpi_find_gpio() in gpiolib-acpi.c to
      acpi_populate_gpio_lookup() which seems to be more appropriate anyway
      so as to avoid a namespace clash with the same function.
      
      Make the stub return -ENOENT rather than -ENOSYS (as that is for
      syscalls!).
      
      For some reason the sunxi pin control driver was including the private
      gpiolib header, it works just fine without it so remove that oneliner.
      
      Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      031ba28a
  14. 21 4月, 2016 1 次提交
  15. 30 3月, 2016 1 次提交
    • H
      pinctrl: sunxi: Fix A33 external interrupts not working · 5e7515ba
      Hans de Goede 提交于
      pinctrl-sun8i-a33.c (and the dts) declare only 2 interrupt banks,
      where as the closely related a23 has 3 banks. This matches with the
      datasheet for the A33 where only interrupt banks B and G are specified
      where as the A23 has banks A, B and G.
      
      However the A33 being the A23 derative it is means that the interrupt
      configure/status io-addresses for the 2 banks it has are not changed
      from the A23, iow they have the same address as if bank A was still
      present. Where as the sunxi pinctrl currently tries to use the A23 bank
      A addresses for bank B, since the pinctrl code does not know about the
      removed bank A.
      
      Add a irq_bank_base parameter and use this where appropriate to take
      the missing bank A into account.
      
      This fixes external interrupts not working on the A33 (tested with
      an i2c touchscreen controller which uses an external interrupt).
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      5e7515ba
  16. 09 3月, 2016 1 次提交
  17. 12 2月, 2016 1 次提交
    • L
      gpio/pinctrl: sunxi: stop poking around in private vars · 6cee3821
      Linus Walleij 提交于
      This kind of hacks disturbs the refactoring of the gpiolib.
      
      The descriptor table belongs to the gpiolib, if we want to know
      something about something in it, use or define the proper accessor
      functions. Let's add this gpiochip_lins_is_irq() to do what the
      sunxi driver is trying at so we can privatize the descriptors
      properly.
      
      Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
      Cc: Chen-Yu Tsai <wens@csie.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      6cee3821
  18. 11 2月, 2016 1 次提交
  19. 05 1月, 2016 1 次提交
  20. 27 12月, 2015 1 次提交
  21. 19 11月, 2015 1 次提交
    • L
      gpio: change member .dev to .parent · 58383c78
      Linus Walleij 提交于
      The name .dev in a struct is normally reserved for a struct device
      that is let us say a superclass to the thing described by the struct.
      struct gpio_chip stands out by confusingly using a struct device *dev
      to point to the parent device (such as a platform_device) that
      represents the hardware. As we want to give gpio_chip:s real devices,
      this is not working. We need to rename this member to parent.
      
      This was done by two coccinelle scripts, I guess it is possible to
      combine them into one, but I don't know such stuff. They look like
      this:
      
      @@
      struct gpio_chip *var;
      @@
      -var->dev
      +var->parent
      
      and:
      
      @@
      struct gpio_chip var;
      @@
      -var.dev
      +var.parent
      
      and:
      
      @@
      struct bgpio_chip *var;
      @@
      -var->gc.dev
      +var->gc.parent
      
      Plus a few instances of bgpio that I couldn't figure out how
      to teach Coccinelle to rewrite.
      
      This patch hits all over the place, but I *strongly* prefer this
      solution to any piecemal approaches that just exercise patch
      mechanics all over the place. It mainly hits drivers/gpio and
      drivers/pinctrl which is my own backyard anyway.
      
      Cc: Haavard Skinnemoen <hskinnemoen@gmail.com>
      Cc: Rafał Miłecki <zajec5@gmail.com>
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Cc: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
      Cc: Alek Du <alek.du@intel.com>
      Cc: Jaroslav Kysela <perex@perex.cz>
      Cc: Takashi Iwai <tiwai@suse.com>
      Acked-by: NDmitry Torokhov <dmitry.torokhov@gmail.com>
      Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Acked-by: NLee Jones <lee.jones@linaro.org>
      Acked-by: NJiri Kosina <jkosina@suse.cz>
      Acked-by: NHans-Christian Egtvedt <egtvedt@samfundet.no>
      Acked-by: NJacek Anaszewski <j.anaszewski@samsung.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      58383c78
  22. 23 10月, 2015 1 次提交
  23. 17 10月, 2015 1 次提交
  24. 02 10月, 2015 1 次提交
  25. 16 9月, 2015 2 次提交
  26. 27 7月, 2015 3 次提交
  27. 18 7月, 2015 2 次提交
  28. 25 6月, 2015 1 次提交
    • T
      pinctrl/sun4i: Fix race in installing chained IRQ handler · ef80e87d
      Thomas Gleixner 提交于
      Fix a race where a pending interrupt could be received and the handler
      called before the handler's data has been setup, by converting to
      irq_set_chained_handler_and_data().
      
      Search and conversion was done with coccinelle:
      
      @@
      expression E1, E2, E3;
      @@
      (
      -if (irq_set_chained_handler(E1, E3) != 0)
      -   BUG();
      |
      -irq_set_chained_handler(E1, E3);
      )
      -irq_set_handler_data(E1, E2);
      +irq_set_chained_handler_and_data(E1, E3, E2);
      
      @@
      expression E1, E2, E3;
      @@
      (
      -if (irq_set_chained_handler(E1, E3) != 0)
      -   BUG();
      ...
      |
      -irq_set_chained_handler(E1, E3);
      ...
      )
      -irq_set_handler_data(E1, E2);
      +irq_set_chained_handler_and_data(E1, E3, E2);
      Reported-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Julia Lawall <Julia.Lawall@lip6.fr>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
      Cc: Hans de Goede <hdegoede@redhat.com>
      Cc: Chen-Yu Tsai <wens@csie.org>
      Cc: Fan Wu <fwu@marvell.com>
      Cc: abdoulaye berthe <berthe.ab@gmail.com>
      Cc: Alexandre Courbot <acourbot@nvidia.com>
      Cc: linux-gpio@vger.kernel.org
      Cc: linux-arm-kernel@lists.infradead.org
      ef80e87d