wimax/i2400m: cache firmware on system suspend
authorInaky Perez-Gonzalez <inaky@linux.intel.com>
Mon, 14 Sep 2009 21:10:16 +0000 (14:10 -0700)
committerInaky Perez-Gonzalez <inaky@linux.intel.com>
Mon, 19 Oct 2009 06:56:02 +0000 (15:56 +0900)
commit7b43ca708a767a5f68eeeb732c569c0f11a7d6f7
tree8811c30691a5e4355c56e9b52a7f8fb9fe9108fb
parent3ef6129e57b04c116b1907b72c7a20720e6dde75
wimax/i2400m: cache firmware on system suspend

In preparation for a reset_resume implementation, have the firmware
image be cached in memory when the system goes to suspend and released
when out.

This is needed in case the device resets during suspend; the driver
can't load firmware until resume is completed or bad deadlocks
happen.

The modus operandi for this was copied from the Orinoco USB driver.

The caching is done with a kobject to avoid race conditions when
releasing it. The fw loader path is altered only to first check for a
cached image before trying to load from disk. A Power Management event
notifier is register to call i2400m_fw_cache() or i2400m_fw_uncache()
which take care of the actual cache management.

Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
drivers/net/wimax/i2400m/driver.c
drivers/net/wimax/i2400m/fw.c
drivers/net/wimax/i2400m/i2400m.h