C-Media 65xx修改VID&PID

#ifndef __CM65xx_H__
#define __CM65xx_H__
#include "types.h"

extern BYTE code T1_ConfigDscr;
extern BYTE code T1_ACIntrfcDscrHeader;
extern BYTE code T1_OTerminal3Dscr;
extern BYTE code T1_OTerminal3DscrEnd;
extern BYTE code T1_FeatureUnit5Dscr;
extern BYTE code T1_FeatureUnit5DscrEnd;
extern BYTE code T1_FeatureUnit6Dscr;
extern BYTE code T1_FeatureUnit6DscrEnd;
extern BYTE code T1_FeatureUnit7Dscr;
extern BYTE code T1_FeatureUnit7DscrEnd;
extern BYTE code T1_MixerUnit9Dscr;
extern BYTE code T1_MixerUnit9DscrEnd;
extern BYTE code T1_ASIt1Alt1Dscr;
extern BYTE code T1_ASIt1Alt1DscrEnd;
extern BYTE code T1_ASIt1Alt1EpDscr;
extern BYTE code T1_ASIt1Alt1EpDscrEnd;
extern BYTE code T1_ASIt1Alt1FbEpDscr;
extern BYTE code T1_ASIt1Alt1FbEpDscrEnd;
extern BYTE code T1_ASIt2Alt1EpDscr;
extern BYTE code T1_ASIt2Alt1EpDscrEnd;
extern BYTE code T1_HidDscr;

extern BYTE code T2_ConfigDscr;
extern BYTE code T2_ACIntrfcDscrHeader;
extern BYTE code T2_OTerminal2Dscr;
extern BYTE code T2_OTerminal2DscrEnd;
extern BYTE code T2_FeatureUnit3Dscr;
extern BYTE code T2_FeatureUnit3DscrEnd;
extern BYTE code T2_ASIt1Alt1Dscr;
extern BYTE code T2_ASIt1Alt1DscrEnd;
extern BYTE code T2_ASIt1Alt1EpDscr;
extern BYTE code T2_ASIt1Alt1EpDscrEnd;
extern BYTE code T2_ASIt1Alt1FbEpDscr;
extern BYTE code T2_ASIt1Alt1FbEpDscrEnd;
extern BYTE code T2_HidDscr;

extern BYTE code T3_ConfigDscr;
extern BYTE code T3_ACIntrfcDscrHeader;
extern BYTE code T3_ITerminal1Dscr;
extern BYTE code T3_FeatureUnit3Dscr;
extern BYTE code T3_FeatureUnit3DscrEnd;
extern BYTE code T3_ASIt1Alt1EpDscr;
extern BYTE code T3_ASIt1Alt1EpDscrEnd;
extern BYTE code T3_HidDscr;

extern BYTE code T4_ConfigDscr;
extern BYTE code T4_ACIntrfcDscrHeader;
extern BYTE code T4_ITerminal4Dscr;
extern BYTE code T4_ITerminal4DscrEnd;
extern BYTE code T4_ITerminal5Dscr;
extern BYTE code T4_ITerminal5DscrEnd;
extern BYTE code T4_OTerminal6Dscr;
extern BYTE code T4_OTerminal6DscrEnd;
extern BYTE code T4_FeatureUnit8Dscr;
extern BYTE code T4_FeatureUnit8DscrEnd;
extern BYTE code T4_FeatureUnit9Dscr;
extern BYTE code T4_FeatureUnit9DscrEnd;
extern BYTE code T4_FeatureUnit11Dscr;
extern BYTE code T4_FeatureUnit11DscrEnd;
extern BYTE code T4_FeatureUnit12Dscr;
extern BYTE code T4_FeatureUnit12DscrEnd;
extern BYTE code T4_FeatureUnit13Dscr;
extern BYTE code T4_FeatureUnit13DscrEnd;
extern BYTE code T4_FeatureUnit14Dscr;
extern BYTE code T4_FeatureUnit14DscrEnd;
extern BYTE code T4_SelectorUnit15Dscr;
extern BYTE code T4_SelectorUnit15DscrEnd;
extern BYTE code T4_SelectorUnit15Dscr_0;
extern BYTE code T4_SelectorUnit15DscrEnd_0;
extern BYTE code T4_SelectorUnit15Dscr_1;
extern BYTE code T4_SelectorUnit15DscrEnd_1;
extern BYTE code T4_SelectorUnit15Dscr_2;
extern BYTE code T4_SelectorUnit15DscrEnd_2;
extern BYTE code T4_MixerUnit16Dscr;
extern BYTE code T4_MixerUnit16DscrEnd;
extern BYTE code T4_ASIt1Alt1Dscr;
extern BYTE code T4_ASIt1Alt1DscrEnd;
extern BYTE code T4_ASIt1Alt1EpDscr;
extern BYTE code T4_ASIt1Alt1EpDscrEnd;
extern BYTE code T4_ASIt1Alt1FbEpDscr;
extern BYTE code T4_ASIt1Alt1FbEpDscrEnd;
extern BYTE code T4_ASIt2Alt1EpDscr;
extern BYTE code T4_ASIt2Alt1EpDscrEnd;
extern BYTE code T4_HidDscr;

