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

📄 ite8661f.asl

📁 AMI 主板的BIOS源码
💻 ASL
字号:
//**********************************************************************;
//     *****************************************************************;
//     *****************************************************************;
//     **                                                             **;
//     **      (C)Copyright 1985-1996, American Megatrends, Inc.      **;
//     **                                                             **;
//     **                     All Rights Reserved.                    **;
//     **                                                             **;
//     **           6145-F Northbelt Pkwy, Norcross, GA 30071         **;
//     **                                                             **;
//     **                     Phone (770)-246-8600                    **;
//     **                                                             **;
//     *****************************************************************;
//     *****************************************************************;
//**********************************************************************;
//**********************************************************************;
// $Header: $
//
// $Revision: $
//
// $Date: $
//**********************************************************************;
//**********************************************************************;
// Revision History
// ----------------
// $Log: $
// 
//**********************************************************************;

// Start of Definitions for ITE8661F I/O device

OperationRegion(CFGP,SystemIO,0x279,1)
//fields are in this Operation Region
Field(CFGP,ByteAcc,NoLock,Preserve){
                                    UNLK,8,
                                   }

OperationRegion(ITE1,           // name of Operation Region for SuperIO device
                SystemIO,       // type of address space
                SPIO,          // offset to start of region
                                // (default offset for SuperIO device)
                                // (Real systems will likely have the BIOS relocate this device
                                // to avoid conflicts with secondary floppy ID of 0x370)
                2)              //size of region in bytes
                                //end of Operation Region

//fields are in this Operation Region
Field(ITE1,ByteAcc,NoLock,Preserve){
                                    INDX,8, //field named INDX is 8 bits wide
                                    DATA,8  //field DATA is 8 bits wide
                                   }

IndexField(INDX,                // Index name
           DATA,                // Name of I/O port
           ByteAcc,
           NoLock,
           Preserve){
                     ,16,       //0x02
                     CFG,8,     //0x01 (0x02) global config control reg
                     ,32,       //0x04
                     LDN,8,     //0x01 (0x07) Logical Device Number
                     ,200,      //0x19
                     ,120,      //0x0f
                     ACTR,8,    //0x01 (0x30) activate register
                     ,200,      //0x19
                     ,176,      //0x16
                     IOAH,8,    //0x01 (0x60) base I/O addr
                     IOAL,8,    //0x01
                     ,112,      //0x0e
                     INTR,8,    //0x01 (0x70) IRQ
                     ,8,        //0x  Offset(0x72)
                     INT1,8,    //Second IRQ for some devices
                     ,8,        //0x Offset(0x74)
                     DMCH,8,    //DMA channel
                     ,200,      //0x Offset(0xC0)
                     ,200,
                     ,200,
                     GP40,8,    //Fast IR control bits
                     ,176,      //0x Offset(0xF0)
                     ,200,
                     OPT1,8,    //Option register 1
                     OPT2,8,    //Option register 2
                     OPT3,8     //Option register 3
                    }   //end of indexed field
                

Method(ENFG,0){         // Enter Config Mode for
               Store(0x86,UNLK)
               Store(0x61,UNLK)
               Store(0x55,UNLK)
               Store(0x55,UNLK)

               Store(0x6a,INDX)
               Store(0xb5,INDX)
               Store(0xda,INDX)
               Store(0xed,INDX)
               Store(0xf6,INDX)
               Store(0xfb,INDX)
               Store(0x7d,INDX)
               Store(0xbe,INDX)
               Store(0xdf,INDX)
               Store(0x6f,INDX)
               Store(0x37,INDX)
               Store(0x1b,INDX)
               Store(0x0d,INDX)
               Store(0x86,INDX)
               Store(0xc3,INDX)
               Store(0x61,INDX)
               Store(0xb0,INDX)
               Store(0x58,INDX)
               Store(0x2c,INDX)
               Store(0x16,INDX)
               Store(0x8b,INDX)
               Store(0x45,INDX)
               Store(0xa2,INDX)
               Store(0xd1,INDX)
               Store(0xe8,INDX)
               Store(0x74,INDX)
               Store(0x3a,INDX)
               Store(0x9d,INDX)
               Store(0xce,INDX)
               Store(0xe7,INDX)
               Store(0x73,INDX)
               Store(0x39,INDX)
              }

Method(EXFG,0){         // Exit Config Mode for
               Store(0x02,INDX)
               Store(0x02,DATA)
              }

// Logical Device numbers for UART1, UART2, FDC, LPT, ECP, IrDa
	Name(LDFD, 0)	// Floppy controller LDD
	NAme(LDU1, 1)	// UART 1
	NAme(LDU2, 2)	// UART2
	NAme(LDIR, 4)	// IRDa
	NAme(LDLP, 3)	// LPT/ECP

// Floppy Disk Controller 

