Changeset 2309

Show
Ignore:
Timestamp:
04/27/13 05:14:12 (11 years ago)
Author:
jwoithe
Message:

rme: make the settings flash API consistent with that used by the mixer functions. This in turn makes it easier to call from the context of the dbus mixer control objects.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/rme/fireface_flash.cpp

    r2307 r2309  
    234234 
    235235signed int  
    236 Device::read_device_flash_settings(FF_software_settings_t *settings)  
    237 
     236Device::read_device_flash_settings(FF_software_settings_t *dsettings)  
     237
     238    if (dsettings == NULL) 
     239        dsettings = settings; 
     240 
    238241    // Read the device's configuration flash RAM and use this to set up  
    239242    // the given settings structure. 
     
    289292 
    290293    if (settings != NULL) { 
    291         memset(settings, 0, sizeof(*settings)); 
     294        memset(dsettings, 0, sizeof(*dsettings)); 
    292295        // Copy hardware details to the software settings structure as 
    293296        // appropriate. 
    294297        for (i=0; i<2; i++) 
    295             settings->mic_phantom[i] = hw_settings.mic_phantom[i]; 
     298            dsettings->mic_phantom[i] = hw_settings.mic_phantom[i]; 
    296299 
    297300        if (m_rme_model == RME_MODEL_FIREFACE800) { 
    298301            for (i=2; i<4; i++) 
    299                 settings->mic_phantom[i] = hw_settings.mic_phantom[i]; 
     302                dsettings->mic_phantom[i] = hw_settings.mic_phantom[i]; 
    300303        } else  
    301304        if (m_rme_model == RME_MODEL_FIREFACE400) { 
    302305            // TODO: confirm this is true 
    303306            for (i=2; i<4; i++) 
    304                 settings->ff400_input_pad[i-2] = hw_settings.mic_phantom[i]; 
     307                dsettings->ff400_input_pad[i-2] = hw_settings.mic_phantom[i]; 
    305308        } else { 
    306309            debugOutput(DEBUG_LEVEL_ERROR, "unimplemented model %d\n", m_rme_model); 
     
    308311        } 
    309312 
    310         settings->spdif_input_mode = hw_settings.spdif_input_mode; 
    311         settings->spdif_output_emphasis = hw_settings.spdif_output_emphasis; 
    312         settings->spdif_output_pro = hw_settings.spdif_output_pro; 
    313         settings->spdif_output_nonaudio = hw_settings.spdif_output_nonaudio; 
    314         settings->spdif_output_mode = hw_settings.spdif_output_mode; 
    315         settings->clock_mode = hw_settings.clock_mode; 
    316         settings->sync_ref = hw_settings.sync_ref; 
    317         settings->tms = hw_settings.tms; 
    318         settings->limit_bandwidth = hw_settings.limit_bandwidth; 
    319         settings->stop_on_dropout = hw_settings.stop_on_dropout; 
    320         settings->input_level = hw_settings.input_level; 
    321         settings->output_level = hw_settings.output_level; 
     313        dsettings->spdif_input_mode = hw_settings.spdif_input_mode; 
     314        dsettings->spdif_output_emphasis = hw_settings.spdif_output_emphasis; 
     315        dsettings->spdif_output_pro = hw_settings.spdif_output_pro; 
     316        dsettings->spdif_output_nonaudio = hw_settings.spdif_output_nonaudio; 
     317        dsettings->spdif_output_mode = hw_settings.spdif_output_mode; 
     318        dsettings->clock_mode = hw_settings.clock_mode; 
     319        dsettings->sync_ref = hw_settings.sync_ref; 
     320        dsettings->tms = hw_settings.tms; 
     321        dsettings->limit_bandwidth = hw_settings.limit_bandwidth; 
     322        dsettings->stop_on_dropout = hw_settings.stop_on_dropout; 
     323        dsettings->input_level = hw_settings.input_level; 
     324        dsettings->output_level = hw_settings.output_level; 
    322325        if (m_rme_model == RME_MODEL_FIREFACE800) { 
    323             settings->filter = hw_settings.filter; 
    324             settings->fuzz = hw_settings.fuzz; 
     326            dsettings->filter = hw_settings.filter; 
     327            dsettings->fuzz = hw_settings.fuzz; 
    325328        } else  
    326329        if (m_rme_model == RME_MODEL_FIREFACE400) { 
    327330            // TODO: confirm this is true 
    328             settings->ff400_instr_input[0] = hw_settings.fuzz; 
    329             settings->ff400_instr_input[1] = hw_settings.filter; 
    330         } 
    331         settings->limiter = (hw_settings.p12db_an[0] == 0)?1:0; 
    332         settings->sample_rate = hw_settings.sample_rate; 
    333         settings->word_clock_single_speed = hw_settings.word_clock_single_speed; 
     331            dsettings->ff400_instr_input[0] = hw_settings.fuzz; 
     332            dsettings->ff400_instr_input[1] = hw_settings.filter; 
     333        } 
     334        dsettings->limiter = (hw_settings.p12db_an[0] == 0)?1:0; 
     335        dsettings->sample_rate = hw_settings.sample_rate; 
     336        dsettings->word_clock_single_speed = hw_settings.word_clock_single_speed; 
    334337 
    335338        // The FF800 has front/rear selectors for the "instrument" input  
     
    339342        // level which the FF800 doesn't have. 
    340343        if (m_rme_model == RME_MODEL_FIREFACE400) 
    341             settings->phones_level = hw_settings.mic_plug_select[0]; 
     344            dsettings->phones_level = hw_settings.mic_plug_select[0]; 
    342345        else  
    343346        if (m_rme_model == RME_MODEL_FIREFACE800) { 
     
    348351            // approach used in drivers for other operating systems and 
    349352            // simplifies certain logic expressions within the driver. 
    350             settings->input_opt[0] = hw_settings.instrument_plug_select + 1; 
    351             settings->input_opt[1] = hw_settings.mic_plug_select[0] + 1; 
    352             settings->input_opt[2] = hw_settings.mic_plug_select[1] + 1; 
     353            dsettings->input_opt[0] = hw_settings.instrument_plug_select + 1; 
     354            dsettings->input_opt[1] = hw_settings.mic_plug_select[0] + 1; 
     355            dsettings->input_opt[2] = hw_settings.mic_plug_select[1] + 1; 
    353356        } 
    354357    } 
     
    358361    if (m_rme_model == RME_MODEL_FIREFACE800) { 
    359362        debugOutput(DEBUG_LEVEL_VERBOSE, "  Phantom: %d %d %d %d\n", 
    360             settings->mic_phantom[0], settings->mic_phantom[1], 
    361             settings->mic_phantom[2], settings->mic_phantom[2]); 
     363            dsettings->mic_phantom[0], dsettings->mic_phantom[1], 
     364            dsettings->mic_phantom[2], dsettings->mic_phantom[2]); 
    362365 
    363366    } else  
    364367    if (m_rme_model == RME_MODEL_FIREFACE400) { 
    365368        debugOutput(DEBUG_LEVEL_VERBOSE, "  Phantom: %d %d\n", 
    366             settings->mic_phantom[0], settings->mic_phantom[1]); 
     369            dsettings->mic_phantom[0], dsettings->mic_phantom[1]); 
    367370        debugOutput(DEBUG_LEVEL_VERBOSE, "  Input pad: %d %d\n", 
    368             settings->ff400_input_pad[0], settings->ff400_input_pad[1]); 
    369     } 
    370     debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif input mode: %d\n", settings->spdif_input_mode); 
    371     debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif output emphasis: %d\n", settings->spdif_output_emphasis); 
    372     debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif output pro: %d\n", settings->spdif_output_pro); 
    373     debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif output nonaudio: %d\n", settings->spdif_output_nonaudio); 
    374     debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif output mode: %d\n", settings->spdif_output_mode); 
    375     debugOutput(DEBUG_LEVEL_VERBOSE, "  clock mode: %d\n", settings->clock_mode); 
    376     debugOutput(DEBUG_LEVEL_VERBOSE, "  sync ref: %d\n", settings->sync_ref); 
    377     debugOutput(DEBUG_LEVEL_VERBOSE, "  tms: %d\n", settings->tms); 
    378     debugOutput(DEBUG_LEVEL_VERBOSE, "  limit bandwidth: %d\n", settings->limit_bandwidth); 
    379     debugOutput(DEBUG_LEVEL_VERBOSE, "  stop on dropout: %d\n", settings->stop_on_dropout); 
    380     debugOutput(DEBUG_LEVEL_VERBOSE, "  input level: %d\n", settings->input_level); 
    381     debugOutput(DEBUG_LEVEL_VERBOSE, "  output level: %d\n", settings->output_level); 
    382     if (m_rme_model == RME_MODEL_FIREFACE800) { 
    383         debugOutput(DEBUG_LEVEL_VERBOSE, "  filter: %d\n", settings->filter); 
    384         debugOutput(DEBUG_LEVEL_VERBOSE, "  fuzz: %d\n", settings->fuzz); 
     371            dsettings->ff400_input_pad[0], dsettings->ff400_input_pad[1]); 
     372    } 
     373    debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif input mode: %d\n", dsettings->spdif_input_mode); 
     374    debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif output emphasis: %d\n", dsettings->spdif_output_emphasis); 
     375    debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif output pro: %d\n", dsettings->spdif_output_pro); 
     376    debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif output nonaudio: %d\n", dsettings->spdif_output_nonaudio); 
     377    debugOutput(DEBUG_LEVEL_VERBOSE, "  spdif output mode: %d\n", dsettings->spdif_output_mode); 
     378    debugOutput(DEBUG_LEVEL_VERBOSE, "  clock mode: %d\n", dsettings->clock_mode); 
     379    debugOutput(DEBUG_LEVEL_VERBOSE, "  sync ref: %d\n", dsettings->sync_ref); 
     380    debugOutput(DEBUG_LEVEL_VERBOSE, "  tms: %d\n", dsettings->tms); 
     381    debugOutput(DEBUG_LEVEL_VERBOSE, "  limit bandwidth: %d\n", dsettings->limit_bandwidth); 
     382    debugOutput(DEBUG_LEVEL_VERBOSE, "  stop on dropout: %d\n", dsettings->stop_on_dropout); 
     383    debugOutput(DEBUG_LEVEL_VERBOSE, "  input level: %d\n", dsettings->input_level); 
     384    debugOutput(DEBUG_LEVEL_VERBOSE, "  output level: %d\n", dsettings->output_level); 
     385    if (m_rme_model == RME_MODEL_FIREFACE800) { 
     386        debugOutput(DEBUG_LEVEL_VERBOSE, "  filter: %d\n", dsettings->filter); 
     387        debugOutput(DEBUG_LEVEL_VERBOSE, "  fuzz: %d\n", dsettings->fuzz); 
    385388    } else 
    386389    if (m_rme_model == RME_MODEL_FIREFACE400) { 
    387         debugOutput(DEBUG_LEVEL_VERBOSE, "  instr input 0: %d\n", settings->ff400_instr_input[0]); 
    388         debugOutput(DEBUG_LEVEL_VERBOSE, "  instr input 1: %d\n", settings->ff400_instr_input[1]); 
    389     } 
    390     debugOutput(DEBUG_LEVEL_VERBOSE, "  limiter: %d\n", settings->limiter); 
    391     debugOutput(DEBUG_LEVEL_VERBOSE, "  sample rate: %d\n", settings->sample_rate); 
    392     debugOutput(DEBUG_LEVEL_VERBOSE, "  word clock single speed: %d\n", settings->word_clock_single_speed); 
     390        debugOutput(DEBUG_LEVEL_VERBOSE, "  instr input 0: %d\n", dsettings->ff400_instr_input[0]); 
     391        debugOutput(DEBUG_LEVEL_VERBOSE, "  instr input 1: %d\n", dsettings->ff400_instr_input[1]); 
     392    } 
     393    debugOutput(DEBUG_LEVEL_VERBOSE, "  limiter: %d\n", dsettings->limiter); 
     394    debugOutput(DEBUG_LEVEL_VERBOSE, "  sample rate: %d\n", dsettings->sample_rate); 
     395    debugOutput(DEBUG_LEVEL_VERBOSE, "  word clock single speed: %d\n", dsettings->word_clock_single_speed); 
    393396    if (m_rme_model == RME_MODEL_FIREFACE400) { 
    394       debugOutput(DEBUG_LEVEL_VERBOSE, "  phones level: %d\n", settings->phones_level); 
     397      debugOutput(DEBUG_LEVEL_VERBOSE, "  phones level: %d\n", dsettings->phones_level); 
    395398    } else 
    396399    if (m_rme_model == RME_MODEL_FIREFACE800) { 
    397400      debugOutput(DEBUG_LEVEL_VERBOSE, "  input opts: %d %d %d\n", 
    398         settings->input_opt[0], settings->input_opt[1], 
    399         settings->input_opt[2]); 
     401        dsettings->input_opt[0], dsettings->input_opt[1], 
     402        dsettings->input_opt[2]); 
    400403    } 
    401404 
     
    429432 
    430433signed int  
    431 Device::write_device_flash_settings(FF_software_settings_t *settings)  
    432 
     434Device::write_device_flash_settings(FF_software_settings_t *dsettings)  
     435
     436    if (dsettings == NULL) 
     437        dsettings = settings; 
     438 
    433439    // Write the given device settings to the device's configuration flash. 
    434440 
     
    445451    // Copy software settings to the hardware structure as appropriate. 
    446452    for (i=0; i<4; i++) 
    447         hw_settings.mic_phantom[i] = settings->mic_phantom[i]; 
    448     hw_settings.spdif_input_mode = settings->spdif_input_mode; 
    449     hw_settings.spdif_output_emphasis = settings->spdif_output_emphasis; 
    450     hw_settings.spdif_output_pro = settings->spdif_output_pro; 
    451     hw_settings.spdif_output_nonaudio = settings->spdif_output_nonaudio; 
    452     hw_settings.spdif_output_mode = settings->spdif_output_mode; 
    453     hw_settings.clock_mode = settings->clock_mode; 
    454     hw_settings.sync_ref = settings->sync_ref; 
    455     hw_settings.tms = settings->tms; 
    456     hw_settings.limit_bandwidth = settings->limit_bandwidth; 
    457     hw_settings.stop_on_dropout = settings->stop_on_dropout; 
    458     hw_settings.input_level = settings->input_level; 
    459     hw_settings.output_level = settings->output_level; 
    460     hw_settings.filter = settings->filter; 
    461     hw_settings.fuzz = settings->fuzz; 
     453        hw_settings.mic_phantom[i] = dsettings->mic_phantom[i]; 
     454    hw_settings.spdif_input_mode = dsettings->spdif_input_mode; 
     455    hw_settings.spdif_output_emphasis = dsettings->spdif_output_emphasis; 
     456    hw_settings.spdif_output_pro = dsettings->spdif_output_pro; 
     457    hw_settings.spdif_output_nonaudio = dsettings->spdif_output_nonaudio; 
     458    hw_settings.spdif_output_mode = dsettings->spdif_output_mode; 
     459    hw_settings.clock_mode = dsettings->clock_mode; 
     460    hw_settings.sync_ref = dsettings->sync_ref; 
     461    hw_settings.tms = dsettings->tms; 
     462    hw_settings.limit_bandwidth = dsettings->limit_bandwidth; 
     463    hw_settings.stop_on_dropout = dsettings->stop_on_dropout; 
     464    hw_settings.input_level = dsettings->input_level; 
     465    hw_settings.output_level = dsettings->output_level; 
     466    hw_settings.filter = dsettings->filter; 
     467    hw_settings.fuzz = dsettings->fuzz; 
    462468    // The limiter can only be disabled if channel 1 uses the "front" input. 
    463469    // Note that p12db_an (as passed to the flash) seems to be a "limiter 
    464470    // disabled" flag. 
    465     if (m_rme_model==RME_MODEL_FIREFACE800 && settings->limiter==0 &&  
    466             settings->input_opt[0]==FF_SWPARAM_FF800_INPUT_OPT_FRONT) 
     471    if (m_rme_model==RME_MODEL_FIREFACE800 && dsettings->limiter==0 &&  
     472            dsettings->input_opt[0]==FF_SWPARAM_FF800_INPUT_OPT_FRONT) 
    467473        hw_settings.p12db_an[0] = 1; 
    468474    else 
    469475        hw_settings.p12db_an[0] = 0; 
    470     hw_settings.sample_rate = settings->sample_rate; 
    471     hw_settings.word_clock_single_speed = settings->word_clock_single_speed; 
     476    hw_settings.sample_rate = dsettings->sample_rate; 
     477    hw_settings.word_clock_single_speed = dsettings->word_clock_single_speed; 
    472478 
    473479    // The FF800 has front/rear selectors for the "instrument" input  
     
    477483    // level which the FF800 doesn't have. 
    478484    if (m_rme_model == RME_MODEL_FIREFACE400) 
    479         hw_settings.mic_plug_select[0] = settings->phones_level; 
     485        hw_settings.mic_plug_select[0] = dsettings->phones_level; 
    480486    else  
    481487    if (m_rme_model == RME_MODEL_FIREFACE800) { 
     
    486492        // option in the list rear, front, front and rear.  See also the 
    487493        // related section of read_device_flash_settings(). 
    488         hw_settings.instrument_plug_select = settings->input_opt[0] - 1; 
    489         hw_settings.mic_plug_select[0] = settings->input_opt[1] - 1; 
    490         hw_settings.mic_plug_select[1] = settings->input_opt[2] - 1; 
     494        hw_settings.instrument_plug_select = dsettings->input_opt[0] - 1; 
     495        hw_settings.mic_plug_select[0] = dsettings->input_opt[1] - 1; 
     496        hw_settings.mic_plug_select[1] = dsettings->input_opt[2] - 1; 
    491497    } 
    492498 
  • trunk/libffado/src/rme/rme_avdevice.h

    r2307 r2309  
    189189    /* Upper level flash memory functions */ 
    190190public: 
    191     signed int read_device_flash_settings(FF_software_settings_t *settings); 
    192     signed int write_device_flash_settings(FF_software_settings_t *settings); 
     191    signed int read_device_flash_settings(FF_software_settings_t *dsettings); 
     192    signed int write_device_flash_settings(FF_software_settings_t *dsettings); 
    193193    signed int read_device_mixer_settings(FF_software_settings_t *dsettings); 
    194194    signed int write_device_mixer_settings(FF_software_settings_t *dsettings);