diff options
Diffstat (limited to 'arch/mips/lasat/lasat_board.c')
-rw-r--r-- | arch/mips/lasat/lasat_board.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/mips/lasat/lasat_board.c b/arch/mips/lasat/lasat_board.c index ec2f658c370..31e328b3814 100644 --- a/arch/mips/lasat/lasat_board.c +++ b/arch/mips/lasat/lasat_board.c | |||
@@ -23,18 +23,19 @@ | |||
23 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
24 | #include <linux/string.h> | 24 | #include <linux/string.h> |
25 | #include <linux/ctype.h> | 25 | #include <linux/ctype.h> |
26 | #include <linux/mutex.h> | ||
26 | #include <asm/bootinfo.h> | 27 | #include <asm/bootinfo.h> |
27 | #include <asm/addrspace.h> | 28 | #include <asm/addrspace.h> |
28 | #include "at93c.h" | 29 | #include "at93c.h" |
29 | /* New model description table */ | 30 | /* New model description table */ |
30 | #include "lasat_models.h" | 31 | #include "lasat_models.h" |
31 | 32 | ||
33 | static DEFINE_MUTEX(lasat_eeprom_mutex); | ||
34 | |||
32 | #define EEPROM_CRC(data, len) (~crc32(~0, data, len)) | 35 | #define EEPROM_CRC(data, len) (~crc32(~0, data, len)) |
33 | 36 | ||
34 | struct lasat_info lasat_board_info; | 37 | struct lasat_info lasat_board_info; |
35 | 38 | ||
36 | void update_bcastaddr(void); | ||
37 | |||
38 | int EEPROMRead(unsigned int pos, unsigned char *data, int len) | 39 | int EEPROMRead(unsigned int pos, unsigned char *data, int len) |
39 | { | 40 | { |
40 | int i; | 41 | int i; |
@@ -258,10 +259,6 @@ int lasat_init_board_info(void) | |||
258 | sprintf(lasat_board_info.li_typestr, "%d", 10 * c); | 259 | sprintf(lasat_board_info.li_typestr, "%d", 10 * c); |
259 | } | 260 | } |
260 | 261 | ||
261 | #if defined(CONFIG_INET) && defined(CONFIG_SYSCTL) | ||
262 | update_bcastaddr(); | ||
263 | #endif | ||
264 | |||
265 | return 0; | 262 | return 0; |
266 | } | 263 | } |
267 | 264 | ||
@@ -269,6 +266,8 @@ void lasat_write_eeprom_info(void) | |||
269 | { | 266 | { |
270 | unsigned long crc; | 267 | unsigned long crc; |
271 | 268 | ||
269 | mutex_lock(&lasat_eeprom_mutex); | ||
270 | |||
272 | /* Generate the CRC */ | 271 | /* Generate the CRC */ |
273 | crc = EEPROM_CRC((unsigned char *)(&lasat_board_info.li_eeprom_info), | 272 | crc = EEPROM_CRC((unsigned char *)(&lasat_board_info.li_eeprom_info), |
274 | sizeof(struct lasat_eeprom_struct) - 4); | 273 | sizeof(struct lasat_eeprom_struct) - 4); |
@@ -277,4 +276,6 @@ void lasat_write_eeprom_info(void) | |||
277 | /* Write the EEPROM info */ | 276 | /* Write the EEPROM info */ |
278 | EEPROMWrite(0, (unsigned char *)&lasat_board_info.li_eeprom_info, | 277 | EEPROMWrite(0, (unsigned char *)&lasat_board_info.li_eeprom_info, |
279 | sizeof(struct lasat_eeprom_struct)); | 278 | sizeof(struct lasat_eeprom_struct)); |
279 | |||
280 | mutex_unlock(&lasat_eeprom_mutex); | ||
280 | } | 281 | } |