Skip to content
Snippets Groups Projects
Commit e3aa8b33 authored by Ezekiel Dohmen's avatar Ezekiel Dohmen
Browse files

Merge branch 'dac_duotone_multiplier' into 'branch-4.2'

RCG: correct dac duotone amplitude

See merge request cds/advligorts!368
parents 5b403dea ce5adbcc
No related branches found
No related tags found
4 merge requests!439RCG 5.0 release fro deb 10,!395Next dev build,!393RCG: correct dac duotone amplitude,!368RCG: correct dac duotone amplitude
......@@ -105,6 +105,11 @@ mapPciModules( CDS_HARDWARE* pCds )
dacdev = NULL;
status = 0;
// initialize dac duotone multipliers/divisors in case
// we don't have one or the other of DAC or ADC cards
pCds->adcDuoToneDivisor[ 0 ] = 1;
pCds->dacDuoToneMultiplier[ 0 ] = 1;
modCount = map_cards_2_slots ( &cdsPciModules ) ;
// Map and Initialize ADC and DAC modules
......
......@@ -209,6 +209,7 @@ typedef struct CDS_HARDWARE{
int dacCount; /* Number of DAC modules found */
long pci_dac[MAX_DAC_MODULES]; /* Remapped addresses of DAC modules */
int dacType[MAX_DAC_MODULES];
int dacDuoToneMultiplier[MAX_DAC_MODULES]; /* scale amplitude of duotone up for higher bit DACs */
int dacInstance[MAX_DAC_MODULES];
int dacSlot[MAX_DAC_MODULES];
int dacConfig[MAX_DAC_MODULES];
......@@ -217,6 +218,7 @@ typedef struct CDS_HARDWARE{
int adcCount; /* Number of ADC modules found */
long pci_adc[MAX_ADC_MODULES]; /* Remapped addresses of ADC modules */
int adcType[MAX_ADC_MODULES];
int adcDuoToneDivisor[MAX_ADC_MODULES]; /* scale amplitude of duotone down for higher bit ADCs */
int adcInstance[MAX_ADC_MODULES];
int adcSlot[MAX_ADC_MODULES];
int adcChannels[MAX_ADC_MODULES];
......
......@@ -121,6 +121,7 @@ gsc16ai64Init( CDS_HARDWARE* pHardware, struct pci_dev* adcdev )
pHardware->pci_adc[ devNum ] =
(long)pci_alloc_consistent( adcdev, 0x2000, &adc_dma_handle[ devNum ] );
pHardware->adcType[ devNum ] = GSC_16AI64SSA;
pHardware->adcDuoToneDivisor[ devNum ] = 1;
pHardware->adcInstance[ devNum ] = pHardware->card_count[ GSC_16AI64SSA ];
pHardware->card_count[ GSC_16AI64SSA ] ++;
pHardware->adcChannels[ devNum ] = GSAI_CHAN_COUNT;
......
......@@ -80,6 +80,7 @@ gsc16ao16Init( CDS_HARDWARE* pHardware, struct pci_dev* dacdev )
(long)pci_alloc_consistent( dacdev, 0x200, &dac_dma_handle[ devNum ] );
pHardware->dacAcr[ devNum ] = (int)( _dacPtr[ devNum ]->ASSC );
pHardware->dacType[ devNum ] = GSC_16AO16;
pHardware->dacDuoToneMultiplier[ devNum ] = 1;
pHardware->dacCount++;
pHardware->dacInstance[ devNum ] = pHardware->card_count[ GSC_16AO16 ];
pHardware->card_count[ GSC_16AO16 ] ++;
......
......@@ -135,6 +135,7 @@ gsc18ai32Init( CDS_HARDWARE* pHardware, struct pci_dev* adcdev )
pHardware->pci_adc[ devNum ] =
(long)pci_alloc_consistent( adcdev, 0x2000, &adc_dma_handle[ devNum ] );
pHardware->adcType[ devNum ] = GSC_18AI32SSC1M;
pHardware->adcDuoToneDivisor[ devNum ] = 4;
pHardware->adcInstance[ devNum ] = pHardware->card_count[ GSC_18AI32SSC1M ];
pHardware->card_count[ GSC_18AI32SSC1M ] ++;
pHardware->adcConfig[ devNum ] |= autocal;
......
......@@ -126,6 +126,7 @@ gsc18ai64Init( CDS_HARDWARE* pHardware, struct pci_dev* adcdev )
pHardware->pci_adc[ devNum ] =
(long)pci_alloc_consistent( adcdev, 0x2000, &adc_dma_handle[ devNum ] );
pHardware->adcType[ devNum ] = GSC_18AI64SSC;
pHardware->adcDuoToneDivisor[ devNum ] = 4;
pHardware->adcInstance[ devNum ] = pHardware->card_count[ GSC_18AI64SSC ];
pHardware->card_count[ GSC_18AI64SSC ] ++;
pHardware->adcConfig[ devNum ] = adc18Ptr->ASSC;
......
......@@ -115,6 +115,7 @@ gsc18ao8Init( CDS_HARDWARE* pHardware, struct pci_dev* dacdev )
(long)pci_alloc_consistent( dacdev, 0x200, &dac_dma_handle[ devNum ] );
pHardware->dacAcr[ devNum ] |= ((int)( dac18bitPtr->ASY_CONFIG ) & DAC_ACR_MASK);
pHardware->dacType[ devNum ] = GSC_18AO8;
pHardware->dacDuoToneMultiplier[ devNum ] = 4;
pHardware->dacCount++;
pHardware->dacInstance[ devNum ] = pHardware->card_count[ GSC_18AO8 ];
pHardware->card_count[ GSC_18AO8 ] ++;
......
......@@ -135,6 +135,7 @@ gsc20ao8Init( CDS_HARDWARE* pHardware, struct pci_dev* dacdev )
// Return the device type to main code.
pHardware->dacType[ devNum ] = GSC_20AO8;
pHardware->dacDuoToneMultiplier[ devNum ] = 8;
pHardware->dacCount++;
pHardware->dacInstance[ devNum ] = pHardware->card_count[ GSC_20AO8 ];
pHardware->card_count[ GSC_20AO8 ] ++;
......
......@@ -156,7 +156,8 @@ iop_dac_write( )
if ( ( dt_diag.dacDuoEnable ) && ( chan == ( num_outs - 1 ) ) &&
( card == 0 ) )
{
dac_out = adcinfo.adcData[ 0 ][ ADC_DUOTONE_CHAN ];
dac_out = adcinfo.adcData[ 0 ][ ADC_DUOTONE_CHAN ]
* cdsPciModules.dacDuoToneMultiplier[0] / cdsPciModules.adcDuoToneDivisor[0];
}
// Code below is only for use in DAQ test system.
#ifdef DIAG_TEST
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment