mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 03:57:26 +00:00 
			
		
		
		
	https://svn.code.sf.net/p/edk2/code/trunk/edk2/, which are for MinnowBoard MAX open source project. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Wei <david.wei@intel.com> Reviewed-by: Mike Wu <mike.wu@intel.com> Reviewed-by: Hot Tian <hot.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16599 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			624 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			624 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/**************************************************************************;
 | 
						|
;*                                                                        *;
 | 
						|
;*                                                                        *;
 | 
						|
;*    Intel Corporation - ACPI Reference Code for the Baytrail            *;
 | 
						|
;*    Family of Customer Reference Boards.                                *;
 | 
						|
;*                                                                        *;
 | 
						|
;*                                                                        *;
 | 
						|
;*    Copyright (c)  2012  - 2014, Intel Corporation. All rights reserved   *;
 | 
						|
;
 | 
						|
; This program and the accompanying materials are licensed and made available under
 | 
						|
; the terms and conditions of the BSD License that accompanies this distribution.
 | 
						|
; The full text of the license may be found at
 | 
						|
; http://opensource.org/licenses/bsd-license.php.
 | 
						|
;
 | 
						|
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
;
 | 
						|
;*                                                                        *;
 | 
						|
;*                                                                        *;
 | 
						|
;**************************************************************************/
 | 
						|
 | 
						|
 | 
						|
 | 
						|
// Use this information when determining the Possible IRQs that can be
 | 
						|
// used in a given system.
 | 
						|
//
 | 
						|
// The following IRQs are always in use by legacy devices:
 | 
						|
//              0  = System Timer
 | 
						|
//              2  = 8259 PIC
 | 
						|
//              8  = RTC
 | 
						|
//              9  = SCI Interrupt (It may be used, we choose not to)
 | 
						|
//              13 = Co-processor Error
 | 
						|
//
 | 
						|
// The following may be in use by legacy devices:
 | 
						|
//              1  = If using PS/2 Keyboard
 | 
						|
//              3  = If COMx Port Enabled and IRQ = 3
 | 
						|
//              4  = If COMx Port Enabled and IRQ = 4
 | 
						|
//              5  = If LPT Port Enabled and IRQ = 5
 | 
						|
//              6  = If FDC Enabled
 | 
						|
//              7  = If LPT Port Enabled and IRQ = 7
 | 
						|
//              12 = If using PS/2 Mouse
 | 
						|
//              14 = Primary IDE (If populated and in Compatibility Mode)
 | 
						|
//              15 = Secondary IDE (If populated and in Compatibility Mode)
 | 
						|
//
 | 
						|
// The following will never be in use by legacy devices:
 | 
						|
//              10 = Assign to PARC, PCRC, PERC, PGRC
 | 
						|
//              11 = Assign to PBRC, PDRC, PFRC, PHRC
 | 
						|
 | 
						|