#define VENDOR_ID_CMEDIA_H        0x0D   //VID高位
#define VENDOR_ID_CMEDIA_L        0x8C   //VID低位

#define DEFAULT_PRODUCT_NUM        5

#define PRODUCT_HEADSET            1
#define PRODUCT_HEADPHONE        2
#define PRODUCT_DOCKING            3
#define PRODUCT_MONO_MIC        4
#define PRODUCT_STEREO_MIC        5

#define PRODUCT_ID_BASE_H            0x01    //PID高位
#define PRODUCT_ID_BASE_L            0x70    //PID低位

#define PRODUCT_ID_GROUP_HEADSET    0x00
#define PRODUCT_ID_GROUP_SPEAKER    0x01
#define PRODUCT_ID_GROUP_MIC        0x02
#define PRODUCT_ID_GROUP_DOCKING    0x03

#define MAX_BUFFER_SIZE                    16
#define MAX_HID_REPORT_SIZE                16


#define EEPROM_DEVICE_ADDRESS            0xA0

#define EEPROM_VENDOR_ID_ADDR            0x02
#define EEPROM_PRODUCT_ID_ADDR            0x04
#define EEPROM_SETTING_A_ADDR            0x06            
#define EEPROM_SETTING_B_ADDR            0x07
#define EEPROM_SETTING_C_ADDR            0x08
#define EEPROM_SETTING_D_ADDR            0x09
#define EEPROM_SETTING_E_ADDR            0x0A
#define EEPROM_SETTING_F_ADDR            0x0B
#define EEPROM_GROUP_MCU_CODE_ADDR        0x0C        
#define EEPROM_GROUP_START_ADDR            0x0C


#define EEPROM_GROUP_NUM                7
#define EEPROM_GROUP_END                0x7F

#define HID_REPORT_ID_GENEGRIC        0x01

#define HID_INPUT_REPORT_INT_IR        bmBIT0
#define HID_INPUT_REPORT_INT_I2C        bmBIT1
#define HID_INPUT_REPORT_INT_SPI        bmBIT3
#define HID_INPUT_REPORT_INT_UART        bmBIT6
#define HID_INPUT_REPORT_INT_GPIO        bmBIT5
#define HID_INPUT_REPORT_INT_I2C_SLAVE    bmBIT2
#define HID_INPUT_REPORT_INT_SPI_SLAVE    bmBIT4

#define DEFAULT_GPIO_RECORD_MUTE        0x03

