1. 08 7月, 2012 8 次提交
    • S
      I2C: OMAP: Handle error check for pm runtime · 3b0fb97c
      Shubhrajyoti D 提交于
      If PM runtime get_sync fails return with the error
      so that no further reads/writes goes through the interface.
      This will avoid possible abort. Add a error message in case
      of failure with the cause of the failure.
      Reviewed-by: NKevin Hilman <khilman@ti.com>
      Signed-off-by: NShubhrajyoti D <shubhrajyoti@ti.com>
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      3b0fb97c
    • S
      I2C: OMAP: Fix the crash in i2c remove · 0861f430
      Shubhrajyoti D 提交于
          In omap_i2c_remove we are accessing the I2C_CON register without
          enabling the clocks. Fix the same by ensure device is accessible by calling
          pm_runtime_get_sync before accessing the registers and calling pm_runtime_put
          after accessing.
      
          This fixes the following crash.
          [  154.723022] ------------[ cut here ]------------
          [  154.725677] WARNING: at arch/arm/mach-omap2/omap_l3_noc.c:112 l3_interrupt_handler+0x1b4/0x1c4()
          [  154.725677] L3 custom error: MASTER:MPU TARGET:L4 PER2
          [  154.742614] Modules linked in: i2c_omap(-)
          [  154.746948] Backtrace:
          [  154.746948] [<c0013078>] (dump_backtrace+0x0/0x110) from [<c026c158>] (dump_stack+0x18/0x1c)
          [  154.752716]  r6:00000070 r5:c002c43c r4:df9b9e98 r3:df9b8000
          [  154.764465] [<c026c140>] (dump_stack+0x0/0x1c) from [<c0041a2c>] (warn_slowpath_common+0x5c/0x6c)
          [  154.768341] [<c00419d0>] (warn_slowpath_common+0x0/0x6c) from [<c0041ae0>] (warn_slowpath_fmt+0x38/0x40)
          [  154.776153]  r8:00000180 r7:c0361594 r6:c0379b48 r5:00080003 r4:e0838b00
          [  154.790771] r3:00000009
          [  154.791778] [<c0041aa8>] (warn_slowpath_fmt+0x0/0x40) from [<c002c43c>] (l3_interrupt_handler+0x1b4/0x1c4)
          [  154.803710]  r3:c0361598 r2:c02ef74c
          [  154.807403] [<c002c288>] (l3_interrupt_handler+0x0/0x1c4) from [<c0085f44>] (handle_irq_event_percpu+0x58/0
          [  154.818237]  r8:0000002a r7:00000000 r6:00000000 r5:df808054 r4:df8893c0
          [  154.825378] [<c0085eec>] (handle_irq_event_percpu+0x0/0x188) from [<c00860b8>] (handle_irq_event+0x44/0x64)
          [  154.835662] [<c0086074>] (handle_irq_event+0x0/0x64) from [<c0088ec0>] (handle_fasteoi_irq+0xa4/0x10c)
          [  154.845458]  r6:0000002a r5:df808054 r4:df808000 r3:c034a150
          [  154.846466] [<c0088e1c>] (handle_fasteoi_irq+0x0/0x10c) from [<c0085ed0>] (generic_handle_irq+0x30/0x38)
          [  154.854278]  r5:c034aa48 r4:0000002a
          [  154.862091] [<c0085ea0>] (generic_handle_irq+0x0/0x38) from [<c000fd38>] (handle_IRQ+0x60/0xc0)
          [  154.874450]  r4:c034ea70 r3:000001f8
          [  154.878234] [<c000fcd8>] (handle_IRQ+0x0/0xc0) from [<c0008478>] (gic_handle_irq+0x20/0x5c)
          [  154.887023]  r7:ffffff40 r6:df9b9fb0 r5:c034e2b4 r4:0000001a
          [  154.887054] [<c0008458>] (gic_handle_irq+0x0/0x5c) from [<c000ea80>] (__irq_usr+0x40/0x60)
          [  154.901153] Exception stack(0xdf9b9fb0 to 0xdf9b9ff8)
          [  154.907104] 9fa0:                                     beaf1f04 4006be00 0000000f 0000000c
          [  154.915710] 9fc0: 4006c000 00000000 00008034 ffffff40 00000007 00000000 00000000 0007b8d7
          [  154.916778] 9fe0: 00000000 beaf1b68 0000d23c 4005baf0 80000010 ffffffff
          [  154.931335]  r6:ffffffff r5:80000010 r4:4005baf0 r3:beaf1f04
          [  154.937316] ---[ end trace 1b75b31a2719ed21 ]--
      
      Cc: Rajendra Nayak <rnayak@ti.com>
      Cc: Linux PM list <linux-pm@vger.kernel.org>
      Reviewed-by: NKevin Hilman <khilman@ti.com>
      Signed-off-by: NShubhrajyoti D <shubhrajyoti@ti.com>
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      0861f430
    • S
      I2C: OMAP: Don't check if wait_for_completion_timeout() returns less than zero · 33d54985
      Shubhrajyoti D 提交于
      By definition, wait_for_completion_timeout() returns an unsigned value and
      therefore, it is not necessary to check if the return value is less than zero
      as this is not possible.
      
      This is based on a patch from Jon Hunter <jon-hunter@ti.com>
      Changes from his patch
      - Declare a long as the wait_for_completion_timeout returns long.
      
      Original patch is
      http://git.omapzoom.org/?p=kernel/omap.git;a=commitdiff;h=ea02cece7b0000bc736e60c4188a11aaa74bc6e6Reviewed-by: NKevin Hilman <khilman@ti.com>
      Signed-off-by: NJon Hunter <jon-hunter@ti.com>
      Signed-off-by: NShubhrajyoti D <shubhrajyoti@ti.com>
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      33d54985
    • S
      I2C: OMAP: Prevent the register access after pm_runtime_put in probe · 62ff2c2b
      Shubhrajyoti D 提交于
      Currently in probe
      pm_runtime_put(dev->dev);
      
      ...
              /* i2c device drivers may be active on return from add_adapter() */
              adap->nr = pdev->id;
              r = i2c_add_numbered_adapter(adap);
              if (r) {
                      dev_err(dev->dev, "failure adding adapter\n");
                      goto err_free_irq;
              }
      ...
      
      return 0;
      
      err_free_irq:
              free_irq(dev->irq, dev);
      err_unuse_clocks:
              omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
              pm_runtime_put(dev->dev);
      
      This may access the i2c registers without the clocks in the error cases.
      Fix the same by moving the pm_runtime_put after the error check.
      Reviewed-by: NKevin Hilman <khilman@ti.com>
      Signed-off-by: NShubhrajyoti D <shubhrajyoti@ti.com>
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      62ff2c2b
    • S
      I2C: OMAP: Fix the interrupt clearing in OMAP4 · bd16c82f
      Shubhrajyoti D 提交于
      On OMAP4 we were writing 1 to IRQENABLE_CLR which cleared only
      the arbitration lost interrupt. The patch intends to fix the same by writing 0
      to the IE register clearing all interrupts.
      
      This is based on the work done by Vikram Pandita <vikram.pandita@ti.com>.
      
      The  changes from the original patch ...
      -  Does not use the IRQENABLE_CLR register to clear as it is not mentioned
        to be legacy register IRQENABLE_CLR helps in  atomically
        setting/clearing specific interrupts, instead use the OMAP_I2C_IE_REG as we
        are clearing all interrupts.
      
      Cc: Vikram Pandita <vikram.pandita@ti.com>
      Reviewed-by: NKevin Hilman <khilman@ti.com>
      Signed-off-by: NShubhrajyoti D <shubhrajyoti@ti.com>
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      bd16c82f
    • S
      I2C: OMAP: Fix the mismatch of pm_runtime enable and disable · 24740516
      Shubhrajyoti D 提交于
      Currently the i2c driver calls the pm_runtime_enable and never
      the disable. This may cause a warning when pm_runtime_enable
      checks for the count match.Fix the same by calling
      pm_runtime_disable in the error and the remove path.
      
      Cc: Rajendra Nayak <rnayak@ti.com>
      Acked-by: NKevin Hilman <khilman@ti.com>
      Signed-off-by: NShubhrajyoti D <shubhrajyoti@ti.com>
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      24740516
    • S
      I2C: OMAP: make omap_i2c_unidle/idle functions depend on CONFIG_PM_RUNTIME · 3dae3efb
      Shubhrajyoti D 提交于
      The functions omap_i2c_unidle/idle are called from omap_i2c_runtime_resume
      and omap_i2c_runtime_suspend which is compiled for CONFIG_PM_RUNTIME.
      This patch removes the omap_i2c_unidle/idle functions and folds them
      into the runtime callbacks.
      
      This fixes the below warn when CONFIG_PM_RUNTIME is not defined
      
       CC      arch/arm/mach-omap2/board-ti8168evm.o
      drivers/i2c/busses/i2c-omap.c:272: warning: 'omap_i2c_unidle' defined but not used
      drivers/i2c/busses/i2c-omap.c:293: warning: 'omap_i2c_idle' defined but not used
        CC      net/ipv4/ip_forward.o
      Reviewed-by: NKevin Hilman <khilman@ti.com>
      Signed-off-by: NShubhrajyoti D <shubhrajyoti@ti.com>
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      3dae3efb
    • W
      devicetree: bindings: gpio-i2c belongs to i2c not gpio · f14cf2fb
      Wolfram Sang 提交于
      gpio-i2c describes an I2C controller (using gpios for data and clock),
      so it must be described in i2c, not gpio.
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      Acked-by: NRob Herring <rob.herring@calxeda.com>
      f14cf2fb
  2. 01 7月, 2012 9 次提交
  3. 30 6月, 2012 9 次提交
  4. 29 6月, 2012 14 次提交