68 |
/* NVRAM helpers */ |
/* NVRAM helpers */ |
69 |
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) |
70 |
{ |
{ |
71 |
m48t59_set_addr(nvram, addr); |
m48t59_write(nvram, addr, value); |
|
m48t59_write(nvram, value); |
|
72 |
} |
} |
73 |
|
|
74 |
uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr) |
uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr) |
75 |
{ |
{ |
76 |
m48t59_set_addr(nvram, addr); |
return m48t59_read(nvram, addr); |
|
return m48t59_read(nvram); |
|
77 |
} |
} |
78 |
|
|
79 |
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) |
80 |
{ |
{ |
81 |
m48t59_set_addr(nvram, addr); |
m48t59_write(nvram, addr, value >> 8); |
82 |
m48t59_write(nvram, value >> 8); |
m48t59_write(nvram, addr + 1, value & 0xFF); |
|
m48t59_set_addr(nvram, addr + 1); |
|
|
m48t59_write(nvram, value & 0xFF); |
|
83 |
} |
} |
84 |
|
|
85 |
uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr) |
uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr) |
86 |
{ |
{ |
87 |
uint16_t tmp; |
uint16_t tmp; |
88 |
|
|
89 |
m48t59_set_addr(nvram, addr); |
tmp = m48t59_read(nvram, addr) << 8; |
90 |
tmp = m48t59_read(nvram) << 8; |
tmp |= m48t59_read(nvram, addr + 1); |
|
m48t59_set_addr(nvram, addr + 1); |
|
|
tmp |= m48t59_read(nvram); |
|
91 |
|
|
92 |
return tmp; |
return tmp; |
93 |
} |
} |
94 |
|
|
95 |
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) |
96 |
{ |
{ |
97 |
m48t59_set_addr(nvram, addr); |
m48t59_write(nvram, addr, value >> 24); |
98 |
m48t59_write(nvram, value >> 24); |
m48t59_write(nvram, addr + 1, (value >> 16) & 0xFF); |
99 |
m48t59_set_addr(nvram, addr + 1); |
m48t59_write(nvram, addr + 2, (value >> 8) & 0xFF); |
100 |
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); |
|
101 |
} |
} |
102 |
|
|
103 |
uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr) |
uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr) |
104 |
{ |
{ |
105 |
uint32_t tmp; |
uint32_t tmp; |
106 |
|
|
107 |
m48t59_set_addr(nvram, addr); |
tmp = m48t59_read(nvram, addr) << 24; |
108 |
tmp = m48t59_read(nvram) << 24; |
tmp |= m48t59_read(nvram, addr + 1) << 16; |
109 |
m48t59_set_addr(nvram, addr + 1); |
tmp |= m48t59_read(nvram, addr + 2) << 8; |
110 |
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); |
|
111 |
|
|
112 |
return tmp; |
return tmp; |
113 |
} |
} |
118 |
int i; |
int i; |
119 |
|
|
120 |
for (i = 0; i < max && str[i] != '\0'; i++) { |
for (i = 0; i < max && str[i] != '\0'; i++) { |
121 |
m48t59_set_addr(nvram, addr + i); |
m48t59_write(nvram, addr + i, str[i]); |
|
m48t59_write(nvram, str[i]); |
|
122 |
} |
} |
123 |
m48t59_set_addr(nvram, addr + max - 1); |
m48t59_write(nvram, addr + max - 1, '\0'); |
|
m48t59_write(nvram, '\0'); |
|
124 |
} |
} |
125 |
|
|
126 |
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) |
341 |
pci_cmd646_ide_init(pci_bus, bs_table, 1); |
pci_cmd646_ide_init(pci_bus, bs_table, 1); |
342 |
kbd_init(); |
kbd_init(); |
343 |
floppy_controller = fdctrl_init(6, 2, 0, 0x3f0, fd_table); |
floppy_controller = fdctrl_init(6, 2, 0, 0x3f0, fd_table); |
344 |
nvram = m48t59_init(8, 0, 0x0074, NVRAM_SIZE); |
nvram = m48t59_init(8, 0, 0x0074, NVRAM_SIZE, 59); |
345 |
sun4u_NVRAM_set_params(nvram, NVRAM_SIZE, "Sun4u", ram_size, boot_device, |
sun4u_NVRAM_set_params(nvram, NVRAM_SIZE, "Sun4u", ram_size, boot_device, |
346 |
KERNEL_LOAD_ADDR, kernel_size, |
KERNEL_LOAD_ADDR, kernel_size, |
347 |
kernel_cmdline, |
kernel_cmdline, |