diff options
| author | Nick Foster <nick@ettus.com> | 2011-05-18 20:19:03 -0700 | 
|---|---|---|
| committer | Nick Foster <nick@ettus.com> | 2011-05-18 20:19:03 -0700 | 
| commit | 21856ee1ba8fb755bf94a0c70c76287f4998b6bf (patch) | |
| tree | a4794095ed691516be3cfd112a54845008a8d271 | |
| parent | df020c6923aae830a20a2405c9de086b22e7c5f0 (diff) | |
| download | uhd-21856ee1ba8fb755bf94a0c70c76287f4998b6bf.tar.gz uhd-21856ee1ba8fb755bf94a0c70c76287f4998b6bf.tar.bz2 uhd-21856ee1ba8fb755bf94a0c70c76287f4998b6bf.zip | |
N210: changes for rev 4 support
| -rw-r--r-- | host/lib/usrp/usrp2/clock_ctrl.cpp | 22 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/codec_ctrl.cpp | 24 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/codec_impl.cpp | 2 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/mboard_impl.cpp | 4 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/usrp2_clk_regs.hpp | 2 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/usrp2_iface.cpp | 4 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/usrp2_iface.hpp | 2 | 
7 files changed, 55 insertions, 5 deletions
| diff --git a/host/lib/usrp/usrp2/clock_ctrl.cpp b/host/lib/usrp/usrp2/clock_ctrl.cpp index 7572ed6b1..f1fdfb7cf 100644 --- a/host/lib/usrp/usrp2/clock_ctrl.cpp +++ b/host/lib/usrp/usrp2/clock_ctrl.cpp @@ -136,11 +136,23 @@ public:      //uses output clock 7 (cmos)      void enable_rx_dboard_clock(bool enb){ -        _ad9510_regs.power_down_lvds_cmos_out7 = enb? 0 : 1; -        _ad9510_regs.lvds_cmos_select_out7 = ad9510_regs_t::LVDS_CMOS_SELECT_OUT7_CMOS; -        _ad9510_regs.output_level_lvds_out7 = ad9510_regs_t::OUTPUT_LEVEL_LVDS_OUT7_1_75MA; -        this->write_reg(clk_regs.output(clk_regs.rx_db)); -        this->update_regs(); +        switch(_iface->get_rev()) { +            case usrp2_iface::USRP_N200_R4: +            case usrp2_iface::USRP_N210_R4: +                _ad9510_regs.power_down_lvds_cmos_out7 = enb? 0 : 1; +                _ad9510_regs.lvds_cmos_select_out7 = ad9510_regs_t::LVDS_CMOS_SELECT_OUT7_LVDS; +                _ad9510_regs.output_level_lvds_out7 = ad9510_regs_t::OUTPUT_LEVEL_LVDS_OUT7_1_75MA; +                this->write_reg(clk_regs.output(clk_regs.rx_db)); +                this->update_regs(); +                break; +            default: +                _ad9510_regs.power_down_lvds_cmos_out7 = enb? 0 : 1; +                _ad9510_regs.lvds_cmos_select_out7 = ad9510_regs_t::LVDS_CMOS_SELECT_OUT7_CMOS; +                _ad9510_regs.output_level_lvds_out7 = ad9510_regs_t::OUTPUT_LEVEL_LVDS_OUT7_1_75MA; +                this->write_reg(clk_regs.output(clk_regs.rx_db)); +                this->update_regs(); +                break; +        }      }      void set_rate_rx_dboard_clock(double rate){ diff --git a/host/lib/usrp/usrp2/codec_ctrl.cpp b/host/lib/usrp/usrp2/codec_ctrl.cpp index b32a9f256..047195390 100644 --- a/host/lib/usrp/usrp2/codec_ctrl.cpp +++ b/host/lib/usrp/usrp2/codec_ctrl.cpp @@ -75,6 +75,22 @@ public:              this->set_rx_analog_gain(1);              break; +        case usrp2_iface::USRP_N200_R4: +        case usrp2_iface::USRP_N210_R4: +            _ads62p44_regs.reset = 1; +            this->send_ads62p44_reg(0x00); //issue a reset to the ADC +            //everything else should be pretty much default, i think +            //_ads62p44_regs.decimation = DECIMATION_DECIMATE_1; +            _ads62p44_regs.override = 1; +            this->send_ads62p44_reg(0x14); +            _ads62p44_regs.power_down = ads62p44_regs_t::POWER_DOWN_NORMAL; +            _ads62p44_regs.output_interface = ads62p44_regs_t::OUTPUT_INTERFACE_LVDS; +            _ads62p44_regs.lvds_current = ads62p44_regs_t::LVDS_CURRENT_2_5MA; +            this->send_ads62p44_reg(0x11); +            this->send_ads62p44_reg(0x14); +            this->set_rx_analog_gain(1); +            break; +          case usrp2_iface::USRP_NXXX: break;          }      } @@ -93,6 +109,8 @@ public:          case usrp2_iface::USRP_N200:          case usrp2_iface::USRP_N210: +        case usrp2_iface::USRP_N200_R4: +        case usrp2_iface::USRP_N210_R4:              //send a global power-down to the ADC here... it will get lifted on reset              _ads62p44_regs.power_down = ads62p44_regs_t::POWER_DOWN_GLOBAL_PD;              this->send_ads62p44_reg(0x14); @@ -126,6 +144,8 @@ public:          switch(_iface->get_rev()){          case usrp2_iface::USRP_N200:          case usrp2_iface::USRP_N210: +        case usrp2_iface::USRP_N200_R4: +        case usrp2_iface::USRP_N210_R4:              _ads62p44_regs.fine_gain = int(gain/0.5);              this->send_ads62p44_reg(0x17);              break; @@ -138,6 +158,8 @@ public:          switch(_iface->get_rev()){          case usrp2_iface::USRP_N200:          case usrp2_iface::USRP_N210: +        case usrp2_iface::USRP_N200_R4: +        case usrp2_iface::USRP_N210_R4:              _ads62p44_regs.gain_correction = int(gain / 0.05);              this->send_ads62p44_reg(0x1A);              break; @@ -150,6 +172,8 @@ public:          switch(_iface->get_rev()){          case usrp2_iface::USRP_N200:          case usrp2_iface::USRP_N210: +        case usrp2_iface::USRP_N200_R4: +        case usrp2_iface::USRP_N210_R4:              _ads62p44_regs.coarse_gain = ads62p44_regs_t::COARSE_GAIN_3_5DB;//gain ? ads62p44_regs_t::COARSE_GAIN_3_5DB : ads62p44_regs_t::COARSE_GAIN_0DB;              this->send_ads62p44_reg(0x14);              break; diff --git a/host/lib/usrp/usrp2/codec_impl.cpp b/host/lib/usrp/usrp2/codec_impl.cpp index 50320773f..26da42759 100644 --- a/host/lib/usrp/usrp2/codec_impl.cpp +++ b/host/lib/usrp/usrp2/codec_impl.cpp @@ -67,6 +67,8 @@ void usrp2_mboard_impl::rx_codec_get(const wax::obj &key_, wax::obj &val){          switch(_iface->get_rev()){          case usrp2_iface::USRP_N200:          case usrp2_iface::USRP_N210: +        case usrp2_iface::USRP_N200_R4: +        case usrp2_iface::USRP_N210_R4:              val = _iface->get_cname() + " adc - ads62p44";              break; diff --git a/host/lib/usrp/usrp2/mboard_impl.cpp b/host/lib/usrp/usrp2/mboard_impl.cpp index 2885e57e4..16fbce4bd 100644 --- a/host/lib/usrp/usrp2/mboard_impl.cpp +++ b/host/lib/usrp/usrp2/mboard_impl.cpp @@ -231,6 +231,8 @@ void usrp2_mboard_impl::update_clock_config(void){      switch(_iface->get_rev()){      case usrp2_iface::USRP_N200:      case usrp2_iface::USRP_N210: +    case usrp2_iface::USRP_N200_R4: +    case usrp2_iface::USRP_N210_R4:          switch(_clock_config.ref_source){          case clock_config_t::REF_INT : _iface->poke32(U2_REG_MISC_CTRL_CLOCK, 0x12); break;          case clock_config_t::REF_SMA : _iface->poke32(U2_REG_MISC_CTRL_CLOCK, 0x1C); break; @@ -262,6 +264,8 @@ void usrp2_mboard_impl::update_clock_config(void){          switch(_iface->get_rev()){          case usrp2_iface::USRP_N200:          case usrp2_iface::USRP_N210: +        case usrp2_iface::USRP_N200_R4: +        case usrp2_iface::USRP_N210_R4:              _clock_ctrl->set_mimo_clock_delay(mimo_clock_delay_usrp_n2xx);              break; diff --git a/host/lib/usrp/usrp2/usrp2_clk_regs.hpp b/host/lib/usrp/usrp2/usrp2_clk_regs.hpp index 6c46d0a35..8b185eac0 100644 --- a/host/lib/usrp/usrp2/usrp2_clk_regs.hpp +++ b/host/lib/usrp/usrp2/usrp2_clk_regs.hpp @@ -43,6 +43,8 @@ public:          break;      case usrp2_iface::USRP_N200:      case usrp2_iface::USRP_N210: +    case usrp2_iface::USRP_N200_R4: +    case usrp2_iface::USRP_N210_R4:          exp = 6;          adc = 2;          serdes = 4; diff --git a/host/lib/usrp/usrp2/usrp2_iface.cpp b/host/lib/usrp/usrp2/usrp2_iface.cpp index 5e197d1f9..bf7fe803f 100644 --- a/host/lib/usrp/usrp2/usrp2_iface.cpp +++ b/host/lib/usrp/usrp2/usrp2_iface.cpp @@ -363,6 +363,8 @@ public:          case 0x0400: return USRP2_REV4;          case 0x0A00: return USRP_N200;          case 0x0A01: return USRP_N210; +        case 0x0A10: return USRP_N200_R4; +        case 0x0A11: return USRP_N210_R4;          }          return USRP_NXXX; //unknown type      } @@ -373,6 +375,8 @@ public:          case USRP2_REV4: return "USRP2-REV4";          case USRP_N200: return "USRP-N200";          case USRP_N210: return "USRP-N210"; +        case USRP_N200_R4: return "USRP-N200-REV4"; +        case USRP_N210_R4: return "USRP-N210-REV4";          case USRP_NXXX: return "USRP-N???";          }          UHD_THROW_INVALID_CODE_PATH(); diff --git a/host/lib/usrp/usrp2/usrp2_iface.hpp b/host/lib/usrp/usrp2/usrp2_iface.hpp index f2b8a1e29..16b640a70 100644 --- a/host/lib/usrp/usrp2/usrp2_iface.hpp +++ b/host/lib/usrp/usrp2/usrp2_iface.hpp @@ -56,7 +56,9 @@ public:          USRP2_REV3 = 3,          USRP2_REV4 = 4,          USRP_N200 = 200, +        USRP_N200_R4 = 201,          USRP_N210 = 210, +        USRP_N210_R4 = 211,          USRP_NXXX = 0      }; | 
