1. 15 2月, 2012 4 次提交
  2. 08 11月, 2011 1 次提交
  3. 12 10月, 2011 1 次提交
    • L
      wl12xx: use the same plat dev name for both SPI and SDIO · ccb62000
      Luciano Coelho 提交于
      There's no need to have the bus name included in the platform device
      name that we create.  The core driver doesn't need to know about the
      type of bus it uses.  Any differences between the buses that need to
      be handled differently in the core, can be passed in the platform data
      (as the pwr_in_suspend boolean does).
      
      Use "wl12xx" for the device name in both bus drivers.  Rename the
      platform driver name to "wl12xx_driver", just to differentiate from
      the platform device names.
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      ccb62000
  4. 11 10月, 2011 5 次提交
  5. 24 8月, 2011 1 次提交
    • I
      wl12xx: Fix validation of pm_runtime_get_sync return value · a15f1c45
      Ido Yariv 提交于
      wl1271_sdio_power_on checks if the return value of pm_runtime_get_sync
      is non-zero, and if so bails out.
      However, pm_runtime_get_sync can return a positive number which does not
      suggest an error has occurred. This is problematic for two reasons:
      
      1. The function will needlessly bail out without decrementing back the
         runtime PM reference counter.
      2. wl1271_power_on only checks if wl1271_power_on return value is
         negative. This means that wl1271_power_on will continue even if
         wl1271_sdio_power_on bailed out. As a result, sdio transactions will
         be initiated without properly enabling the sdio function and claiming
         the host. This could even lead to a kernel panic.
      
      Fix this by only checking that the return value of pm_runtime_get_sync
      is non-negative.
      Signed-off-by: NIdo Yariv <ido@wizery.com>
      Acked-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a15f1c45
  6. 22 8月, 2011 1 次提交
  7. 06 7月, 2011 1 次提交
  8. 27 6月, 2011 6 次提交
  9. 19 5月, 2011 1 次提交
    • L
      wl12xx: fix compilation error when CONFIG_PM is not set · f634a4e7
      Luciano Coelho 提交于
      There was a compilation error when PM is not enabled:
      
        CC [M]  drivers/net/wireless/wl12xx/main.o
      drivers/net/wireless/wl12xx/main.c:3653: error: unknown field 'suspend' specified in initializer
      drivers/net/wireless/wl12xx/main.c:3653: warning: initialization from incompatible pointer type
      drivers/net/wireless/wl12xx/main.c:3654: error: unknown field 'resume' specified in initializer
      drivers/net/wireless/wl12xx/main.c:3654: warning: initialization from incompatible pointer type
      
      Fix this by adding #ifdef's in the appropriate places.
      
      Cc: Eliad Peller <eliad@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f634a4e7
  10. 13 5月, 2011 4 次提交
  11. 19 4月, 2011 7 次提交
  12. 05 4月, 2011 1 次提交
  13. 03 3月, 2011 4 次提交
    • I
      wl12xx: Switch to level trigger interrupts · 2da69b89
      Ido Yariv 提交于
      The interrupt of the wl12xx is a level interrupt in nature, since the
      interrupt line is not auto-reset. However, since resetting the interrupt
      requires bus transactions, this cannot be done from an interrupt
      context. Thus, requesting a level interrupt would require to disable the
      irq and re-enable it after the HW is acknowledged. Since we now request
      a threaded irq, this can also be done by specifying the IRQF_ONESHOT
      flag.
      
      Triggering on an edge can be problematic in some platforms, if the
      sampling frequency is not sufficient for detecting very frequent
      interrupts. In case an interrupt is missed, the driver will hang as the
      interrupt line will stay high until it is acknowledged by the driver,
      which will never happen.
      
      Fix this by requesting a level triggered interrupt, with the
      IRQF_ONESHOT flag.
      Signed-off-by: NIdo Yariv <ido@wizery.com>
      Reviewed-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      2da69b89
    • I
      wl12xx: Switch to a threaded interrupt handler · a620865e
      Ido Yariv 提交于
      To achieve maximal throughput, it is very important to react to
      interrupts as soon as possible. Currently the interrupt handler wakes up
      a worker for handling interrupts in process context. A cleaner and more
      efficient design would be to request a threaded interrupt handler.  This
      handler's priority is very high, and can do blocking operations such as
      SDIO/SPI transactions.
      
      Some work can be deferred, mostly calls to mac80211 APIs
      (ieee80211_rx_ni and ieee80211_tx_status). By deferring such work to a
      different worker, we can keep the irq handler thread more I/O
      responsive. In addition, on multi-core systems the two threads can be
      scheduled on different cores, which will improve overall performance.
      
      The use of WL1271_FLAG_IRQ_PENDING & WL1271_FLAG_IRQ_RUNNING was
      changed. For simplicity, always query the FW for more pending
      interrupts. Since there are relatively long bursts of interrupts, the
      extra FW status read overhead is negligible. In addition, this enables
      registering the IRQ handler with the ONESHOT option.
      Signed-off-by: NIdo Yariv <ido@wizery.com>
      Reviewed-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      a620865e
    • I
      wl12xx: Change claiming of the SDIO bus · 393fb560
      Ido Yariv 提交于
      The SDIO bus is claimed and released for each SDIO transaction. In
      addition to the few CPU cycles it takes to claim and release the bus, it
      may also cause undesired side effects such as the MMC host stopping its
      internal clocks.
      
      Since only the wl12xx_sdio driver drives this SDIO card, it is safe to
      claim the SDIO host once (on power on), and release it only when turning
      the power off.
      
      This patch was inspired by Juuso Oikarinen's (juuso.oikarinen@nokia.com)
      patch "wl12xx: Change claiming of the (SDIO) bus".
      Signed-off-by: NIdo Yariv <ido@wizery.com>
      Reviewed-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      393fb560
    • I
      wl12xx: Don't rely on runtime PM for toggling power · 11251e7e
      Ido Yariv 提交于
      Runtime PM might not always be enabled. Even if it is enabled in the
      running kernel, it can still be temporarily disabled, for instance
      during suspend. Runtime PM is opportunistic in nature, and should not be
      relied on for toggling power.
      
      In case the interface is removed and re-added while runtime PM is
      disabled, the FW will fail to boot, as it is mandatory to toggle power
      between boots. For instance, this can happen during suspend in case one
      of the devices fails to suspend before the MMC host suspends, but after
      mac80211 was suspended. The interface will be removed and reactivated
      without toggling the power.
      
      Fix this by calling mmc_power_save_host/mmc_power_restore_host in
      wl1271_sdio_power_on/off functions. It will toggle the power to the chip
      even if runtime PM is disabled. The runtime PM functions should still be
      called to make sure runtime PM does not opportunistically power the chip
      off (e.g. after resuming from system suspend).
      Signed-off-by: NIdo Yariv <ido@wizery.com>
      Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      11251e7e
  14. 25 1月, 2011 1 次提交
  15. 22 11月, 2010 1 次提交
  16. 08 10月, 2010 1 次提交