//Headsets
#define T1_LENGTH            0x0106
#define T1_HEADER_ADDR        (&T1_ACIntrfcDscrHeader - &T1_ConfigDscr)
#define T1_HEADER_LEN        (g_bmAaPathEn ? 0x0066 : 0x004F)
#define T1_OT_ADDR            (&T1_OTerminal3Dscr - &T1_ConfigDscr)
#define T1_OT_LEN            (&T1_OTerminal3DscrEnd - &T1_OTerminal3Dscr)
#define T1_FEA_DAC_ADDR    (&T1_FeatureUnit5Dscr - &T1_ConfigDscr)
#define T1_FEA_DAC_LEN        (&T1_FeatureUnit5DscrEnd - &T1_FeatureUnit5Dscr)
#define T1_FEA_ADC_ADDR    (&T1_FeatureUnit6Dscr - &T1_ConfigDscr)
#define T1_FEA_ADC_LEN        (&T1_FeatureUnit6DscrEnd - &T1_FeatureUnit6Dscr)
#define T1_FEA_AA_ADDR        (&T1_FeatureUnit7Dscr - &T1_ConfigDscr)
#define T1_FEA_AA_LEN        (&T1_FeatureUnit7DscrEnd - &T1_FeatureUnit7Dscr)
#define T1_MIX_ADDR            (&T1_MixerUnit9Dscr - &T1_ConfigDscr)
#define T1_MIX_LEN            (&T1_MixerUnit9DscrEnd - &T1_MixerUnit9Dscr)
#define T1_I1A1_ADDR        (&T1_ASIt1Alt1Dscr - &T1_ConfigDscr)
#define T1_I1A1_LEN            (&T1_ASIt1Alt1DscrEnd - &T1_ASIt1Alt1Dscr)
#define T1_I1A1E_ADDR        (&T1_ASIt1Alt1EpDscr - &T1_ConfigDscr)    
#define T1_I1A1E_LEN        (&T1_ASIt1Alt1EpDscrEnd - &T1_ASIt1Alt1EpDscr)
#define T1_I1A1FE_ADDR        (&T1_ASIt1Alt1FbEpDscr - &T1_ConfigDscr)
#define T1_I1A1FE_LEN        (&T1_ASIt1Alt1FbEpDscrEnd - &T1_ASIt1Alt1FbEpDscr)
#define T1_I2A1E_ADDR        (&T1_ASIt2Alt1EpDscr - &T1_ConfigDscr)    
#define T1_I2A1E_LEN        (&T1_ASIt2Alt1EpDscrEnd - &T1_ASIt2Alt1EpDscr)
//fix wrong HID report dscr. length
#define T1_HID_ADDR            (&T1_HidDscr- &T1_ConfigDscr)

//Speaker
#define T2_LENGTH            0x0099
#define T2_HEADER_ADDR        (&T2_ACIntrfcDscrHeader - &T2_ConfigDscr)
#define T2_HEADER_LEN        0x0028
#define T2_OT_ADDR            (&T2_OTerminal2Dscr - &T2_ConfigDscr)
#define T2_OT_LEN            (&T2_OTerminal2DscrEnd - &T2_OTerminal2Dscr)
#define T2_FEA_DAC_ADDR    (&T2_FeatureUnit3Dscr - &T2_ConfigDscr)
#define T2_FEA_DAC_LEN        (&T2_FeatureUnit3DscrEnd - &T2_FeatureUnit3Dscr)
#define T2_I1A1_ADDR        (&T2_ASIt1Alt1Dscr - &T2_ConfigDscr)
#define T2_I1A1_LEN            (&T2_ASIt1Alt1DscrEnd - &T2_ASIt1Alt1Dscr)
#define T2_I1A1E_ADDR        (&T2_ASIt1Alt1EpDscr - &T2_ConfigDscr)
#define T2_I1A1E_LEN        (&T2_ASIt1Alt1EpDscrEnd - &T2_ASIt1Alt1EpDscr)
#define T2_I1A1FE_ADDR        (&T2_ASIt1Alt1FbEpDscr - &T2_ConfigDscr)
#define T2_I1A1FE_LEN        (&T2_ASIt1Alt1FbEpDscrEnd - &T2_ASIt1Alt1FbEpDscr)
//fix wrong HID report dscr. length
#define T2_HID_ADDR            (&T2_HidDscr- &T2_ConfigDscr)

