Changeset 665

Show
Ignore:
Timestamp:
10/21/07 05:14:14 (13 years ago)
Author:
ppalmers
Message:

Implement support for Phantom power on the fireworks devices

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/fireworks/efc/efc_cmd.cpp

    r663 r665  
    3636// static int to keep track of the sequence index 
    3737uint32_t EfcCmd::m_seqnum = 1; 
     38 
     39// some generic string generation functions 
     40const char *eMixerTargetToString(const enum eMixerTarget target) { 
     41    switch (target) { 
     42        case eMT_PhysicalOutputMix: 
     43            return "PhysicalOutputMix"; 
     44        case eMT_PhysicalInputMix: 
     45            return "PhysicalInputMix"; 
     46        case eMT_PlaybackMix: 
     47            return "PlaybackMix"; 
     48        case eMT_RecordMix: 
     49            return "RecordMix"; 
     50        default: 
     51            return "invalid"; 
     52    } 
     53} 
     54 
     55const char *eMixerCommandToString(const enum eMixerCommand command) { 
     56    switch (command) { 
     57        case eMC_Gain: 
     58            return "Gain"; 
     59        case eMC_Solo: 
     60            return "Solo"; 
     61        case eMC_Mute: 
     62            return "Mute"; 
     63        case eMC_Pan: 
     64            return "Pan"; 
     65        case eMC_Nominal: 
     66            return "Nominal"; 
     67        default: 
     68            return "invalid"; 
     69    } 
     70} 
     71 
     72const char *eIOConfigRegisterToString(const enum eIOConfigRegister reg) { 
     73    switch (reg) { 
     74        case eCR_Mirror: 
     75            return "Mirror"; 
     76        case eCR_DigitalMode: 
     77            return "DigitalMode"; 
     78        case eCR_Phantom: 
     79            return "Phantom"; 
     80        default: 
     81            return "invalid"; 
     82    } 
     83} 
     84 
     85// the real deal 
    3886 
    3987EfcCmd::EfcCmd(uint32_t cat, uint32_t cmd) 
  • trunk/libffado/src/fireworks/efc/efc_cmd.h

    r663 r665  
    7575#define EFC_CMD_MIXER_GET_NOMINAL     9 
    7676 
     77// Commands for the EFC_CAT_IO_CONFIG category 
     78#define EFC_CMD_IO_CONFIG_SET_MIRROR        0 
     79#define EFC_CMD_IO_CONFIG_GET_MIRROR        1 
     80#define EFC_CMD_IO_CONFIG_SET_DIGITAL_MODE  2 
     81#define EFC_CMD_IO_CONFIG_GET_DIGITAL_MODE  3 
     82#define EFC_CMD_IO_CONFIG_SET_PHANTOM       4 
     83#define EFC_CMD_IO_CONFIG_GET_PHANTOM       5 
     84#define EFC_CMD_IO_CONFIG_SET_ISOC_MAP      6 
     85#define EFC_CMD_IO_CONFIG_GET_ISOC_MAP      7 
     86 
     87 
    7788// size of the header 
    7889#define EFC_HEADER_LENGTH_QUADLETS      ((sizeof(uint32_t) + sizeof(struct EfcCmd::efc_header))/4) 
     
    125136 
    126137namespace FireWorks { 
     138 
     139enum eMixerTarget { 
     140    eMT_PhysicalOutputMix, 
     141    eMT_PhysicalInputMix, 
     142    eMT_PlaybackMix, 
     143    eMT_RecordMix, 
     144}; 
     145enum eMixerCommand { 
     146    eMC_Gain, 
     147    eMC_Solo, 
     148    eMC_Mute, 
     149    eMC_Pan, 
     150    eMC_Nominal, 
     151}; 
     152enum eCmdType { 
     153    eCT_Get, 
     154    eCT_Set, 
     155}; 
     156 
     157enum eIOConfigRegister { 
     158    eCR_Mirror, 
     159    eCR_DigitalMode, 
     160    eCR_Phantom, 
     161}; 
     162 
     163const char *eMixerTargetToString(const enum eMixerTarget target); 
     164const char *eMixerCommandToString(const enum eMixerCommand command); 
     165const char *eIOConfigRegisterToString(const enum eIOConfigRegister reg); 
    127166 
    128167class EfcCmd 
  • trunk/libffado/src/fireworks/efc/efc_cmds_hardware.h

    r639 r665  
    4141    } caps_phys_group; 
    4242 
    43  
    4443public: 
    4544    EfcHardwareInfoCmd(); 
     
    5352     
    5453    virtual void showEfcCmd(); 
     54     
     55    bool hasSoftwarePhantom() 
     56        {return EFC_CMD_HW_CHECK_FLAG(m_flags, EFC_CMD_HW_HAS_PHANTOM);}; 
     57    bool hasDSP() 
     58        {return EFC_CMD_HW_CHECK_FLAG(m_flags, EFC_CMD_HW_HAS_DSP);}; 
     59    bool hasFPGA() 
     60        {return EFC_CMD_HW_CHECK_FLAG(m_flags, EFC_CMD_HW_HAS_FPGA);}; 
     61    bool hasSpdifCoax() 
     62        {return EFC_CMD_HW_CHECK_FLAG(m_flags, EFC_CMD_HW_SPDIF_COAX_SUPPORTED);}; 
     63    bool hasSpdifAESEBUXLR() 
     64        {return EFC_CMD_HW_CHECK_FLAG(m_flags, EFC_CMD_HW_SPDIF_AESEBUXLR_SUPPORTED);}; 
     65    bool hasMirroring() 
     66        {return EFC_CMD_HW_CHECK_FLAG(m_flags, EFC_CMD_HW_MIRRORING_SUPPORTED);}; 
     67    bool hasDynAddr() 
     68        {return EFC_CMD_HW_CHECK_FLAG(m_flags, EFC_CMD_HW_DYNADDR_SUPPORTED);}; 
    5569 
    5670    uint32_t            m_flags; 
  • trunk/libffado/src/fireworks/efc/efc_cmds_mixer.cpp

    r664 r665  
    3131 
    3232namespace FireWorks { 
    33  
    34 const char *eMixerTargetToString(const enum eMixerTarget target) { 
    35     switch (target) { 
    36         case eMT_PhysicalOutputMix: 
    37             return "eMT_PhysicalOutputMix"; 
    38         case eMT_PhysicalInputMix: 
    39             return "eMT_PhysicalInputMix"; 
    40         case eMT_PlaybackMix: 
    41             return "eMT_PlaybackMix"; 
    42         case eMT_RecordMix: 
    43             return "eMT_RecordMix"; 
    44         default: 
    45             return "invalid"; 
    46     } 
    47 } 
    48  
    49 const char *eMixerCommandToString(const enum eMixerCommand command) { 
    50     switch (command) { 
    51         case eMC_Gain: 
    52             return "eMC_Gain"; 
    53         case eMC_Solo: 
    54             return "eMC_Solo"; 
    55         case eMC_Mute: 
    56             return "eMC_Mute"; 
    57         case eMC_Pan: 
    58             return "eMC_Pan"; 
    59         case eMC_Nominal: 
    60             return "eMC_Nominal"; 
    61         default: 
    62             return "invalid"; 
    63     } 
    64 } 
    6533 
    6634EfcGenericMixerCmd::EfcGenericMixerCmd(enum eMixerTarget target,  
  • trunk/libffado/src/fireworks/efc/efc_cmds_mixer.h

    r664 r665  
    2828 
    2929namespace FireWorks { 
    30  
    31 enum eMixerTarget { 
    32     eMT_PhysicalOutputMix, 
    33     eMT_PhysicalInputMix, 
    34     eMT_PlaybackMix, 
    35     eMT_RecordMix, 
    36 }; 
    37 enum eMixerCommand { 
    38     eMC_Gain, 
    39     eMC_Solo, 
    40     eMC_Mute, 
    41     eMC_Pan, 
    42     eMC_Nominal, 
    43 }; 
    44 enum eCmdType { 
    45     eCT_Get, 
    46     eCT_Set, 
    47 }; 
    4830 
    4931class EfcGenericMixerCmd : public EfcCmd 
  • trunk/libffado/src/fireworks/fireworks_device.cpp

    r664 r665  
    218218 
    219219    // Playback mix controls 
    220     for (int ch=0;ch<m_HwInfo.m_nb_1394_playback_channels;ch++) { 
     220    for (unsigned int ch=0;ch<m_HwInfo.m_nb_1394_playback_channels;ch++) { 
    221221        std::ostringstream node_name; 
    222222        node_name << "PC" << ch; 
     
    229229     
    230230    // Physical output mix controls 
    231     for (int ch=0;ch<m_HwInfo.m_nb_phys_audio_out;ch++) { 
     231    for (unsigned int ch=0;ch<m_HwInfo.m_nb_phys_audio_out;ch++) { 
    232232        std::ostringstream node_name; 
    233233        node_name << "OUT" << ch; 
     
    241241    } 
    242242     
     243    // check for IO config controls and add them if necessary 
     244    if(m_HwInfo.hasMirroring()) { 
     245        result &= m_MixerContainer->addElement( 
     246            new IOConfigControl(*this, eCR_Mirror, "ChannelMirror")); 
     247    } 
     248    if(m_HwInfo.hasSoftwarePhantom()) { 
     249        result &= m_MixerContainer->addElement( 
     250            new IOConfigControl(*this, eCR_Phantom, "PhantomPower")); 
     251    } 
     252 
    243253    if (!result) { 
    244254        debugWarning("One or more control elements could not be created."); 
  • trunk/libffado/src/SConscript

    r664 r665  
    115115        fireworks/efc/efc_cmds_mixer.cpp \ 
    116116        fireworks/efc/efc_cmds_monitor.cpp \ 
     117        fireworks/efc/efc_cmds_ioconfig.cpp \ 
    117118        fireworks/audiofire/audiofire_device.cpp \ 
    118119' )