• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

roclib/src_nxyter/MainAdc.cxx (r4864/r4162)

Go to the documentation of this file.
00001 //============================================================================
00007 //============================================================================
00008 
00009 #include "nxyter/MainAdc.h"
00010 
00011 #include <stdio.h>
00012 
00013 #include "roc/defines_roc.h"
00014 #include "roc/defines_spi.h"
00015 #include "nxyter/defines_nxyter.h"
00016 
00017 
00027 //----------------------------------------------------------------------------
00029 nxyter::MainAdc::MainAdc() :
00030   base::Peripheral(),
00031   fUseSPI(false),
00032   fPort(0),
00033   fMode4nx(0)
00034 {
00035 }
00036 
00037 
00038 //----------------------------------------------------------------------------
00040 
00054 nxyter::MainAdc::MainAdc(base::Board* board, int port, bool mode4nx) :
00055   base::Peripheral(board),
00056   fUseSPI(false),
00057   fPort(port),
00058   fMode4nx(mode4nx)
00059 {
00060    // we are not using I2C, but just check that SPI interface should be used for communication
00061    if (board->is_SPI_I2C()) fUseSPI = true;
00062 }
00063 
00064 //----------------------------------------------------------------------------
00065 
00066 nxyter::MainAdc::~MainAdc()
00067 {
00068 }
00069 
00070 //----------------------------------------------------------------------------
00072 
00084 int nxyter::MainAdc::setRegister(uint8_t reg, uint8_t val, bool veri)
00085 {
00086    bool isput[6];
00087    uint32_t addr[6];
00088    uint32_t data[6];
00089    int rc;
00090 
00091 
00092    if (isSPI()) {
00093 
00094       isput[0] = true;   addr[0] = ROC_SPI_COMMAND;        data[0] = 0x20;
00095       // FIXME: should we use fSlaveAddr instead of 0x8 << 16 ???
00096       isput[1] = true;   addr[1] = ROC_SPI_TXDATA;         data[1] = (0x12 << 24) | (0x00 << 16) | (reg << 8) | val;
00097       isput[2] = true;   addr[2] = ROC_SPI_TRANSMIT;       data[2] = 0x1;
00098       isput[3] = false;  addr[3] = ROC_SPI_RXDATA;         data[3] = 0x0;
00099       isput[4] = false;  addr[4] = ROC_SPI_MASTER_STATUS;  data[4] = 0x0;
00100 
00101       int nop = 5;
00102 
00103       rc = board().operGen(isput, addr, data, nop);
00104 
00105       if (rc==0) {
00106          if ((data[3] & 0xff00) != 0x2000) {
00107             printf("nxyter::MainAdc::setRegister: SPI RXDATA error\n");
00108             rc = base::Board::operErrBuild(base::Board::kOperBusErr, 0);
00109          }
00110 
00111          if ((data[4] & 1) != 1) {
00112             printf("nxyter::MainAdc::setRegister: SPI MASTER STATUS CRC-error\n");
00113             rc = base::Board::operErrBuild(base::Board::kOperBusErr, 0);
00114          }
00115       }
00116 
00117    } else {
00118       // determine interface addresses depending on port
00119       int adc_addr = (fPort==CON19) ? ROC_NX_ADC_ADDR   : ROC_NX_ADC_ADDR2;
00120       int adc_put  = (fPort==CON19) ? ROC_NX_ADC_REG    : ROC_NX_ADC_REG2;
00121       int adc_get  = (fPort==CON19) ? ROC_NX_ADC_ANSWER : ROC_NX_ADC_ANSWER2;
00122 
00123       isput[0] = true;  addr[0] = adc_addr;  data[0] = reg;
00124       isput[1] = true;  addr[1] = adc_put;   data[1] = val;
00125       isput[2] = true;  addr[2] = adc_addr;  data[2] = 255;
00126       isput[3] = true;  addr[3] = adc_put;   data[3] =   1;
00127       isput[4] = true;  addr[4] = adc_addr;  data[4] = reg;
00128       isput[5] = false; addr[5] = adc_get;
00129 
00130       int nop = veri ? 6 : 4;
00131 
00132       rc = board().operGen(isput, addr, data, nop);
00133       if (veri) {
00134          if (rc == 0 && val != (data[5]&0xff)) { // check readback value
00135             rc = base::Board::kOperVerifyErr;
00136          }
00137       }
00138    }
00139 
00140    return rc;
00141 }
00142 
00143 //----------------------------------------------------------------------------
00145 
00155 int nxyter::MainAdc::getRegister(uint8_t reg, uint8_t& val)
00156 {
00157    int rc;
00158 
00159    if (isSPI()) {
00160       bool isput[5];
00161       uint32_t addr[5];
00162       uint32_t data[5];
00163 
00164       isput[0] = true;   addr[0] = ROC_SPI_COMMAND;        data[0] = 0x30;
00165       // FIXME: should we use fSlaveAddr instead of 0x8 << 16 ???
00166       isput[1] = true;   addr[1] = ROC_SPI_TXDATA;         data[1] = (0x13 << 24) | (0x80 << 16) | (reg << 8) | 0;
00167       isput[2] = true;   addr[2] = ROC_SPI_TRANSMIT;       data[2] = 0x1;
00168       isput[3] = false;  addr[3] = ROC_SPI_RXDATA;         data[3] = 0x0;
00169       isput[4] = false;  addr[4] = ROC_SPI_MASTER_STATUS;  data[4] = 0x0;
00170 
00171       int nop = 5;
00172 
00173       rc = board().operGen(isput, addr, data, nop);
00174 
00175       if (rc==0) {
00176 
00177          val = data[3] & 0xff;
00178 
00179          if ((data[3] & 0xff00) != 0x3000) {
00180             printf("nxyter::MainAdc::getRegister: SPI RXDATA error\n");
00181             rc = base::Board::operErrBuild(base::Board::kOperBusErr, 0);
00182          }
00183 
00184          if ((data[4] & 1) != 1) {
00185             printf("nxyter::MainAdc::getRegister: SPI MASTER STATUS CRC-error\n");
00186             rc = base::Board::operErrBuild(base::Board::kOperBusErr, 0);
00187          }
00188       }
00189 
00190    } else {
00191 
00192       uint32_t data;
00193 
00194       // determine interface addresses depending on port
00195       int adc_addr = (fPort==CON19) ? ROC_NX_ADC_ADDR   : ROC_NX_ADC_ADDR2;
00196       int adc_get  = (fPort==CON19) ? ROC_NX_ADC_ANSWER : ROC_NX_ADC_ANSWER2;
00197 
00198       rc = board().operPG(adc_addr, reg,        // put address
00199                           adc_get,  data);      // get answer
00200       val = uint8_t(data);
00201    }
00202 
00203    return rc;
00204 }
00205 
00206 //----------------------------------------------------------------------------
00208 
00214 int nxyter::MainAdc::setTestMode(int ch, uint8_t mode)
00215 {
00216   int rc;
00217   uint8_t oldchmask;
00218   rc = getRegister(kReg_device_index_A, oldchmask);
00219   if (rc) return base::Board::operErrBuild(rc, 0);
00220   rc = setRegister(kReg_device_index_A, (1<<(ch&0x3)), true);
00221   if (rc) return base::Board::operErrBuild(rc, 1);
00222   rc = setRegister(kReg_test_io, mode);
00223   if (rc) return base::Board::operErrBuild(rc, 2);
00224   rc = setRegister(kReg_device_index_A, oldchmask);
00225   if (rc) return base::Board::operErrBuild(rc, 3);
00226   return 0;
00227 }
00228 
00229 //----------------------------------------------------------------------------
00231 
00236 int nxyter::MainAdc::setUserPattern(uint16_t pat)
00237 {
00238   int rc;
00239   rc = setRegister(kReg_user_patt1_lsb, uint8_t(pat & 0xff));
00240   if (rc) return base::Board::operErrBuild(rc, 0);
00241   rc = setRegister(kReg_user_patt1_msb, uint8_t((pat>>8) & 0xff));
00242   if (rc) return base::Board::operErrBuild(rc, 1);
00243   return 0;
00244 }
00245 
00246 //----------------------------------------------------------------------------
00248 
00271 int nxyter::MainAdc::probe()
00272 {
00273   int rc;
00274   uint8_t regs[4] = {kReg_user_patt1_lsb, kReg_user_patt1_msb,
00275                      kReg_user_patt2_lsb, kReg_user_patt2_msb};
00276   
00277   uint8_t save[4];
00278   uint8_t back[4];
00279   uint8_t patt[4] = {0xde, 0xed, 0xbe, 0xef}; // 'deadbeaf' ...
00280 
00281   // read and save registers
00282   for (int i=0; i<4; i++) {
00283     rc = getRegister(regs[i], save[i]);
00284     if (rc) return base::Board::operErrBuild(rc, i);
00285   }
00286 
00287   // write pattern
00288   for (int i=0; i<4; i++) {
00289     rc = setRegister(regs[i], patt[i]);
00290     if (rc) return base::Board::operErrBuild(rc, 4+i);
00291   }
00292 
00293   // write and check pattern
00294   for (int i=0; i<4; i++) {
00295     rc = getRegister(regs[i], back[i]);
00296     if (rc) return base::Board::operErrBuild(rc, 8+i);
00297     if (back[i] != patt[i]) 
00298       return base::Board::operErrBuild(base::Board::kOperVerifyErr, 8+i);
00299   }
00300 
00301   // restore registers
00302   for (int i=0; i<4; i++) {
00303     rc = setRegister(regs[i], save[i], true);
00304     if (rc) return base::Board::operErrBuild(rc, 12+i);
00305   }
00306 
00307   return 0;
00308 }
00309 
00310 //----------------------------------------------------------------------------
00312 
00329 int nxyter::MainAdc::setToDefault()
00330 {
00331   int rc;
00332   rc = setRegister(kReg_chip_port_config, 0x18, true);
00333   if (rc) return base::Board::operErrBuild(rc, 0);
00334   rc = setRegister(kReg_device_index_A,   0x0f, true);
00335   if (rc) return base::Board::operErrBuild(rc, 1);
00336   rc = setRegister(kReg_modes,            0x00, true);
00337   if (rc) return base::Board::operErrBuild(rc, 2);
00338   rc = setRegister(kReg_clock,            0x01, true);
00339   if (rc) return base::Board::operErrBuild(rc, 3);
00340   rc = setRegister(kReg_test_io,          0x00, true);
00341   if (rc) return base::Board::operErrBuild(rc, 4);
00342   rc = setRegister(kReg_output_mode,      0x00, true);
00343   if (rc) return base::Board::operErrBuild(rc, 5);
00344   rc = setRegister(kReg_output_adjust,    0x00, true);
00345   if (rc) return base::Board::operErrBuild(rc, 6);
00346   rc = setRegister(kReg_output_phase,    0x03, true);
00347   if (rc) return base::Board::operErrBuild(rc, 7);
00348   rc = setRegister(kReg_serial_control,  0x03, true); // 12 bit mode !!
00349   if (rc) return base::Board::operErrBuild(rc, 8);
00350   rc = setRegister(kReg_serial_ch_stat,  0x00, true);
00351   if (rc) return base::Board::operErrBuild(rc, 9);
00352   return 0;
00353 }
00354 
00355 //----------------------------------------------------------------------------
00357 
00381 void nxyter::MainAdc::printRegisters(std::ostream& os)
00382 {
00383    for (int i=0; i<35; i++) {
00384       const char* regname = nxyter::MainAdc::registerName(i);
00385       if ((regname==0) || (*regname==0)) continue;
00386       uint8_t val;
00387       getRegister(i,val);
00388 
00389       char sbuf[100];
00390       snprintf(sbuf, sizeof(sbuf), "Reg(%2d) %16s: 0x%02x %3u  ", i, regname, (unsigned) val, (unsigned) val);
00391 
00392       os << sbuf;
00393 
00394       for (int j=7; j>=0; j--) os << ((val & (1<<j)) ? " 1" : " 0");
00395       os << std::endl;
00396    }
00397 }
00398 
00399 //----------------------------------------------------------------------------
00401 
00421 int nxyter::MainAdc::setChannelMux(int nxnum, uint32_t val)
00422 {
00423    if (isSPI()) {
00424       printf("nxyter::MainAdc::setChannelMux() not implemented for SP605/SPI case\n");
00425       return -1;
00426    }
00427 
00428    int rc = -1;
00429    if (nxnum==0) rc = board().put(ROC_NX_ADC_PORT_SELECT1, val);
00430    if (nxnum==1) rc = board().put(ROC_NX_ADC_PORT_SELECT2, val);
00431    if (nxnum==2) rc = board().put(ROC_NX_ADC_PORT_SELECT3, val);
00432    if (nxnum==3) rc = board().put(ROC_NX_ADC_PORT_SELECT4, val);
00433    return rc;
00434 }
00435 
00436 //----------------------------------------------------------------------------
00438 
00445 int nxyter::MainAdc::setChannelLatency(int nxnum, uint32_t val)
00446 {
00447    if (isSPI()) {
00448       printf("nxyter::MainAdc::setChannelLatency() not implemented for SP605/SPI case\n");
00449       return -1;
00450    }
00451 
00452    int rc = -1;
00453    if (nxnum==0) rc = board().put(ROC_NX_ADC_LATENCY1, val);
00454    if (nxnum==1) rc = board().put(ROC_NX_ADC_LATENCY2, val);
00455    if (nxnum==2) rc = board().put(ROC_NX_ADC_LATENCY3, val);
00456    if (nxnum==3) rc = board().put(ROC_NX_ADC_LATENCY4, val);
00457    return rc;
00458 }
00459 
00460 //----------------------------------------------------------------------------
00462 
00469 int nxyter::MainAdc::getChannelLatency(int nxnum, uint32_t& val)
00470 {
00471    if (isSPI()) {
00472       printf("nxyter::MainAdc::getChannelLatency() not implemented for SP605/SPI case\n");
00473       return -1;
00474    }
00475 
00476    int rc = -1;
00477    if (nxnum==0) rc = board().get(ROC_NX_ADC_LATENCY1, val);
00478    if (nxnum==1) rc = board().get(ROC_NX_ADC_LATENCY2, val);
00479    if (nxnum==2) rc = board().get(ROC_NX_ADC_LATENCY3, val);
00480    if (nxnum==3) rc = board().get(ROC_NX_ADC_LATENCY4, val);
00481    return rc;
00482 }
00483 
00484 //----------------------------------------------------------------------------
00486 
00503 int nxyter::MainAdc::setClockDelay(uint32_t delay)
00504 {
00505    uint32_t sr_init;
00506    uint32_t bufg_select;
00507 
00508    calcClockDelayRegs(delay, sr_init, bufg_select);
00509 
00510    board().Debug(1, "SR_INIT:     %8.8x", sr_init);
00511    board().Debug(1, "BUFG_SELECT: %8.8x", bufg_select);
00512 
00513    int rc;
00514    rc = setClockDelaySrInit(sr_init);
00515    if (rc) return rc;
00516    rc = setClockDelayBufg(bufg_select);
00517    if (rc) return base::Board::operErrBuild(rc, 1);
00518    return 0;
00519 }
00520 
00521 
00522 //----------------------------------------------------------------------------
00524 
00525 void nxyter::MainAdc::calcClockDelayRegs(uint32_t delay, uint32_t& sr_init, uint32_t& bufg_select)
00526 {
00527    delay = delay & 0x1f;                    // only 5 bits significant
00528    delay = 31 - delay;                      // mirror time axis
00529 
00530    bufg_select = delay & 0x01;
00531    delay = delay >> 1;
00532 
00533    sr_init = 255;
00534    sr_init = sr_init << delay;
00535 
00536    sr_init += sr_init >> 16;
00537    sr_init &= 0xffff;
00538 }
00539 
00540 //----------------------------------------------------------------------------
00542 
00543 uint32_t nxyter::MainAdc::findClockDelay(uint32_t sr_init, uint32_t bufg_select)
00544 {
00545    for (uint32_t delay=0; delay<=31; delay++) {
00546       uint32_t sr_init1;
00547       uint32_t bufg_select1;
00548 
00549       calcClockDelayRegs(delay, sr_init1, bufg_select1);
00550 
00551       if ((sr_init1==sr_init) && (bufg_select1==bufg_select)) return delay;
00552    }
00553 
00554    return 0xffff;
00555 }
00556 
00557 //----------------------------------------------------------------------------
00559 
00573 int nxyter::MainAdc::setClockDelaySrInit(uint32_t val)
00574 {
00575    if (isSPI()) {
00576       printf("nxyter::MainAdc::setClockDelaySrInit() not implemented for SP605/SPI case\n");
00577       return -1;
00578    }
00579 
00580    return board().put((fPort==CON19) ? ROC_NX_SR_INIT : ROC_NX_SR_INIT2, val);
00581 }
00582 
00583 //----------------------------------------------------------------------------
00585 
00592 int nxyter::MainAdc::getClockDelaySrInit(uint32_t& val)
00593 {
00594    if (isSPI()) {
00595       printf("nxyter::MainAdc::getClockDelaySrInit() not implemented for SP605/SPI case\n");
00596       return -1;
00597    }
00598 
00599    return board().get((fPort==CON19) ? ROC_NX_SR_INIT : ROC_NX_SR_INIT2, val);
00600 }
00601 
00602 //----------------------------------------------------------------------------
00604 
00619 int nxyter::MainAdc::setClockDelayBufg(uint32_t val)
00620 {
00621    if (isSPI()) {
00622       printf("nxyter::MainAdc::setClockDelayBufg() not implemented for SP605/SPI case\n");
00623       return -1;
00624    }
00625 
00626    return board().put((fPort==CON19) ? ROC_NX_BUFG_SELECT : ROC_NX_BUFG_SELECT2, val);
00627 }
00628 
00629 
00630 //----------------------------------------------------------------------------
00632 
00636 int nxyter::MainAdc::getClockDelayBufg(uint32_t& val)
00637 {
00638    if (isSPI()) {
00639       printf("nxyter::MainAdc::getClockDelayBufg() not implemented for SP605/SPI case\n");
00640       return -1;
00641    }
00642 
00643    return board().get((fPort==CON19) ? ROC_NX_BUFG_SELECT : ROC_NX_BUFG_SELECT2, val);
00644 }
00645 
00646 //----------------------------------------------------------------------------
00648 
00664 int nxyter::MainAdc::getAdcDirect(int num, uint32_t& val)
00665 {
00666    // Note: for 1nx and 2nx the fPort denotes the control and the data interface
00667    //       for 4nx fPort=CON19(0) denotes the control interface, while the data
00668    //       interface is on CON20(1). This is handled by the line below.
00669    int port = fMode4nx ? CON20 : fPort;
00670    int rc = -1;
00671 
00672 
00673    if (isSPI()) {
00674       printf("nxyter::MainAdc::getAdcDirect() not implemented for SP605/SPI case\n");
00675    } else {
00676       if (port==CON19) {
00677          if (num==ADC_PORT_A) rc = board().get(ROC_NX_ADC_DIRECT_1a, val);
00678          if (num==ADC_PORT_B) rc = board().get(ROC_NX_ADC_DIRECT_1b, val);
00679          if (num==ADC_PORT_C) rc = board().get(ROC_NX_ADC_DIRECT_1c, val);
00680          if (num==ADC_PORT_D) rc = board().get(ROC_NX_ADC_DIRECT_1d, val);
00681       } else {
00682          if (num==ADC_PORT_A) rc = board().get(ROC_NX_ADC_DIRECT_2a, val);
00683          if (num==ADC_PORT_B) rc = board().get(ROC_NX_ADC_DIRECT_2b, val);
00684          if (num==ADC_PORT_C) rc = board().get(ROC_NX_ADC_DIRECT_2c, val);
00685          if (num==ADC_PORT_D) rc = board().get(ROC_NX_ADC_DIRECT_2d, val);
00686       }
00687    }
00688 
00689    return rc;
00690 }
00691 
00692 //----------------------------------------------------------------------------
00694 
00695 const char* nxyter::MainAdc::registerName(int reg) 
00696 {
00697   static const char* names[35] =
00698       { "chip_port_config",   // reg 0x00
00699         "chip_id",            // reg 0x01
00700         "chip_grade",         // reg 0x02
00701         "",                   // reg 0x03
00702         "",                   // reg 0x04
00703         "device_index_A",     // reg 0x05
00704         "",                   // reg 0x06
00705         "",                   // reg 0x07
00706         "modes",              // reg 0x08
00707         "clock",              // reg 0x09
00708         "",                   // reg 0x0a
00709         "",                   // reg 0x0b
00710         "",                   // reg 0x0c
00711         "test_io",            // reg 0x0d
00712         "",                   // reg 0x0e
00713         "",                   // reg 0x0f
00714         "",                   // reg 0x10
00715         "",                   // reg 0x11
00716         "",                   // reg 0x12
00717         "",                   // reg 0x13
00718         "output_mode",        // reg 0x14
00719         "output_adjust",      // reg 0x15
00720         "output_phase",       // reg 0x16
00721         "",                   // reg 0x17
00722         "",                   // reg 0x18
00723         "user_patt1_lsb",     // reg 0x19
00724         "user_patt1_msb",     // reg 0x1a
00725         "user_patt2_lsb",     // reg 0x1b
00726         "user_patt2_msb",     // reg 0x1c
00727         "",                   // reg 0x1d
00728         "",                   // reg 0x1e
00729         "",                   // reg 0x1f
00730         "",                   // reg 0x20
00731         "serial_control",     // reg 0x21
00732         "serial_ch_stat"      // reg 0x22
00733      };
00734   
00735   if (reg == 255) return "device_update";
00736   if (reg < 0 || reg >=35) return "";
00737   return names[reg];
00738 }
00739 
00740 void nxyter::MainAdc::addAddrMap(base::Board* board)
00741 {
00742    if (board->is_SPI_I2C()) {
00743       board->addRegAddrMapping("ROC_SPI_COMMAND", ROC_SPI_COMMAND);
00744       board->addRegAddrMapping("ROC_SPI_TXDATA", ROC_SPI_TXDATA);
00745       board->addRegAddrMapping("ROC_SPI_TRANSMIT", ROC_SPI_TRANSMIT);
00746       board->addRegAddrMapping("ROC_SPI_RXDATA", ROC_SPI_RXDATA);
00747       board->addRegAddrMapping("ROC_SPI_MASTER_STATUS", ROC_SPI_MASTER_STATUS);
00748    } else {
00749       board->addRegAddrMapping("ROC_NX_ADC_DIRECT_1a", ROC_NX_ADC_DIRECT_1a);
00750       board->addRegAddrMapping("ROC_NX_ADC_DIRECT_1b", ROC_NX_ADC_DIRECT_1b);
00751       board->addRegAddrMapping("ROC_NX_ADC_DIRECT_1c", ROC_NX_ADC_DIRECT_1c);
00752       board->addRegAddrMapping("ROC_NX_ADC_DIRECT_1d", ROC_NX_ADC_DIRECT_1d);
00753       board->addRegAddrMapping("ROC_NX_ADC_DIRECT_2a", ROC_NX_ADC_DIRECT_2a);
00754       board->addRegAddrMapping("ROC_NX_ADC_DIRECT_2b", ROC_NX_ADC_DIRECT_2b);
00755       board->addRegAddrMapping("ROC_NX_ADC_DIRECT_2c", ROC_NX_ADC_DIRECT_2c);
00756       board->addRegAddrMapping("ROC_NX_ADC_DIRECT_2d", ROC_NX_ADC_DIRECT_2d);
00757       board->addRegAddrMapping("ROC_NX_ADC_REG", ROC_NX_ADC_REG);
00758       board->addRegAddrMapping("ROC_NX_ADC_ADDR", ROC_NX_ADC_ADDR);
00759       board->addRegAddrMapping("ROC_NX_ADC_ANSWER", ROC_NX_ADC_ANSWER);
00760       board->addRegAddrMapping("ROC_NX_ADC_REG2", ROC_NX_ADC_REG2);
00761       board->addRegAddrMapping("ROC_NX_ADC_ADDR2", ROC_NX_ADC_ADDR2);
00762       board->addRegAddrMapping("ROC_NX_ADC_ANSWER2", ROC_NX_ADC_ANSWER2);
00763       board->addRegAddrMapping("ROC_NX_SR_INIT", ROC_NX_SR_INIT);
00764       board->addRegAddrMapping("ROC_NX_BUFG_SELECT", ROC_NX_BUFG_SELECT);
00765       board->addRegAddrMapping("ROC_NX_SR_INIT2", ROC_NX_SR_INIT2);
00766       board->addRegAddrMapping("ROC_NX_BUFG_SELECT2", ROC_NX_BUFG_SELECT2);
00767       board->addRegAddrMapping("ROC_NX_ADC_LATENCY1", ROC_NX_ADC_LATENCY1);
00768       board->addRegAddrMapping("ROC_NX_ADC_LATENCY2", ROC_NX_ADC_LATENCY2);
00769       board->addRegAddrMapping("ROC_NX_ADC_LATENCY3", ROC_NX_ADC_LATENCY3);
00770       board->addRegAddrMapping("ROC_NX_ADC_LATENCY4", ROC_NX_ADC_LATENCY4);
00771       board->addRegAddrMapping("ROC_NX_ADC_PORT_SELECT1", ROC_NX_ADC_PORT_SELECT1);
00772       board->addRegAddrMapping("ROC_NX_ADC_PORT_SELECT2", ROC_NX_ADC_PORT_SELECT2);
00773       board->addRegAddrMapping("ROC_NX_ADC_PORT_SELECT3", ROC_NX_ADC_PORT_SELECT3);
00774       board->addRegAddrMapping("ROC_NX_ADC_PORT_SELECT4", ROC_NX_ADC_PORT_SELECT4);
00775    }
00776 }
00777 

Generated on Tue Dec 10 2013 04:52:23 for ROCsoft by  doxygen 1.7.1