//Stereo Mic
#define T3_LENGTH            0x00A0
#define T3_HEADER_ADDR        (&T3_ACIntrfcDscrHeader - &T3_ConfigDscr)
#define T3_HEADER_LEN        0x002F
#define T3_IT_ADDR            (&T3_ITerminal1Dscr - &T3_ConfigDscr)
#define T3_FEA_ADC_ADDR    (&T3_FeatureUnit3Dscr - &T3_ConfigDscr)
#define T3_FEA_ADC_LEN        (&T3_FeatureUnit3DscrEnd - &T3_FeatureUnit3Dscr)
#define T3_I1A1E_ADDR        (&T3_ASIt1Alt1EpDscr - &T3_ConfigDscr)
#define T3_I1A1E_LEN        (&T3_ASIt1Alt1EpDscrEnd - &T3_ASIt1Alt1EpDscr)
//fix wrong HID report dscr. length
#define T3_HID_ADDR            (&T3_HidDscr- &T3_ConfigDscr)

//Dongle and Docking
#define T4_LENGTH            0x011D
#define T4_HEADER_ADDR        (&T4_ACIntrfcDscrHeader - &T4_ConfigDscr)
#define T4_HEADER_LEN        0x0066
#define T4_IT_S_ADDR        (&T4_ITerminal4Dscr - &T4_ConfigDscr)
#define T4_IT_S_LEN            (&T4_ITerminal4DscrEnd - &T4_ITerminal4Dscr)
#define T4_IT_M_ADDR        (&T4_ITerminal5Dscr - &T4_ConfigDscr)
#define T4_IT_M_LEN            (&T4_ITerminal5DscrEnd - &T4_ITerminal5Dscr)
#define T4_OT_ADDR            (&T4_OTerminal6Dscr - &T4_ConfigDscr)
#define T4_OT_LEN            (&T4_OTerminal6DscrEnd - &T4_OTerminal6Dscr)
#define T4_FEA_DAC_ADDR    (&T4_FeatureUnit8Dscr - &T4_ConfigDscr)
#define T4_FEA_DAC_LEN        (&T4_FeatureUnit8DscrEnd - &T4_FeatureUnit8Dscr)
#define T4_FEA_ADCM_ADDR    (&T4_FeatureUnit9Dscr - &T4_ConfigDscr)
#define T4_FEA_ADCM_LEN    (&T4_FeatureUnit9DscrEnd - &T4_FeatureUnit9Dscr)
#define T4_FEA_SPD_ADDR    (&T4_FeatureUnit11Dscr - &T4_ConfigDscr)
#define T4_FEA_SPD_LEN        (&T4_FeatureUnit11DscrEnd - &T4_FeatureUnit11Dscr)
#define T4_FEA_MIX_ADDR    (&T4_FeatureUnit12Dscr - &T4_ConfigDscr)
#define T4_FEA_MIX_LEN        (&T4_FeatureUnit12DscrEnd - &T4_FeatureUnit12Dscr)
#define T4_FEA_AAM_ADDR    (&T4_FeatureUnit13Dscr - &T4_ConfigDscr)
#define T4_FEA_AAM_LEN        (&T4_FeatureUnit13DscrEnd - &T4_FeatureUnit13Dscr)
#define T4_FEA_AAL_ADDR    (&T4_FeatureUnit14Dscr - &T4_ConfigDscr)
#define T4_FEA_AAL_LEN        (&T4_FeatureUnit14DscrEnd - &T4_FeatureUnit14Dscr)
#define T4_SEL_ADDR            (&T4_SelectorUnit15Dscr - &T4_ConfigDscr)
#define T4_SEL_LEN_1        (&T4_SelectorUnit15DscrEnd - &T4_SelectorUnit15Dscr)
#define T4_SEL_LEN_2        (&T4_SelectorUnit15DscrEnd_0 - &T4_SelectorUnit15Dscr_0)
#define T4_SEL_LEN_3        (&T4_SelectorUnit15DscrEnd_1 - &T4_SelectorUnit15Dscr_1)
#define T4_SEL_LEN_4        (&T4_SelectorUnit15DscrEnd_2 - &T4_SelectorUnit15Dscr_2)
#define T4_SEL_LEN_ALL        (&T4_SelectorUnit15DscrEnd_2 - &T4_SelectorUnit15Dscr)
#define T4_MIX_ADDR            (&T4_MixerUnit16Dscr - &T4_ConfigDscr)
#define T4_MIX_LEN            (&T4_MixerUnit16DscrEnd - &T4_MixerUnit16Dscr)
#define T4_I1A1_ADDR        (&T4_ASIt1Alt1Dscr - &T4_ConfigDscr)
#define T4_I1A1_LEN            (&T4_ASIt1Alt1DscrEnd - &T4_ASIt1Alt1Dscr)
#define T4_I1A1E_ADDR        (&T4_ASIt1Alt1EpDscr - &T4_ConfigDscr)
#define T4_I1A1E_LEN        (&T4_ASIt1Alt1EpDscrEnd - &T4_ASIt1Alt1EpDscr)
#define T4_I1A1FE_ADDR        (&T4_ASIt1Alt1FbEpDscr - &T4_ConfigDscr)
#define T4_I1A1FE_LEN        (&T4_ASIt1Alt1FbEpDscrEnd - &T4_ASIt1Alt1FbEpDscr)
#define T4_I2A1E_ADDR        (&T4_ASIt2Alt1EpDscr - &T4_ConfigDscr)
#define T4_I2A1E_LEN        (&T4_ASIt2Alt1EpDscrEnd - &T4_ASIt2Alt1EpDscr)
//fix wrong HID report dscr. length
#define T4_HID_ADDR            (&T4_HidDscr- &T4_ConfigDscr)

