diff options
author | michael-west <michael.west@ettus.com> | 2017-01-04 16:57:53 -0800 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-01-10 13:51:53 -0800 |
commit | 64b4c1f5d7554c272884d67d0bf3d0d3d48c77ba (patch) | |
tree | d66fa051ce101e11bf30b5fb6217d195723df1bf /host/lib/usrp/x300/x300_fw_common.h | |
parent | 29b0fa17382c3dd9c27c556d1c5aa88f0863cb33 (diff) | |
download | uhd-64b4c1f5d7554c272884d67d0bf3d0d3d48c77ba.tar.gz uhd-64b4c1f5d7554c272884d67d0bf3d0d3d48c77ba.tar.bz2 uhd-64b4c1f5d7554c272884d67d0bf3d0d3d48c77ba.zip |
X300: Prevent MB EEPROM Corruption
- Load EEPROM data into firmware memory to access from there instead of driving the I2C bus directly
- Fixed firmware performance issues by removing the popcntll() function and reducing frequency of background tasks to once every 10ms
- Added x300_mb_eeprom_iface to handle cases of devices with older and newer firmware
- Added checks for claim to device before driving the I2C bus
Diffstat (limited to 'host/lib/usrp/x300/x300_fw_common.h')
-rw-r--r-- | host/lib/usrp/x300/x300_fw_common.h | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/host/lib/usrp/x300/x300_fw_common.h b/host/lib/usrp/x300/x300_fw_common.h index aae0f769c..b83449666 100644 --- a/host/lib/usrp/x300/x300_fw_common.h +++ b/host/lib/usrp/x300/x300_fw_common.h @@ -32,7 +32,7 @@ extern "C" { #define X300_REVISION_COMPAT 7 #define X300_REVISION_MIN 2 #define X300_FW_COMPAT_MAJOR 5 -#define X300_FW_COMPAT_MINOR 0 +#define X300_FW_COMPAT_MINOR 1 #define X300_FPGA_COMPAT_MAJOR 0x21 //shared memory sections - in between the stack and the program space @@ -49,6 +49,9 @@ extern "C" { #define X300_FW_SHMEM_UART_WORDS32 10 #define X300_FW_SHMEM_ROUTE_MAP_ADDR 11 #define X300_FW_SHMEM_ROUTE_MAP_LEN 12 +#define X300_FW_SHMEM_IDENT 13 // (13-39) EEPROM values in use +#define X300_FW_SHMEM_DEBUG 128 +#define X300_FW_SHMEM_ADDR(offset) X300_FW_SHMEM_BASE + (4 * (offset)) #define X300_FW_NUM_BYTES (1 << 15) //64k #define X300_FW_COMMS_MTU (1 << 13) //8k @@ -94,6 +97,30 @@ extern "C" { typedef struct { + //indentifying numbers + unsigned char revision[2]; + unsigned char product[2]; + uint8_t _pad0[4]; + + //all the mac addrs + uint8_t mac_addr0[6]; + uint8_t _pad1[2]; + uint8_t mac_addr1[6]; + uint8_t _pad2[2]; + + //all the IP addrs + uint32_t gateway; + uint32_t subnet[4]; + uint32_t ip_addr[4]; + uint8_t _pad3[16]; + + //names and serials + unsigned char name[23]; + unsigned char serial[9]; +} x300_eeprom_map_t; + +typedef struct +{ uint32_t flags; uint32_t sequence; uint32_t addr; |