diff options
| -rw-r--r-- | host/lib/usrp/dboard/db_wbx_version3.cpp | 53 | 
1 files changed, 37 insertions, 16 deletions
| diff --git a/host/lib/usrp/dboard/db_wbx_version3.cpp b/host/lib/usrp/dboard/db_wbx_version3.cpp index 2cca8e4f9..7ef47edd4 100644 --- a/host/lib/usrp/dboard/db_wbx_version3.cpp +++ b/host/lib/usrp/dboard/db_wbx_version3.cpp @@ -114,22 +114,43 @@ wbx_base::wbx_version3::wbx_version3(wbx_base *_self_wbx_base) {      int v3_tx_mod = ADF4350_PDBRF;      //set the gpio directions and atr controls -    self_base->get_iface()->set_pin_ctrl(dboard_iface::UNIT_TX, v3_tx_mod|v3_iobits); -    self_base->get_iface()->set_pin_ctrl(dboard_iface::UNIT_RX, RXBB_PDB|ADF4350_PDBRF); -    self_base->get_iface()->set_gpio_ddr(dboard_iface::UNIT_TX, TX_PUP_5V|TX_PUP_3V|v3_tx_mod|v3_iobits); -    self_base->get_iface()->set_gpio_ddr(dboard_iface::UNIT_RX, RX_PUP_5V|RX_PUP_3V|ADF4350_CE|RXBB_PDB|ADF4350_PDBRF|RX_ATTN_MASK); - -    //setup ATR for the mixer enables (always enabled to prevent phase slip between bursts) -    //set TX gain iobits to min gain (max attenuation) when RX_ONLY or IDLE to suppress LO leakage -    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, dboard_iface::ATR_REG_IDLE,        v3_tx_mod, TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); -    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, dboard_iface::ATR_REG_RX_ONLY,     v3_tx_mod, TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); -    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, dboard_iface::ATR_REG_TX_ONLY,     v3_tx_mod, TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); -    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, dboard_iface::ATR_REG_FULL_DUPLEX, v3_tx_mod, TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); - -    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, dboard_iface::ATR_REG_IDLE,        RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); -    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, dboard_iface::ATR_REG_TX_ONLY,     RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); -    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, dboard_iface::ATR_REG_RX_ONLY,     RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); -    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, dboard_iface::ATR_REG_FULL_DUPLEX, RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); +    self_base->get_iface()->set_pin_ctrl(dboard_iface::UNIT_TX, \ +            v3_tx_mod|v3_iobits); +    self_base->get_iface()->set_pin_ctrl(dboard_iface::UNIT_RX, \ +            RXBB_PDB|ADF4350_PDBRF); +    self_base->get_iface()->set_gpio_ddr(dboard_iface::UNIT_TX, \ +            TX_PUP_5V|TX_PUP_3V|v3_tx_mod|v3_iobits); +    self_base->get_iface()->set_gpio_ddr(dboard_iface::UNIT_RX, \ +            RX_PUP_5V|RX_PUP_3V|ADF4350_CE|RXBB_PDB|ADF4350_PDBRF|RX_ATTN_MASK); + +    //setup ATR for the mixer enables (always enabled to prevent phase +    //slip between bursts).  set TX gain iobits to min gain (max attenuation) +    //when RX_ONLY or IDLE to suppress LO leakage +    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, \ +            dboard_iface::ATR_REG_IDLE, v3_tx_mod, \ +            TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); +    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, \ +            dboard_iface::ATR_REG_RX_ONLY, v3_tx_mod, \ +            TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); +    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, \ +            dboard_iface::ATR_REG_TX_ONLY, v3_tx_mod, \ +            TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); +    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_TX, \ +            dboard_iface::ATR_REG_FULL_DUPLEX, v3_tx_mod, \ +            TX_ATTN_MASK | TX_MIXER_DIS | v3_tx_mod); + +    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, \ +            dboard_iface::ATR_REG_IDLE, \ +            RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); +    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, \ +            dboard_iface::ATR_REG_TX_ONLY, \ +            RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); +    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, \ +            dboard_iface::ATR_REG_RX_ONLY, \ +            RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB); +    self_base->get_iface()->set_atr_reg(dboard_iface::UNIT_RX, \ +            dboard_iface::ATR_REG_FULL_DUPLEX, \ +            RX_MIXER_ENB, RX_MIXER_DIS | RX_MIXER_ENB);  }  wbx_base::wbx_version3::~wbx_version3(void){ | 
