Commit 88d89526 authored by Andrey Yurovsky's avatar Andrey Yurovsky Committed by John W. Linville

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: default avatarAndrey Yurovsky <andrey@cozybit.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent d1c5091f
...@@ -376,7 +376,7 @@ static int spu_set_bus_mode(struct if_spi_card *card, u16 mode) ...@@ -376,7 +376,7 @@ static int spu_set_bus_mode(struct if_spi_card *card, u16 mode)
err = spu_read_u16(card, IF_SPI_SPU_BUS_MODE_REG, &rval); err = spu_read_u16(card, IF_SPI_SPU_BUS_MODE_REG, &rval);
if (err) if (err)
return err; return err;
if (rval != mode) { if ((rval & 0xF) != mode) {
lbs_pr_err("Can't read bus mode register.\n"); lbs_pr_err("Can't read bus mode register.\n");
return -EIO; return -EIO;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment