Revision af0543a8 host/lib/usrp/usrp1/dboard_iface.cpp
| b/host/lib/usrp/usrp1/dboard_iface.cpp | ||
|---|---|---|
| 49 | 49 |
_codec = codec; |
| 50 | 50 |
|
| 51 | 51 |
//init the clock rate shadows |
| 52 |
this->set_clock_rate(UNIT_RX, _clock->get_master_clock_freq());
|
|
| 53 |
this->set_clock_rate(UNIT_TX, _clock->get_master_clock_freq());
|
|
| 52 |
this->set_clock_rate(UNIT_RX, this->get_clock_rates(UNIT_RX).front());
|
|
| 53 |
this->set_clock_rate(UNIT_TX, this->get_clock_rates(UNIT_TX).front());
|
|
| 54 | 54 |
} |
| 55 | 55 |
|
| 56 | 56 |
~usrp1_dboard_iface() |
| ... | ... | |
| 134 | 134 |
_clock_rates[unit] = rate; |
| 135 | 135 |
|
| 136 | 136 |
if (unit == UNIT_RX && _rx_dboard_id == dbsrx_classic_id){
|
| 137 |
size_t divider = size_t(rate/_clock->get_master_clock_freq());
|
|
| 137 |
size_t divider = size_t(_clock->get_master_clock_freq()/rate);
|
|
| 138 | 138 |
switch(_dboard_slot){
|
| 139 | 139 |
case usrp1_impl::DBOARD_SLOT_A: |
| 140 |
_iface->poke32(FR_RX_A_REFCLK, (divider & 0x7f) | 0x80); |
|
| 140 |
_iface->poke32(FR_RX_A_REFCLK, (2*divider & 0x7f) | 0x80);
|
|
| 141 | 141 |
break; |
| 142 | 142 |
|
| 143 | 143 |
case usrp1_impl::DBOARD_SLOT_B: |
| 144 |
_iface->poke32(FR_RX_B_REFCLK, (divider & 0x7f) | 0x80); |
|
| 144 |
_iface->poke32(FR_RX_B_REFCLK, (2*divider & 0x7f) | 0x80);
|
|
| 145 | 145 |
break; |
| 146 | 146 |
} |
| 147 | 147 |
} |
| ... | ... | |
| 151 | 151 |
{
|
| 152 | 152 |
std::vector<double> rates; |
| 153 | 153 |
if (unit == UNIT_RX && _rx_dboard_id == dbsrx_classic_id){
|
| 154 |
for (size_t div = 1; div <= 127; div++)
|
|
| 154 |
for (size_t div = 8; div <= 127; div++)
|
|
| 155 | 155 |
rates.push_back(_clock->get_master_clock_freq() / div); |
| 156 | 156 |
} |
| 157 | 157 |
else{
|
Also available in: Unified diff