wl1251: fix ELP_CTRL register reads
authorGrazvydas Ignotas <notasas@gmail.com>
Tue, 8 Jun 2010 11:33:31 +0000 (14:33 +0300)
committerGrazvydas Ignotas <notasas@gmail.com>
Mon, 17 Jan 2011 17:19:43 +0000 (19:19 +0200)
commit490894ee0f2c558413fe8452c59877ea69e36ef8
treee2264c35839b6174a39417b7fc0b18a7588d1542
parent30e33dffc8e71c01ecfb56c5207824b1c4764b9d
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