History log of /drivers/net/wireless/wl12xx/sdio.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4549d09c57cf44ae9ab6095c375bad5c100658c7 06-Feb-2012 Eliad Peller <eliad@wizery.com> wl12xx: dynamically change fw according to number of active roles

wl12xx uses different fw for single-role and multi-role
scenarios (due to lack of space, some of the fw advanced
features are disabled in the multi-role fw).

Add checks on add_interfae and remove_interface in order
to determine whether a fw switch is needed (and initiate
recovery in this case).

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
3fcdab7066a31ae90ac2beba7d38e8e606374998 05-Feb-2012 Eliad Peller <eliad@wizery.com> wl12xx: Use a dedicated fw for PLT

A special PLT firmware is used for calibration.

Add multiple fw support by introducing a new fw_type member,
representing the currently saved fw (the actual fw state
can be determined by wl->state).

Signed-off-by: Gery Kahn <geryk@ti.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
1ebaa2d041746949c291fff17be9880820f70e55 26-Jan-2012 Eliad Peller <eliad@wizery.com> wl12xx: don't release/claim sdio on suspend/resume

Since we reverted to claiming the host only when needed,
we no longer need to release/claim the host on suspend/resume.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
b4748306368a61b64b97b16f11cb6a82eebb60f9 26-Jan-2012 Eliad Peller <eliad@wizery.com> Revert "wl12xx: Change claiming of the SDIO bus"

This reverts commit 393fb560d328cc06e6a5c7b7473901ad724f82e7.