Device(LNKA)                            // PARC Routing Resource
 | 
						|
{
 | 
						|
  Name(_HID,EISAID("PNP0C0F"))    // PCI Interrupt Link Device
 | 
						|
 | 
						|
  Name(_UID,1)                    // Unique to other Link Devices
 | 
						|
 | 
						|
  // Disable the PCI IRQ.
 | 
						|
 | 
						|
  Method(_DIS,0,Serialized)
 | 
						|
  {
 | 
						|
    Or(PARC,0x80,PARC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Possible IRQ Resource Setting.
 | 
						|
 | 
						|
  Method (_PRS, 0, Serialized)
 | 
						|
  {
 | 
						|
    return (PRSA)
 | 
						|
  }
 | 
						|
 | 
						|
  // Current IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_CRS,0,Serialized)
 | 
						|
  {
 | 
						|
    Name(RTLA,ResourceTemplate()
 | 
						|
    {
 | 
						|
      IRQ(Level,ActiveLow,Shared) {}
 | 
						|
    })
 | 
						|
 | 
						|
    // Point to specific byte.
 | 
						|
 | 
						|
    CreateWordField(RTLA,1,IRQ0)
 | 
						|
 | 
						|
    // Zero out IRQ mask bits 0-15
 | 
						|
 | 
						|
    Store(Zero,IRQ0)
 | 
						|
 | 
						|
    ShiftLeft(1,And(PARC,0x0F),IRQ0)
 | 
						|
 | 
						|
    Return(RTLA)
 | 
						|
  }
 | 
						|
 | 
						|
  // Set IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_SRS,1,Serialized)
 | 
						|
  {
 | 
						|
    // Point to the specific byte passed in
 | 
						|
 | 
						|
    CreateWordField(Arg0,1,IRQ0)
 | 
						|
 | 
						|
    // Determine the IRQ bit to set and store it
 | 
						|
 | 
						|
    FindSetRightBit(IRQ0,Local0)
 | 
						|
    Decrement(Local0)
 | 
						|
    Store(Local0,PARC)
 | 
						|
  }
 | 
						|
 | 
						|
  // PCI IRQ Status.
 | 
						|
 | 
						|
  Method(_STA,0,Serialized)
 | 
						|
  {
 | 
						|
    If(And(PARC,0x80))
 | 
						|
    {
 | 
						|
      Return(0x0009)
 | 
						|
    }
 | 
						|
    Else
 | 
						|
    {
 | 
						|
      Return(0x000B)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
Device(LNKB)                            // PBRC Routing Resource
 | 
						|
{
 | 
						|
  Name(_HID,EISAID("PNP0C0F"))
 | 
						|
 | 
						|
  Name(_UID,2)
 | 
						|
 | 
						|
  // Disable the PCI IRQ.
 | 
						|
 | 
						|
  Method(_DIS,0,Serialized)
 | 
						|
  {
 | 
						|
    Or(PBRC,0x80,PBRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Possible IRQ Resource Setting.
 | 
						|
 | 
						|
  Method (_PRS, 0, Serialized)
 | 
						|
  {
 | 
						|
    return (PRSB)
 | 
						|
  }
 | 
						|
 | 
						|
  // Current IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_CRS,0,Serialized)
 | 
						|
  {
 | 
						|
    Name(RTLB,ResourceTemplate()
 | 
						|
    {
 | 
						|
      IRQ(Level,ActiveLow,Shared) {}
 | 
						|
    })
 | 
						|
 | 
						|
    // Point to specific byte.
 | 
						|
 | 
						|
    CreateWordField(RTLB,1,IRQ0)
 | 
						|
 | 
						|
    // Zero out IRQ mask bits 0-15
 | 
						|
 | 
						|
    Store(Zero,IRQ0)
 | 
						|
 | 
						|
    ShiftLeft(1,And(PBRC,0x0F),IRQ0)
 | 
						|
 | 
						|
    Return(RTLB)
 | 
						|
  }
 | 
						|
 | 
						|
  // Set IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_SRS,1,Serialized)
 | 
						|
  {
 | 
						|
    // Point to the specific byte passed in.
 | 
						|
 | 
						|
    CreateWordField(Arg0,1,IRQ0)
 | 
						|
 | 
						|
    // Determine the IRQ bit to set and store it,
 | 
						|
 | 
						|
    FindSetRightBit(IRQ0,Local0)
 | 
						|
    Decrement(Local0)
 | 
						|
    Store(Local0,PBRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // PCI IRQ Status.
 | 
						|
 | 
						|
  Method(_STA,0,Serialized)
 | 
						|
  {
 | 
						|
    If(And(PBRC,0x80))
 | 
						|
    {
 | 
						|
      Return(0x0009)
 | 
						|
    }
 | 
						|
    Else
 | 
						|
    {
 | 
						|
      Return(0x000B)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
Device(LNKC)                            // PCRC Routing Resource
 | 
						|
{
 | 
						|
  Name(_HID,EISAID("PNP0C0F"))
 | 
						|
 | 
						|
  Name(_UID,3)
 | 
						|
 | 
						|
  // Disable the PCI IRQ.
 | 
						|
 | 
						|
  Method(_DIS,0,Serialized)
 | 
						|
  {
 | 
						|
    Or(PCRC,0x80,PCRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Possible IRQ Resource Setting.
 | 
						|
 | 
						|
  Method (_PRS, 0, Serialized)
 | 
						|
  {
 | 
						|
    return (PRSC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Current IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_CRS,0,Serialized)
 | 
						|
  {
 | 
						|
    Name(RTLC,ResourceTemplate()
 | 
						|
    {
 | 
						|
      IRQ(Level,ActiveLow,Shared) {}
 | 
						|
    })
 | 
						|
 | 
						|
    // Point to specific byte.
 | 
						|
 | 
						|
    CreateWordField(RTLC,1,IRQ0)
 | 
						|
 | 
						|
    // Zero out IRQ mask bits 0-15
 | 
						|
 | 
						|
    Store(Zero,IRQ0)
 | 
						|
 | 
						|
    ShiftLeft(1,And(PCRC,0x0F),IRQ0)
 | 
						|
 | 
						|
    Return(RTLC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Set IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_SRS,1,Serialized)
 | 
						|
  {
 | 
						|
    // Point to the specific byte passed in.
 | 
						|
 | 
						|
    CreateWordField(Arg0,1,IRQ0)
 | 
						|
 | 
						|
    // Determine the IRQ bit to set and store it,
 | 
						|
 | 
						|
    FindSetRightBit(IRQ0,Local0)
 | 
						|
    Decrement(Local0)
 | 
						|
    Store(Local0,PCRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // PCI IRQ Status.
 | 
						|
 | 
						|
  Method(_STA,0,Serialized)
 | 
						|
  {
 | 
						|
    If(And(PCRC,0x80))
 | 
						|
    {
 | 
						|
      Return(0x0009)
 | 
						|
    }
 | 
						|
    Else
 | 
						|
    {
 | 
						|
      Return(0x000B)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
Device(LNKD)                            // PDRC Routing Resource
 | 
						|
{
 | 
						|
  Name(_HID,EISAID("PNP0C0F"))
 | 
						|
 | 
						|
  Name(_UID,4)
 | 
						|
 | 
						|
  // Disable the PCI IRQ.
 | 
						|
 | 
						|
  Method(_DIS,0,Serialized)
 | 
						|
  {
 | 
						|
    Or(PDRC,0x80,PDRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Possible IRQ Resource Setting.
 | 
						|
 | 
						|
  Method (_PRS, 0, Serialized)
 | 
						|
  {
 | 
						|
    return (PRSD)
 | 
						|
  }
 | 
						|
 | 
						|
  // Current IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_CRS,0,Serialized)
 | 
						|
  {
 | 
						|
    Name(RTLD,ResourceTemplate()
 | 
						|
    {
 | 
						|
      IRQ(Level,ActiveLow,Shared) {}
 | 
						|
    })
 | 
						|
 | 
						|
    // Point to specific byte.
 | 
						|
 | 
						|
    CreateWordField(RTLD,1,IRQ0)
 | 
						|
 | 
						|
    // Zero out IRQ mask bits 0-15
 | 
						|
 | 
						|
    Store(Zero,IRQ0)
 | 
						|
 | 
						|
    ShiftLeft(1,And(PDRC,0x0F),IRQ0)
 | 
						|
 | 
						|
    Return(RTLD)
 | 
						|
  }
 | 
						|
 | 
						|
  // Set IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_SRS,1,Serialized)
 | 
						|
  {
 | 
						|
    // Point to the specific byte passed in.
 | 
						|
 | 
						|
    CreateWordField(Arg0,1,IRQ0)
 | 
						|
 | 
						|
    // Determine the IRQ bit to set and store it,
 | 
						|
 | 
						|
    FindSetRightBit(IRQ0,Local0)
 | 
						|
    Decrement(Local0)
 | 
						|
    Store(Local0,PDRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // PCI IRQ Status.
 | 
						|
 | 
						|
  Method(_STA,0,Serialized)
 | 
						|
  {
 | 
						|
    If(And(PDRC,0x80))
 | 
						|
    {
 | 
						|
      Return(0x0009)
 | 
						|
    }
 | 
						|
    Else
 | 
						|
    {
 | 
						|
      Return(0x000B)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
Device(LNKE)                            // PERC Routing Resource
 | 
						|
{
 | 
						|
  Name(_HID,EISAID("PNP0C0F"))
 | 
						|
 | 
						|
  Name(_UID,5)
 | 
						|
 | 
						|
  // Disable the PCI IRQ.
 | 
						|
 | 
						|
  Method(_DIS,0,Serialized)
 | 
						|
  {
 | 
						|
    Or(PERC,0x80,PERC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Possible IRQ Resource Setting.
 | 
						|
 | 
						|
  Method (_PRS, 0, Serialized)
 | 
						|
  {
 | 
						|
    return (PRSE)
 | 
						|
  }
 | 
						|
 | 
						|
  // Current IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_CRS,0,Serialized)
 | 
						|
  {
 | 
						|
    Name(RTLE,ResourceTemplate()
 | 
						|
    {
 | 
						|
      IRQ(Level,ActiveLow,Shared) {}
 | 
						|
    })
 | 
						|
 | 
						|
    // Point to specific byte.
 | 
						|
 | 
						|
    CreateWordField(RTLE,1,IRQ0)
 | 
						|
 | 
						|
    // Zero out IRQ mask bits 0-15
 | 
						|
 | 
						|
    Store(Zero,IRQ0)
 | 
						|
 | 
						|
    ShiftLeft(1,And(PERC,0x0F),IRQ0)
 | 
						|
 | 
						|
    Return(RTLE)
 | 
						|
  }
 | 
						|
 | 
						|
  // Set IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_SRS,1,Serialized)
 | 
						|
  {
 | 
						|
    // Point to the specific byte passed in
 | 
						|
 | 
						|
    CreateWordField(Arg0,1,IRQ0)
 | 
						|
 | 
						|
    // Determine the IRQ bit to set and store it
 | 
						|
 | 
						|
    FindSetRightBit(IRQ0,Local0)
 | 
						|
    Decrement(Local0)
 | 
						|
    Store(Local0,PERC)
 | 
						|
  }
 | 
						|
 | 
						|
  // PCI IRQ Status.
 | 
						|
 | 
						|
  Method(_STA,0,Serialized)
 | 
						|
  {
 | 
						|
    If(And(PERC,0x80))
 | 
						|
    {
 | 
						|
      Return(0x0009)
 | 
						|
    }
 | 
						|
    Else
 | 
						|
    {
 | 
						|
      Return(0x000B)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
Device(LNKF)                            // PFRC Routing Resource
 | 
						|
{
 | 
						|
  Name(_HID,EISAID("PNP0C0F"))
 | 
						|
 | 
						|
  Name(_UID,6)
 | 
						|
 | 
						|
  // Disable the PCI IRQ.
 | 
						|
 | 
						|
  Method(_DIS,0,Serialized)
 | 
						|
  {
 | 
						|
    Or(PFRC,0x80,PFRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Possible IRQ Resource Setting.
 | 
						|
 | 
						|
  Method (_PRS, 0, Serialized)
 | 
						|
  {
 | 
						|
    return (PRSF)
 | 
						|
  }
 | 
						|
 | 
						|
  // Current IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_CRS,0,Serialized)
 | 
						|
  {
 | 
						|
    Name(RTLF,ResourceTemplate()
 | 
						|
    {
 | 
						|
      IRQ(Level,ActiveLow,Shared) {}
 | 
						|
    })
 | 
						|
 | 
						|
    // Point to specific byte.
 | 
						|
 | 
						|
    CreateWordField(RTLF,1,IRQ0)
 | 
						|
 | 
						|
    // Zero out IRQ mask bits 0-15
 | 
						|
 | 
						|
    Store(Zero,IRQ0)
 | 
						|
 | 
						|
    ShiftLeft(1,And(PFRC,0x0F),IRQ0)
 | 
						|
 | 
						|
    Return(RTLF)
 | 
						|
  }
 | 
						|
 | 
						|
  // Set IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_SRS,1,Serialized)
 | 
						|
  {
 | 
						|
    // Point to the specific byte passed in.
 | 
						|
 | 
						|
    CreateWordField(Arg0,1,IRQ0)
 | 
						|
 | 
						|
    // Determine the IRQ bit to set and store it,
 | 
						|
 | 
						|
    FindSetRightBit(IRQ0,Local0)
 | 
						|
    Decrement(Local0)
 | 
						|
    Store(Local0,PFRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // PCI IRQ Status.
 | 
						|
 | 
						|
  Method(_STA,0,Serialized)
 | 
						|
  {
 | 
						|
    If(And(PFRC,0x80))
 | 
						|
    {
 | 
						|
      Return(0x0009)
 | 
						|
    }
 | 
						|
    Else
 | 
						|
    {
 | 
						|
      Return(0x000B)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
Device(LNKG)                            // PGRC Routing Resource
 | 
						|
{
 | 
						|
  Name(_HID,EISAID("PNP0C0F"))
 | 
						|
 | 
						|
  Name(_UID,7)
 | 
						|
 | 
						|
  // Disable the PCI IRQ.
 | 
						|
 | 
						|
  Method(_DIS,0,Serialized)
 | 
						|
  {
 | 
						|
    Or(PGRC,0x80,PGRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Possible IRQ Resource Setting.
 | 
						|
 | 
						|
  Method (_PRS, 0, Serialized)
 | 
						|
  {
 | 
						|
    return (PRSG)
 | 
						|
  }
 | 
						|
 | 
						|
  // Current IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_CRS,0,Serialized)
 | 
						|
  {
 | 
						|
    Name(RTLG,ResourceTemplate()
 | 
						|
    {
 | 
						|
      IRQ(Level,ActiveLow,Shared) {}
 | 
						|
    })
 | 
						|
 | 
						|
    // Point to specific byte.
 | 
						|
 | 
						|
    CreateWordField(RTLG,1,IRQ0)
 | 
						|
 | 
						|
    // Zero out IRQ mask bits 0-15
 | 
						|
 | 
						|
    Store(Zero,IRQ0)
 | 
						|
 | 
						|
    ShiftLeft(1,And(PGRC,0x0F),IRQ0)
 | 
						|
 | 
						|
    Return(RTLG)
 | 
						|
  }
 | 
						|
 | 
						|
  // Set IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_SRS,1,Serialized)
 | 
						|
  {
 | 
						|
    // Point to the specific byte passed in.
 | 
						|
 | 
						|
    CreateWordField(Arg0,1,IRQ0)
 | 
						|
 | 
						|
    // Determine the IRQ bit to set and store it,
 | 
						|
 | 
						|
    FindSetRightBit(IRQ0,Local0)
 | 
						|
    Decrement(Local0)
 | 
						|
    Store(Local0,PGRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // PCI IRQ Status.
 | 
						|
 | 
						|
  Method(_STA,0,Serialized)
 | 
						|
  {
 | 
						|
    If(And(PGRC,0x80))
 | 
						|
    {
 | 
						|
      Return(0x0009)
 | 
						|
    }
 | 
						|
    Else
 | 
						|
    {
 | 
						|
      Return(0x000B)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
Device(LNKH)                            // PHRC Routing Resource
 | 
						|
{
 | 
						|
  Name(_HID,EISAID("PNP0C0F"))
 | 
						|
 | 
						|
  Name(_UID,8)
 | 
						|
 | 
						|
  // Disable the PCI IRQ.
 | 
						|
 | 
						|
  Method(_DIS,0,Serialized)
 | 
						|
  {
 | 
						|
    Or(PHRC,0x80,PHRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // Possible IRQ Resource Setting.
 | 
						|
 | 
						|
  Method (_PRS, 0, Serialized)
 | 
						|
  {
 | 
						|
    return (PRSH)
 | 
						|
  }
 | 
						|
 | 
						|
  // Current IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_CRS,0,Serialized)
 | 
						|
  {
 | 
						|
    Name(RTLH,ResourceTemplate()
 | 
						|
    {
 | 
						|
      IRQ(Level,ActiveLow,Shared) {}
 | 
						|
    })
 | 
						|
 | 
						|
    // Point to specific byte.
 | 
						|
 | 
						|
    CreateWordField(RTLH,1,IRQ0)
 | 
						|
 | 
						|
    // Zero out IRQ mask bits 0-15
 | 
						|
 | 
						|
    Store(Zero,IRQ0)
 | 
						|
 | 
						|
    ShiftLeft(1,And(PHRC,0x0F),IRQ0)
 | 
						|
 | 
						|
    Return(RTLH)
 | 
						|
  }
 | 
						|
 | 
						|
  // Set IRQ Resource Setting.
 | 
						|
 | 
						|
  Method(_SRS,1,Serialized)
 | 
						|
  {
 | 
						|
    // Point to the specific byte passed in.
 | 
						|
 | 
						|
    CreateWordField(Arg0,1,IRQ0)
 | 
						|
 | 
						|
    // Determine the IRQ bit to set and store it,
 | 
						|
 | 
						|
    FindSetRightBit(IRQ0,Local0)
 | 
						|
    Decrement(Local0)
 | 
						|
    Store(Local0,PHRC)
 | 
						|
  }
 | 
						|
 | 
						|
  // PCI IRQ Status.
 | 
						|
 | 
						|
  Method(_STA,0,Serialized)
 | 
						|
  {
 | 
						|
    If(And(PHRC,0x80))
 | 
						|
    {
 | 
						|
      Return(0x0009)
 | 
						|
    }
 | 
						|
    Else
 | 
						|
    {
 | 
						|
      Return(0x000B)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |