Model the A6 crypto, interrupt, USB, and platform blocks needed to boot SecureROM through iBSS into iBEC Recovery. Add local lab identity, IMG3, and APTicket tooling, patched macOS recovery utilities, UART and GDB access, and English end-user documentation.
53 lines
1.6 KiB
C
53 lines
1.6 KiB
C
#ifndef QEMU_A6_USB_PROTOCOL_H
|
|
#define QEMU_A6_USB_PROTOCOL_H
|
|
|
|
/* Shared by QEMU, the Windows UDE driver, and the user-mode bridge. */
|
|
#define QA6_USB_MAGIC 0x55364151u /* "QA6U" */
|
|
#define QA6_USB_PROTOCOL_VERSION 1u
|
|
#define QA6_USB_MESSAGE_REQUEST 1u
|
|
#define QA6_USB_MESSAGE_RESPONSE 2u
|
|
#define QA6_USB_MESSAGE_INFO_REQUEST 3u
|
|
#define QA6_USB_MESSAGE_INFO_RESPONSE 4u
|
|
#define QA6_USB_MESSAGE_BULK_REQUEST 5u
|
|
#define QA6_USB_MESSAGE_BULK_RESPONSE 6u
|
|
#define QA6_USB_MESSAGE_RESET_REQUEST 7u
|
|
#define QA6_USB_MESSAGE_RESET_RESPONSE 8u
|
|
|
|
#define QA6_USB_STATUS_SUCCESS 0
|
|
#define QA6_USB_STATUS_STALL -1
|
|
#define QA6_USB_STATUS_DISCONNECTED -2
|
|
#define QA6_USB_STATUS_PROTOCOL -3
|
|
#define QA6_USB_STATUS_UNSUPPORTED -4
|
|
|
|
#define QA6_USB_MAX_PAYLOAD 65535u
|
|
#define QA6_USB_SERIAL_MAX 256u
|
|
|
|
#pragma pack(push, 1)
|
|
typedef struct Qa6UsbFrameHeader {
|
|
unsigned int magic;
|
|
unsigned short version;
|
|
unsigned short type;
|
|
unsigned int request_id;
|
|
int status;
|
|
unsigned int payload_length;
|
|
unsigned int transfer_length;
|
|
unsigned char setup[8];
|
|
} Qa6UsbFrameHeader;
|
|
|
|
typedef struct Qa6UsbDeviceInfo {
|
|
unsigned int generation;
|
|
unsigned short vendor_id;
|
|
unsigned short product_id;
|
|
unsigned char device_class;
|
|
unsigned char device_subclass;
|
|
unsigned char device_protocol;
|
|
unsigned char is_dfu;
|
|
char serial[QA6_USB_SERIAL_MAX];
|
|
} Qa6UsbDeviceInfo;
|
|
#pragma pack(pop)
|
|
|
|
#define QA6_USB_HEADER_SIZE ((unsigned int)sizeof(Qa6UsbFrameHeader))
|
|
#define QA6_USB_MAX_FRAME_SIZE (QA6_USB_HEADER_SIZE + QA6_USB_MAX_PAYLOAD)
|
|
|
|
#endif
|