w1: ds2438: fixing bug that would always get page0
authorLuiz Sampaio <sampaio.ime@gmail.com>
Wed, 19 May 2021 22:30:44 +0000 (19:30 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 May 2021 12:51:33 +0000 (14:51 +0200)
The purpose of the w1_ds2438_get_page function is to get the register
values at the page passed as the pageno parameter. However, the page0 was
hardcoded, such that the function always returned the page0 contents. Fixed
so that the function can retrieve any page.

Signed-off-by: Luiz Sampaio <sampaio.ime@gmail.com>
Link: https://lore.kernel.org/r/20210519223046.13798-5-sampaio.ime@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/w1/slaves/w1_ds2438.c

index 910e25163898af7895c416c87f4da4b35d7b01ca..1e95f3a256c707b2953e3ae49de0b60e06e07f39 100644 (file)
@@ -62,13 +62,13 @@ static int w1_ds2438_get_page(struct w1_slave *sl, int pageno, u8 *buf)
                if (w1_reset_select_slave(sl))
                        continue;
                w1_buf[0] = W1_DS2438_RECALL_MEMORY;
-               w1_buf[1] = 0x00;
+               w1_buf[1] = (u8)pageno;
                w1_write_block(sl->master, w1_buf, 2);
 
                if (w1_reset_select_slave(sl))
                        continue;
                w1_buf[0] = W1_DS2438_READ_SCRATCH;
-               w1_buf[1] = 0x00;
+               w1_buf[1] = (u8)pageno;
                w1_write_block(sl->master, w1_buf, 2);
 
                count = w1_read_block(sl->master, buf, DS2438_PAGE_SIZE + 1);