summaryrefslogtreecommitdiff
path: root/utils/regtools/qeditor/backend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/regtools/qeditor/backend.cpp')
-rw-r--r--utils/regtools/qeditor/backend.cpp45
1 files changed, 42 insertions, 3 deletions
diff --git a/utils/regtools/qeditor/backend.cpp b/utils/regtools/qeditor/backend.cpp
index 10ef84c6a0..423b0bb520 100644
--- a/utils/regtools/qeditor/backend.cpp
+++ b/utils/regtools/qeditor/backend.cpp
@@ -90,9 +90,10 @@ IoBackend *Backend::CreateHWStubIoBackend(HWStubDevice *dev)
90 * FileIoBackend 90 * FileIoBackend
91 */ 91 */
92 92
93FileIoBackend::FileIoBackend(const QString& filename) 93FileIoBackend::FileIoBackend(const QString& filename, const QString& soc_name)
94{ 94{
95 m_filename = filename; 95 m_filename = filename;
96 m_soc = soc_name;
96 Reload(); 97 Reload();
97} 98}
98 99
@@ -163,7 +164,7 @@ bool FileIoBackend::Commit()
163 while(it.hasNext()) 164 while(it.hasNext())
164 { 165 {
165 it.next(); 166 it.next();
166 out << it.key() << " = " << it.value() << "\n"; 167 out << it.key() << " = " << hex << showbase << it.value() << "\n";
167 } 168 }
168 out.flush(); 169 out.flush();
169 return file.flush(); 170 return file.flush();
@@ -175,6 +176,16 @@ bool FileIoBackend::Commit()
175 */ 176 */
176HWStubDevice::HWStubDevice(struct libusb_device *dev) 177HWStubDevice::HWStubDevice(struct libusb_device *dev)
177{ 178{
179 Init(dev);
180}
181
182HWStubDevice::HWStubDevice(const HWStubDevice *dev)
183{
184 Init(dev->m_dev);
185}
186
187void HWStubDevice::Init(struct libusb_device *dev)
188{
178 libusb_ref_device(dev); 189 libusb_ref_device(dev);
179 m_dev = dev; 190 m_dev = dev;
180 m_handle = 0; 191 m_handle = 0;
@@ -325,7 +336,7 @@ QString HWStubIoBackend::GetSocName()
325 336
326HWStubIoBackend::~HWStubIoBackend() 337HWStubIoBackend::~HWStubIoBackend()
327{ 338{
328 m_dev->Close(); 339 delete m_dev;
329} 340}
330 341
331bool HWStubIoBackend::ReadRegister(soc_addr_t addr, soc_word_t& value) 342bool HWStubIoBackend::ReadRegister(soc_addr_t addr, soc_word_t& value)
@@ -530,3 +541,31 @@ bool BackendHelper::ReadRegisterField(const QString& dev, const QString& reg,
530 v = (v & field_ref.GetField().bitmask()) >> field_ref.GetField().first_bit; 541 v = (v & field_ref.GetField().bitmask()) >> field_ref.GetField().first_bit;
531 return true; 542 return true;
532} 543}
544
545bool BackendHelper::DumpAllRegisters(const QString& filename)
546{
547 FileIoBackend b(filename, QString::fromStdString(m_soc.GetSoc().name));
548 BackendHelper bh(&b, m_soc);
549 for(size_t i = 0; i < m_soc.GetSoc().dev.size(); i++)
550 {
551 const soc_dev_t& dev = m_soc.GetSoc().dev[i];
552 for(size_t j = 0; j < dev.addr.size(); j++)
553 {
554 QString devname = QString::fromStdString(dev.addr[j].name);
555 for(size_t k = 0; k < dev.reg.size(); k++)
556 {
557 const soc_reg_t& reg = dev.reg[k];
558 for(size_t l = 0; l < reg.addr.size(); l++)
559 {
560 QString regname = QString::fromStdString(reg.addr[l].name);
561 soc_word_t val;
562 if(!ReadRegister(devname, regname, val))
563 return false;
564 if(!bh.WriteRegister(devname, regname, val))
565 return false;
566 }
567 }
568 }
569 }
570 return b.Commit();
571}