Commit b6ad726 ("mmc: core: Prevent too long response times
for suspend") fails the suspend if the mmc host can't be
claimed before suspend. As the host is claimed by us as long
as the chip is powered on, suspend will always fail.

Revert to claiming the sdio bus only when needed.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
b693289406f0b8ca70ab77e745be6196d5740eb0 08-Nov-2011 Eyal Shapira <eyal@wizery.com> wl12xx: fix SDIO suspend/resume

wl1271_suspend/resume() accessed the wrong struct and not wl1271
which caused it to think that wow was enabled when it wasn't.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
ccb62000d5e92772b6d5c2acce2f56263886ed89 07-Oct-2011 Luciano Coelho <coelho@ti.com> wl12xx: use the same plat dev name for both SPI and SDIO

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: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
3c4d386868dcbfb9fa51427e314fde39ee70b0ff 07-Oct-2011 Luciano Coelho <coelho@ti.com> wl12xx: sdio: use dev_dbg instead of wl1271_debug

To prevent a useless dependency between the sdio module and the wl12xx
module, we need to replace the wl1271_debug macros (and friends) for
dev_dbg and other equivalents.

At the same time, remove the SDIO data hexdump, since this produces
way too much data and is not particularly useful. There's not
print_hex_dump() equivalent for dynamic debug, so it's hard to control
when the dumps are printed out.

Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
0f4e31222a2c0b93f25a87effd2033cb78c7a79c 07-Oct-2011 Luciano Coelho <coelho@ti.com> wl12xx: move debugging definitions to a separate file

Separate the debugging macros and other definitions to a new debug.h
file. This is be needed because the sdio and spi modules don't need
to depend on the wl12xx module anymore, but still need to include
wl12xx.h. Currently they do depend on it, because of the debugging
global that wl12xx exports. A future patch will remove this
dependency.

Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
a390e85cfe91c346ff4745bcd45ad0a7e7101aa2 06-Oct-2011 Felipe Balbi <balbi@ti.com> wl12xx: move common init code from bus modules to main

Move all common parts from sdio.c and spi.c to main.c, since they now
can be handled as part of the platform driver.

Signed-off-by: Felipe Balbi <balbi@ti.com>
[forward-ported, cleaned-up and rephrased commit message]
[added a bunch of fixes and a new pdata element]
[moved some new code into main.c as well]
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
025aef8fcfbdf680376c4f7aa31b9ac85cebc700 05-Oct-2011 Felipe Balbi <balbi@ti.com> wl12xx: add a platform device to the sdio module

The platform device will be used to match the platform driver that
will be implemented by the core module.

Signed-off-by: Felipe Balbi <balbi@ti.com>
[forward-ported, cleaned-up and rephrased commit message]
[call platform_device_add() instead of platform_device_register()]
[store alloc'ed device platform directly in glue->core]
[fixed the length of memset(res...)]
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
fbe936bcb59d8e6e054c325a441082b55538bf8f 04-Oct-2011 Felipe Balbi <balbi@ti.com> wl12xx: add an sdio glue struct to keep wl and device side-by-side

In order to fully abstract the bus, we need to save the device
structure *beside* wl1271, instead of inside it.

This will help re-structuring the driver so that we avoid the
duplicated code in the bus modules.

Signed-off-by: Felipe Balbi <balbi@ti.com>
[forward-ported and cleaned up and rephrased commit message]
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
4d8b61490c14a36efdee4a8bf523e26809df05ac 20-Sep-2011 John W. Linville <linville@tuxdriver.com> Merge branch 'master' of git://git.infradead.org/users/linville/wireless

Conflicts:
drivers/net/wireless/iwlwifi/iwl-pci.c
drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c
drivers/net/wireless/rt2x00/rt2800usb.c
drivers/net/wireless/wl12xx/main.c
a15f1c45f393982196c981a8df8b534cc9f3bb80 22-Aug-2011 Ido Yariv <ido@wizery.com> wl12xx: Fix validation of pm_runtime_get_sync return value

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: Ido Yariv <ido@wizery.com>
Acked-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
/drivers/net/wireless/wl12xx/sdio.c
c302b2c959164622558474871ae942da0e484a38 17-Aug-2011 Arik Nemtsov <arik@wizery.com> wl12xx: Use a single fw for both STA and AP roles

Firmware >= 6/7.3.0.0.75 (wl127x/wl128x) supports both
STA and AP roles.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
b5d6e5f66304bddc2b5bc7222e993dfeb629ef0c 26-Jun-2011 Ohad Ben-Cohen <ohad@wizery.com> wl12xx: one SDIO initialization is enough

Skip manual device power on in case runtime PM is enabled for
our device.

This eliminates a secondary & redundant SDIO init sequence.

Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
6bb043321569ac356c790a8d3bd759742e1f9352 05-Jun-2011 Eliad Peller <eliad@wizery.com> wl12xx_sdio: enable wowlan only if enable_irq_wake() succeeded

Some platforms don't support the wake_irq, so disable wowlan
in this case, and avoid the "Unbalanced IRQ wake disable"
warning on disable_irq_wake().

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
86046da4afe068991b77e0a4c4b79b99ad961bda 29-May-2011 Ohad Ben-Cohen <ohad@wizery.com> wl12xx: don't bail if mmc isn't MMC_CAP_POWER_OFF_CARD

If our SDIO function has its runtime PM disabled, don't try to
manipulate its runtime PM status at all. This way we can still
power on cards plugged to mmc hosts that are not MMC_CAP_POWER_OFF_CARD.

Reported-and-tested-by: Tim Yamin <tim@kangatronix.co.uk>
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
a011130265e999056fe0678a064d828c2fd40174 18-May-2011 Eliad Peller <eliad@wizery.com> wl12xx: remove unused crc7 references

crc7 is used only in wl12xx_spi.

Remove redundant crc7.h includes, and update Kconfig to select CRC7
only if WL12XX_SPI is being selected.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
4c4cdfa12f389f0addbbbb6ac984997498a3c3af 13-May-2011 Felipe Balbi <balbi@ti.com> net: wl12xx: remove the nops

Nops aren't needed. When we actually need
those calls, then we add them with meat
and barbecue sauce.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
6bdaf79623e285242cb977840358dc7d14438475 13-May-2011 Felipe Balbi <balbi@ti.com> net: wl12xx: remove some unnecessary prints

Those have little value. Remove those to make
the driver less noisy.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
33dd74c7844852afba46f5e19911bcf55a1f04a1 13-May-2011 Felipe Balbi <balbi@ti.com> net: wl12xx: sdio: id_tables should be __devinitconst

That's only needed during init anyway, let's free
some space after we're done probing.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
f634a4e7074f66ac3dfaf2cc6786e0ec3080a2d1 18-May-2011 Luciano Coelho <coelho@ti.com> wl12xx: fix compilation error when CONFIG_PM is not set

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: Luciano Coelho <coelho@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
/drivers/net/wireless/wl12xx/sdio.c
f795ea8b2f047409c59e891d6e5e86a925048bf4 13-May-2011 Eliad Peller <eliad@wizery.com> wl12xx_sdio: declare support for NL80211_WOW_TRIGGER_ANYTHING trigger

Since wowlan requires the ability to stay awake while the host
is suspended, declare support for NL80211_WOW_TRIGGER_ANYTHING
if the MMC_PM_KEEP_POWER capability is being supported.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
f44e58681aec420b132a54823d8911293a644d4e 13-May-2011 Eliad Peller <eliad@wizery.com> wl12xx: prevent scheduling while suspending (WoW enabled)

When WoW is enabled, the interface will stay up and the chip will
be powered on, so we have to flush/cancel any remaining work, and
prevent the irq handler from scheduling a new work until the system
is resumed.

Add 2 new flags:
* WL1271_FLAG_SUSPENDED - the system is (about to be) suspended.
* WL1271_FLAG_PENDING_WORK - there is a pending irq work which
should be scheduled when the system is being resumed.

In order to wake-up the system while getting an irq, we initialize
the device as wakeup device, and calling pm_wakeup_event() upon
getting the interrupt (while the system is about to be suspended)

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
039bdb1494d1d514987ce596a4898494021c7af2 13-May-2011 Eliad Peller <eliad@wizery.com> wl12xx_sdio: set MMC_PM_KEEP_POWER flag on suspend

if a wow trigger was configured, set the MMC_PM_KEEP_POWER flag
on suspend, so our power will be kept while the system is suspended.

We needed to set this flag on each suspend attempt (when we want
to keep power)

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
2c0f24636c80aa09990c507c0cede39add4b4724 13-May-2011 Eliad Peller <eliad@wizery.com> wl12xx_sdio: set interrupt as wake_up interrupt

set the sdio interrupt as wake_up interrupt, so we will be able
to wake up the suspended system (Wake-On-Wireless)

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
341b7cde6ccc60672fcd7fc84dd24a1b7c0b8d94 31-Mar-2011 Ido Yariv <ido@wizery.com> wl12xx: Handle platforms without level trigger interrupts

Some platforms are incapable of triggering on level interrupts. Add a
platform quirks member in the platform data structure, as well as an
edge interrupt quirk which can be set on such platforms.

When the interrupt is requested with IRQF_TRIGGER_RISING, IRQF_ONESHOT
cannot be used, as we might miss interrupts that occur after the FW
status is cleared and before the threaded interrupt handler exits.

Moreover, when IRQF_ONESHOT is not set, iterating more than once in the
threaded interrupt handler introduces a few race conditions between this
handler and the hardirq handler. Currently this is worked around by
limiting the loop to one iteration only. This workaround has an impact
on performance. To remove to this restriction, the race conditions will
need to be addressed.

Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
0da13da767cd568c1fe2a7b5b936e86e521b5ae7 31-Mar-2011 Ido Yariv <ido@wizery.com> wl12xx: Clean up the block size alignment code

Simplify and clean up the block size alignment code:
1. Set the block size according to the padding field type, as it cannot
exceed the maximum value this field can hold.
2. Move the alignment code into a function instead of duplicating it in
multiple places.
3. In the current implementation, the block_size member can be
misleading because a zero value actually means that there's no need to
align. Declare a block size alignment quirk instead.

Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
1d732e8cf3dcc09d7c862b6c12f876533529073d 18-Mar-2011 Arik Nemtsov <arik@wizery.com> wl12xx: Clamp byte mode transfers for 128x chips

On wl128x based devices, when TX packets are aggregated, each packet
size must be aligned to the SDIO block size, and sent using block mode
transfers.

The block size is set to 256 bytes, which is less than the maximum
possible byte transfer. Thus, if two small packets (< 256 bytes) are
aggregated, the aggregation buffer size would be 512, and will be sent
using byte mode transfers. This can have undesired side effects.

Fix this by setting the MMC_QUIRK_BLKSZ_FOR_BYTE_MODE mmc card quirk.
For 127x chips this has no effect, as the block size is set to 512
bytes.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Ido Yariv <ido@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
1aed55fd784d000fb6741cefb68712d64817bd68 06-Mar-2011 Arik Nemtsov <arik@wizery.com> wl12xx: 1281/1283 support - Use different FW file for AP mode wl127x/wl128x chips

Choose a different FW for AP-mode wl127x and wl128x chips, base on chip
ID at boot time.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Reviewed-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
5ea417ae7749076ddaacb5b36487cae6ac920413 06-Mar-2011 Shahar Levi <shahar_levi@ti.com> wl12xx: 1281/1283 support - New boot sequence

Boot sequence support FREF clock and TCXO clock.
WL128x has two clocks input - TCXO and FREF.
TCXO is the main clock of the device, while FREF is used to sync
between the GPS and the cellular modem.
Auto-detection checks where TCXO is 32.736MHz or 16.368MHz, in that
case the FREF will be used as the WLAN/BT main clock.

[Use clock enumeration as defined in linux/wl12xx.h; remove
unnecessary else block in wl128x_switch_fref; remove unnecessary
change in main.c; remove some unnecessary debug prints and comments;
fix potential use of uninitialized value (pll_config) -- Luca]

Signed-off-by: Shahar Levi <shahar_levi@ti.com>
Reviewed-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
a81159edf8d64011933df177ec42f82d7896a0c7 14-Mar-2011 Luciano Coelho <coelho@ti.com> wl12xx: 1281/1283 support - add block size handling for sdio and spi

Add the the set_block_size op in the SDIO and in the SPI modules.
Since it is only used with SDIO, just explicitly set the op to NULL in
spi.c

Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
5aa42346bba2e385674eb1dd4019dfce4c2ef771 06-Mar-2011 Shahar Levi <shahar_levi@ti.com> wl12xx: 1281/1283 support - Add Definitions

Definitions to support wl128x:
- New FW file name
- Chip ID
- New PLL Configuration Algorithm macros that will be used at wl128x
boot stage
- Rename NVS macro name: wl127x and wl128x are using the same NVS
file name. However, the ini parameters between them are
different. The driver will validate the correct NVS size in
wl1271_boot_upload_nvs().

[Cleaned up some of the definitions. -- Luca]

Signed-off-by: Shahar Levi <shahar_levi@ti.com>
Reviewed-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
5245e3a9f77a8dd4ea92d7bdab2e96629f1feda4 30-Mar-2011 Luciano Coelho <coelho@ti.com> wl12xx: fix module author's email address in the spi and sdio modules

The MODULE_AUTHOR() macro in the main module (wl12xx) has been updated
to reflect one of the author's new email address, but the wl12xx_spi
and wl12xx_sdio modules haven't been updated. This patches updates
them.

Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
/drivers/net/wireless/wl12xx/sdio.c
2da69b890f47852dc368136375f49a5d24e2d9a1 01-Mar-2011 Ido Yariv <ido@wizery.com> wl12xx: Switch to level trigger interrupts

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: Ido Yariv <ido@wizery.com>
Reviewed-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
a620865edf62ea2d024bbfe62162244473badfcb 01-Mar-2011 Ido Yariv <ido@wizery.com> wl12xx: Switch to a threaded interrupt handler

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: Ido Yariv <ido@wizery.com>
Reviewed-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
393fb560d328cc06e6a5c7b7473901ad724f82e7 01-Mar-2011 Ido Yariv <ido@wizery.com> wl12xx: Change claiming of the SDIO bus

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: Ido Yariv <ido@wizery.com>
Reviewed-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
11251e7e5c7c5411d1f77dbc7f9bfa2c23626749 27-Feb-2011 Ido Yariv <ido@wizery.com> wl12xx: Don't rely on runtime PM for toggling power

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: Ido Yariv <ido@wizery.com>
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
d75387ca62b92d837c2a1e626d0d3705a9011228 17-Jan-2011 Arik Nemtsov <arik@wizery.com> wl12xx: add missing MODULE_FIRMWARE statment for AP-mode FW

In wl12xx cards AP-mode requires a separate FW file. Add this file to
the module info.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
/drivers/net/wireless/wl12xx/sdio.c
00d201001bd4e8a46e3d03c970abcb72256c368b 08-Nov-2010 Shahar Levi <shahar_levi@ti.com> wl1271: Change wl12xx Files Names

All files name prefix removed due to the fact that wl12xx driver supports
wl1271 and wl1273.
Also the definition in Kconfig and header files changed respectively.

Signed-off-by: Shahar Levi <shahar_levi@ti.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
/drivers/net/wireless/wl12xx/sdio.c