/* * Copyright (c) 2023, Artinchip Technology Co., Ltd * * SPDX-License-Identifier: Apache-2.0 */ #ifndef _UPG_DEVICE_H_ #define _UPG_DEVICE_H_ #include #ifdef __cplusplus extern "C" { #endif /* AIC Vendor ID */ #define DRIVER_VENDOR_ID 0x33C3 /* 'fw' 0x66 0x77: product id for firmware upgrade */ #define DRIVER_PRODUCT_ID 0x6677 #define AIC_USB_SIGN_USBC 0x43425355 #define AIC_USB_SIGN_USBS 0x53425355 #define AIC_CBW_DATA_HOST_TO_DEV 0x0 #define AIC_CBW_DATA_DEV_TO_HOST 0x80 #define AIC_CSW_STATUS_PASSED 0x00 #define AIC_CSW_STATUS_FAILED 0x01 #define AIC_CSW_STATUS_PHASE_ERR 0x02 /* USB UPG Data transport layer commands */ #define TRANS_LAYER_CMD_WRITE 0x01 #define TRANS_LAYER_CMD_READ 0x02 struct aic_cbw { u32 dCBWSignature; u32 dCBWTag; u32 dCBWDataTransferLength; u8 bmCBWFlags; u8 reserved0; u8 bCBWCBLength; u8 bCommand; u8 reserved[15]; } __attribute__((packed)); struct aic_csw { u32 dCSWSignature; u32 dCSWTag; u32 dCSWDataResidue; u8 bCSWStatus; } __attribute__((packed)); #ifdef __cplusplus } #endif #endif /* _UPG_DEVICE_H_ */