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

Starting to add support for other ADC types in virtual IO

parent dd92094d
No related branches found
No related tags found
1 merge request!639Support for new ADCs in VIO model.
......@@ -156,25 +156,27 @@ mapPciModulesVirtual( CDS_HARDWARE* pCds )
for ( i = 0; i < pCds->cards; i++ )
{
if ( pCds->cards_used[ i ].type == GSC_18AO8 )
{
sprintf( fname, "%s_%d", "IO_DEV_", i );
ret = mbuf_allocate_area( fname, 8 * 4 * 65536, (volatile void **)&_device_shm );
if ( ret != MBUF_KERNEL_CODE_OK )
{
mbuf_lookup_error_msg(ret, err_msg);
RTSLOG_ERROR( "mbuf_allocate_area() failed, error msg: %s\n", err_msg );
return -1;
}
pCds->pci_dac[ dac_cnt ] = (volatile int *)_device_shm;
pCds->dac_info[ dac_cnt ].card_type = GSC_18AO8;
pCds->dacInstance[ dac_cnt ] = pCds->card_count[ GSC_18AO8 ];
pCds->dacCount++;
pCds->card_count[ GSC_18AO8 ] ++;
dac_cnt++;
}
if ( pCds->cards_used[ i ].type == GSC_16AO16 )
switch ( pCds->cards_used[ i ].type )
{
case GSC_18AO8:
sprintf( fname, "%s_%d", "IO_DEV_", i );
ret = mbuf_allocate_area( fname, 8 * 4 * 65536, (volatile void **)&_device_shm );
if ( ret != MBUF_KERNEL_CODE_OK )
{
mbuf_lookup_error_msg(ret, err_msg);
RTSLOG_ERROR( "mbuf_allocate_area() failed, error msg: %s\n", err_msg );
return -1;
}
pCds->pci_dac[ dac_cnt ] = (volatile int *)_device_shm;
pCds->dac_info[ dac_cnt ].card_type = GSC_18AO8;
pCds->dacInstance[ dac_cnt ] = pCds->card_count[ GSC_18AO8 ];
pCds->dacCount++;
pCds->card_count[ GSC_18AO8 ] ++;
dac_cnt++;
break;
case GSC_16AO16:
sprintf( fname, "%s_%d", "IO_DEV_", i );
ret = mbuf_allocate_area( fname, 16 * 4 * 65536, (volatile void **)&_device_shm );
if ( ret != MBUF_KERNEL_CODE_OK )
......@@ -189,9 +191,9 @@ mapPciModulesVirtual( CDS_HARDWARE* pCds )
pCds->dacCount++;
pCds->card_count[ GSC_16AO16 ] ++;
dac_cnt++;
}
if ( pCds->cards_used[ i ].type == GSC_20AO8 )
{
break;
case GSC_20AO8:
sprintf( fname, "%s_%d", "IO_DEV_", i );
ret = mbuf_allocate_area( fname, 8 * 4 * 65536, (volatile void **)&_device_shm );
if ( ret != MBUF_KERNEL_CODE_OK )
......@@ -206,9 +208,9 @@ mapPciModulesVirtual( CDS_HARDWARE* pCds )
pCds->dacCount++;
dac_cnt++;
pCds->card_count[ GSC_20AO8 ] ++;
}
if ( pCds->cards_used[ i ].type == GSC_16AI64SSA )
{
break;
case GSC_16AI64SSA:
sprintf( fname, "%s_%d", "IO_DEV_", i );
ret = mbuf_allocate_area( fname, 32 * 4 * 128, (volatile void **)&_device_shm );
if ( ret != MBUF_KERNEL_CODE_OK )
......@@ -229,9 +231,61 @@ mapPciModulesVirtual( CDS_HARDWARE* pCds )
data ++;
}
adc_cnt++;
}
break;
case GSC_18AI32SSC1M: //Fast ADC
sprintf( fname, "%s_%d", "IO_DEV_", i );
ret = mbuf_allocate_area( fname, 32 * 4 * 128, (volatile void **)&_device_shm );
if ( ret != MBUF_KERNEL_CODE_OK )
{
mbuf_lookup_error_msg(ret, err_msg);
RTSLOG_ERROR( "mbuf_allocate_area() failed, error msg: %s\n", err_msg );
return -1;
}
pCds->pci_adc[ adc_cnt ] = (volatile int *)_device_shm;
pCds->adcType[ adc_cnt ] = GSC_18AI32SSC1M;
pCds->adcInstance[ adc_cnt ] = pCds->card_count[ GSC_18AI32SSC1M ];
pCds->card_count[ GSC_18AI32SSC1M ] ++;
pCds->adcChannels[ adc_cnt ] = 16;
pCds->adcCount++;
data = (volatile int *) pCds->pci_adc[ adc_cnt ];
for(ii=0;ii<64;ii++) {
*data = ii;
data ++;
}
adc_cnt++;
break;
case GSC_18AI64SSC: //Low noise
sprintf( fname, "%s_%d", "IO_DEV_", i );
ret = mbuf_allocate_area( fname, 32 * 4 * 128, (volatile void **)&_device_shm );
if ( ret != MBUF_KERNEL_CODE_OK )
{
mbuf_lookup_error_msg(ret, err_msg);
RTSLOG_ERROR( "mbuf_allocate_area() failed, error msg: %s\n", err_msg );
return -1;
}
pCds->pci_adc[ adc_cnt ] = (volatile int *)_device_shm;
pCds->adcType[ adc_cnt ] = GSC_18AI64SSC;
pCds->adcInstance[ adc_cnt ] = pCds->card_count[ GSC_18AI64SSC ];
pCds->card_count[ GSC_18AI64SSC ] ++;
pCds->adcChannels[ adc_cnt ] = 32;
pCds->adcCount++;
data = (volatile int *) pCds->pci_adc[ adc_cnt ];
for(ii=0;ii<64;ii++) {
*data = ii;
data ++;
}
adc_cnt++;
break;
default:
break;
} //Switch on card type
modCount++;
}
} //for each card
return ( modCount );
}
......
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