forked from len0rd/rockbox
regtools/qeditor: enhance backend write with write mode (SCT)
Change-Id: I723bce7a60fb08c1d1d5f894a225c36bc1ba4394
This commit is contained in:
parent
68163e8f49
commit
6e132b48d5
2 changed files with 56 additions and 17 deletions
|
@ -106,11 +106,17 @@ bool FileIoBackend::Reload()
|
|||
return true;
|
||||
}
|
||||
|
||||
bool FileIoBackend::WriteRegister(const QString& name, soc_word_t value)
|
||||
bool FileIoBackend::WriteRegister(const QString& name, soc_word_t value, WriteMode mode)
|
||||
{
|
||||
m_dirty = true;
|
||||
m_map[name] = value;
|
||||
return true;
|
||||
switch(mode)
|
||||
{
|
||||
case Write: m_map[name] = value; return true;
|
||||
case Set: m_map[name] |= value; return true;
|
||||
case Clear: m_map[name] &= ~value; return true;
|
||||
case Toggle: m_map[name] ^= value; return true;
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool FileIoBackend::Commit()
|
||||
|
@ -281,8 +287,15 @@ bool HWStubIoBackend::ReadRegister(soc_addr_t addr, soc_word_t& value)
|
|||
return m_dev->ReadMem(addr, sizeof(value), &value);
|
||||
}
|
||||
|
||||
bool HWStubIoBackend:: WriteRegister(soc_addr_t addr, soc_word_t value)
|
||||
bool HWStubIoBackend::WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode)
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case Set: addr += 4; break;
|
||||
case Clear: addr += 8; break;
|
||||
case Toggle: addr += 12; break;
|
||||
default: break;
|
||||
}
|
||||
return m_dev->WriteMem(addr, sizeof(value), &value);
|
||||
}
|
||||
|
||||
|
@ -387,6 +400,19 @@ bool BackendHelper::ReadRegister(const QString& dev, const QString& reg, soc_wor
|
|||
return false;
|
||||
}
|
||||
|
||||
bool BackendHelper::WriteRegister(const QString& dev, const QString& reg,
|
||||
soc_word_t v, IoBackend::WriteMode mode)
|
||||
{
|
||||
if(m_io_backend->SupportAccess(IoBackend::ByName))
|
||||
return m_io_backend->WriteRegister("HW." + dev + "." + reg, v, mode);
|
||||
if(m_io_backend->SupportAccess(IoBackend::ByAddress))
|
||||
{
|
||||
soc_addr_t addr;
|
||||
if(GetRegisterAddress(dev, reg, addr))
|
||||
return m_io_backend->WriteRegister(addr, v, mode);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool BackendHelper::GetDevRef(const QString& sdev, SocDevRef& ref)
|
||||
{
|
||||
|
@ -456,4 +482,4 @@ bool BackendHelper::ReadRegisterField(const QString& dev, const QString& reg,
|
|||
return false;
|
||||
v = (v & field_ref.GetField().bitmask()) >> field_ref.GetField().first_bit;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue