summaryrefslogtreecommitdiff
path: root/utils/hwstub/include/hwstub.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/hwstub/include/hwstub.hpp')
-rw-r--r--utils/hwstub/include/hwstub.hpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/utils/hwstub/include/hwstub.hpp b/utils/hwstub/include/hwstub.hpp
index deac976240..e403857200 100644
--- a/utils/hwstub/include/hwstub.hpp
+++ b/utils/hwstub/include/hwstub.hpp
@@ -62,6 +62,8 @@ enum class error
62 NET_ERROR, /** Network error */ 62 NET_ERROR, /** Network error */
63 TIMEOUT, /** Operation timed out */ 63 TIMEOUT, /** Operation timed out */
64 OVERFLW, /** Operation stopped to prevent buffer overflow */ 64 OVERFLW, /** Operation stopped to prevent buffer overflow */
65 UNIMPLEMENTED, /** Operation has not been implemented */
66 UNSUPPORTED, /** Operation is not supported by device/protocol */
65}; 67};
66 68
67/** Return a string explaining the error */ 69/** Return a string explaining the error */
@@ -266,6 +268,15 @@ public:
266 * according to the buffer size and call read_dev() and write_dev() */ 268 * according to the buffer size and call read_dev() and write_dev() */
267 error read(uint32_t addr, void *buf, size_t& sz, bool atomic); 269 error read(uint32_t addr, void *buf, size_t& sz, bool atomic);
268 error write(uint32_t addr, const void *buf, size_t& sz, bool atomic); 270 error write(uint32_t addr, const void *buf, size_t& sz, bool atomic);
271 /** Execute a general cop operation: if out_data is not null, data is appended to header,
272 * if in_data is not null, a read operation follows to retrieve some data.
273 * The in_data parameters is updated to reflect the number of transfered bytes */
274 error cop_op(uint8_t op, uint8_t args[HWSTUB_COP_ARGS], const void *out_data,
275 size_t out_size, void *in_data, size_t *in_size);
276 /** Execute a coprocessor read operation */
277 error read32_cop(uint8_t args[HWSTUB_COP_ARGS], uint32_t& value);
278 /** Execute a coprocessor write operation */
279 error write32_cop(uint8_t args[HWSTUB_COP_ARGS], uint32_t value);
269 /** Get device buffer size: any read() or write() greater than this size 280 /** Get device buffer size: any read() or write() greater than this size
270 * will be split into several transaction to avoid overflowing device 281 * will be split into several transaction to avoid overflowing device
271 * buffer. */ 282 * buffer. */
@@ -303,6 +314,11 @@ protected:
303 virtual error get_dev_desc(uint16_t desc, void *buf, size_t& buf_sz) = 0; 314 virtual error get_dev_desc(uint16_t desc, void *buf, size_t& buf_sz) = 0;
304 virtual error get_dev_log(void *buf, size_t& buf_sz) = 0; 315 virtual error get_dev_log(void *buf, size_t& buf_sz) = 0;
305 virtual error exec_dev(uint32_t addr, uint16_t flags) = 0; 316 virtual error exec_dev(uint32_t addr, uint16_t flags) = 0;
317 /* cop operation: if out_data is not null, data is appended to header, if
318 * in_data is not null, a READ2 operation follows to retrieve some data
319 * The in_data parameters is updated to reflect the number of transfered bytes*/
320 virtual error cop_dev(uint8_t op, uint8_t args[HWSTUB_COP_ARGS], const void *out_data,
321 size_t out_size, void *in_data, size_t *in_size) = 0;
306 322
307 std::shared_ptr<device> m_dev; /* pointer to device */ 323 std::shared_ptr<device> m_dev; /* pointer to device */
308 std::atomic<int> m_refcnt; /* reference count */ 324 std::atomic<int> m_refcnt; /* reference count */
@@ -338,6 +354,8 @@ protected:
338 virtual error get_dev_desc(uint16_t desc, void *buf, size_t& buf_sz); 354 virtual error get_dev_desc(uint16_t desc, void *buf, size_t& buf_sz);
339 virtual error get_dev_log(void *buf, size_t& buf_sz); 355 virtual error get_dev_log(void *buf, size_t& buf_sz);
340 virtual error exec_dev(uint32_t addr, uint16_t flags); 356 virtual error exec_dev(uint32_t addr, uint16_t flags);
357 virtual error cop_dev(uint8_t op, uint8_t args[HWSTUB_COP_ARGS], const void *out_data,
358 size_t out_size, void *in_data, size_t *in_size);
341 virtual error status() const; 359 virtual error status() const;
342 virtual size_t get_buffer_size(); 360 virtual size_t get_buffer_size();
343 361