1. 29 May, 2014 1 commit
  2. 28 May, 2014 4 commits
    • Linus Walleij's avatar
      gpio: pca953x: use gpiolib irqchip helpers · 7bcbce55
      Linus Walleij authored
      This switches the PCA953x driver over to using the gpiolib irqchip
      helpers to handle the threaded interrups cascaded off this
      GPIO chip.
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      7bcbce55
    • George Cherian's avatar
      gpio: pcf857x: Add IRQF_SHARED when request irq · 5795cf35
      George Cherian authored
      It's quite possible that multiple pcf857x can be hooked up
      to the same interrupt line with the processor. So add IRQF_SHARED
      in request irq..
      Signed-off-by: default avatarGeorge Cherian <george.cherian@ti.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      5795cf35
    • George Cherian's avatar
      gpio: pcf857x: Avoid calling irq_domain_cleanup twice · e6b698f6
      George Cherian authored
      Currently irq_domain_cleanup is called twice if irq_domain_init fails.
      This causes the following crash.
      
      Unable to handle kernel paging request at virtual address 00100104
      pgd = c0004000
      [00100104] *pgd=00000000
      Internal error: Oops: 805 [#1] SMP ARM
      Modules linked in:
      CPU: 0 PID: 6 Comm: kworker/u4:0 Not tainted 3.12.15-01889-gedd10a8-dirty #4
      Workqueue: deferwq deferred_probe_work_func
      task: ed0ee800 ti: ed116000 task.ti: ed116000
      PC is at irq_domain_remove+0x3c/0x8c
      LR is at 0x0
      pc : [<c0089734>]    lr : [<00000000>]    psr: a0000013
      sp : ed117b50  ip : 00100100  fp : ed117b64
      r10: ed5d1a04  r9 : 00000008  r8 : 00000000
      r7 : ffffffea  r6 : ed5d1a20  r5 : ed5d1a00  r4 : ed5e7540
      r3 : 00200200  r2 : 00100100  r1 : c08aa180  r0 : 00200200
      Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c53c7d  Table: 8000406a  DAC: 00000017
      Process kworker/u4:0 (pid: 6, stack limit = 0xed116248)
      Stack: (0xed117b50 to 0xed118000)
      7b40:                                     0000016b ed5d5f10 ed117b74 ed117b68
      7b60: c02c8910 c0089704 ed117bb4 ed117b78 c02c8e14 c02c8900 ed5d1a04 ed5d4e80
      ...
      <snip>
      ...
      fe0: 00000000 00000000 00000000 00000000 00000013 00000000 384a13ea 1590210a
      Backtrace:
      [<c00896f8>] (irq_domain_remove+0x0/0x8c) from [<c02c8910>] (pcf857x_irq_domain_cleanup+0x1c/0x20)
       r4:ed5d5f10 r3:0000016b
      [<c02c88f4>] (pcf857x_irq_domain_cleanup+0x0/0x20) from [<c02c8e14>] (pcf857x_probe+0x2a8/0x364)
      [<c02c8b6c>] (pcf857x_probe+0x0/0x364) from [<c04787ac>] (i2c_device_probe+0x80/0xc0)
      [<c047872c>] (i2c_device_probe+0x0/0xc0) from [<c036c33c>] (driver_probe_device+0x104/0x240)
       r6:00000000 r5:ed5d1a20 r4:c08c709c r3:c047872c
      [<c036c238>] (driver_probe_device+0x0/0x240) from [<c036c558>] (__device_attach+0x48/0x4c)
       r7:ed4fc480 r6:c036c510 r5:ed5d1a20 r4:c0866bb8
      [<c036c510>] (__device_attach+0x0/0x4c) from [<c036a6d8>] (bus_for_each_drv+0x4c/0x94)
       r5:ed5d1a20 r4:00000000
      [<c036a68c>] (bus_for_each_drv+0x0/0x94) from [<c036c1f4>] (device_attach+0x78/0x90)
       r6:c087fe50 r5:ed5d1a54 r4:ed5d1a20
      [<c036c17c>] (device_attach+0x0/0x90) from [<c036b76c>] (bus_probe_device+0x8c/0xb4)
       r6:c087fe50 r5:ed5d1a20 r4:ed5d1a20 r3:ed17e1c0
      [<c036b6e0>] (bus_probe_device+0x0/0xb4) from [<c0369888>] (device_add+0x34c/0x624)
       r6:ed5d1a28 r5:00000000 r4:ed5d1a20 r3:fffffffe
      [<c036953c>] (device_add+0x0/0x624) from [<c0369b7c>] (device_register+0x1c/0x20)
      ...
      <snip>
      ...
      [<c0060844>] (process_one_work+0x0/0x37c) from [<c0061040>] (worker_thread+0x13c/0x3c4)
      [<c0060f04>] (worker_thread+0x0/0x3c4) from [<c00670ec>] (kthread+0xac/0xb8)
      [<c0067040>] (kthread+0x0/0xb8) from [<c00148b8>] (ret_from_fork+0x14/0x3c)
       r7:00000000 r6:00000000 r5:c0067040 r4:ed105d20
      Code: e59fc04c e591e000 e59f0048 e154000e (e5823004)
      ---[ end trace 59dd1e90032c4217 ]---
      Signed-off-by: default avatarGeorge Cherian <george.cherian@ti.com>
      Reviewed-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      e6b698f6
    • Linus Walleij's avatar
      gpio: mcp23s08: switch chip count to int · 596a1c5f
      Linus Walleij authored
      Commit 3e3bed91
      "gpio: mcp23s08: fixed count variable for devicetree probing"
      introduced a loop check to see if the number of chips were
      unconsistent and going below zero counting downwards, but
      this requires the counting variable to be able to be
      negative, so switch the variable from unsigned to int.
      
      Cc: Michael Stickel <ms@mycable.de>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      596a1c5f
  3. 27 May, 2014 5 commits
  4. 23 May, 2014 4 commits
  5. 21 May, 2014 1 commit
    • Alexandre Courbot's avatar
      gpio: make of_get_named_gpiod_flags() private · f01d9075
      Alexandre Courbot authored
      of_get_named_gpiod_flags() is visible and directly usable by GPIO
      consumers, but it really should not as the gpiod interface relies
      on the simpler gpiod_get() to provide properly-configured GPIOs.
      
      of_get_named_gpiod_flags() is just used internally by gpiolib to
      implement gpiod_get(), and by the old of_get_named_gpio_flags()
      function, therefore it makes sense to make it gpiolib-private.
      
      As a side-effect, the unused (and unneeded) of_get_gpiod_flags()
      inline function is also removed, and of_get_named_gpio_flags() is moved
      from a static inline function to a regular one in gpiolib-of.c
      
      This results in all references to gpiod_* functions in of_gpio.h being
      gone, which is the way it should be since this file is part of the old
      integer GPIO interface.
      
      Changes since v1:
      - Fixed compilation error when CONFIG_OF_GPIO is not defined
      - Fixed warning due to of_gpio_flags enum not being declared
        in private gpiolib.h header
      Signed-off-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      f01d9075
  6. 16 May, 2014 6 commits
  7. 13 May, 2014 1 commit
  8. 09 May, 2014 18 commits