diff options
Diffstat (limited to 'apps/debug_menu.c')
-rw-r--r-- | apps/debug_menu.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index fc509ce236..d21dc032a8 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c | |||
@@ -417,7 +417,7 @@ static bool dbg_flash_id(unsigned* p_manufacturer, unsigned* p_device, | |||
417 | not_id = flash[1]; /* should be 'A' (0x41) and 'R' (0x52) from the "ARCH" marker */ | 417 | not_id = flash[1]; /* should be 'A' (0x41) and 'R' (0x52) from the "ARCH" marker */ |
418 | 418 | ||
419 | /* disable interrupts, prevent any stray flash access */ | 419 | /* disable interrupts, prevent any stray flash access */ |
420 | old_level = set_irq_level(HIGHEST_IRQ_LEVEL); | 420 | old_level = disable_irq_save(); |
421 | 421 | ||
422 | flash[addr1] = 0xAA; /* enter command mode */ | 422 | flash[addr1] = 0xAA; /* enter command mode */ |
423 | flash[addr2] = 0x55; | 423 | flash[addr2] = 0x55; |
@@ -432,7 +432,7 @@ static bool dbg_flash_id(unsigned* p_manufacturer, unsigned* p_device, | |||
432 | /* Atmel wants 20ms pause here */ | 432 | /* Atmel wants 20ms pause here */ |
433 | /* sleep(HZ/50); no sleeping possible while interrupts are disabled */ | 433 | /* sleep(HZ/50); no sleeping possible while interrupts are disabled */ |
434 | 434 | ||
435 | set_irq_level(old_level); /* enable interrupts again */ | 435 | restore_irq(old_level); /* enable interrupts again */ |
436 | 436 | ||
437 | /* I assume success if the obtained values are different from | 437 | /* I assume success if the obtained values are different from |
438 | the normal flash content. This is not perfectly bulletproof, they | 438 | the normal flash content. This is not perfectly bulletproof, they |
@@ -2066,9 +2066,12 @@ static bool dbg_save_roms(void) | |||
2066 | char buf[EEPROM_SIZE]; | 2066 | char buf[EEPROM_SIZE]; |
2067 | int err; | 2067 | int err; |
2068 | 2068 | ||
2069 | old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); | 2069 | old_irq_level = disable_irq_save(); |
2070 | 2070 | ||
2071 | err = eeprom_24cxx_read(0, buf, sizeof buf); | 2071 | err = eeprom_24cxx_read(0, buf, sizeof buf); |
2072 | |||
2073 | restore_irq(old_irq_level); | ||
2074 | |||
2072 | if (err) | 2075 | if (err) |
2073 | gui_syncsplash(HZ*3, "Eeprom read failure (%d)",err); | 2076 | gui_syncsplash(HZ*3, "Eeprom read failure (%d)",err); |
2074 | else | 2077 | else |
@@ -2076,8 +2079,6 @@ static bool dbg_save_roms(void) | |||
2076 | write(fd, buf, sizeof buf); | 2079 | write(fd, buf, sizeof buf); |
2077 | } | 2080 | } |
2078 | 2081 | ||
2079 | set_irq_level(old_irq_level); | ||
2080 | |||
2081 | close(fd); | 2082 | close(fd); |
2082 | } | 2083 | } |
2083 | #endif | 2084 | #endif |
@@ -2248,7 +2249,7 @@ static bool dbg_write_eeprom(void) | |||
2248 | 2249 | ||
2249 | if(rc == EEPROM_SIZE) | 2250 | if(rc == EEPROM_SIZE) |
2250 | { | 2251 | { |
2251 | old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); | 2252 | old_irq_level = disable_irq_save(); |
2252 | 2253 | ||
2253 | err = eeprom_24cxx_write(0, buf, sizeof buf); | 2254 | err = eeprom_24cxx_write(0, buf, sizeof buf); |
2254 | if (err) | 2255 | if (err) |
@@ -2256,7 +2257,7 @@ static bool dbg_write_eeprom(void) | |||
2256 | else | 2257 | else |
2257 | gui_syncsplash(HZ*3, "Eeprom written successfully"); | 2258 | gui_syncsplash(HZ*3, "Eeprom written successfully"); |
2258 | 2259 | ||
2259 | set_irq_level(old_irq_level); | 2260 | restore_irq(old_irq_level); |
2260 | } | 2261 | } |
2261 | else | 2262 | else |
2262 | { | 2263 | { |