fix(build): automatically applying UHD TDD patch for LTE
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
This commit is contained in:
@@ -346,11 +346,31 @@ install_usrp_uhd_driver_from_source(){
|
||||
rm -rf /tmp/uhd
|
||||
git clone https://github.com/EttusResearch/uhd.git
|
||||
cd uhd
|
||||
# For our legacy TDD eNB running with a B2xx RF board
|
||||
# the following patch has to be applied
|
||||
if [[ -v UHD_VERSION ]]; then
|
||||
git checkout tags/v${UHD_VERSION}
|
||||
# We recommend to use not older than 3.15.0.0
|
||||
if [[ "$UHD_VERSION" == "3.15.0.0" ]]; then
|
||||
# Tested that patch for the following versions:
|
||||
# - 3.15.0.0
|
||||
git apply $OPENAIR_DIR/cmake_targets/tools/uhd-3.15-tdd-patch.diff
|
||||
else
|
||||
# Tested that patch for the following versions:
|
||||
# - 4.0.0.0
|
||||
# - 4.1.0.0
|
||||
# - 4.1.0.5
|
||||
# - 4.2.0.0
|
||||
# - 4.2.0.1
|
||||
# - 4.3.0.0-rc1
|
||||
git apply $OPENAIR_DIR/cmake_targets/tools/uhd-4.x-tdd-patch.diff
|
||||
fi
|
||||
else
|
||||
git checkout tags/v4.0.0.0
|
||||
git apply $OPENAIR_DIR/cmake_targets/tools/uhd-4.x-tdd-patch.diff
|
||||
fi
|
||||
# Printing out the results of the patch to make sure it was properly applied
|
||||
git diff
|
||||
mkdir -p host/build
|
||||
cd host/build || true
|
||||
$CMAKE ../ -GNinja
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp
|
||||
index 1be8c263b..f64546914 100644
|
||||
--- a/host/lib/usrp/b200/b200_impl.cpp
|
||||
+++ b/host/lib/usrp/b200/b200_impl.cpp
|
||||
@@ -1269,10 +1269,10 @@ void b200_impl::update_atrs(void)
|
||||
if (enb_rx and not enb_tx) fd = rxonly;
|
||||
if (not enb_rx and enb_tx) fd = txonly;
|
||||
gpio_atr_3000::sptr atr = perif.atr;
|
||||
- atr->set_atr_reg(ATR_REG_IDLE, STATE_OFF);
|
||||
- atr->set_atr_reg(ATR_REG_RX_ONLY, rxonly);
|
||||
- atr->set_atr_reg(ATR_REG_TX_ONLY, txonly);
|
||||
- atr->set_atr_reg(ATR_REG_FULL_DUPLEX, fd);
|
||||
+ atr->set_atr_reg(ATR_REG_IDLE, STATE_OFF | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_RX_ONLY, rxonly | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_TX_ONLY, txonly | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_FULL_DUPLEX, fd | (1<<7));
|
||||
}
|
||||
if (_radio_perifs.size() > _fe2 and _radio_perifs[_fe2].atr)
|
||||
{
|
||||
@@ -1287,10 +1287,10 @@ void b200_impl::update_atrs(void)
|
||||
if (enb_rx and not enb_tx) fd = rxonly;
|
||||
if (not enb_rx and enb_tx) fd = txonly;
|
||||
gpio_atr_3000::sptr atr = perif.atr;
|
||||
- atr->set_atr_reg(ATR_REG_IDLE, STATE_OFF);
|
||||
- atr->set_atr_reg(ATR_REG_RX_ONLY, rxonly);
|
||||
- atr->set_atr_reg(ATR_REG_TX_ONLY, txonly);
|
||||
- atr->set_atr_reg(ATR_REG_FULL_DUPLEX, fd);
|
||||
+ atr->set_atr_reg(ATR_REG_IDLE, STATE_OFF | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_RX_ONLY, rxonly | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_TX_ONLY, txonly | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_FULL_DUPLEX, fd | (1<<7));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp
|
||||
index 6de161e87..432af5784 100644
|
||||
--- a/host/lib/usrp/b200/b200_impl.cpp
|
||||
+++ b/host/lib/usrp/b200/b200_impl.cpp
|
||||
@@ -1410,10 +1410,10 @@ void b200_impl::update_atrs(void)
|
||||
if (not enb_rx and enb_tx)
|
||||
fd = txonly;
|
||||
gpio_atr_3000::sptr atr = perif.atr;
|
||||
- atr->set_atr_reg(ATR_REG_IDLE, STATE_OFF);
|
||||
- atr->set_atr_reg(ATR_REG_RX_ONLY, rxonly);
|
||||
- atr->set_atr_reg(ATR_REG_TX_ONLY, txonly);
|
||||
- atr->set_atr_reg(ATR_REG_FULL_DUPLEX, fd);
|
||||
+ atr->set_atr_reg(ATR_REG_IDLE, STATE_OFF | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_RX_ONLY, rxonly | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_TX_ONLY, txonly | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_FULL_DUPLEX, fd | (1<<7));
|
||||
}
|
||||
if (_radio_perifs.size() > _fe2 and _radio_perifs[_fe2].atr) {
|
||||
radio_perifs_t& perif = _radio_perifs[_fe2];
|
||||
@@ -1431,10 +1431,10 @@ void b200_impl::update_atrs(void)
|
||||
if (not enb_rx and enb_tx)
|
||||
fd = txonly;
|
||||
gpio_atr_3000::sptr atr = perif.atr;
|
||||
- atr->set_atr_reg(ATR_REG_IDLE, STATE_OFF);
|
||||
- atr->set_atr_reg(ATR_REG_RX_ONLY, rxonly);
|
||||
- atr->set_atr_reg(ATR_REG_TX_ONLY, txonly);
|
||||
- atr->set_atr_reg(ATR_REG_FULL_DUPLEX, fd);
|
||||
+ atr->set_atr_reg(ATR_REG_IDLE, STATE_OFF | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_RX_ONLY, rxonly | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_TX_ONLY, txonly | (1<<7));
|
||||
+ atr->set_atr_reg(ATR_REG_FULL_DUPLEX, fd | (1<<7));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user