283 |
/* NVRAM helpers */ |
/* NVRAM helpers */ |
284 |
void NVRAM_set_byte (m48t59_t *nvram, uint32_t addr, uint8_t value) |
void NVRAM_set_byte (m48t59_t *nvram, uint32_t addr, uint8_t value) |
285 |
{ |
{ |
286 |
m48t59_set_addr(nvram, addr); |
m48t59_write(nvram, addr, value); |
|
m48t59_write(nvram, value); |
|
287 |
} |
} |
288 |
|
|
289 |
uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr) |
uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr) |
290 |
{ |
{ |
291 |
m48t59_set_addr(nvram, addr); |
return m48t59_read(nvram, addr); |
|
return m48t59_read(nvram); |
|
292 |
} |
} |
293 |
|
|
294 |
void NVRAM_set_word (m48t59_t *nvram, uint32_t addr, uint16_t value) |
void NVRAM_set_word (m48t59_t *nvram, uint32_t addr, uint16_t value) |
295 |
{ |
{ |
296 |
m48t59_set_addr(nvram, addr); |
m48t59_write(nvram, addr, value >> 8); |
297 |
m48t59_write(nvram, value >> 8); |
m48t59_write(nvram, addr + 1, value & 0xFF); |
|
m48t59_set_addr(nvram, addr + 1); |
|
|
m48t59_write(nvram, value & 0xFF); |
|
298 |
} |
} |
299 |
|
|
300 |
uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr) |
uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr) |
301 |
{ |
{ |
302 |
uint16_t tmp; |
uint16_t tmp; |
303 |
|
|
304 |
m48t59_set_addr(nvram, addr); |
tmp = m48t59_read(nvram, addr) << 8; |
305 |
tmp = m48t59_read(nvram) << 8; |
tmp |= m48t59_read(nvram, addr + 1); |
|
m48t59_set_addr(nvram, addr + 1); |
|
|
tmp |= m48t59_read(nvram); |
|
|
|
|
306 |
return tmp; |
return tmp; |
307 |
} |
} |
308 |
|
|
309 |
void NVRAM_set_lword (m48t59_t *nvram, uint32_t addr, uint32_t value) |
void NVRAM_set_lword (m48t59_t *nvram, uint32_t addr, uint32_t value) |
310 |
{ |
{ |
311 |
m48t59_set_addr(nvram, addr); |
m48t59_write(nvram, addr, value >> 24); |
312 |
m48t59_write(nvram, value >> 24); |
m48t59_write(nvram, addr + 1, (value >> 16) & 0xFF); |
313 |
m48t59_set_addr(nvram, addr + 1); |
m48t59_write(nvram, addr + 2, (value >> 8) & 0xFF); |
314 |
m48t59_write(nvram, (value >> 16) & 0xFF); |
m48t59_write(nvram, addr + 3, value & 0xFF); |
|
m48t59_set_addr(nvram, addr + 2); |
|
|
m48t59_write(nvram, (value >> 8) & 0xFF); |
|
|
m48t59_set_addr(nvram, addr + 3); |
|
|
m48t59_write(nvram, value & 0xFF); |
|
315 |
} |
} |
316 |
|
|
317 |
uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr) |
uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr) |
318 |
{ |
{ |
319 |
uint32_t tmp; |
uint32_t tmp; |
320 |
|
|
321 |
m48t59_set_addr(nvram, addr); |
tmp = m48t59_read(nvram, addr) << 24; |
322 |
tmp = m48t59_read(nvram) << 24; |
tmp |= m48t59_read(nvram, addr + 1) << 16; |
323 |
m48t59_set_addr(nvram, addr + 1); |
tmp |= m48t59_read(nvram, addr + 2) << 8; |
324 |
tmp |= m48t59_read(nvram) << 16; |
tmp |= m48t59_read(nvram, addr + 3); |
|
m48t59_set_addr(nvram, addr + 2); |
|
|
tmp |= m48t59_read(nvram) << 8; |
|
|
m48t59_set_addr(nvram, addr + 3); |
|
|
tmp |= m48t59_read(nvram); |
|
|
|
|
325 |
return tmp; |
return tmp; |
326 |
} |
} |
327 |
|
|
331 |
int i; |
int i; |
332 |
|
|
333 |
for (i = 0; i < max && str[i] != '\0'; i++) { |
for (i = 0; i < max && str[i] != '\0'; i++) { |
334 |
m48t59_set_addr(nvram, addr + i); |
m48t59_write(nvram, addr + i, str[i]); |
|
m48t59_write(nvram, str[i]); |
|
335 |
} |
} |
336 |
m48t59_set_addr(nvram, addr + max - 1); |
m48t59_write(nvram, addr + max - 1, '\0'); |
|
m48t59_write(nvram, '\0'); |
|
337 |
} |
} |
338 |
|
|
339 |
int NVRAM_get_string (m48t59_t *nvram, uint8_t *dst, uint16_t addr, int max) |
int NVRAM_get_string (m48t59_t *nvram, uint8_t *dst, uint16_t addr, int max) |