summaryrefslogtreecommitdiff
path: root/utils/regtools/qeditor/backend.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/regtools/qeditor/backend.h')
-rw-r--r--utils/regtools/qeditor/backend.h37
1 files changed, 25 insertions, 12 deletions
diff --git a/utils/regtools/qeditor/backend.h b/utils/regtools/qeditor/backend.h
index 72a19b6ec1..939ed9529f 100644
--- a/utils/regtools/qeditor/backend.h
+++ b/utils/regtools/qeditor/backend.h
@@ -17,12 +17,21 @@ public:
17 IoBackend() {} 17 IoBackend() {}
18 virtual ~IoBackend() {} 18 virtual ~IoBackend() {}
19 19
20 enum WriteMode
21 {
22 Write, Set, Clear, Toggle
23 };
24
20 enum AccessType 25 enum AccessType
21 { 26 {
22 ByName, 27 ByName,
23 ByAddress, 28 ByAddress,
24 }; 29 };
25 30
31 /** Register naming convention: name based access are of the form:
32 * HW.dev.reg
33 * where <dev> is the device name (including index like APPUART1)
34 * and <reg> is the register name (including index like PRIORITY29) */
26 /* report whether backend supports register access type */ 35 /* report whether backend supports register access type */
27 virtual bool SupportAccess(AccessType type) = 0; 36 virtual bool SupportAccess(AccessType type) = 0;
28 /* get SoC name */ 37 /* get SoC name */
@@ -37,8 +46,10 @@ public:
37 /* write a register by name or address 46 /* write a register by name or address
38 * NOTE: even on a read-only backend, a write is allowed be successful as long 47 * NOTE: even on a read-only backend, a write is allowed be successful as long
39 * as commit fails */ 48 * as commit fails */
40 virtual bool WriteRegister(const QString& name, soc_word_t value) = 0; 49 virtual bool WriteRegister(const QString& name, soc_word_t value,
41 virtual bool WriteRegister(soc_addr_t addr, soc_word_t value) = 0; 50 WriteMode mode = Write) = 0;
51 virtual bool WriteRegister(soc_addr_t addr, soc_word_t value,
52 WriteMode mode = Write) = 0;
42 /* check whether backend contains uncommitted (ie cached) writes */ 53 /* check whether backend contains uncommitted (ie cached) writes */
43 virtual bool IsDirty() = 0; 54 virtual bool IsDirty() = 0;
44 /* commit all writes */ 55 /* commit all writes */
@@ -59,10 +70,10 @@ public:
59 { (void) addr; (void) value; return false; } 70 { (void) addr; (void) value; return false; }
60 virtual bool Reload() { return false; } 71 virtual bool Reload() { return false; }
61 virtual bool IsReadOnly() { return true; } 72 virtual bool IsReadOnly() { return true; }
62 virtual bool WriteRegister(const QString& name, soc_word_t value) 73 virtual bool WriteRegister(const QString& name, soc_word_t value, WriteMode mode)
63 { (void) name; (void) value; return false; } 74 { (void) name; (void) value; (void) mode; return false; }
64 virtual bool WriteRegister(soc_addr_t addr, soc_word_t value) 75 virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode)
65 { (void) addr; (void) value; return false; } 76 { (void) addr; (void) value; (void) mode; return false; }
66 virtual bool IsDirty() { return false; } 77 virtual bool IsDirty() { return false; }
67 virtual bool Commit() { return false; } 78 virtual bool Commit() { return false; }
68}; 79};
@@ -82,9 +93,9 @@ public:
82 { (void) addr; (void) value; return false; } 93 { (void) addr; (void) value; return false; }
83 virtual bool Reload(); 94 virtual bool Reload();
84 virtual bool IsReadOnly() { return m_readonly; } 95 virtual bool IsReadOnly() { return m_readonly; }
85 virtual bool WriteRegister(const QString& name, soc_word_t value); 96 virtual bool WriteRegister(const QString& name, soc_word_t value, WriteMode mode);
86 virtual bool WriteRegister(soc_addr_t addr, soc_word_t value) 97 virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode)
87 { (void) addr; (void) value; return false; } 98 { (void) addr; (void) value; (void) mode; return false; }
88 virtual bool IsDirty() { return m_dirty; } 99 virtual bool IsDirty() { return m_dirty; }
89 virtual bool Commit(); 100 virtual bool Commit();
90 101
@@ -142,9 +153,9 @@ public:
142 virtual bool ReadRegister(soc_addr_t addr, soc_word_t& value); 153 virtual bool ReadRegister(soc_addr_t addr, soc_word_t& value);
143 virtual bool Reload(); 154 virtual bool Reload();
144 virtual bool IsReadOnly() { return false; } 155 virtual bool IsReadOnly() { return false; }
145 virtual bool WriteRegister(const QString& name, soc_word_t value) 156 virtual bool WriteRegister(const QString& name, soc_word_t value, WriteMode mode)
146 { (void) name; (void) value; return false; } 157 { (void) name; (void) value; (void) mode; return false; }
147 virtual bool WriteRegister(soc_addr_t addr, soc_word_t value); 158 virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode);
148 virtual bool IsDirty() { return false; } 159 virtual bool IsDirty() { return false; }
149 virtual bool Commit() { return true; } 160 virtual bool Commit() { return true; }
150 161
@@ -258,6 +269,8 @@ public:
258 bool ReadRegister(const QString& dev, const QString& reg, soc_word_t& v); 269 bool ReadRegister(const QString& dev, const QString& reg, soc_word_t& v);
259 bool ReadRegisterField(const QString& dev, const QString& reg, 270 bool ReadRegisterField(const QString& dev, const QString& reg,
260 const QString& field, soc_word_t& v); 271 const QString& field, soc_word_t& v);
272 bool WriteRegister(const QString& dev, const QString& reg, soc_word_t v,
273 IoBackend::WriteMode mode = IoBackend::Write);
261 bool GetDevRef(const QString& dev, SocDevRef& ref); 274 bool GetDevRef(const QString& dev, SocDevRef& ref);
262 bool GetRegRef(const SocDevRef& dev, const QString& reg, SocRegRef& ref); 275 bool GetRegRef(const SocDevRef& dev, const QString& reg, SocRegRef& ref);
263 bool GetFieldRef(const SocRegRef& reg, const QString& field, SocFieldRef& ref); 276 bool GetFieldRef(const SocRegRef& reg, const QString& field, SocFieldRef& ref);