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

📄 686_lpt.asl

📁 惠普公司bios完整源代码大机密!
💻 ASL
📖 第 1 页 / 共 2 页
字号:
                }  // end if
                       If(LEqual(Local0, 0x03)) {	// 11: PIO Disable
                        If(LNotEqual(\_SB.PCI0.PIB.LPDA, 0x00)) {
                                EXFG()
                                Return(0x0D)	//present, disable, UI, functioning
                        }  // end if
                        Else {
                                EXFG()
                                Return(0x00)	//Not present
                        }  // end else
                }  // end if
               }  // end of _STA method

               Method(_DIS,0)	{ 		//Disable
               }  //end _DIS method

               Method(_CRS,0)	{		// Current ECP Resource
                Name(BUFE, ResourceTemplate(){
                IO(
                        Decode16,	
                        0x0378,		// Min base I/O addr, EIO1._MIN
                        0x0378,		// Max base I/O addr, EIO1._MAX
                        0x08,		// Base alignment, EIO1._ALN 
                        0x08,		// Number of contig I/O ports, EIO1._LEN
                               EIO1
                )
                IO(
                        Decode16,	
                        0x0778,		// Min base I/O addr, EIO2._MIN
                        0x0778,		// Max base I/O addr, EIO2._MAX
                        0x08,		// R03
                        0x08,		// R03
                               EIO2
                )
                IRQNoFlags(
                               EIRQ
                )
                        {0x07}      	// IRQ 7, EIRQ._INT
                DMA(
                        Compatibility,
                        NotBusMaster,
                        Transfer8,
                               EDMA
                )
                        {0x03}		// DMA channel 3, EDMA._DMA  
                } // end Resource Template
        ) // end buffer BUFE

                CreateWordField (BUFE, EIO1._MIN, IMI1)	//IO1 MIN address
                CreateWordField (BUFE, EIO1._MAX, IMA1)	//IO1 MAX address
                CreateByteField (BUFE, EIO1._ALN, ALN1)	//IO1 Alignment
                CreateByteField (BUFE, EIO1._LEN, LEN1)	//IO1 Length
                CreateWordField (BUFE, EIO2._MIN, IMI2)	//IO2 MIN address
                CreateWordField (BUFE, EIO2._MAX, IMA2)	//IO2 MAX address
                CreateByteField (BUFE, EIO2._ALN, ALN2)	//R05 IO2 Alignment
                CreateByteField (BUFE, EIO2._LEN, LEN2)	//R05 IO2 Length
                CreateWordField (BUFE, EIRQ._INT, IRQ0)	//IRQ
                CreateByteField (BUFE, EDMA._DMA, DMA0)	//DMA

                       ENFG() 			// Enter Config Mode
                       Store(CRC6, Local0)     // Read CRC6 register
                       EXFG()			// Exit Config Mode
                Store(Local0, Local1)	// Local1: IOUH, Local0: IOUL
                And(Local1, 0xC0, Local1)	// CRC6:
                ShiftLeft(Local1, 0x02, Local1)	// Bit7-6: ADR9-8
                ShiftLeft(Local0, 0x02, Local0)	// Bit5-0: ADR7-2
                Or(Local0, Local1, Local0)
                Store(Local0, IMI1)
                Store(Local0, IMA1)
                Add(Local0, 0x400, Local0)
                Store(Local0, IMI2)
                Store(Local0, IMA2)
                If(LEqual(IMI1, 0x03BC)) {
                        Store(0x04, ALN1)
                        Store(0x04, LEN1)
                        Store(0x04, ALN2)
                        Store(0x04, LEN2)
                }
                Else {
                        Store(0x08, ALN1)
                        Store(0x08, LEN1)
                        Store(0x04, ALN2)
                        Store(0x04, LEN2)
                }

                       Store(\_SB.PCI0.PIB.LPIR, Local0)	//Get LPT IRQ Value
                Store(0x01, Local1)
                ShiftLeft(Local1, Local0, IRQ0)

                       Store(\_SB.PCI0.PIB.LPDA, Local0)	//Get LPT DMA Value
                And(Local0, 0x03, Local0)
                Store(0x01, Local1)
                ShiftLeft(Local1, Local0, DMA0)


                       Return(BUFE)			//Return BUFE
               }  //end _CRS method


        Name(_PRS, ResourceTemplate(){
                StartDependentFnNoPri(){
                        IO(
                                Decode16,
                                              0x0378,         // Min base I/O addr, LPT1 @ 0x378
                                              0x0378,         // Max base I/O addr
                                              0x08,           // Base alignment
                                0x08		// Number of contig I/O ports
                        )
                        IO(
                                Decode16,
                                              0x0778,         // Min base I/O addr, LPT1 @ 0x378
                                              0x0778,         // Max base I/O addr
                                              0x04,           // Base alignment
                                0x04		// Number of contig I/O ports
                        )
                        IRQNoFlags()
                                              {0x07}    // IRQ7
                        DMA(
                                Compatibility,
                                NotBusMaster,
                                Transfer8,
                               )
                                {0x01, 0x03}         // DMA 1, 3
                } // end first dependent function
                StartDependentFnNoPri(){
                        IO(
                                Decode16,
                                              0x0278,         // Min base I/O addr, LPT1 @ 0x378
                                              0x0278,         // Max base I/O addr
                                              0x08,           // Base alignment
                                0x08		// Number of contig I/O ports
                        )
                        IO(
                                Decode16,
                                              0x0678,         // Min base I/O addr, LPT1 @ 0x378
                                              0x0678,         // Max base I/O addr
                                              0x04,           // Base alignment
                                0x04		// Number of contig I/O ports
                        )
                        IRQNoFlags()
                                              {0x05}    // IRQ7
                        DMA(
                                Compatibility,
                                NotBusMaster,
                                Transfer8,
                               )
                                {0x01, 0x03}         // DMA 1, 3
                } // end second dependent function
                
                EndDependentFn()

                } // end of Resource Template
        ) // end _PRS method


               Method(_SRS,1)	{		//Set Resource

                       CreateByteField (ARG0, 0x02, IOLO) 	// IO Port Low
                       CreateByteField (ARG0, 0x03, IOHI) 	// IO Port HI
                       CreateWordField (ARG0, 0x11, IRQ0)
                       CreateByteField (ARG0, 0x14, DMA0) 	// DMA Channel to assign

                       ENFG()                  // Enter Config Mode

                       Store(CRC2,Local0)	// Read FSR register
                       Or(Local0, 0x03, Local0)
                       Store(Local0, CRC2)	// Disable LPT

                Store(IOLO, Local0)			//Set IO
                ShiftRight(Local0, 0x02, Local0)	//LPT IO: CRC6
                Store(IOHI, Local1)			//Bit7-0 = ADR9-2
                ShiftLeft(Local1, 0x06, Local1)
                Or(Local0, Local1, Local0)
                       Store(Local0, CRC6)        

                       FindSetRightBit(IRQ0, Local0)		//Set IRQ
                If(LGreater(Local0, 0x00)) {
                        Decrement(Local0)
                }
                Store(Local0, \_SB.PCI0.PIB.LPIR)

                FindSetRightBit(DMA0, Local0)		//Set DMA
                If(LGreater(Local0, 0x00)) {
                        Decrement(Local0)
                }
                       Store(Local0, \_SB.PCI0.PIB.LPDA)

                       Store(CRC2, Local0)      // Enable ECP
                And(Local0, 0xFC, Local0)
                       Or(Local0, 0x01, Local0)
                       Store(Local0, CRC2)

                       EXFG()                  // Exit Config Mode

               }  //End of _SRS Method
}  // end of ECP device

⌨️ 快捷键说明

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