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