summaryrefslogtreecommitdiff
path: root/utils/imxtools/hwemul/lib/hwemul.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/imxtools/hwemul/lib/hwemul.h')
-rw-r--r--utils/imxtools/hwemul/lib/hwemul.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/utils/imxtools/hwemul/lib/hwemul.h b/utils/imxtools/hwemul/lib/hwemul.h
new file mode 100644
index 0000000000..376ba65381
--- /dev/null
+++ b/utils/imxtools/hwemul/lib/hwemul.h
@@ -0,0 +1,63 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2012 by Amaury Pouly
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21#ifndef __HWEMUL__
22#define __HWEMUL__
23
24#include <libusb.h>
25#include "hwemul_protocol.h"
26#include "hwemul_soc.h"
27
28/**
29 *
30 * Low-Level interface
31 *
32 */
33
34struct hwemul_device_t
35{
36 libusb_device_handle *handle;
37 int intf;
38 int bulk_in;
39 int bulk_out;
40 int int_in;
41};
42
43/* Requires then ->handle field only. Returns 0 on success */
44int hwemul_probe(struct hwemul_device_t *dev);
45/* Returns 0 on success */
46int hwemul_release(struct hwemul_device_t *dev);
47
48/* Returns number of bytes filled */
49int hwemul_get_info(struct hwemul_device_t *dev, uint16_t idx, void *info, size_t sz);
50/* Returns number of bytes filled */
51int hwemul_get_log(struct hwemul_device_t *dev, void *buf, size_t sz);
52/* Returns number of bytes written/read or <0 on error */
53int hwemul_rw_mem(struct hwemul_device_t *dev, int read, uint32_t addr, void *buf, size_t sz);
54/* Returns <0 on error */
55int hwemul_call(struct hwemul_device_t *dev, uint32_t addr);
56int hwemul_jump(struct hwemul_device_t *dev, uint32_t addr);
57/* Returns <0 on error. The size must be a multiple of 16. */
58int hwemul_aes_otp(struct hwemul_device_t *dev, void *buf, size_t sz, uint16_t param);
59
60const char *hwemul_get_product_string(struct usb_resp_info_stmp_t *stmp);
61const char *hwemul_get_rev_string(struct usb_resp_info_stmp_t *stmp);
62
63#endif /* __HWEMUL__ */ \ No newline at end of file