summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorPeter D'Hoye <peter.dhoye@gmail.com>2006-08-15 22:54:06 +0000
committerPeter D'Hoye <peter.dhoye@gmail.com>2006-08-15 22:54:06 +0000
commitc4a59a290b81cae137f8b3c2b709c9c565701eb9 (patch)
tree9d54832f14b8fe365e427152011b62026f61e898 /apps
parent98c9f959e53536a0b63d0376fad198ef883c5c03 (diff)
downloadrockbox-c4a59a290b81cae137f8b3c2b709c9c565701eb9.tar.gz
rockbox-c4a59a290b81cae137f8b3c2b709c9c565701eb9.zip
eeprom driver for the h3x0 series, cleaned up the h1x0 series driver a bit, added debug entry for h3x0 that allows to write to the eeprom
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10597 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/debug_menu.c60
-rw-r--r--apps/main.c8
-rw-r--r--apps/misc.c2
-rw-r--r--apps/tagcache.c8
-rw-r--r--apps/tree.c4
5 files changed, 67 insertions, 15 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 0141c77fbe..1527e8abe7 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -1891,13 +1891,22 @@ bool dbg_save_roms(void)
1891 fd = creat("/internal_eeprom.bin", O_WRONLY); 1891 fd = creat("/internal_eeprom.bin", O_WRONLY);
1892 if (fd >= 0) 1892 if (fd >= 0)
1893 { 1893 {
1894 int old_irq_level;
1894 char buf[EEPROM_SIZE]; 1895 char buf[EEPROM_SIZE];
1895 1896 int err;
1896 if (eeprom_24cxx_read(0, buf, sizeof buf)) 1897
1897 gui_syncsplash(HZ*3, true, "Eeprom read failure!"); 1898 old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL);
1899
1900 err = eeprom_24cxx_read(0, buf, sizeof buf);
1901 if (err)
1902 gui_syncsplash(HZ*3, true, "Eeprom read failure (%d)",err);
1898 else 1903 else
1904 {
1899 write(fd, buf, sizeof buf); 1905 write(fd, buf, sizeof buf);
1900 1906 }
1907
1908 set_irq_level(old_irq_level);
1909
1901 close(fd); 1910 close(fd);
1902 } 1911 }
1903#endif 1912#endif
@@ -1976,6 +1985,46 @@ bool dbg_set_memory_guard(void)
1976} 1985}
1977#endif /* CONFIG_CPU == SH7034 || defined(CPU_COLDFIRE) */ 1986#endif /* CONFIG_CPU == SH7034 || defined(CPU_COLDFIRE) */
1978 1987
1988#if defined(HAVE_EEPROM) && !defined(HAVE_EEPROM_SETTINGS)
1989bool dbg_write_eeprom(void)
1990{
1991 int fd;
1992 int rc;
1993 int old_irq_level;
1994 char buf[EEPROM_SIZE];
1995 int err;
1996
1997 fd = open("/internal_eeprom.bin", O_RDONLY);
1998
1999 if (fd >= 0)
2000 {
2001 rc = read(fd, buf, EEPROM_SIZE);
2002
2003 if(rc == EEPROM_SIZE)
2004 {
2005 old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL);
2006
2007 err = eeprom_24cxx_write(0, buf, sizeof buf);
2008 if (err)
2009 gui_syncsplash(HZ*3, true, "Eeprom write failure (%d)",err);
2010
2011 set_irq_level(old_irq_level);
2012 }
2013 else
2014 {
2015 gui_syncsplash(HZ*3, true, "File read error (%d)",rc);
2016 }
2017 close(fd);
2018 }
2019 else
2020 {
2021 gui_syncsplash(HZ*3, true, "Failed to open 'internal_eeprom.bin'");
2022 }
2023
2024 return false;
2025}
2026#endif /* defined(HAVE_EEPROM) && !defined(HAVE_EEPROM_SETTINGS) */
2027
1979bool debug_menu(void) 2028bool debug_menu(void)
1980{ 2029{
1981 int m; 2030 int m;
@@ -2023,6 +2072,9 @@ bool debug_menu(void)
2023#ifdef CONFIG_TUNER 2072#ifdef CONFIG_TUNER
2024 { "FM Radio", dbg_fm_radio }, 2073 { "FM Radio", dbg_fm_radio },
2025#endif 2074#endif
2075#if defined(HAVE_EEPROM) && !defined(HAVE_EEPROM_SETTINGS)
2076 { "Write back EEPROM", dbg_write_eeprom },
2077#endif
2026#ifdef ROCKBOX_HAS_LOGF 2078#ifdef ROCKBOX_HAS_LOGF
2027 {"logf", logfdisplay }, 2079 {"logf", logfdisplay },
2028 {"logfdump", logfdump }, 2080 {"logfdump", logfdump },
diff --git a/apps/main.c b/apps/main.c
index c50af865fc..90bd13ee32 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -120,7 +120,7 @@ int init_dircache(bool preinit)
120 120
121 if (global_settings.dircache) 121 if (global_settings.dircache)
122 { 122 {
123# ifdef HAVE_EEPROM 123# ifdef HAVE_EEPROM_SETTINGS
124 if (firmware_settings.initialized && firmware_settings.disk_clean 124 if (firmware_settings.initialized && firmware_settings.disk_clean
125 && preinit) 125 && preinit)
126 { 126 {
@@ -371,14 +371,14 @@ void init(void)
371 panicf("ata: %d", rc); 371 panicf("ata: %d", rc);
372 } 372 }
373 373
374#ifdef HAVE_EEPROM 374#ifdef HAVE_EEPROM_SETTINGS
375 eeprom_settings_init(); 375 eeprom_settings_init();
376#endif 376#endif
377 377
378 usb_start_monitoring(); 378 usb_start_monitoring();
379 while (usb_detect()) 379 while (usb_detect())
380 { 380 {
381#ifdef HAVE_EEPROM 381#ifdef HAVE_EEPROM_SETTINGS
382 firmware_settings.disk_clean = false; 382 firmware_settings.disk_clean = false;
383#endif 383#endif
384 /* enter USB mode early, before trying to mount */ 384 /* enter USB mode early, before trying to mount */
@@ -444,7 +444,7 @@ void init(void)
444 init_dircache(false); 444 init_dircache(false);
445 init_tagcache(); 445 init_tagcache();
446 446
447#ifdef HAVE_EEPROM 447#ifdef HAVE_EEPROM_SETTINGS
448 if (firmware_settings.initialized) 448 if (firmware_settings.initialized)
449 { 449 {
450 /* In case we crash. */ 450 /* In case we crash. */
diff --git a/apps/misc.c b/apps/misc.c
index ffacf7ed82..19cee60993 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -507,7 +507,7 @@ static bool clean_shutdown(void (*callback)(void *), void *parameter)
507 callback(parameter); 507 callback(parameter);
508 508
509 system_flush(); 509 system_flush();
510#ifdef HAVE_EEPROM 510#ifdef HAVE_EEPROM_SETTINGS
511 if (firmware_settings.initialized) 511 if (firmware_settings.initialized)
512 { 512 {
513 firmware_settings.disk_clean = true; 513 firmware_settings.disk_clean = true;
diff --git a/apps/tagcache.c b/apps/tagcache.c
index 179218ab1f..191c245597 100644
--- a/apps/tagcache.c
+++ b/apps/tagcache.c
@@ -153,7 +153,7 @@ struct ramcache_header {
153 int entry_count[TAG_COUNT]; /* Number of entries in the indices. */ 153 int entry_count[TAG_COUNT]; /* Number of entries in the indices. */
154}; 154};
155 155
156# ifdef HAVE_EEPROM 156# ifdef HAVE_EEPROM_SETTINGS
157struct statefile_header { 157struct statefile_header {
158 struct ramcache_header *hdr; 158 struct ramcache_header *hdr;
159 struct tagcache_stat stat; 159 struct tagcache_stat stat;
@@ -2829,7 +2829,7 @@ static bool allocate_tagcache(void)
2829 return true; 2829 return true;
2830} 2830}
2831 2831
2832# ifdef HAVE_EEPROM 2832# ifdef HAVE_EEPROM_SETTINGS
2833static bool tagcache_dumpload(void) 2833static bool tagcache_dumpload(void)
2834{ 2834{
2835 struct statefile_header shdr; 2835 struct statefile_header shdr;
@@ -3370,7 +3370,7 @@ static void tagcache_thread(void)
3370 free_tempbuf(); 3370 free_tempbuf();
3371 3371
3372#ifdef HAVE_TC_RAMCACHE 3372#ifdef HAVE_TC_RAMCACHE
3373# ifdef HAVE_EEPROM 3373# ifdef HAVE_EEPROM_SETTINGS
3374 if (firmware_settings.initialized && firmware_settings.disk_clean) 3374 if (firmware_settings.initialized && firmware_settings.disk_clean)
3375 check_done = tagcache_dumpload(); 3375 check_done = tagcache_dumpload();
3376 3376
@@ -3462,7 +3462,7 @@ bool tagcache_prepare_shutdown(void)
3462 if (tagcache_get_commit_step() > 0) 3462 if (tagcache_get_commit_step() > 0)
3463 return false; 3463 return false;
3464 3464
3465#ifdef HAVE_EEPROM 3465#ifdef HAVE_EEPROM_SETTINGS
3466 if (stat.ramcache) 3466 if (stat.ramcache)
3467 tagcache_dumpsave(); 3467 tagcache_dumpsave();
3468#endif 3468#endif
diff --git a/apps/tree.c b/apps/tree.c
index 1bbb5f8ca3..75562b30c8 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -1336,7 +1336,7 @@ void tree_flush(void)
1336 if (global_settings.dircache) 1336 if (global_settings.dircache)
1337 { 1337 {
1338 global_settings.dircache_size = dircache_get_cache_size(); 1338 global_settings.dircache_size = dircache_get_cache_size();
1339# ifdef HAVE_EEPROM 1339# ifdef HAVE_EEPROM_SETTINGS
1340 if (dircache_is_enabled() && firmware_settings.initialized) 1340 if (dircache_is_enabled() && firmware_settings.initialized)
1341 dircache_save(DIRCACHE_FILE); 1341 dircache_save(DIRCACHE_FILE);
1342# endif 1342# endif
@@ -1352,7 +1352,7 @@ void tree_flush(void)
1352 1352
1353void tree_restore(void) 1353void tree_restore(void)
1354{ 1354{
1355#ifdef HAVE_EEPROM 1355#ifdef HAVE_EEPROM_SETTINGS
1356 firmware_settings.disk_clean = false; 1356 firmware_settings.disk_clean = false;
1357#endif 1357#endif
1358 1358