diff options
| author | Ben Gardner <gardner.ben@gmail.com> | 2009-02-27 17:02:58 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-27 19:26:20 -0500 |
| commit | dca17146f4b72b8966016c406d94ad3e48289b79 (patch) | |
| tree | 35ba7c6673cce26f3be599a01a6887e29c952ffd /drivers/w1 | |
| parent | 221be177e68e197a946bb991c8b91468e960be4e (diff) | |
w1_ds2433: clear the validcrc flag after a write
The w1_ds2433 driver does not read from the hardware if the CRC was valid
on the last read. The validcrc flag should be cleared after a write so
that the new value can be read.
Signed-off-by: Ben Gardner <gardner.ben@gmail.com>
Signed-off-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/w1')
| -rw-r--r-- | drivers/w1/slaves/w1_ds2433.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/w1/slaves/w1_ds2433.c b/drivers/w1/slaves/w1_ds2433.c index 858c16a544c..13944714882 100644 --- a/drivers/w1/slaves/w1_ds2433.c +++ b/drivers/w1/slaves/w1_ds2433.c | |||
| @@ -156,6 +156,9 @@ out_up: | |||
| 156 | */ | 156 | */ |
| 157 | static int w1_f23_write(struct w1_slave *sl, int addr, int len, const u8 *data) | 157 | static int w1_f23_write(struct w1_slave *sl, int addr, int len, const u8 *data) |
| 158 | { | 158 | { |
| 159 | #ifdef CONFIG_W1_SLAVE_DS2433_CRC | ||
| 160 | struct w1_f23_data *f23 = sl->family_data; | ||
| 161 | #endif | ||
| 159 | u8 wrbuf[4]; | 162 | u8 wrbuf[4]; |
| 160 | u8 rdbuf[W1_PAGE_SIZE + 3]; | 163 | u8 rdbuf[W1_PAGE_SIZE + 3]; |
| 161 | u8 es = (addr + len - 1) & 0x1f; | 164 | u8 es = (addr + len - 1) & 0x1f; |
| @@ -196,7 +199,9 @@ static int w1_f23_write(struct w1_slave *sl, int addr, int len, const u8 *data) | |||
| 196 | 199 | ||
| 197 | /* Reset the bus to wake up the EEPROM (this may not be needed) */ | 200 | /* Reset the bus to wake up the EEPROM (this may not be needed) */ |
| 198 | w1_reset_bus(sl->master); | 201 | w1_reset_bus(sl->master); |
| 199 | 202 | #ifdef CONFIG_W1_SLAVE_DS2433_CRC | |
| 203 | f23->validcrc &= ~(1 << (addr >> W1_PAGE_BITS)); | ||
| 204 | #endif | ||
| 200 | return 0; | 205 | return 0; |
| 201 | } | 206 | } |
| 202 | 207 | ||
