1/** @file
2  Differentiated System Description Table Fields (DSDT)
3
4  Copyright (c) 2014-2015, ARM Ltd. All rights reserved.<BR>
5    This program and the accompanying materials
6  are licensed and made available under the terms and conditions of the BSD License
7  which accompanies this distribution.  The full text of the license may be found at
8  http://opensource.org/licenses/bsd-license.php
9
10  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#include "ArmPlatform.h"
16
17DefinitionBlock("DsdtTable.aml", "DSDT", 1, "ARMLTD", "ARM-JUNO", EFI_ACPI_ARM_OEM_REVISION) {
18  Scope(_SB) {
19    //
20    // A57x2-A53x4 Processor declaration
21    //
22    Device(CPU0) { // A53-0: Cluster 1, Cpu 0
23      Name(_HID, "ACPI0007")
24      Name(_UID, 0)
25    }
26    Device(CPU1) { // A53-1: Cluster 1, Cpu 1
27      Name(_HID, "ACPI0007")
28      Name(_UID, 1)
29    }
30    Device(CPU2) { // A53-2: Cluster 1, Cpu 2
31      Name(_HID, "ACPI0007")
32      Name(_UID, 2)
33    }
34    Device(CPU3) { // A53-3: Cluster 1, Cpu 3
35      Name(_HID, "ACPI0007")
36      Name(_UID, 3)
37    }
38    Device(CPU4) { // A57-0: Cluster 0, Cpu 0
39      Name(_HID, "ACPI0007")
40      Name(_UID, 4)
41    }
42    Device(CPU5) { // A57-1: Cluster 0, Cpu 1
43      Name(_HID, "ACPI0007")
44      Name(_UID, 5)
45    }
46
47    //
48    // Keyboard and Mouse
49    //
50    Device(KMI0) {
51      Name(_HID, "ARMH0501")
52      Name(_CID, "PL050_KBD")
53      Name(_CRS, ResourceTemplate() {
54              Memory32Fixed(ReadWrite, 0x1C060008, 0x4)
55              Memory32Fixed(ReadWrite, 0x1C060000, 0x4)
56              Memory32Fixed(ReadOnly, 0x1C060004, 0x4)
57              Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 197 }
58      })
59    }
60
61    //
62    // LAN9118 Ethernet
63    //
64    Device(ETH0) {
65      Name(_HID, "ARMH9118")
66      Name(_UID, Zero)
67      Name(_CRS, ResourceTemplate() {
68              Memory32Fixed(ReadWrite, 0x1A000000, 0x1000)
69              Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 192 }
70      })
71      Name(_DSD, Package() {
72                   ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
73                       Package() {
74                               Package(2) {"phy-mode", "mii"},
75                               Package(2) {"reg-io-width", 4 },
76                               Package(2) {"smsc,irq-active-high",1},
77                               Package(2) {"smsc,irq-push-pull",1}
78                      }
79      }) // _DSD()
80    }
81
82    // UART PL011
83    Device(COM0) {
84      Name(_HID, "ARMH0011")
85      Name(_CID, "PL011")
86      Name(_UID, Zero)
87      Name(_CRS, ResourceTemplate() {
88        Memory32Fixed(ReadWrite, 0x7FF80000, 0x1000)
89        Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 115 }
90      })
91    }
92
93    //
94    // USB EHCI Host Controller
95    //
96    Device(USB0){
97        Name(_HID, "ARMH0D20")
98        Name(_CID, "PNP0D20")
99        Name(_UID, 2)
100        Name(_CCA, 0) //EHCI on this platform is not coherent!
101
102        Method(_CRS, 0x0, Serialized){
103            Name(RBUF, ResourceTemplate(){
104                Memory32Fixed(ReadWrite, 0x7FFC0000, 0x10000)
105                Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) {149}  // INT ID=149 GIC IRQ ID=117 for Juno SoC USB EHCI Controller
106            })
107            Return(RBUF)
108        }
109
110        //
111        // Root Hub
112        //
113        Device(RHUB){
114            Name(_ADR, 0x00000000)  // Address of Root Hub should be 0 as per ACPI 5.0 spec
115
116            //
117            // Ports connected to Root Hub
118            //
119            Device(HUB1){
120                Name(_ADR, 0x00000001)
121                Name(_UPC, Package(){
122                    0x00,       // Port is NOT connectable
123                    0xFF,       // Don't care
124                    0x00000000, // Reserved 0 must be zero
125                    0x00000000  // Reserved 1 must be zero
126                })
127
128                Device(PRT1){
129                    Name(_ADR, 0x00000001)
130                    Name(_UPC, Package(){
131                        0xFF,        // Port is connectable
132                        0x00,        // Port connector is A
133                        0x00000000,
134                        0x00000000
135                    })
136                    Name(_PLD, Package(){
137                        Buffer(0x10){
138                            0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
139                            0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
140                        }
141                    })
142                } // USB0_RHUB_HUB1_PRT1
143                Device(PRT2){
144                    Name(_ADR, 0x00000002)
145                    Name(_UPC, Package(){
146                        0xFF,        // Port is connectable
147                        0x00,        // Port connector is A
148                        0x00000000,
149                        0x00000000
150                    })
151                    Name(_PLD, Package(){
152                        Buffer(0x10){
153                            0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154                            0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
155                        }
156                    })
157                } // USB0_RHUB_HUB1_PRT2
158
159                Device(PRT3){
160                    Name(_ADR, 0x00000003)
161                    Name(_UPC, Package(){
162                        0xFF,        // Port is connectable
163                        0x00,        // Port connector is A
164                        0x00000000,
165                        0x00000000
166                    })
167                    Name(_PLD, Package(){
168                        Buffer(0x10){
169                            0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
170                            0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
171                        }
172                    })
173                } // USB0_RHUB_HUB1_PRT3
174
175                Device(PRT4){
176                    Name(_ADR, 0x00000004)
177                    Name(_UPC, Package(){
178                        0xFF,        // Port is connectable
179                        0x00,        // Port connector is A
180                        0x00000000,
181                        0x00000000
182                    })
183                    Name(_PLD, Package(){
184                        Buffer(0x10){
185                            0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
186                            0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
187                        }
188                    })
189                } // USB0_RHUB_HUB1_PRT4
190            } // USB0_RHUB_HUB1
191        } // USB0_RHUB
192    } // USB0
193  } // Scope(_SB)
194}
195