1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
//
// Copyright 2010 Ettus Research LLC
// Copyright 2018 Ettus Research, a National Instruments Company
//
// SPDX-License-Identifier: GPL-3.0-or-later
//
#ifndef INCLUDED_USRP2_CLK_REGS_HPP
#define INCLUDED_USRP2_CLK_REGS_HPP
#include "usrp2_iface.hpp"
class usrp2_clk_regs_t
{
public:
usrp2_clk_regs_t(void)
: test(0), fpga(0), adc(0), dac(0), serdes(0), exp(0), tx_db(0), rx_db(0)
{
}
usrp2_clk_regs_t(usrp2_iface::rev_type rev)
{
fpga = adc = serdes = exp = tx_db = 0;
test = 0;
fpga = 1;
dac = 3;
switch (rev) {
case usrp2_iface::USRP2_REV3:
exp = 2;
adc = 4;
serdes = 2;
tx_db = 6;
break;
case usrp2_iface::USRP2_REV4:
exp = 5;
adc = 4;
serdes = 2;
tx_db = 6;
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;
tx_db = 5;
break;
case usrp2_iface::USRP_NXXX:
// dont throw, it may be unitialized
break;
}
rx_db = 7;
}
static int output(int clknum)
{
return 0x3C clknum;
}
static int div_lo(int clknum)
{
return 0x48 2 * clknum;
}
static int div_hi(int clknum)
{
return 0x49 2 * clknum;
}
const static int acounter = 0x04;
const static int bcounter_msb = 0x05;
const static int bcounter_lsb = 0x06;
const static int pll_1 = 0x07;
const static int pll_2 = 0x08;
const static int pll_3 = 0x09;
const static int pll_4 = 0x0A;
const static int ref_counter_msb = 0x0B;
const static int ref_counter_lsb = 0x0C;
const static int pll_5 = 0x0D;
const static int update = 0x5A;
int test;
int fpga;
int adc;
int dac;
int serdes;
int exp;
int tx_db;
int rx_db;
};
#endif // INCLUDED_USRP2_CLK_REGS_HPP
|