wl1251: fix ELP_CTRL register reads
authorGrazvydas Ignotas <notasas@gmail.com>
Tue, 8 Jun 2010 11:33:31 +0000 (14:33 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 8 Jun 2010 13:31:21 +0000 (09:31 -0400)
commit832c10fd733893f86c63bde1c65b005d5a2fe346
tree4c46420f7a8ac9f0261205383489dea4b042d91c
parentabe37c4b84502d6931e04e94c9c2c45b4da8c889
wl1251: fix ELP_CTRL register reads

Reading the ELP_CTRL register with sdio_readb causes problems because
hardware seems to be performing a write using stuff bits in the request
(those bits contain write data in write request). This indicates that it
actually expects RAW (read after write) type of request, so perform that
when reading ELP_CTRL instead. Also cache last written value so we know
what to write when doing RAW request.

Because of the above it was not possible to wake the chip from ELP power
saving mode, PM had to be disabled to have the driver usable in SDIO
mode. After this patch PM is functional.

For backporting to 2.6.34 or earlier, this patch depends on
6c1f716e8154ee9315534782b9b1eedea0559a24, which adds the
required SDIO funcion.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Acked-by: Kalle Valo <kvalo@adurom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/wl12xx/wl1251_sdio.c