/*
* Copyright (c) 2013 Nuand LLC
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef _BLADERF_FIRMWARE_COMMON_H_
#define _BLADERF_FIRMWARE_COMMON_H_
#define BLADE_USB_CMD_QUERY_VERSION 0
#define BLADE_USB_CMD_QUERY_FPGA_STATUS 1
#define BLADE_USB_CMD_BEGIN_PROG 2
#define BLADE_USB_CMD_END_PROG 3
#define BLADE_USB_CMD_RF_RX 4
#define BLADE_USB_CMD_RF_TX 5
#define BLADE_USB_CMD_QUERY_DEVICE_READY 6
#define BLADE_USB_CMD_QUERY_FLASH_ID 7
#define BLADE_USB_CMD_QUERY_FPGA_SOURCE 8
#define BLADE_USB_CMD_FLASH_READ 100
#define BLADE_USB_CMD_FLASH_WRITE 101
#define BLADE_USB_CMD_FLASH_ERASE 102
#define BLADE_USB_CMD_READ_OTP 103
#define BLADE_USB_CMD_WRITE_OTP 104
#define BLADE_USB_CMD_RESET 105
#define BLADE_USB_CMD_JUMP_TO_BOOTLOADER 106
#define BLADE_USB_CMD_READ_PAGE_BUFFER 107
#define BLADE_USB_CMD_WRITE_PAGE_BUFFER 108
#define BLADE_USB_CMD_LOCK_OTP 109
#define BLADE_USB_CMD_READ_CAL_CACHE 110
#define BLADE_USB_CMD_INVALIDATE_CAL_CACHE 111
#define BLADE_USB_CMD_REFRESH_CAL_CACHE 112
#define BLADE_USB_CMD_SET_LOOPBACK 113
#define BLADE_USB_CMD_GET_LOOPBACK 114
#define BLADE_USB_CMD_READ_LOG_ENTRY 115
/* String descriptor indices */
#define BLADE_USB_STR_INDEX_MFR 1 /* Manufacturer */
#define BLADE_USB_STR_INDEX_PRODUCT 2 /* Product */
#define BLADE_USB_STR_INDEX_SERIAL 3 /* Serial number */
#define BLADE_USB_STR_INDEX_FW_VER 4 /* Firmware version */
#define CAL_BUFFER_SIZE 256
#define CAL_PAGE 768
#define AUTOLOAD_BUFFER_SIZE 256
#define AUTOLOAD_PAGE 1024
#ifdef _MSC_VER
# define PACK(decl_to_pack_) \
__pragma(pack(push,1)) \
decl_to_pack_ \
__pragma(pack(pop))
#elif defined(__GNUC__)
# define PACK(decl_to_pack_) \
decl_to_pack_ __attribute__((__packed__))
#else
#error "Unexpected compiler/environment"
#endif
PACK(
struct bladerf_fx3_version {
unsigned short major;
unsigned short minor;
});
struct bladeRF_firmware {
unsigned int len;
unsigned char *ptr;
};
struct bladeRF_sector {
unsigned int idx;
unsigned int len;
unsigned char *ptr;
};
/**
* FPGA configuration source
*
* Note: the numbering of this enum must match bladerf_fpga_source in
* libbladeRF.h
*/
typedef enum {
NUAND_FPGA_CONFIG_SOURCE_INVALID = 0, /**< Uninitialized/invalid */
NUAND_FPGA_CONFIG_SOURCE_FLASH = 1, /**< Last FPGA load was from flash */
NUAND_FPGA_CONFIG_SOURCE_HOST = 2 /**< Last FPGA load was from host */
} NuandFpgaConfigSource;
#define USB_CYPRESS_VENDOR_ID 0x04b4
#define USB_FX3_PRODUCT_ID 0x00f3
#define BLADE_USB_TYPE_OUT 0x40
#define BLADE_USB_TYPE_IN 0xC0
#define BLADE_USB_TIMEOUT_MS 1000
#define USB_NUAND_VENDOR_ID 0x2cf0
#define USB_NUAND_BLADERF_PRODUCT_ID 0x5246
#define USB_NUAND_BLADERF_BOOT_PRODUCT_ID 0x5247
#define USB_NUAND_BLADERF2_PRODUCT_ID 0x5250
#define USB_NUAND_LEGACY_VENDOR_ID 0x1d50
#define USB_NUAND_BLADERF_LEGACY_PRODUCT_ID 0x6066
#define USB_NUAND_BLADERF_LEGACY_BOOT_PRODUCT_ID 0x6080
#define USB_NUAND_BLADERF_MINOR_BASE 193
#define NUM_CONCURRENT 8
#define NUM_DATA_URB (1024)
#define DATA_BUF_SZ (1024*4)
/* Interface numbers */
#define USB_IF_LEGACY_CONFIG 0
#define USB_IF_NULL 0
#define USB_IF_RF_LINK 1
#define USB_IF_SPI_FLASH 2
#define USB_IF_CONFIG 3
#endif /* _BLADERF_FIRMWARE_COMMON_H_ */