//Lync
#define T5_LENGTH            0x00DB

typedef enum
{
    EEPROM_GROUP_FEATURE_CTRL = 0,
    EEPROM_GROUP_MANUFACTURE_STRING,    
    EEPROM_GROUP_PRODUCT_STRING,
    EEPROM_GROUP_SERIAL_STRING,
    EEPROM_GROUP_MEMORY_DSCR,
    EEPROM_GROUP_DESCRIPTORS,
    EEPROM_GROUP_HID_REPORT_DSCR,
    EEPROM_GROUP_HID_LYNC_STRING,
    EEPROM_GROUP_STEREO_MIXER,
    EEPROM_GROUP_OUTPUT_EQ,
    EEPROM_GROUP_INPUT_EQ,
    EEPROM_GROUP_MAX
} EEPROM_GROUP_TYPE;    

typedef struct _EEPROM_GROUP_INFO_STRUCT
{
    WORD wLength;
    WORD wStartAddr;
} EEPROM_GROUP_INFO_STRUCT;


typedef struct _AS_CONTROL_STRUCT
{
       BYTE attribute;            // bit7: invalid = 1, bit6: mono/stero, bit5~4: interface number, bit3~0: max alternate
       BYTE endpoint;            // endpoint number and direction
       void (*setFrequency)();
}AS_CONTROL_STRUCT;

typedef struct _AUDIO_CONTROL_STRUCT
{
    void                 (*featureVolume)();
    void                 (*featureMute)();
    void                    (*featureAgc)();
    void                 (*setSelector)();
    void                 (*recordMute)();
    BYTE    code         *pAcUnitTable;    
    AS_CONTROL_STRUCT    asControl[2];
}AUDIO_CONTROL_STRUCT;    

typedef struct _DEVICE_CONTROL_STRUCT
{
    BYTE bAudioInterface;
    BYTE bHidInterface;        
    //BOOL hidGetInReport();
    //BOOL hidSetOutReport();    
}DEVICE_CONTROL_STRUCT;    

typedef struct _CONVERTIBLE_CONTROL_TABLE_STRUCT 
{
    DEVICE_CONTROL_STRUCT code    *pDeviceControl;
    AUDIO_CONTROL_STRUCT code    *pAudioControl;    
    void (*initialize)();
    void (*reset)();
    void (*configure)();
    void (*event)();
    void (*gpi)();
    void (*ir)();    
}CONVERTIBLE_CONTROL_TABLE_STRUCT;

typedef enum
{
    LANGID_S = 0,
    MANUFACTURE_S,
    PRODUCT_S,
    SERIAL_S,
    LYNC_S = 33,
    VERSION1_S = 50,
    VERSION2_S = 80
} STRING_DSCR;

typedef enum
{
    NEC = 0,
    RC5,
    RC6
}IR_MODULE;

#endif // __CM65xx_H__
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值