⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ac97.h

📁 pxa270触摸屏驱动程序
💻 H
📖 第 1 页 / 共 2 页
字号:



static
UINT32  Ac97GetNumReady (Ac97ContextT* ctxP, int *numReady);
-------------=================----------

// 0x26
@@@
static
UINT32  Ac97GetPowerDownCtrlStat (Ac97ContextT* ctxP, PUINT32 powerDownCtrlStatP);

static
UINT32  Ac97SetPowerDownCtrlStat (Ac97ContextT* ctxP, UINT32  powerDownCtrlStat);

static
UINT32  Ac97PowerDownTheAnalogMixer (Ac97ContextT* ctxP );

static
UINT32  Ac97PowerDownTheACLink (Ac97ContextT* ctxP );  // How does this apply to 1ary, 2ary codecs?

static
UINT32  Ac97PowerDownTheInternalClock (Ac97ContextT* ctxP );

static
UINT32  Ac97PowerDownTheHeadPhoneOut (Ac97ContextT* ctxP );


static
UINT32  Ac97ResetRegistersModem (Ac97ContextT* ctxP);   // ??

-------------=================----------



/**********  AC97 Extended (2.0) Audio mixer registers (0x28-0x3A) ***********/

// 0x28: extended audio configuration info and Primary vs. Secondary ID
// Use AC97_EA_ID... constants to decode.
static
UINT32 Ac97GetExtendedAudioID (Ac97ContextT* ctxP, PUINT16 eaCapabilitiesP);

// 0x2A
    // Targeted controls only?
//    static
//    UINT32 ac97GetExtendedAudioStatCtrl (Ac97ContextT* ctxP, PUINT16 eaStatCtrlP);
//    static
//    UINT32 ac97SetExtendedAudioStatCtrl (Ac97ContextT* ctxP, UINT16 eaStatCtrl);

static
UINT32 ac97SetPcmVariableRateEnable (Ac97ContextT* ctxP, BOOL enable);
static
UINT32 ac97GetPcmVariableRateEnable (Ac97ContextT* ctxP, BOOL* enableP);

//    static
//    UINT32 ac97SetMicVariableRateEnable (Ac97ContextT* ctxP, BOOL enable);
//    static
//    UINT32 ac97GetMicVariableRateEnable (Ac97ContextT* ctxP, BOOL* enableP);

// 0x2C: Controls variable rate for SDAT_OUT slots 3, 4 & 6
static
UINT32 Ac97GetPcmFrontDacRate (Ac97ContextT* ctxP, PUINT16 currentRateP);

static
UINT32 Ac97SetPcmFrontDacRate (Ac97ContextT* ctxP, UINT16 desiredRate);

// 0x2E: Controls variable rate for SDAT_OUT slots 7, 8
// Not supported by target controller

// 0x30: Controls variable rate for SDATA_OUT TS 9
// Not supported by target controller

// 0x32: Controls variable rate for SDATA_IN slots 3, 4
static
UINT32 Ac97GetPcmLrAdcRate (Ac97ContextT* ctxP, PUINT16 currentRateP);

static
UINT32 Ac97SetPcmLrAdcRate (Ac97ContextT* ctxP, UINT16 desiredRate);

// 0x34: Controls variable rate for SDATA_IN slot 5
// !!! Not in UCB1400
//static
//UINT32 Ac97GetMicAdcRate (Ac97ContextT* ctxP, PUINT16 currentRateP);
//static
//UINT32 Ac97SetMicAdcRate (Ac97ContextT* ctxP, UINT16 desiredRate);

// 0x36: PCM Center and PCM LFE use SDATA_OUT TS 6 & 9
// Not supported by target controller

// 0x38: Left + Right Surround Sound use SDATA_OUT TS 7 & 8
// Not supported by target controller

// 0x3A: Reserved


/*********** AC97 Extended (r2.0) Modem mixer registers (0x3C-0x58) **********/
// - Modem support postponed.
// - No modem in UCB1400

// 0x3C
// Read-only here: any write is a warm modem reset, covered elsewhere.
//static
//UINT32 Ac97GetExtendedModemID (Ac97ContextT* ctxP,  PUINT16 emCapabilitiesP);

// 0x3E
// Extended Modem power control and subunit readiness indicator register
//static
//UINT32 Ac97GetExtendedModemStatCtrl (Ac97ContextT* ctxP, PUINT8 emReadinessP);

//static
//UINT32 Ac97SetExtendedModemStatCtrl (Ac97ContextT* ctxP, UINT8 emPowerEnablesP)

// 0x40: Line1 uses TS 5
//static
//UINT32 Ac97GetLine1DacAdcRate (Ac97ContextT* ctxP, PUINT16 actualRateP); 

//static
//UINT32 Ac97SetLine1DacAdcRate (Ac97ContextT* ctxP, UINT16 desiredRate);

// 0x42: Line2 uses TS 10
// Not supported by target controller

// 0x44: Handset uses TS 11
// Not supported by target controller

// 0x46: Line1 uses TS 5
//static
//UINT32 Ac97GetLine1DacAdcLevel (Ac97ContextT* ctxP, PUINT8 gainLeftP, PUINT8 gainRightP, int *muteEnableP);

