Changeset 1624

Show
Ignore:
Timestamp:
08/21/09 06:58:02 (14 years ago)
Author:
jwoithe
Message:

RME: prepare for the use of a shared memory object to share device configuration between FFADO-enabled applications. This is required because significant parts of the device configuration cannot be retrieved from the device and must be managed in software.

Files:

Legend:

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

    r1622 r1624  
    5151    // device flash and adopt that.  For now (for initial testing purposes) 
    5252    // we'll go with a static state. 
    53     memset(&settings, 0, sizeof(settings)); 
    54     settings.spdif_input_mode = FF_SWPARAM_SPDIF_INPUT_COAX; 
    55     settings.spdif_output_mode = FF_SWPARAM_SPDIF_OUTPUT_COAX; 
    56     settings.clock_mode = FF_SWPARAM_CLOCK_MODE_MASTER; 
    57     settings.sync_ref = FF_SWPARAM_SYNCREF_WORDCLOCK; 
    58     settings.input_level = FF_SWPARAM_ILEVEL_LOGAIN; 
    59     settings.output_level = FF_SWPARAM_OLEVEL_HIGAIN; 
    60     settings.phones_level = FF_SWPARAM_PHONESLEVEL_HIGAIN; 
     53    memset(settings, 0, sizeof(*settings)); 
     54    settings->spdif_input_mode = FF_SWPARAM_SPDIF_INPUT_COAX; 
     55    settings->spdif_output_mode = FF_SWPARAM_SPDIF_OUTPUT_COAX; 
     56    settings->clock_mode = FF_SWPARAM_CLOCK_MODE_MASTER; 
     57    settings->sync_ref = FF_SWPARAM_SYNCREF_WORDCLOCK; 
     58    settings->input_level = FF_SWPARAM_ILEVEL_LOGAIN; 
     59    settings->output_level = FF_SWPARAM_OLEVEL_HIGAIN; 
     60    settings->phones_level = FF_SWPARAM_PHONESLEVEL_HIGAIN; 
    6161 
    6262    // Set amplifier gains 
     
    6464        signed int i; 
    6565        for (i=0; i<FF400_AMPGAIN_NUM; i++) { 
    66             set_hardware_ampgain(i, settings.amp_gains[i]); 
     66            set_hardware_ampgain(i, settings->amp_gains[i]); 
    6767        } 
    6868    } 
     
    7373    m_dds_freq = 0; 
    7474 
    75     if (set_hardware_params(&settings) != 0) 
     75    if (set_hardware_params(settings) != 0) 
    7676        return -1; 
    7777 
     
    7979    // which have a TCO. 
    8080    if (tco_present) { 
    81         memset(&tco_settings, 0, sizeof(tco_settings)); 
    82         return write_tco_settings(&tco_settings); 
     81        memset(tco_settings, 0, sizeof(*tco_settings)); 
     82        return write_tco_settings(tco_settings); 
    8383    } 
    8484 
     
    127127    state->is_streaming = is_streaming; 
    128128 
    129     state->clock_mode = (settings.clock_mode == FF_SWPARAM_CLOCK_MODE_MASTER)?FF_STATE_CLOCKMODE_MASTER:FF_STATE_CLOCKMODE_AUTOSYNC; 
     129    state->clock_mode = (settings->clock_mode == FF_SWPARAM_CLOCK_MODE_MASTER)?FF_STATE_CLOCKMODE_MASTER:FF_STATE_CLOCKMODE_AUTOSYNC; 
    130130 
    131131    switch (stat0 & SR0_AUTOSYNC_SRC_MASK) { 
     
    233233 
    234234    if (use_settings == NULL) 
    235       sw_settings = &settings; 
     235      sw_settings = settings; 
    236236    else 
    237237      sw_settings = use_settings; 
  • trunk/libffado/src/rme/rme_avdevice.cpp

    r1622 r1624  
    9494    debugOutput( DEBUG_LEVEL_VERBOSE, "Created Rme::Device (NodeID %d)\n", 
    9595                 getConfigRom().getNodeId() ); 
     96 
     97    settings = &settings_localobj; 
     98    tco_settings = &tco_settings_localobj; 
     99 
    96100    memset(&settings, 0, sizeof(settings)); 
    97101    memset(&tco_settings, 0, sizeof(tco_settings)); 
     
    320324 
    321325    m_dds_freq = dds_freq; 
    322     if (settings.clock_mode == FF_STATE_CLOCKMODE_MASTER) { 
     326    if (settings->clock_mode == FF_STATE_CLOCKMODE_MASTER) { 
    323327        if (set_hardware_dds_freq(dds_freq) != 0) 
    324328            return false; 
  • trunk/libffado/src/rme/rme_avdevice.h

    r1622 r1624  
    120120 
    121121    signed int tco_present; 
    122     FF_software_settings_t settings; 
    123     FF_TCO_settings_t tco_settings; 
     122    FF_software_settings_t *settings; 
     123    FF_TCO_settings_t *tco_settings; 
     124 
     125    FF_software_settings_t settings_localobj; 
     126    FF_TCO_settings_t tco_settings_localobj; 
    124127 
    125128    signed int num_channels; 
  • trunk/libffado/src/rme/rme_avdevice_settings.cpp

    r1622 r1624  
    3636    } 
    3737 
    38     return settings.mic_phantom[channel] != 0; 
     38    return settings->mic_phantom[channel] != 0; 
    3939} 
    4040 
     
    4747    } 
    4848 
    49     settings.mic_phantom[channel] = (status != 0); 
     49    settings->mic_phantom[channel] = (status != 0); 
    5050    set_hardware_params(); 
    5151 
     
    5555signed int 
    5656Device::getInputLevel(void) { 
    57     return settings.input_level; 
     57    return settings->input_level; 
    5858} 
    5959 
     
    6565        return -1; 
    6666    } 
    67     settings.input_level = level; 
     67    settings->input_level = level; 
    6868    set_hardware_params(); 
    6969 
     
    7373signed int 
    7474Device::getOutputLevel(void) { 
    75     return settings.output_level; 
     75    return settings->output_level; 
    7676} 
    7777 
     
    8383        return -1; 
    8484    } 
    85     settings.output_level = level; 
     85    settings->output_level = level; 
    8686    set_hardware_params(); 
    8787 
     
    9191signed int 
    9292Device::getPhonesLevel(void) { 
    93     return settings.phones_level; 
     93    return settings->phones_level; 
    9494} 
    9595 
     
    101101        return -1; 
    102102    } 
    103     settings.phones_level = level; 
     103    settings->phones_level = level; 
    104104    set_hardware_params(); 
    105105 
     
    113113        return -1; 
    114114    } 
    115     return settings.ff400_input_pad[channel-3] != 0; 
     115    return settings->ff400_input_pad[channel-3] != 0; 
    116116} 
    117117 
     
    122122        return -1; 
    123123    } 
    124     settings.ff400_input_pad[channel-3] = (status != 0); 
     124    settings->ff400_input_pad[channel-3] = (status != 0); 
    125125    set_hardware_params(); 
    126126    return 0; 
     
    133133        return -1; 
    134134    } 
    135     return settings.ff400_instr_input[channel-3] != 0; 
     135    return settings->ff400_instr_input[channel-3] != 0; 
    136136} 
    137137 
     
    142142        return -1; 
    143143    } 
    144     settings.ff400_instr_input[channel-3] = (status != 0); 
     144    settings->ff400_instr_input[channel-3] = (status != 0); 
    145145    set_hardware_params(); 
    146146    return 0; 
     
    157157         return -1; 
    158158    } 
    159     return settings.amp_gains[index]; 
     159    return settings->amp_gains[index]; 
    160160} 
    161161 
     
    171171         return -1; 
    172172    } 
    173     settings.amp_gains[index] = val & 0xff; 
     173    settings->amp_gains[index] = val & 0xff; 
    174174    return set_hardware_ampgain(index, val); 
    175175}