1. 26 8月, 2015 2 次提交
    • M
      pinctrl: cherryview: Use raw_spinlock for locking · 109fdf15
      Mika Westerberg 提交于
      When running -rt kernel and an interrupt happens on a GPIO line controlled by
      Intel Cherryview/Braswell pinctrl driver we get:
      
       BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:917
       in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/0
       Preemption disabled at:[<ffffffff81092e9f>] cpu_startup_entry+0x17f/0x480
      
       CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.1.5-rt5 #16
        ...
       Call Trace:
        <IRQ>  [<ffffffff816283c6>] dump_stack+0x4a/0x61
        [<ffffffff81077e17>] ___might_sleep+0xe7/0x170
        [<ffffffff8162d6cf>] rt_spin_lock+0x1f/0x50
        [<ffffffff812e52ed>] chv_gpio_irq_ack+0x3d/0xa0
        [<ffffffff810a72f5>] handle_edge_irq+0x75/0x180
        [<ffffffff810a3457>] generic_handle_irq+0x27/0x40
        [<ffffffff812e57de>] chv_gpio_irq_handler+0x7e/0x110
        [<ffffffff810050aa>] handle_irq+0xaa/0x190
        ...
      
      This is because desc->lock is raw_spinlock and is held when chv_gpio_irq_ack()
      is called by the genirq core. chv_gpio_irq_ack() in turn takes pctrl->lock
      which in -rt is an rt-mutex causing might_sleep() rightfully to complain about
      sleeping function called from invalid context.
      
      In order to keep -rt happy but at the same time make sure that register
      accesses get serialized, convert the driver to use raw_spinlock instead.
      Suggested-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      109fdf15
    • M
      pinctrl: baytrail: Use raw_spinlock for locking · 78e1c896
      Mika Westerberg 提交于
      The Intel Baytrail pinctrl driver implements irqchip callbacks which are
      called with desc->lock raw_spinlock held. In mainline this is fine because
      spinlock resolves to raw_spinlock. However, running the same code in -rt we
      get:
      
       BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:917
       in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/0
       Preemption disabled at:[<ffffffff81092e9f>] cpu_startup_entry+0x17f/0x480
      
       CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.1.5-rt5 #13
        ...
       Call Trace:
        <IRQ>  [<ffffffff816283c6>] dump_stack+0x4a/0x61
        [<ffffffff81077e17>] ___might_sleep+0xe7/0x170
        [<ffffffff8162d6cf>] rt_spin_lock+0x1f/0x50
        [<ffffffff812e3b88>] byt_gpio_clear_triggering+0x38/0x60
        [<ffffffff812e3bc1>] byt_irq_mask+0x11/0x20
        [<ffffffff810a7013>] handle_level_irq+0x83/0x150
        [<ffffffff810a3457>] generic_handle_irq+0x27/0x40
        [<ffffffff812e3a5f>] byt_gpio_irq_handler+0x7f/0xc0
        [<ffffffff810050aa>] handle_irq+0xaa/0x190
        ...
      
      This is because in -rt spinlocks are preemptible so taking the driver
      private spinlock in irqchip callbacks causes might_sleep() to trigger.
      
      In order to keep -rt happy but at the same time make sure that register
      accesses get serialized, convert the driver to use raw_spinlock instead.
      
      Also shorten the critical section a bit in few places.
      Suggested-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      78e1c896
  2. 25 8月, 2015 2 次提交
  3. 24 8月, 2015 1 次提交
  4. 13 8月, 2015 9 次提交
  5. 11 8月, 2015 1 次提交
  6. 03 8月, 2015 1 次提交
  7. 28 7月, 2015 4 次提交
    • W
      pinctrl: sirf: add power management support for atlas7 · 48356aa7
      Wei Chen 提交于
      We had not implemented the pm interface of atlas7 pinctrl
      and gpio drivers. So when system resumes from sleep, all
      pin configuration and gpio status will be lost.
      
      Now, we implement these interfaces to support pm.
      
      At the same time, this patch also drops a lot of if-else
      by look-up table for getting and setting pull.
      Signed-off-by: NWei Chen <Wei.Chen@csr.com>
      Signed-off-by: NBarry Song <Baohua.Song@csr.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      48356aa7
    • L
      pinctrl: nomadik: split stn8815 UART0 pin groups · 1051fade
      Linus Walleij 提交于
      Split the UART pin groups so we can activate RX/TX, CTS/RTS and
      the modem pins (DCD, DSR, RI, DTR) as three different groups
      with function u0.
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      1051fade
    • K
      MAINTAINERS: pinctrl: Move Thomas Abraham to CREDITS · dc9ab949
      Krzysztof Kozlowski 提交于
      Thomas Abraham's Linaro email address bounces for several months. Also
      there were no replies for several emails sent on LKML to his Samsung
      address. Move his name to CREDITS.
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Cc: Tomasz Figa <tomasz.figa@gmail.com>
      Cc: Thomas Abraham <thomas.ab@samsung.com>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Link: http://lkml.org/lkml/2015/6/15/15Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      dc9ab949
    • R
      pinctrl: kill off set_irq_flags usage · 9458120e
      Rob Herring 提交于
      set_irq_flags is ARM specific with custom flags which have genirq
      equivalents. Convert drivers to use the genirq interfaces directly, so we
      can kill off set_irq_flags. The translation of flags is as follows:
      
      IRQF_VALID -> !IRQ_NOREQUEST
      IRQF_PROBE -> !IRQ_NOPROBE
      IRQF_NOAUTOEN -> IRQ_NOAUTOEN
      
      For IRQs managed by an irqdomain, the irqdomain core code handles clearing
      and setting IRQ_NOREQUEST already, so there is no need to do this in
      .map() functions and we can simply remove the set_irq_flags calls. Some
      users also modify IRQ_NOPROBE and this has been maintained although it
      is not clear that is really needed. There appears to be a great deal of
      blind copy and paste of this code.
      Signed-off-by: NRob Herring <robh@kernel.org>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Lee Jones <lee@kernel.org>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Tomasz Figa <tomasz.figa@gmail.com>
      Cc: Thomas Abraham <thomas.abraham@linaro.org>
      Cc: Kukjin Kim <kgene@kernel.org>
      Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
      Cc: linux-gpio@vger.kernel.org
      Cc: linux-rpi-kernel@lists.infradead.org
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-mediatek@lists.infradead.org
      Cc: linux-samsung-soc@vger.kernel.org
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      9458120e
  8. 27 7月, 2015 9 次提交
  9. 23 7月, 2015 3 次提交
  10. 18 7月, 2015 8 次提交