//static
//UINT32 Ac97SetLine1DacAdcLevel (Ac97ContextT* ctxP, UINT8 gainLeft, UINT8 gainRight, int muteEnable);

// 0x48: Line2 uses TS 10
// Not supported by target controller

// 0x4A: Handset uses TS 11
// Not supported by target controller

// Standard GPIO processing involves the use of TS12

//@@@ GPIO support postponed
//@@@ UCB1400 provides somewhat non-standard GPIO support.  Might be able
//  to use these interface functions?

// 0x4C
//static
//UINT32 Ac97GetGpioPinConfig (Ac97ContextT* ctxP, PUINT16 pinsConfigP);

//static
//UINT32 Ac97SetGpioPinConfig (Ac97ContextT* ctxP, UINT16  pinsConfig, UINT16 targetPinsMask);

// 0x4E
//static
//UINT32 Ac97GetGpioPinPolarityType (Ac97ContextT* ctxP, PUINT16 pinsPolarityTypeP);

//static
//UINT32 Ac97SetGpioPinPolarityType (Ac97ContextT* ctxP, UINT16  pinsPolarityType, UINT16 targetPinsMask);

// 0x50
//static
//UINT32 Ac97GetGpioPinSticky (Ac97ContextT* ctxP, PUINT16 );

//static
//UINT32 Ac97SetGpioPinSticky (Ac97ContextT* ctxP, UINT16  , UINT16 Mask);

// 0x52
//static
//UINT32 Ac97GetGpioPinWakeup (Ac97ContextT* ctxP, PUINT16 );

//static
//UINT32 Ac97SetGpioPinWakeup (Ac97ContextT* ctxP, UINT16  , UINT16 Mask);

// 0x54: Standard GPIO processing also uses TS 12 for reporting levels (status)
//       Standard GPIO processing uses only TS 12 for setting levels  
//       Some codecs perform the GPIO operations via Vendor reserved registers.
//          These structure members will be used for them anyway, because 
//          the logical operation is equivalent.
//static
//UINT32 Ac97GetGpioPinStatus (Ac97ContextT* ctxP, PUINT16 );

    // Bits 1..3 of SDATA_IN TS 12, normalized
//static
//UINT32 Ac97GetGpioSlot12RsvdBitsStatus (Ac97ContextT* ctxP, PUINT16 );

//static
//UINT32 Ac97ClearGpioPinStatus (Ac97ContextT* ctxP, UINT16 Mask);

    // Set any masked-in pin to either 0 or 1
//static
//UINT32 Ac97SetGpioPinStatus (Ac97ContextT* ctxP, UINT16  , UINT16 Mask);

//static           // Check Bit 0 of SDATA_IN TS 12, clear record of change to 1
//UINT32 Ac97GetAndClearGpioPinChange (Ac97ContextT* ctxP, PUINT16 );

// 0x56
//static
//UINT32 Ac97GetMiscMdmStatCtrl (Ac97ContextT* ctxP, PUINT16 );

//static
//UINT32 Ac97SetMiscMdmStatCtrl (Ac97ContextT* ctxP, UINT16, UINT16 Mask);

// 0x58 Reserved


/***************  Vendor reserved mixer registers (0x5A-0x7A) ****************/

// Philips UCB1400

// 0x5A
// I/O data 0..9: Deferred implementation (GPIO)

// 0x5C
// I/O direction 0..9: Deferred implementation (GPIO)

// 0x5E
// Positive Int Enable: leave for touch screen

// 0x60
// Negative Int Enable: leave for touch screen

// 0x62
// INT clear/status: leave for touch screen

// 0x64
// Touch screen control

// 0x66
// ADC control: touch screen

// 0x68
// ADC data: touch screen

// 0x6A
// Feature CSR1 : bass/treble control is covered in the Reg 08 functions
//               Other features are even lower priority.

// 0x6C
//  Feature CSR2: Sleep control and test modes, several loop controls.  Good
//                 features for some uses, but not first priority for driver.

// 0x6E
// (test control): Valid only during Vendor Specific Test Mode.  Not very 
//  interesting for DM.  Silicon testing, insufficient doc.

// 0x70
// 0x72
// 0x74
// 0x76
// 0x78
// 0x7A

// Other codecs
//
//
// 0x5A
// 0x5C
// 0x5E
// 0x60
// 0x62
// 0x64
// 0x66
// 0x68
// 0x6A
// 0x6C
// 0x6E
// 0x70
// 0x72
// 0x74
// 0x76
// 0x78
// 0x7A

/********************* Last two original AC97 mixer registers ****************/

// 0x7C, 0x7E
static
UINT32  Ac97GetVendorIDandRev (Ac97ContextT* ctxP, char *vendorIdP, PUINT8 revLevelP);


/***************  Services not mediated by mixer registers ****************/

static
UINT32  AC07_MuteAllUnimplemented(Ac97ContextT* ctxP );

void Ac97WriteFifoStatus (Ac97FifoProcessingInfoT* fifoInfoP, 
                          UINT32                   bitMask, 
                          INT                      setClear);

// Update mixer shadow registers
// ? Compare shadow registers?


#endif  // if 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -