summaryrefslogtreecommitdiff
path: root/Platform/ARM/JunoPkg/ConfigurationManager/PlatformASLTablesLib/SsdtJunoUsb.asl
diff options
context:
space:
mode:
authorSami Mujawar <sami.mujawar@arm.com>2017-06-29 16:23:26 +0100
committerLeif Lindholm <leif.lindholm@linaro.org>2018-03-21 03:02:53 +0000
commit131f56566deab2290daf47ea7afc2573a3e12952 (patch)
tree4bd74fb163ce71eb85900f5ea67620b759136730 /Platform/ARM/JunoPkg/ConfigurationManager/PlatformASLTablesLib/SsdtJunoUsb.asl
parent345b8b2992568a73793354a577d15adad1ebc773 (diff)
downloadedk2-platforms-131f56566deab2290daf47ea7afc2573a3e12952.tar.xz
Platform/ARM: Dynamic Tables support for Juno
The dynamic tables framework utilizes the configuration manager protocol to get the platform specific information required for building the firmware tables. The configuration manager is a platform specific component that collates the platform hardware information and builds an abstract platform configuration repository. The configuration manager also implements the configuration manager protocol which returns the hardware information requested by the table generators. This patch implements the configuration manager support for the Juno platform. The dynamic tables framework support is configurable and can be enabled using the DYNAMIC_TABLES_FRAMEWORK build option. When DYNAMIC_TABLES_FRAMEWORK is defined, ACPI tables are generated and installed by the dynamic table framework. Therefore installation of ACPI tables from the Firmware Volume (FV) is disabled by this option. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Evan Lloyd <evan.lloyd@arm.com>
Diffstat (limited to 'Platform/ARM/JunoPkg/ConfigurationManager/PlatformASLTablesLib/SsdtJunoUsb.asl')
-rw-r--r--Platform/ARM/JunoPkg/ConfigurationManager/PlatformASLTablesLib/SsdtJunoUsb.asl122
1 files changed, 122 insertions, 0 deletions
diff --git a/Platform/ARM/JunoPkg/ConfigurationManager/PlatformASLTablesLib/SsdtJunoUsb.asl b/Platform/ARM/JunoPkg/ConfigurationManager/PlatformASLTablesLib/SsdtJunoUsb.asl
new file mode 100644
index 0000000000..b5dfb07dfb
--- /dev/null
+++ b/Platform/ARM/JunoPkg/ConfigurationManager/PlatformASLTablesLib/SsdtJunoUsb.asl
@@ -0,0 +1,122 @@
+/** @file
+ SSDT for Juno USB
+
+ Copyright (c) 2014-2017, ARM Ltd. All rights reserved.<BR>
+ This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which 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.
+
+**/
+
+#include "ArmPlatform.h"
+
+DefinitionBlock("SsdtJunoUSB.aml", "SSDT", 1, "ARMLTD", "ARM-JUNO", EFI_ACPI_ARM_OEM_REVISION) {
+ Scope(_SB) {
+
+ //
+ // USB EHCI Host Controller
+ //
+ Device(USB0) {
+ Name(_HID, "ARMH0D20")
+ Name(_CID, "PNP0D20")
+ Name(_UID, 2)
+
+ Name(_CCA, ZERO) // Cache-incoherent bus-master
+
+ Method(_CRS, 0x0, Serialized){
+ Name(RBUF, ResourceTemplate(){
+ Memory32Fixed(ReadWrite, 0x7FFC0000, 0x000000B0) // 0x7FFC0000 is the Juno SoC USB EHCI controller base address
+ Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) {149} // INT ID=149 GIC IRQ ID=117 for Juno SoC USB EHCI Controller
+ })
+ Return(RBUF)
+ }
+
+ //
+ // Root Hub
+ //
+ Device(RHUB) {
+ Name(_ADR, Zero) // Address of Root Hub should be 0 as per ACPI 5.0 spec
+
+ //
+ // Ports connected to Root Hub
+ //
+ Device(HUB1) {
+ Name(_ADR, One)
+ Name(_UPC, Package(){
+ Zero, // Port is NOT connectable
+ 0xFF, // Don't care
+ Zero, // Reserved 0 must be zero
+ Zero // Reserved 1 must be zero
+ })
+
+ Device(PRT1) {
+ Name(_ADR, One)
+ Name(_UPC, Package(){
+ 0xFF, // Port is connectable
+ Zero, // Port connector is A
+ Zero,
+ Zero
+ })
+ Name(_PLD, Package(One) {
+ Buffer(0x10){
+ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ })
+ } // USB0_RHUB_HUB1_PRT1
+ Device(PRT2) {
+ Name(_ADR, 0x00000002)
+ Name(_UPC, Package() {
+ 0xFF, // Port is connectable
+ Zero, // Port connector is A
+ Zero,
+ Zero
+ })
+ Name(_PLD, Package(One) {
+ Buffer(0x10){
+ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ })
+ } // USB0_RHUB_HUB1_PRT2
+
+ Device(PRT3) {
+ Name(_ADR, 0x00000003)
+ Name(_UPC, Package() {
+ 0xFF, // Port is connectable
+ Zero, // Port connector is A
+ Zero,
+ Zero
+ })
+ Name(_PLD, Package(One) {
+ Buffer(0x10){
+ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ })
+ } // USB0_RHUB_HUB1_PRT3
+
+ Device(PRT4) {
+ Name(_ADR, 0x00000004)
+ Name(_UPC, Package(){
+ 0xFF, // Port is connectable
+ Zero, // Port connector is A
+ Zero,
+ Zero
+ })
+ Name(_PLD, Package(One) {
+ Buffer(0x10){
+ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ })
+ } // USB0_RHUB_HUB1_PRT4
+ } // USB0_RHUB_HUB1
+ } // USB0_RHUB
+ } // USB0
+ }
+}