summaryrefslogtreecommitdiff
path: root/utils/regtools/qeditor
diff options
context:
space:
mode:
Diffstat (limited to 'utils/regtools/qeditor')
-rw-r--r--utils/regtools/qeditor/backend.cpp25
-rw-r--r--utils/regtools/qeditor/backend.h6
2 files changed, 25 insertions, 6 deletions
diff --git a/utils/regtools/qeditor/backend.cpp b/utils/regtools/qeditor/backend.cpp
index c2db1f2a3e..e9d7941ab1 100644
--- a/utils/regtools/qeditor/backend.cpp
+++ b/utils/regtools/qeditor/backend.cpp
@@ -587,10 +587,17 @@ bool BackendHelper::ReadRegisterField(const QString& dev, const QString& reg,
587 return true; 587 return true;
588} 588}
589 589
590bool BackendHelper::DumpAllRegisters(const QString& filename) 590bool BackendHelper::DumpAllRegisters(const QString& filename, bool ignore_errors)
591{ 591{
592 FileIoBackend b(filename, QString::fromStdString(m_soc.GetSoc().name)); 592 FileIoBackend b(filename, QString::fromStdString(m_soc.GetSoc().name));
593 BackendHelper bh(&b, m_soc); 593 bool ret = DumpAllRegisters(&b, ignore_errors);
594 return ret && b.Commit();
595}
596
597bool BackendHelper::DumpAllRegisters(IoBackend *backend, bool ignore_errors)
598{
599 BackendHelper bh(backend, m_soc);
600 bool ret = true;
594 for(size_t i = 0; i < m_soc.GetSoc().dev.size(); i++) 601 for(size_t i = 0; i < m_soc.GetSoc().dev.size(); i++)
595 { 602 {
596 const soc_dev_t& dev = m_soc.GetSoc().dev[i]; 603 const soc_dev_t& dev = m_soc.GetSoc().dev[i];
@@ -605,12 +612,20 @@ bool BackendHelper::DumpAllRegisters(const QString& filename)
605 QString regname = QString::fromStdString(reg.addr[l].name); 612 QString regname = QString::fromStdString(reg.addr[l].name);
606 soc_word_t val; 613 soc_word_t val;
607 if(!ReadRegister(devname, regname, val)) 614 if(!ReadRegister(devname, regname, val))
608 return false; 615 {
616 ret = false;
617 if(!ignore_errors)
618 return false;
619 }
609 if(!bh.WriteRegister(devname, regname, val)) 620 if(!bh.WriteRegister(devname, regname, val))
610 return false; 621 {
622 ret = false;
623 if(!ignore_errors)
624 return false;
625 }
611 } 626 }
612 } 627 }
613 } 628 }
614 } 629 }
615 return b.Commit(); 630 return ret;
616} 631}
diff --git a/utils/regtools/qeditor/backend.h b/utils/regtools/qeditor/backend.h
index c8adbc474f..b2f53c9ed5 100644
--- a/utils/regtools/qeditor/backend.h
+++ b/utils/regtools/qeditor/backend.h
@@ -363,7 +363,11 @@ public:
363 bool GetRegRef(const SocDevRef& dev, const QString& reg, SocRegRef& ref); 363 bool GetRegRef(const SocDevRef& dev, const QString& reg, SocRegRef& ref);
364 bool GetFieldRef(const SocRegRef& reg, const QString& field, SocFieldRef& ref); 364 bool GetFieldRef(const SocRegRef& reg, const QString& field, SocFieldRef& ref);
365 bool GetRegisterAddress(const QString& dev, const QString& reg, soc_addr_t& addr); 365 bool GetRegisterAddress(const QString& dev, const QString& reg, soc_addr_t& addr);
366 bool DumpAllRegisters(const QString& filename); 366 /* NOTE: does not commit writes to the backend
367 * if ignore_errors is true, the dump will continue even on errors, and the
368 * function will return false if one or more errors occured */
369 bool DumpAllRegisters(IoBackend *backend, bool ignore_errors = true);
370 bool DumpAllRegisters(const QString& filename, bool ignore_errors = true);
367 371
368private: 372private:
369 IoBackend *m_io_backend; 373 IoBackend *m_io_backend;