aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/usrp3/x300
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usrp3/x300')
-rw-r--r--firmware/usrp3/x300/x300_defs.h1
-rw-r--r--firmware/usrp3/x300/x300_init.c41
-rw-r--r--firmware/usrp3/x300/x300_main.c10
3 files changed, 27 insertions, 25 deletions
diff --git a/firmware/usrp3/x300/x300_defs.h b/firmware/usrp3/x300/x300_defs.h
index 65c5d5a23..c4011bd12 100644
--- a/firmware/usrp3/x300/x300_defs.h
+++ b/firmware/usrp3/x300/x300_defs.h
@@ -51,6 +51,7 @@ static const int RB_SPI_RDY = 1;
static const int RB_SPI_DATA = 2;
static const int RB_ETH_TYPE0 = 4;
static const int RB_ETH_TYPE1 = 5;
+static const int RB_FPGA_COMPAT = 6;
static const int RB_SFPP_STATUS0 = 8;
static const int RB_SFPP_STATUS1 = 9;
diff --git a/firmware/usrp3/x300/x300_init.c b/firmware/usrp3/x300/x300_init.c
index 66fb120f3..ef97412a2 100644
--- a/firmware/usrp3/x300/x300_init.c
+++ b/firmware/usrp3/x300/x300_init.c
@@ -7,7 +7,7 @@
#include <wb_i2c.h>
#include <stdint.h>
#include <stdbool.h>
-#include <printf.h>
+#include <trace.h>
#include <wb_pkt_iface64.h>
#include <u3_net_stack.h>
#include <link_state_route_proto.h>
@@ -73,7 +73,6 @@ const void *pick_inited_field(const void *eeprom, const void *def, const size_t
static void init_network(void)
{
pkt_config = wb_pkt_iface64_init(PKT_RAM0_BASE, 0x1ffc);
- printf("PKT RAM0 BASE 0x%x\n", (&pkt_config)->base);
u3_net_stack_init(&pkt_config);
link_state_route_proto_init();
@@ -115,7 +114,9 @@ static void init_network(void)
static void putc(void *p, char c)
{
-#ifdef X300_DEBUG_UART
+//If FW_TRACE_LEVEL is defined, then the trace level is set
+//to a non-zero number. Turn on the debug UART to enable tracing
+#ifdef UHD_FW_TRACE_LEVEL
wb_uart_putc(UART1_BASE, c);
#endif
}
@@ -129,7 +130,11 @@ void x300_init(void)
//udp_uart_init(UART0_BASE, X300_GPSDO_UDP_PORT);
//now we can init the rest with prints
- printf("X300 ZPU Init Begin -- CPU CLOCK is %d MHz\n", CPU_CLOCK/1000000);
+ UHD_FW_TRACE(INFO, "[ZPU Initializing]");
+ UHD_FW_TRACE_FSTR(INFO, "-- Firmware Compat Number: %u.%u", (int)X300_FW_COMPAT_MAJOR, (int)X300_FW_COMPAT_MINOR);
+ uint32_t fpga_compat = wb_peek32(SR_ADDR(SET0_BASE, RB_FPGA_COMPAT));
+ UHD_FW_TRACE_FSTR(INFO, "-- FPGA Compat Number: %u.%u", (fpga_compat>>16), (fpga_compat&0xFFFF));
+ UHD_FW_TRACE_FSTR(INFO, "-- Clock Frequency: %u MHz", (CPU_CLOCK/1000000));
//i2c rate init
wb_i2c_init(I2C0_BASE, CPU_CLOCK);
@@ -139,30 +144,26 @@ void x300_init(void)
//hold phy in reset
wb_poke32(SR_ADDR(SET0_BASE, SR_SW_RST), SW_RST_PHY);
- printf("DEBUG: eth0 is %2dG\n",(wb_peek32(SR_ADDR(RB0_BASE, RB_ETH_TYPE0))==1) ? 10 : 1);
- printf("DEBUG: eth1 is %2dG\n",(wb_peek32(SR_ADDR(RB0_BASE, RB_ETH_TYPE1))==1) ? 10 : 1);
-
//setup net stack and eth state machines
init_network();
//phy reset release
wb_poke32(SR_ADDR(SET0_BASE, SR_SW_RST), 0);
- // For eth interfaces, initialize the PHY's
- mdelay(100);
- if (wb_peek32(SR_ADDR(RB0_BASE, RB_ETH_TYPE0)) == 1) {
- xge_ethernet_init(0);
- }
- if (wb_peek32(SR_ADDR(RB0_BASE, RB_ETH_TYPE1)) == 1) {
- xge_ethernet_init(1);
- }
-
//print network summary
for (uint8_t e = 0; e < ethernet_ninterfaces(); e++)
{
- printf(" MAC%u: %s\n", (int)e, mac_addr_to_str(u3_net_stack_get_mac_addr(e)));
- printf(" IP%u: %s\n", (int)e, ip_addr_to_str(u3_net_stack_get_ip_addr(e)));
- printf(" SUBNET%u: %s\n", (int)e, ip_addr_to_str(u3_net_stack_get_subnet(e)));
- printf(" BCAST%u: %s\n", (int)e, ip_addr_to_str(u3_net_stack_get_bcast(e)));
+ uint32_t offset = SR_ADDR(RB0_BASE, ((e==1)?RB_ETH_TYPE1:RB_ETH_TYPE0));
+ UHD_FW_TRACE_FSTR(INFO, "Ethernet Port %u:", (int)e);
+ UHD_FW_TRACE_FSTR(INFO, "-- PHY: %s", ((wb_peek32(offset)==1) ? "10Gbps" : "1Gbps"));
+ UHD_FW_TRACE_FSTR(INFO, "-- MAC: %s", mac_addr_to_str(u3_net_stack_get_mac_addr(e)));
+ UHD_FW_TRACE_FSTR(INFO, "-- IP: %s", ip_addr_to_str(u3_net_stack_get_ip_addr(e)));
+ UHD_FW_TRACE_FSTR(INFO, "-- SUBNET: %s", ip_addr_to_str(u3_net_stack_get_subnet(e)));
+ UHD_FW_TRACE_FSTR(INFO, "-- BCAST: %s", ip_addr_to_str(u3_net_stack_get_bcast(e)));
}
+
+ // For eth interfaces, initialize the PHY's
+ mdelay(100);
+ ethernet_init(0);
+ ethernet_init(1);
}
diff --git a/firmware/usrp3/x300/x300_main.c b/firmware/usrp3/x300/x300_main.c
index d865e1d09..3b812a2c4 100644
--- a/firmware/usrp3/x300/x300_main.c
+++ b/firmware/usrp3/x300/x300_main.c
@@ -13,7 +13,7 @@
#include <udp_uart.h>
#include <u3_net_stack.h>
#include <link_state_route_proto.h>
-#include <printf.h>
+#include <trace.h>
#include <string.h>
#include <print_addrs.h>
@@ -33,7 +33,7 @@ void program_udp_framer(
const eth_mac_addr_t *dst_mac = u3_net_stack_arp_cache_lookup(dst_ip);
const size_t ethbase = (ethno == 0)? SR_ETHINT0 : SR_ETHINT1;
const size_t vdest = (sid >> 16) & 0xff;
- printf("handle_udp_prog_framer sid %u vdest %u\n", sid, vdest);
+ UHD_FW_TRACE_FSTR(INFO, "handle_udp_prog_framer sid %u vdest %u\n", sid, vdest);
//setup source framer
const eth_mac_addr_t *src_mac = u3_net_stack_get_mac_addr(ethno);
@@ -204,7 +204,7 @@ void handle_udp_mtu_detect(
if (buff == NULL) {
return;
} else if (!(request->flags & X300_MTU_DETECT_ECHO_REQUEST)) {
- printf("DEBUG: MTU detect got unknown request\n");
+ UHD_FW_TRACE(WARN, "MTU detect got unknown request");
reply.flags |= X300_MTU_DETECT_ERROR;
}
@@ -445,12 +445,12 @@ int main(void)
static const uint32_t tick_delta = CPU_CLOCK/1000;
if (ticks_passed > tick_delta)
{
+ poll_sfpp_status(0); // Every so often poll XGE Phy to look for SFP+ hotplug events.
+ poll_sfpp_status(1); // Every so often poll XGE Phy to look for SFP+ hotplug events.
handle_link_state(); //deal with router table update
handle_claim(); //deal with the host claim register
update_leds(); //run the link and activity leds
garp(); //send periodic garps
- xge_poll_sfpp_status(0); // Every so often poll XGE Phy to look for SFP+ hotplug events.
- xge_poll_sfpp_status(1); // Every so often poll XGE Phy to look for SFP+ hotplug events.
last_cronjob = wb_peek32(SR_ADDR(RB0_BASE, RB_COUNTER));
}