summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2013-03-14 17:48:34 -0700
committerJosh Blum <josh@joshknows.com>2013-03-25 16:05:41 -0700
commitee3082224f579da63b33f44f5275288032aac774 (patch)
tree8a780cb65ac80c4c0ed7ac3e88127c742d54e303
parentc5223d192205f729b316197c83fc69eb67b6ee45 (diff)
downloaduhd-ee3082224f579da63b33f44f5275288032aac774.tar.gz
uhd-ee3082224f579da63b33f44f5275288032aac774.tar.bz2
uhd-ee3082224f579da63b33f44f5275288032aac774.zip
e100: switch to fixed length xfers
-rw-r--r--host/lib/usrp/e100/e100_ctrl.cpp22
-rw-r--r--host/lib/usrp/e100/e100_impl.cpp6
-rw-r--r--host/lib/usrp/e100/e100_mmap_zero_copy.cpp2
-rw-r--r--host/lib/usrp/e100/io_impl.cpp2
4 files changed, 18 insertions, 14 deletions
diff --git a/host/lib/usrp/e100/e100_ctrl.cpp b/host/lib/usrp/e100/e100_ctrl.cpp
index 5a9b93633..c9c86c8af 100644
--- a/host/lib/usrp/e100/e100_ctrl.cpp
+++ b/host/lib/usrp/e100/e100_ctrl.cpp
@@ -87,7 +87,12 @@ public:
spi_sclk_gpio(65, "out"),
spi_sen_gpio(186, "out"),
spi_mosi_gpio(145, "out"),
- spi_miso_gpio(147, "in"){}
+ spi_miso_gpio(147, "in")
+ {
+ this->spi_sen_gpio(1); //not selected
+ this->spi_sclk_gpio(0); //into reset
+ this->spi_sclk_gpio(1); //out of reset
+ }
boost::uint32_t transact_spi(
int, const spi_config_t &, //not used params
@@ -290,9 +295,11 @@ struct e100_simpl_msb : managed_send_buffer
void release(void)
{
+ const size_t max_words32 = 8; //.LAST_ADDR(10'h00f)) resp_fifo_to_gpmc
+
//load the data struct
data.offset = 0;
- data.count = size()/4+1/*1 for header offset*/;
+ data.count = max_words32;
//call the ioctl
ctrl->ioctl(USRP_E_WRITE_CTL32, &data);
@@ -300,7 +307,7 @@ struct e100_simpl_msb : managed_send_buffer
sptr get_new(void)
{
- return make(this, data.buf+1, sizeof(data.buf)-4);
+ return make(this, data.buf, sizeof(data.buf));
}
};
@@ -334,15 +341,6 @@ public:
) % USRP_E_COMPAT_NUMBER % module_compat_num));
}
- //hit the magic arst condition
- //async_reset <= ~EM_NCS6 && ~EM_NWE && (EM_A[9:2] == 8'hff) && EM_D[0];
- usrp_e_ctl16 datax;
- datax.offset = 0x3fc;
- datax.count = 2;
- datax.buf[0] = 1;
- datax.buf[1] = 0;
- this->ioctl(USRP_E_WRITE_CTL16, &datax);
-
std::ofstream edge_file("/sys/class/gpio/gpio147/edge");
edge_file << "rising" << std::endl << std::flush;
edge_file.close();
diff --git a/host/lib/usrp/e100/e100_impl.cpp b/host/lib/usrp/e100/e100_impl.cpp
index a0fa6c47e..619ea8f8e 100644
--- a/host/lib/usrp/e100/e100_impl.cpp
+++ b/host/lib/usrp/e100/e100_impl.cpp
@@ -534,6 +534,12 @@ void e100_impl::check_fpga_compat(void){
"The FPGA build is not compatible with the host code build."
) % int(E100_FPGA_COMPAT_NUM) % fpga_major));
}
+ if (fpga_minor < 2){
+ throw uhd::runtime_error(str(boost::format(
+ "Expected FPGA compatibility minor number at least %d, but got %d:\n"
+ "The FPGA build is not compatible with the host code build."
+ ) % int(2) % fpga_minor));
+ }
_tree->create<std::string>("/mboards/0/fpga_version").set(str(boost::format("%u.%u") % fpga_major % fpga_minor));
}
diff --git a/host/lib/usrp/e100/e100_mmap_zero_copy.cpp b/host/lib/usrp/e100/e100_mmap_zero_copy.cpp
index 58beeb424..57e4e32d9 100644
--- a/host/lib/usrp/e100/e100_mmap_zero_copy.cpp
+++ b/host/lib/usrp/e100/e100_mmap_zero_copy.cpp
@@ -70,7 +70,7 @@ public:
void release(void){
if (fp_verbose) UHD_LOGV(always) << "send buff: commit " << size() << std::endl;
- _info->len = size();
+ _info->len = _len;//size();
_info->flags = RB_USER; //release the frame
if (::write(_fd, NULL, 0) < 0){ //notifies the kernel
UHD_LOGV(rarely) << UHD_THROW_SITE_INFO("write error") << std::endl;
diff --git a/host/lib/usrp/e100/io_impl.cpp b/host/lib/usrp/e100/io_impl.cpp
index 4d521e222..e34620444 100644
--- a/host/lib/usrp/e100/io_impl.cpp
+++ b/host/lib/usrp/e100/io_impl.cpp
@@ -31,7 +31,7 @@ using namespace uhd;
using namespace uhd::usrp;
using namespace uhd::transport;
-static const size_t vrt_send_header_offset_words32 = 1;
+static const size_t vrt_send_header_offset_words32 = 0;
void e100_impl::update_tick_rate(const double rate){