w1: complete eeprom low-level support
This completes w1-eeproom.c with the complete API. The provided test
commands allow to read and write any size at any offset (the low-level
code manages cross-page reads and writes. The following examples
modify a pre-written eeprom, which I host in an external socket of
my SPEC card:
wrc# w1r 0 4
read(0x0, 4): result = 4
offset 0 (0x000): 240 (0xf0)
offset 1 (0x001): 241 (0xf1)
offset 2 (0x002): 242 (0xf2)
offset 3 (0x003): 243 (0xf3)
wrc# w1w 0 40 41 42
offset 0 (0x000): 40 (0x28)
offset 1 (0x001): 41 (0x29)
offset 2 (0x002): 42 (0x2a)
write(0x0, 3): result = 3
wrc# w1r 0 4
read(0x0, 4): result = 4
offset 0 (0x000): 40 (0x28)
offset 1 (0x001): 41 (0x29)
offset 2 (0x002): 42 (0x2a)
offset 3 (0x003): 243 (0xf3)
wrc# w1r 30 4
read(0x1e, 4): result = 4
offset 30 (0x01e): 69 (0x45)
offset 31 (0x01f): 70 (0x46)
offset 32 (0x020): 71 (0x47)
offset 33 (0x021): 72 (0x48)
wrc# w1w 30 11 22 33 44 55 66
offset 30 (0x01e): 11 (0x0b)
offset 31 (0x01f): 22 (0x16)
offset 32 (0x020): 33 (0x21)
offset 33 (0x021): 44 (0x2c)
offset 34 (0x022): 55 (0x37)
offset 35 (0x023): 66 (0x42)
write(0x1e, 6): result = 6
wrc# w1r 30 6
read(0x1e, 6): result = 6
offset 30 (0x01e): 11 (0x0b)
offset 31 (0x01f): 22 (0x16)
offset 32 (0x020): 33 (0x21)
offset 33 (0x021): 44 (0x2c)
offset 34 (0x022): 55 (0x37)
offset 35 (0x023): 66 (0x42)
Signed-off-by:
Alessandro Rubini <rubini@gnudd.com>
Please register or sign in to comment