Changeset 1253

Show
Ignore:
Timestamp:
06/08/08 07:12:45 (13 years ago)
Author:
ppalmers
Message:

merge 2.0 changes back (svn merge -r 1245:HEAD svn+ssh://ffadosvn@ffado.org/ffado/branches/libffado-2.0)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/bebob/focusrite/focusrite_saffirepro.cpp

    r1234 r1253  
    4848        AVC::AVCCommand::setSleepAfterAVCCommand( 500 ); 
    4949    } 
     50 
     51    updateClockSources(); 
    5052} 
    5153 
     
    361363 
    362364    return true; 
     365} 
     366 
     367void 
     368SaffireProDevice::updateClockSources() { 
     369    m_internal_clocksource.type = FFADODevice::eCT_Internal; 
     370    m_internal_clocksource.valid = true; 
     371    m_internal_clocksource.locked = true; 
     372    m_internal_clocksource.id = FR_SAFFIREPRO_CMD_SYNC_CONFIG_INTERNAL; 
     373    m_internal_clocksource.slipping = false; 
     374    m_internal_clocksource.description = "Internal"; 
     375 
     376    m_spdif_clocksource.type = FFADODevice::eCT_SPDIF; 
     377    m_spdif_clocksource.valid = true; 
     378    m_spdif_clocksource.locked = false; 
     379    m_spdif_clocksource.id = FR_SAFFIREPRO_CMD_SYNC_CONFIG_SPDIF; 
     380    m_spdif_clocksource.slipping = false; 
     381    m_spdif_clocksource.description = "S/PDIF"; 
     382 
     383    m_wordclock_clocksource.type = FFADODevice::eCT_WordClock; 
     384    m_wordclock_clocksource.valid = true; 
     385    m_wordclock_clocksource.locked = false; 
     386    m_wordclock_clocksource.id = FR_SAFFIREPRO_CMD_SYNC_CONFIG_WORDCLOCK; 
     387    m_wordclock_clocksource.slipping = false; 
     388    m_wordclock_clocksource.description = "WordClock"; 
     389 
     390    if(isPro26()) { 
     391        m_adat1_clocksource.type = FFADODevice::eCT_ADAT; 
     392        m_adat1_clocksource.valid = true; 
     393        m_adat1_clocksource.locked = false; 
     394        m_adat1_clocksource.id = FR_SAFFIREPRO_CMD_SYNC_CONFIG_ADAT1; 
     395        m_adat1_clocksource.slipping = false; 
     396        m_adat1_clocksource.description = "ADAT 1"; 
     397 
     398        m_adat2_clocksource.type = FFADODevice::eCT_ADAT; 
     399        m_adat2_clocksource.valid = true; 
     400        m_adat2_clocksource.locked = false; 
     401        m_adat2_clocksource.id = FR_SAFFIREPRO_CMD_SYNC_CONFIG_ADAT2; 
     402        m_adat2_clocksource.slipping = false; 
     403        m_adat2_clocksource.description = "ADAT 2"; 
     404    } 
     405} 
     406 
     407FFADODevice::ClockSource 
     408SaffireProDevice::getActiveClockSource() 
     409{ 
     410    uint32_t sync; 
     411    if ( !getSpecificValue(FR_SAFFIREPRO_CMD_ID_SYNC_CONFIG, &sync ) ){ 
     412        debugError( "getSpecificValue failed\n" ); 
     413        return ClockSource(); 
     414    } 
     415 
     416    updateClockSources(); // make sure the current state is reflected in the clocksources 
     417 
     418    switch(sync) { 
     419        case FR_SAFFIREPRO_CMD_SYNC_CONFIG_INTERNAL: 
     420            return m_internal_clocksource; 
     421        case FR_SAFFIREPRO_CMD_SYNC_CONFIG_SPDIF: 
     422            return m_spdif_clocksource; 
     423        case FR_SAFFIREPRO_CMD_SYNC_CONFIG_ADAT1: 
     424            return m_adat1_clocksource; 
     425        case FR_SAFFIREPRO_CMD_SYNC_CONFIG_ADAT2: 
     426            return m_adat2_clocksource; 
     427        case FR_SAFFIREPRO_CMD_SYNC_CONFIG_WORDCLOCK: 
     428            return m_wordclock_clocksource; 
     429        default: 
     430            debugWarning( "Unexpected SYNC_CONFIG field value: %08lX\n", sync ); 
     431            return ClockSource(); 
     432    } 
     433} 
     434 
     435bool 
     436SaffireProDevice::setActiveClockSource(ClockSource s) 
     437{ 
     438    if ( !setSpecificValue(FR_SAFFIREPRO_CMD_ID_SYNC_CONFIG, s.id ) ){ 
     439        debugError( "detSpecificValue failed\n" ); 
     440        return false; 
     441    } 
     442    return true; 
     443} 
     444 
     445FFADODevice::ClockSourceVector 
     446SaffireProDevice::getSupportedClockSources() 
     447{ 
     448    FFADODevice::ClockSourceVector r; 
     449    r.push_back(m_internal_clocksource); 
     450    r.push_back(m_spdif_clocksource); 
     451    r.push_back(m_wordclock_clocksource); 
     452    if(isPro26()) { 
     453        r.push_back(m_adat1_clocksource); 
     454        r.push_back(m_adat2_clocksource); 
     455    } 
     456    return r; 
     457} 
     458 
     459uint16_t 
     460SaffireProDevice::getConfigurationIdSyncMode() 
     461{ 
     462    uint32_t sync; 
     463    if ( !getSpecificValue(FR_SAFFIREPRO_CMD_ID_SYNC_CONFIG, &sync ) ){ 
     464        debugError( "getSpecificValue failed\n" ); 
     465        return 0xFFFF; 
     466    } 
     467    return sync & 0xFFFF; 
    363468} 
    364469 
  • trunk/libffado/src/bebob/focusrite/focusrite_saffirepro.h

    r1184 r1253  
    395395    void setEnableDigitalChannel(enum eDigitalChannel, unsigned int); 
    396396 
     397    bool isPro10() 
     398            {return getConfigRom().getModelId() == 0x00000006;}; 
     399    bool isPro26() 
     400            {return getConfigRom().getModelId() == 0x00000003;}; 
     401 
     402public: 
     403    // override these since we want to use the focusrite way of setting 
     404    // the clock 
     405    virtual ClockSourceVector getSupportedClockSources(); 
     406    virtual bool setActiveClockSource(ClockSource); 
     407    virtual ClockSource getActiveClockSource(); 
     408 
     409protected: 
     410    virtual uint16_t getConfigurationIdSyncMode(); 
     411 
    397412private: 
    398413    virtual bool setSamplingFrequencyDo( uint32_t ); 
    399414    virtual bool setSamplingFrequencyDoNoReboot( uint32_t ); 
     415 
     416private: 
     417    void updateClockSources(); 
     418    ClockSource m_internal_clocksource; 
     419    ClockSource m_spdif_clocksource; 
     420    ClockSource m_wordclock_clocksource; 
     421    ClockSource m_adat1_clocksource; 
     422    ClockSource m_adat2_clocksource; 
    400423 
    401424    Control::Container *m_MixerContainer; 
  • trunk/libffado/support/mixer/mixer_saffire_base.py

    r1217 r1253  
    2424 
    2525# the class that holds all actual control code 
    26 class SaffireMixerBase()
     26class SaffireMixerBase
    2727    def __init__(self): 
    2828        pass