summaryrefslogtreecommitdiff
path: root/utils/hwstub/lib
diff options
context:
space:
mode:
Diffstat (limited to 'utils/hwstub/lib')
-rw-r--r--utils/hwstub/lib/hwstub.c21
-rw-r--r--utils/hwstub/lib/hwstub.h5
2 files changed, 14 insertions, 12 deletions
diff --git a/utils/hwstub/lib/hwstub.c b/utils/hwstub/lib/hwstub.c
index 92010e710b..41842fb181 100644
--- a/utils/hwstub/lib/hwstub.c
+++ b/utils/hwstub/lib/hwstub.c
@@ -158,17 +158,18 @@ const char *hwstub_get_rev_string(struct usb_resp_info_stmp_t *stmp)
158 } 158 }
159} 159}
160 160
161int hwstub_aes_otp(struct hwstub_device_t *dev, void *buf, size_t sz, uint16_t param) 161int hwstub_atexit(struct hwstub_device_t *dev, int method)
162{ 162{
163 int ret = libusb_control_transfer(dev->handle, 163 return libusb_control_transfer(dev->handle,
164 LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_RECIPIENT_DEVICE |
165 LIBUSB_ENDPOINT_OUT, HWSTUB_ATEXIT, 0, method, NULL, 0,
166 1000);
167}
168
169int hwstub_exit(struct hwstub_device_t *dev)
170{
171 return libusb_control_transfer(dev->handle,
164 LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_RECIPIENT_DEVICE | 172 LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_RECIPIENT_DEVICE |
165 LIBUSB_ENDPOINT_OUT, HWSTUB_AES_OTP, param, 0, buf, sz, 173 LIBUSB_ENDPOINT_OUT, HWSTUB_EXIT, 0, 0, NULL, 0,
166 1000); 174 1000);
167 if(ret <0 || (unsigned)ret != sz)
168 return -1;
169 int xfer;
170 ret = libusb_interrupt_transfer(dev->handle, dev->int_in, buf, sz, &xfer, 1000);
171 if(ret < 0 || (unsigned)xfer != sz)
172 return -1;
173 return ret;
174} 175}
diff --git a/utils/hwstub/lib/hwstub.h b/utils/hwstub/lib/hwstub.h
index ed058dfa3b..f89bce5de9 100644
--- a/utils/hwstub/lib/hwstub.h
+++ b/utils/hwstub/lib/hwstub.h
@@ -57,8 +57,9 @@ int hwstub_rw_mem(struct hwstub_device_t *dev, int read, uint32_t addr, void *bu
57/* Returns <0 on error */ 57/* Returns <0 on error */
58int hwstub_call(struct hwstub_device_t *dev, uint32_t addr); 58int hwstub_call(struct hwstub_device_t *dev, uint32_t addr);
59int hwstub_jump(struct hwstub_device_t *dev, uint32_t addr); 59int hwstub_jump(struct hwstub_device_t *dev, uint32_t addr);
60/* Returns <0 on error. The size must be a multiple of 16. */ 60/* Returns <0 on error */
61int hwstub_aes_otp(struct hwstub_device_t *dev, void *buf, size_t sz, uint16_t param); 61int hwstub_atexit(struct hwstub_device_t *dev, int action);
62int hwstub_exit(struct hwstub_device_t *dev);
62 63
63const char *hwstub_get_product_string(struct usb_resp_info_stmp_t *stmp); 64const char *hwstub_get_product_string(struct usb_resp_info_stmp_t *stmp);
64const char *hwstub_get_rev_string(struct usb_resp_info_stmp_t *stmp); 65const char *hwstub_get_rev_string(struct usb_resp_info_stmp_t *stmp);