aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/libertas
diff options
context:
space:
mode:
authorAndrey Yurovsky <andrey@cozybit.com>2009-07-31 14:35:19 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-04 16:44:21 -0400
commit88d89526a671ba008f59456161b0c513cdfb5d5a (patch)
tree66645cef5aa099db182a88597ad059164adcfb33 /drivers/net/wireless/libertas
parentd1c5091f23fed5195271e2849f89017d3a126521 (diff)
libertas: check valid bits in SPI bus mode reg
The SPI driver writes to the bus mode register and performs a sanity check by reading back what we wrote, however only the lower four bits of that register are defined. In some cases, the device side seems to set the higher bits, causing us to fail the sanity check unnecessarily. Check only the lower four bits instead. Thanks to John Goyette from Schick Technologies for pointing out the problem. Signed-off-by: Andrey Yurovsky <andrey@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas')
-rw-r--r--drivers/net/wireless/libertas/if_spi.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
index 963c20125fc9..446e327180f8 100644
--- a/drivers/net/wireless/libertas/if_spi.c
+++ b/drivers/net/wireless/libertas/if_spi.c
@@ -376,7 +376,7 @@ static int spu_set_bus_mode(struct if_spi_card *card, u16 mode)
376 err = spu_read_u16(card, IF_SPI_SPU_BUS_MODE_REG, &rval); 376 err = spu_read_u16(card, IF_SPI_SPU_BUS_MODE_REG, &rval);
377 if (err) 377 if (err)
378 return err; 378 return err;
379 if (rval != mode) { 379 if ((rval & 0xF) != mode) {
380 lbs_pr_err("Can't read bus mode register.\n"); 380 lbs_pr_err("Can't read bus mode register.\n");
381 return -EIO; 381 return -EIO;
382 } 382 }