aboutsummaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
authorAshish Chaudhari <ashish@ettus.com>2016-01-08 13:47:28 -0800
committerAshish Chaudhari <ashish@ettus.com>2016-01-08 13:47:28 -0800
commitaada5568494bdaff2d4814b5ccadd7def66b92f3 (patch)
treee0d57a7d6d402b485db65d9fd95d97c00ea6cd65 /firmware
parentaa38ea64e950325d43cc284f59878044ea4f935a (diff)
downloaduhd-aada5568494bdaff2d4814b5ccadd7def66b92f3.tar.gz
uhd-aada5568494bdaff2d4814b5ccadd7def66b92f3.tar.bz2
uhd-aada5568494bdaff2d4814b5ccadd7def66b92f3.zip
usrp3,n230: Moved all shared FW-Host headers to the host dir
Diffstat (limited to 'firmware')
-rw-r--r--firmware/usrp3/include/fw_comm_protocol.h102
-rw-r--r--firmware/usrp3/lib/fw_comm_protocol.c3
-rw-r--r--firmware/usrp3/n230/n230_eeprom.c5
-rw-r--r--firmware/usrp3/n230/n230_eth_handlers.c4
-rw-r--r--firmware/usrp3/n230/n230_eth_handlers.h2
-rw-r--r--firmware/usrp3/n230/n230_fw_defs.h137
-rw-r--r--firmware/usrp3/n230/n230_fw_host_iface.h128
-rw-r--r--firmware/usrp3/n230/n230_init.c2
-rw-r--r--firmware/usrp3/n230/n230_main.c4
9 files changed, 11 insertions, 376 deletions
diff --git a/firmware/usrp3/include/fw_comm_protocol.h b/firmware/usrp3/include/fw_comm_protocol.h
deleted file mode 100644
index 14adb33a9..000000000
--- a/firmware/usrp3/include/fw_comm_protocol.h
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// Copyright 2014 Ettus Research LLC
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-
-#ifndef INCLUDED_FW_COMM_PROTOCOL
-#define INCLUDED_FW_COMM_PROTOCOL
-
-#include <stdint.h>
-#ifndef __cplusplus
-#include <stdbool.h>
-#endif
-
-/*!
- * Structs and constants for communication between firmware and host.
- * This header is shared by the firmware and host code.
- * Therefore, this header may only contain valid C code.
- */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define FW_COMM_PROTOCOL_SIGNATURE 0xACE3
-#define FW_COMM_PROTOCOL_VERSION 0
-#define FW_COMM_MAX_DATA_WORDS 16
-#define FW_COMM_PROTOCOL_MTU 256
-
-#define FW_COMM_FLAGS_ACK 0x00000001
-#define FW_COMM_FLAGS_CMD_MASK 0x00000FF0
-#define FW_COMM_FLAGS_ERROR_MASK 0xFF000000
-
-#define FW_COMM_CMD_ECHO 0x00000000
-#define FW_COMM_CMD_POKE32 0x00000010
-#define FW_COMM_CMD_PEEK32 0x00000020
-#define FW_COMM_CMD_BLOCK_POKE32 0x00000030
-#define FW_COMM_CMD_BLOCK_PEEK32 0x00000040
-
-#define FW_COMM_ERR_PKT_ERROR 0x80000000
-#define FW_COMM_ERR_CMD_ERROR 0x40000000
-#define FW_COMM_ERR_SIZE_ERROR 0x20000000
-
-#define FW_COMM_GENERATE_ID(prod) ((((uint32_t) FW_COMM_PROTOCOL_SIGNATURE) << 0) | \
- (((uint32_t) prod) << 16) | \
- (((uint32_t) FW_COMM_PROTOCOL_VERSION) << 24))
-
-#define FW_COMM_GET_PROTOCOL_SIG(id) ((uint16_t)(id & 0xFFFF))
-#define FW_COMM_GET_PRODUCT_ID(id) ((uint8_t)(id >> 16))
-#define FW_COMM_GET_PROTOCOL_VER(id) ((uint8_t)(id >> 24))
-
-typedef struct
-{
- uint32_t id; //Protocol and device identifier
- uint32_t flags; //Holds commands and ack messages
- uint32_t sequence; //Sequence number (specific to FW communication transactions)
- uint32_t data_words; //Number of data words in payload
- uint32_t addr; //Address field for the command in flags
- uint32_t data[FW_COMM_MAX_DATA_WORDS]; //Data field for the command in flags
-} fw_comm_pkt_t;
-
-#ifdef __cplusplus
-} //extern "C"
-#endif
-
-// The following definitions are only useful in firmware. Exclude in host code.
-#ifndef __cplusplus
-
-typedef void (*poke32_func)(const uint32_t addr, const uint32_t data);
-typedef uint32_t (*peek32_func)(const uint32_t addr);
-
-/*!
- * Process a firmware communication packet and compute a response.
- * Args:
- * - (in) request: Pointer to the request struct
- * - (out) response: Pointer to the response struct
- * - (in) product_id: The 8-bit usrp3 specific product ID (for request filtering)
- * - (func) poke_callback, peek_callback: Callback functions for a single peek/poke
- * - return value: Send a response packet
- */
-bool process_fw_comm_protocol_pkt(
- const fw_comm_pkt_t* request,
- fw_comm_pkt_t* response,
- uint8_t product_id,
- uint32_t iface_id,
- poke32_func poke_callback,
- peek32_func peek_callback
-);
-
-#endif //ifdef __cplusplus
-
-#endif /* INCLUDED_FW_COMM_PROTOCOL */
diff --git a/firmware/usrp3/lib/fw_comm_protocol.c b/firmware/usrp3/lib/fw_comm_protocol.c
index bb0297e8d..0cc931a76 100644
--- a/firmware/usrp3/lib/fw_comm_protocol.c
+++ b/firmware/usrp3/lib/fw_comm_protocol.c
@@ -15,7 +15,8 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
-#include <fw_comm_protocol.h>
+#include "../../../host/lib/usrp/common/fw_comm_protocol.h"
+
#include <trace.h>
#include <string.h> //memcmp
diff --git a/firmware/usrp3/n230/n230_eeprom.c b/firmware/usrp3/n230/n230_eeprom.c
index 116f87985..767289efa 100644
--- a/firmware/usrp3/n230/n230_eeprom.c
+++ b/firmware/usrp3/n230/n230_eeprom.c
@@ -22,8 +22,9 @@
#include <flash/spi_flash.h>
#include <flash/spif_spsn_s25flxx.h>
#include <string.h> //memcpy
-#include "n230_fw_defs.h"
-#include "n230_fw_host_iface.h"
+
+#include "../../../host/lib/usrp/n230/n230_fw_defs.h"
+#include "../../../host/lib/usrp/n230/n230_fw_host_iface.h"
static const wb_spi_slave_t flash_spi_slave = {
.base = (void*) 0xB000,
diff --git a/firmware/usrp3/n230/n230_eth_handlers.c b/firmware/usrp3/n230/n230_eth_handlers.c
index 98b8bc326..bb07be51b 100644
--- a/firmware/usrp3/n230/n230_eth_handlers.c
+++ b/firmware/usrp3/n230/n230_eth_handlers.c
@@ -17,15 +17,15 @@
#include "n230_eth_handlers.h"
-#include <fw_comm_protocol.h>
#include <wb_utils.h>
#include <string.h> //memcmp
#include <u3_net_stack.h>
#include <print_addrs.h>
#include <trace.h>
+#include "../../../host/lib/usrp/common/fw_comm_protocol.h"
+#include "../../../host/lib/usrp/n230/n230_fw_defs.h"
#include "../n230/n230_fw_host_iface.h"
#include "n230_eeprom.h"
-#include "n230_fw_defs.h"
static n230_host_shared_mem_t* host_shared_mem_ptr;
diff --git a/firmware/usrp3/n230/n230_eth_handlers.h b/firmware/usrp3/n230/n230_eth_handlers.h
index 86130e361..67afbb246 100644
--- a/firmware/usrp3/n230/n230_eth_handlers.h
+++ b/firmware/usrp3/n230/n230_eth_handlers.h
@@ -23,7 +23,7 @@
#include <stdbool.h>
#include <lwip/ip_addr.h>
#include <wb_soft_reg.h>
-#include "../n230/n230_fw_host_iface.h"
+#include "../../../host/lib/usrp/n230/n230_fw_host_iface.h"
/*!
* Registrar for host firmware communications handler.
diff --git a/firmware/usrp3/n230/n230_fw_defs.h b/firmware/usrp3/n230/n230_fw_defs.h
deleted file mode 100644
index fbdc67ebb..000000000
--- a/firmware/usrp3/n230/n230_fw_defs.h
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// Copyright 2014 Ettus Research LLC
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-
-#ifndef INCLUDED_N230_FW_DEFS_H
-#define INCLUDED_N230_FW_DEFS_H
-
-#include <stdint.h>
-
-/*!
- * Constants specific to N230 firmware.
- * This header is shared by the firmware and host code.
- * Therefore, this header may only contain valid C code.
- * However, if it is included from within the host code,
- * it will be namespaced appropriately
- */
-#ifdef __cplusplus
-namespace uhd {
-namespace usrp {
-namespace n230 {
-namespace fw {
-#endif
-
-static inline uint32_t reg_addr(uint32_t base, uint32_t offset) {
- return ((base) + (offset)*4);
-}
-
-/*******************************************************************
- * Global
- *******************************************************************/
-static const uint32_t CPU_CLOCK_FREQ = 80000000;
-static const uint32_t PER_MILLISEC_CRON_JOBID = 0;
-static const uint32_t PER_SECOND_CRON_JOBID = 1;
-
-/*******************************************************************
- * Wishbone slave addresses
- *******************************************************************/
-static const uint32_t WB_MAIN_RAM_BASE = 0x0000;
-static const uint32_t WB_PKT_RAM_BASE = 0x8000;
-static const uint32_t WB_SBRB_BASE = 0xa000;
-static const uint32_t WB_SPI_FLASH_BASE = 0xb000;
-static const uint32_t WB_ETH0_MAC_BASE = 0xc000;
-static const uint32_t WB_ETH1_MAC_BASE = 0xd000;
-static const uint32_t WB_XB_SBRB_BASE = 0xe000;
-static const uint32_t WB_ETH0_I2C_BASE = 0xf600;
-static const uint32_t WB_ETH1_I2C_BASE = 0xf700;
-static const uint32_t WB_DBG_UART_BASE = 0xf900;
-
-/*******************************************************************
- * Seting Register Base addresses
- *******************************************************************/
-static const uint32_t SR_ZPU_SW_RST = 0;
-static const uint32_t SR_ZPU_BOOT_DONE = 1;
-static const uint32_t SR_ZPU_LEDS = 2;
-static const uint32_t SR_ZPU_XB_LOCAL = 4;
-static const uint32_t SR_ZPU_SFP_CTRL0 = 16;
-static const uint32_t SR_ZPU_SFP_CTRL1 = 17;
-static const uint32_t SR_ZPU_ETHINT0 = 64;
-static const uint32_t SR_ZPU_ETHINT1 = 80;
-
-static const uint32_t SR_ZPU_SW_RST_NONE = 0x0;
-static const uint32_t SR_ZPU_SW_RST_PHY = 0x1;
-static const uint32_t SR_ZPU_SW_RST_RADIO = 0x2;
-
-/*******************************************************************
- * Readback addresses
- *******************************************************************/
-static const uint32_t RB_ZPU_COMPAT = 0;
-static const uint32_t RB_ZPU_COUNTER = 1;
-static const uint32_t RB_ZPU_SFP_STATUS0 = 2;
-static const uint32_t RB_ZPU_SFP_STATUS1 = 3;
-static const uint32_t RB_ZPU_ETH0_PKT_CNT = 6;
-static const uint32_t RB_ZPU_ETH1_PKT_CNT = 7;
-
-/*******************************************************************
- * Ethernet
- *******************************************************************/
-static const uint32_t WB_PKT_RAM_CTRL_OFFSET = 0x1FFC;
-
-static const uint32_t SR_ZPU_ETHINT_FRAMER_BASE = 0;
-static const uint32_t SR_ZPU_ETHINT_DISPATCHER_BASE = 8;
-
-//Eth framer constants
-static const uint32_t ETH_FRAMER_SRC_MAC_HI = 0;
-static const uint32_t ETH_FRAMER_SRC_MAC_LO = 1;
-static const uint32_t ETH_FRAMER_SRC_IP_ADDR = 2;
-static const uint32_t ETH_FRAMER_SRC_UDP_PORT = 3;
-static const uint32_t ETH_FRAMER_DST_RAM_ADDR = 4;
-static const uint32_t ETH_FRAMER_DST_IP_ADDR = 5;
-static const uint32_t ETH_FRAMER_DST_UDP_MAC = 6;
-static const uint32_t ETH_FRAMER_DST_MAC_LO = 7;
-
-/*******************************************************************
- * CODEC
- *******************************************************************/
-static const uint32_t CODEC_SPI_CLOCK_FREQ = 4000000; //4MHz
-static const uint32_t ADF4001_SPI_CLOCK_FREQ = 200000; //200kHz
-
-/*******************************************************************
- * UART
- *******************************************************************/
-static const uint32_t DBG_UART_BAUD = 115200;
-
-/*******************************************************************
- * Build Compatability Numbers
- *******************************************************************/
-static const uint8_t PRODUCT_NUM = 0x01;
-static const uint8_t COMPAT_MAJOR = 0x00;
-static const uint16_t COMPAT_MINOR = 0x0000;
-
-static inline uint8_t get_prod_num(uint32_t compat_reg) {
- return (compat_reg >> 24) & 0xFF;
-}
-static inline uint8_t get_compat_major(uint32_t compat_reg) {
- return (compat_reg >> 16) & 0xFF;
-}
-static inline uint8_t get_compat_minor(uint32_t compat_reg) {
- return compat_reg & 0xFFFF;
-}
-
-#ifdef __cplusplus
-}}}} //namespace
-#endif
-#endif /* INCLUDED_N230_FW_DEFS_H */
diff --git a/firmware/usrp3/n230/n230_fw_host_iface.h b/firmware/usrp3/n230/n230_fw_host_iface.h
deleted file mode 100644
index dc82df2fc..000000000
--- a/firmware/usrp3/n230/n230_fw_host_iface.h
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// Copyright 2014 Ettus Research LLC
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-
-#ifndef INCLUDED_N230_FW_HOST_IFACE_H
-#define INCLUDED_N230_FW_HOST_IFACE_H
-
-#include <stdint.h>
-
-/*!
- * Structs and constants for N230 communication between firmware and host.
- * This header is shared by the firmware and host code.
- * Therefore, this header may only contain valid C code.
- */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-//--------------------------------------------------
-// Ethernet related
-//
-#define N230_DEFAULT_ETH0_MAC {0x00, 0x50, 0xC2, 0x85, 0x3f, 0xff}
-#define N230_DEFAULT_ETH1_MAC {0x00, 0x50, 0xC2, 0x85, 0x3f, 0x33}
-#define N230_DEFAULT_ETH0_IP (192 << 24 | 168 << 16 | 10 << 8 | 2 << 0)
-#define N230_DEFAULT_ETH1_IP (192 << 24 | 168 << 16 | 20 << 8 | 2 << 0)
-#define N230_DEFAULT_ETH0_MASK (255 << 24 | 255 << 16 | 255 << 8 | 0 << 0)
-#define N230_DEFAULT_ETH1_MASK (255 << 24 | 255 << 16 | 255 << 8 | 0 << 0)
-#define N230_DEFAULT_GATEWAY (192 << 24 | 168 << 16 | 10 << 8 | 1 << 0)
-
-#define N230_FW_COMMS_UDP_PORT 49152
-#define N230_FW_COMMS_CVITA_PORT 49153
-#define N230_FW_COMMS_FLASH_PROG_PORT 49154
-//
-//--------------------------------------------------
-
-//--------------------------------------------------
-// Memory shared with host
-//
-#define N230_FW_HOST_SHMEM_BASE_ADDR 0x10000
-#define N230_FW_HOST_SHMEM_RW_BASE_ADDR 0x1000C
-#define N230_FW_HOST_SHMEM_NUM_WORDS (sizeof(n230_host_shared_mem_data_t)/sizeof(uint32_t))
-
-#define N230_FW_HOST_SHMEM_MAX_ADDR \
- (N230_FW_HOST_SHMEM_BASE_ADDR + ((N230_FW_HOST_SHMEM_NUM_WORDS - 1) * sizeof(uint32_t)))
-
-#define N230_FW_HOST_SHMEM_OFFSET(member) \
- (N230_FW_HOST_SHMEM_BASE_ADDR + ((uint32_t)offsetof(n230_host_shared_mem_data_t, member)))
-
-//The shared memory block can only be accessed on 32-bit boundaries
-typedef struct { //All fields must be 32-bit wide to avoid packing directives
- //Read-Only fields (N230_FW_HOST_SHMEM_BASE_ADDR)
- uint32_t fw_compat_num; //Compat number must be at offset 0
- uint32_t fw_version_hash;
- uint32_t claim_status;
-
- //Read-Write fields (N230_FW_HOST_SHMEM_RW_BASE_ADDR)
- uint32_t scratch;
- uint32_t claim_time;
- uint32_t claim_src;
-} n230_host_shared_mem_data_t;
-
-typedef union
-{
- uint32_t buff[N230_FW_HOST_SHMEM_NUM_WORDS];
- n230_host_shared_mem_data_t data;
-} n230_host_shared_mem_t;
-
-#define N230_FW_PRODUCT_ID 1
-#define N230_FW_COMPAT_NUM_MAJOR 3
-#define N230_FW_COMPAT_NUM_MINOR 0
-#define N230_FW_COMPAT_NUM (((N230_FW_COMPAT_NUM_MAJOR & 0xFF) << 16) | (N230_FW_COMPAT_NUM_MINOR & 0xFFFF))
-//
-//--------------------------------------------------
-
-//--------------------------------------------------
-// Flash read-write interface for host
-//
-#define N230_FLASH_COMM_FLAGS_ACK 0x00000001
-#define N230_FLASH_COMM_FLAGS_CMD_MASK 0x00000FF0
-#define N230_FLASH_COMM_FLAGS_ERROR_MASK 0xFF000000
-
-#define N230_FLASH_COMM_CMD_READ_NV_DATA 0x00000010
-#define N230_FLASH_COMM_CMD_WRITE_NV_DATA 0x00000020
-#define N230_FLASH_COMM_CMD_READ_FPGA 0x00000030
-#define N230_FLASH_COMM_CMD_WRITE_FPGA 0x00000040
-#define N230_FLASH_COMM_CMD_ERASE_FPGA 0x00000050
-
-#define N230_FLASH_COMM_ERR_PKT_ERROR 0x80000000
-#define N230_FLASH_COMM_ERR_CMD_ERROR 0x40000000
-#define N230_FLASH_COMM_ERR_SIZE_ERROR 0x20000000
-
-#define N230_FLASH_COMM_MAX_PAYLOAD_SIZE 128
-
-typedef struct
-{
- uint32_t flags;
- uint32_t seq;
- uint32_t offset;
- uint32_t size;
- uint8_t data[N230_FLASH_COMM_MAX_PAYLOAD_SIZE];
-} n230_flash_prog_t;
-//
-//--------------------------------------------------
-
-#define N230_HW_REVISION_COMPAT 1
-#define N230_HW_REVISION_MIN 1
-
-
-#define N230_CLAIMER_TIMEOUT_IN_MS 2000
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* INCLUDED_N230_FW_HOST_IFACE_H */
diff --git a/firmware/usrp3/n230/n230_init.c b/firmware/usrp3/n230/n230_init.c
index 4602f8338..0054c1bbc 100644
--- a/firmware/usrp3/n230/n230_init.c
+++ b/firmware/usrp3/n230/n230_init.c
@@ -25,8 +25,8 @@
#include <print_addrs.h>
#include <trace.h>
#include "n230_eeprom.h"
-#include "n230_fw_defs.h"
#include "n230_init.h"
+#include "../../../host/lib/usrp/n230/n230_fw_defs.h"
static wb_pkt_iface64_config_t pkt_config;
diff --git a/firmware/usrp3/n230/n230_main.c b/firmware/usrp3/n230/n230_main.c
index ceb896514..a6c12e56d 100644
--- a/firmware/usrp3/n230/n230_main.c
+++ b/firmware/usrp3/n230/n230_main.c
@@ -19,9 +19,9 @@
#include <wb_soft_reg.h>
#include <u3_net_stack.h>
#include <trace.h>
+#include "../../../host/lib/usrp/n230/n230_fw_defs.h"
+#include "../../../host/lib/usrp/n230/n230_fw_host_iface.h"
#include "n230_eth_handlers.h"
-#include "n230_fw_defs.h"
-#include "n230_fw_host_iface.h"
#include "n230_init.h"
//The version hash should come from a cmake build variable