diff options
author | Ashish Chaudhari <ashish@ettus.com> | 2016-01-06 10:03:29 -0800 |
---|---|---|
committer | Ashish Chaudhari <ashish@ettus.com> | 2016-01-06 10:03:29 -0800 |
commit | 04a4d6348bff100305bb7481d652c7170b8ff62c (patch) | |
tree | 1ad2dae096d3fd3682dab8c029e4aef0b70ecd81 /host/lib/usrp/n230/n230_resource_manager.cpp | |
parent | 81bbb57c06feaa05406ba86abc237a2e80841226 (diff) | |
download | uhd-04a4d6348bff100305bb7481d652c7170b8ff62c.tar.gz uhd-04a4d6348bff100305bb7481d652c7170b8ff62c.tar.bz2 uhd-04a4d6348bff100305bb7481d652c7170b8ff62c.zip |
n230: Fixed GPSDO detection logic
Diffstat (limited to 'host/lib/usrp/n230/n230_resource_manager.cpp')
-rw-r--r-- | host/lib/usrp/n230/n230_resource_manager.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/host/lib/usrp/n230/n230_resource_manager.cpp b/host/lib/usrp/n230/n230_resource_manager.cpp index fa55d0cd8..2a47c1615 100644 --- a/host/lib/usrp/n230/n230_resource_manager.cpp +++ b/host/lib/usrp/n230/n230_resource_manager.cpp @@ -192,23 +192,22 @@ n230_resource_manager::n230_resource_manager( _ms1_gpio->set_atr_mode(gpio_atr::MODE_GPIO,gpio_atr::gpio_atr_3000::MASK_SET_ALL); //Create GPSDO interface - const sid_t gps_uart_sid = _generate_sid(GPS_UART, _get_conn(PRI_ETH).type); - transport::zero_copy_if::sptr gps_uart_xport = - _create_transport(_get_conn(PRI_ETH), gps_uart_sid, device_addr_t(), dummy_out_params); - _gps_uart = n230_uart::make(gps_uart_xport, uhd::htonx(gps_uart_sid.get())); - _gps_uart->set_baud_divider(fpga::BUS_CLK_RATE/115200); - _gps_uart->write_uart("\n"); //cause the baud and response to be setup - boost::this_thread::sleep(boost::posix_time::seconds(1)); //allow for a little propagation - if ((_core_ctrl->peek32(fpga::RB_CORE_STATUS) & 0xff) != fpga::GPSDO_ST_NONE) - { + if (_core_status_reg.read(fpga::core_status_reg_t::GPSDO_STATUS) != fpga::GPSDO_ST_ABSENT) { UHD_MSG(status) << "Detecting GPSDO.... " << std::flush; try { + const sid_t gps_uart_sid = _generate_sid(GPS_UART, _get_conn(PRI_ETH).type); + transport::zero_copy_if::sptr gps_uart_xport = + _create_transport(_get_conn(PRI_ETH), gps_uart_sid, device_addr_t(), dummy_out_params); + _gps_uart = n230_uart::make(gps_uart_xport, uhd::htonx(gps_uart_sid.get())); + _gps_uart->set_baud_divider(fpga::BUS_CLK_RATE/fpga::GPSDO_UART_BAUDRATE); + _gps_uart->write_uart("\n"); //cause the baud and response to be setup + boost::this_thread::sleep(boost::posix_time::seconds(1)); //allow for a little propagation _gps_ctrl = gps_ctrl::make(_gps_uart); } catch(std::exception &e) { UHD_MSG(error) << "An error occurred making GPSDO control: " << e.what() << std::endl; } - if (not (_gps_ctrl and _gps_ctrl->gps_detected())) { - _core_ctrl->poke32(fpga::sr_addr(fpga::SR_CORE_GPSDO_ST), fpga::GPSDO_ST_NONE); + if (not is_gpsdo_present()) { + _core_ctrl->poke32(fpga::sr_addr(fpga::SR_CORE_GPSDO_ST), fpga::GPSDO_ST_ABSENT); } } |