{ \ .my_vendor_id = 0xe4e4, \ .my_product_id = (p), \ .name = #t, \ .num_interfaces = (ni), \ .my_interface_num = (n), \ .num_endpoints = (ne), \ .my_ep_in = (in), \ .my_ep_out = (out), \ } #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) static const struct xusb_spec astribank_specs[] = { /* OLD Firmwares */ TYPE_ENTRY("USB-OLDFXS", 0x1131, 2, 1, 2, MP_EP_OUT, MP_EP_IN), TYPE_ENTRY("FPGA-OLDFXS", 0x1132, 2, 1, 2, MP_EP_OUT, MP_EP_IN), TYPE_ENTRY("USB-BRI", 0x1141, 2, 1, 2, MP_EP_OUT, MP_EP_IN), TYPE_ENTRY("FPGA-BRI", 0x1142, 2, 1, 2, MP_EP_OUT, MP_EP_IN), TYPE_ENTRY("USB-OLD", 0x1151, 2, 1, 2, MP_EP_OUT, MP_EP_IN), TYPE_ENTRY("FPGA-OLD", 0x1152, 2, 1, 2, MP_EP_OUT, MP_EP_IN), TYPE_ENTRY("USB-MULTI", 0x1161, 2, 1, 2, MP_EP_OUT, MP_EP_IN), TYPE_ENTRY("FPGA-MULTI", 0x1162, 2, 1, 2, MP_EP_OUT, MP_EP_IN), TYPE_ENTRY("BURNED-MULTI", 0x1164, 2, 1, 2, MP_EP_OUT, MP_EP_IN), TYPE_ENTRY("USB-BURN", 0x1112, 2, 1, 2, MP_EP_OUT, MP_EP_IN), }; static const struct xusb_spec astribank_pic_specs[] = { TYPE_ENTRY("USB_PIC", 0x1161, 2, 0, 2, XPP_EP_OUT, XPP_EP_IN), };
.endpoints = { __VA_ARGS__ }, \ } static const struct astribank_type { int type_code; int num_interfaces; int my_interface_num; int num_endpoints; int my_ep_out; int my_ep_in; char *name; int endpoints[4]; /* for matching */ } astribank_types[] = { TYPE_ENTRY(USB_11xx, 1, 0, 4, MY_EP_OUT, MY_EP_IN, FPGA_EP_OUT, MY_EP_OUT, FPGA_EP_IN, MY_EP_IN), TYPE_ENTRY(USB_FIRMWARE_II, 2, 1, 2, MY_EP_OUT, MY_EP_IN, MY_EP_OUT, MY_EP_IN), }; #undef TYPE_ENTRY enum fpga_load_packet_types { PT_STATUS_REPLY = 0x01, PT_DATA_PACKET = 0x01, #ifdef XORCOM_INTERNAL PT_EEPROM_SET = 0x04, #endif PT_EEPROM_GET = 0x08,