1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
/*
* 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_ */
|