Device(FDC0) {  					

	Name(_HID, EISAID("PNP0700"))		// PnP Device ID
	Method(_STA, 0) {

		If(FDST) {
					// LDN = 0
		Return(GSTA(0))		// Get status
		}
		Return(0)		// Not present
	}

	Method(_DIS, 0) {
		DDIS(0) 		// Disable FDC (LDN = 0)
	}

	Method(_CRS, 0) {Return(FCRS)}	// Return FDC current resources

	Method(_PRS, 0) {Return(FPRS)}	// Return FDC possible resources

	Method(_SRS, 1) {
		DENB(0)			// Enable FDC (LDN = 0)
	}
	
}						// end of FDC0

// UART1 - COMA
Device(UAR1)
{
 Name(_HID,EISAID("PNP0501"))

	Name(_UID, 1)			// Generic ID for COMA


	Method(_STA, 0) {

		If(U1ST) {
					// LDN = 1
		Return(GSTA(1))		// Get status
		}
		Return(0)		// Not present
	}

	Method(_DIS, 0) {
		DDIS(1)			// Disable UART1 (LDN = 1)
	}

	Method(_CRS, 0) {
		Return(PCRS(1, 1, 8))	// Get UART1 current resources
	}

	Method(_SRS, 1) {
		PSRS(Arg0, 1)		// Set UART1 recources
	}

	Method(_PRS) {Return(C1PR)}	// Return UART1 possible resources

}                                       // End of UART1

// UART2 - COMB
Device(UAR2)
{
 Name(_HID,EISAID("PNP0501"))
 Name(_UID,2)                   // Generic ID for COMB

	Method(_STA, 0) {

		If(U2ST) {
					// LDN = 2
		Return(GSTA(2))		// Get status
		}
		Return(0)		// Not present
	}

	Method(_DIS, 0) {
		DDIS(2)			// Disable UART2 (LDN = 2)
	}

	Method(_CRS, 0) {
		Return(PCRS(2, 1, 8))	// Get UART2 current resources

	}

	Method(_SRS, 1) {
		PSRS(Arg0, 2)		// Set UART2 recources
	}

	Method(_PRS) {Return(C2PR)}	// Return UART2 possible resources

}                                       // End of UART2

// LPT DEVICE
Device(LPT)
{
 Name(_HID,EISAID("PNP0400"))            // PnP ID for WIN LPT Port

 Method(_STA,0){                      // LPT Device Status
                ENFG()  
                Store(0x03,LDN)
		And(OPT1, 0x02, Local0)	// ECP Mode?
		EXFG()			// Exit Config Mode
		If(Or(Local0, And(Not(LPST),1)))// Yes - LPT is not present
		{
			Return(Zero)
		}
		Else {			// No - get LPT status
			Return(GSTA(3))
		}
        }        // End _STA method

	Method(_DIS, 0) {
		DDIS(3)			// Disable LPT (LDN = 3)
	}

	Method(_CRS, 0) {
		Return(PCRS(3, 1, 8))	// Get LPT current resources
	}

	Method(_SRS, 1) {
		PSRS(Arg0, 3)		// Set LPT recources
	}

        Method(_PRS) {Return(LPPR)}	// Return LPT possible resources

}       // End Device(LPT)

// Dedicated IR
Device(IRDA)
{
 Name(_HID,EISAID("PNP0510"))
 Name(_UID,3)           // Generic ID for COMC

// IRDA._STA Control Method
	Method(_STA, 0) {

		If(IRST) {
					// LDN = 62
		Return(GSTA(LDIR))	// Get status
		}
		Return(0)		// Not present
	}

	Method(_DIS, 0) {
		DDIS(4)			// Disable IRD (LDN = 4)
	}

	Method(_CRS, 0) {
		Return(PCRS(4, 1, 8))	// Get IRD current resources

	}

	Method(_SRS, 1) {
		PSRS(Arg0, 4)		// Set IRD recources
	}

	Method(_PRS) {Return(C2PR)}	// Return IRD possible resources

}                               // End IRDA

// ECP DEVICE
Device(ECP)
{
 Name(_HID,EISAID("PNP0401"))   // PnP ID ECP Port

	Method(_STA, 0) {
		ENFG()				// Enter Config Mode
		Store(3, LDN)			// ECP LDN = 1
		And(OPT1, 0x02, Local0)
		EXFG()			// Exit Config Mode
		If (Local0)		// ECP Mode?
		{
		 If(LPST) { Return(GSTA(3))}// Yes - get ECP status
		}
		Else {
			Return(Zero)	// No - ECP is not present
		}

	}

	Method(_DIS, 0) {
		DDIS(3)			// Disable ECP (LDN = 3)
	}

	Method(_CRS, 0) {
		Return(ECRS(3))		// Get LPT current resources
	}

	Method(_SRS, 1) {		// Set ECP resources
		ESRS(Arg0, 3)		// Set resources
	}

	Method(_PRS) {Return(EPRS)}	// Return ECP possible resources

}                                               // End ECP Device

// End of ITE8661F

⌨️ 快捷键说明

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