summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/mvme2307/nvram/nvram.c
blob: 124f81eada0c3cdc6fafb2b43530e19d599c2d80 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <bsp.h>

#define ram_addr_low  (* (volatile char *) IO_TO_LOCAL(0x0074))
#define ram_addr_high (* (volatile char *) IO_TO_LOCAL(0x0075))
#define ram_data      (* (volatile char *) IO_TO_LOCAL(0x0077))
#define ram_end_addr  0x1ff8

int read_nvram(char *buff, int offset, int len) {
    int i;

    if (offset < 0 || offset >= ram_end_addr) {
        return 0;
    }
    if (offset + len > ram_end_addr) {
        len = ram_end_addr - offset;
    }
    for (i = 0; i < len; i++) {
        ram_addr_high = offset >> 8;
        ram_addr_low  = offset;
        *buff++ = ram_data;
        offset++;
    }
    return len;
}