Initial AMD Serengeti_Cheetah_FAM10 platform for Barcelona support.
[coreboot.git] / src / mainboard / amd / serengeti_cheetah_fam10 / dx / amd8132_2.asl
1 //
2 // This file is part of the LinuxBIOS project.
3 //
4 // Copyright (C) 2007 Advanced Micro Devices, Inc.
5 //
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; version 2 of the License.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
18 //
19
20         Device (PG0A)
21         {
22                 // 8132 pcix bridge
23                 Method (_ADR, 0, NotSerialized)
24                 {
25                         Return (DADD(GHCD(HCIN, 0), 0x00000000))
26                 }
27
28                 Method (_PRW, 0, NotSerialized)
29                 {
30                         If (CondRefOf (\_S3, Local0)) { Return (Package (0x02) { 0x29, 0x03 }) }
31                         Else { Return (Package (0x02) { 0x29, 0x01 }) }
32                 }
33
34                 Name (APIC, Package (0x10)
35                 {
36                 // Slot 1 - PIRQ ABCD
37                         Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x0018 },
38                         Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x0019 },
39                         Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x001A },
40                         Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x001B },
41                         // Slot 2 - PIRQ BCDA
42                         Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x0019 },
43                         Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x001A },
44                         Package (0x04) { 0x0001FFFF, 0x02, 0x00, 0x001B },
45                         Package (0x04) { 0x0001FFFF, 0x03, 0x00, 0x0018 },
46                         // Slot 3 - PIRQ CDAB
47                         Package (0x04) { 0x0002FFFF, 0x00, 0x00, 0x001A },
48                         Package (0x04) { 0x0002FFFF, 0x01, 0x00, 0x001B },
49                         Package (0x04) { 0x0002FFFF, 0x02, 0x00, 0x0018 },
50                         Package (0x04) { 0x0002FFFF, 0x03, 0x00, 0x0019 },
51                         // Slot 4 - PIRQ DABC
52                         Package (0x04) { 0x0003FFFF, 0x00, 0x00, 0x001B },
53                         Package (0x04) { 0x0003FFFF, 0x01, 0x00, 0x0018 },
54                         Package (0x04) { 0x0003FFFF, 0x02, 0x00, 0x0019 },
55                         Package (0x04) { 0x0003FFFF, 0x03, 0x00, 0x001A },
56
57                 })
58                 Name (PICM, Package (0x04)
59                 {
60                         Package (0x04) { 0x0000FFFF, 0x00, \_SB.PCI0.LNKA, 0x00 },//Slot 2
61                         Package (0x04) { 0x0000FFFF, 0x01, \_SB.PCI0.LNKB, 0x00 },
62                         Package (0x04) { 0x0000FFFF, 0x02, \_SB.PCI0.LNKC, 0x00 },
63                         Package (0x04) { 0x0000FFFF, 0x03, \_SB.PCI0.LNKD, 0x00 },
64 //
65 //                      Package (0x04) { 0x0001FFFF, 0x00, \_SB.PCI0.LNKB, 0x00 },//Slot 2
66 //                      Package (0x04) { 0x0001FFFF, 0x01, \_SB.PCI0.LNKC, 0x00 },
67 //                      Package (0x04) { 0x0001FFFF, 0x02, \_SB.PCI0.LNKD, 0x00 },
68 //                      Package (0x04) { 0x0001FFFF, 0x03, \_SB.PCI0.LNKA, 0x00 },
69 //
70 //                      Package (0x04) { 0x0002FFFF, 0x00, \_SB.PCI0.LNKC, 0x00 },//Slot 2
71 //                      Package (0x04) { 0x0002FFFF, 0x01, \_SB.PCI0.LNKD, 0x00 },
72 //                      Package (0x04) { 0x0002FFFF, 0x02, \_SB.PCI0.LNKA, 0x00 },
73 //                      Package (0x04) { 0x0002FFFF, 0x03, \_SB.PCI0.LNKB, 0x00 },
74 //
75 //                      Package (0x04) { 0x0003FFFF, 0x00, \_SB.PCI0.LNKD, 0x00 },//Slot 2
76 //                      Package (0x04) { 0x0003FFFF, 0x01, \_SB.PCI0.LNKA, 0x00 },
77 //                      Package (0x04) { 0x0003FFFF, 0x02, \_SB.PCI0.LNKB, 0x00 },
78 //                      Package (0x04) { 0x0003FFFF, 0x03, \_SB.PCI0.LNKC, 0x00 },
79 //
80                 })
81
82                 Name (DNCG, Ones)
83
84                 Method (_PRT, 0, NotSerialized)
85                 {
86                         If (LEqual (^DNCG, Ones)) {
87                                 Multiply (HCIN, 0x000e, Local2) // GSI for 8132 is 7 so we get 14
88                                 Store (0x00, Local1)
89                                 While (LLess (Local1, 0x10))
90                                 {
91                                         // Update the GSI according to HCIN
92                                         Store(DeRefOf(Index (DeRefOf (Index (APIC, Local1)), 3)), Local0)
93                                         Add(Local2, Local0, Local0)
94                                         Store(Local0, Index (DeRefOf (Index (APIC, Local1)), 3))
95                                         Increment (Local1)
96                                 }
97
98                                 Store (0x00, ^DNCG)
99
100                         }
101
102                         If (LNot (PICF)) { Return (PICM) }
103                         Else { Return (APIC) }
104                 }
105         }
106
107         Device (PG0B)
108         {
109                 // 8132 pcix bridge 2
110                 Method (_ADR, 0, NotSerialized)
111                 {
112                         Return (DADD(GHCD(HCIN, 0), 0x00010000))
113                 }
114
115                 Method (_PRW, 0, NotSerialized)
116                 {
117                         If (CondRefOf (\_S3, Local0)) { Return (Package (0x02) { 0x22, 0x03 }) }
118                         Else { Return (Package (0x02) { 0x22, 0x01 }) }
119                 }
120
121                 Name (APIC, Package (0x10)
122                 {
123                         // Slot A - PIRQ ABCD
124                         Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x001F },// Slot 1
125                         Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x0020 },
126                         Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x0021 },
127                         Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x0022 },
128                         // Slot A - PIRQ BCDA
129                         Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x0020 },// Slot 1
130                         Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x0021 },
131                         Package (0x04) { 0x0001FFFF, 0x02, 0x00, 0x0022 },
132                         Package (0x04) { 0x0001FFFF, 0x03, 0x00, 0x001F },
133                         // Slot A - PIRQ CDAB
134                         Package (0x04) { 0x0002FFFF, 0x00, 0x00, 0x0021 },// Slot 1
135                         Package (0x04) { 0x0002FFFF, 0x01, 0x00, 0x0022 },
136                         Package (0x04) { 0x0002FFFF, 0x02, 0x00, 0x001F },
137                         Package (0x04) { 0x0002FFFF, 0x03, 0x00, 0x0020 },
138                         // Slot A - PIRQ DABC
139                         Package (0x04) { 0x0003FFFF, 0x00, 0x00, 0x0022 },// Slot 1
140                         Package (0x04) { 0x0003FFFF, 0x01, 0x00, 0x001F },
141                         Package (0x04) { 0x0003FFFF, 0x02, 0x00, 0x0020 },
142                         Package (0x04) { 0x0003FFFF, 0x03, 0x00, 0x0021 },
143                 })
144                 Name (PICM, Package (0x04)
145                 {
146                         Package (0x04) { 0x0000FFFF, 0x00, \_SB.PCI0.LNKA, 0x00 },//Slot 1
147                         Package (0x04) { 0x0000FFFF, 0x01, \_SB.PCI0.LNKB, 0x00 },
148                         Package (0x04) { 0x0000FFFF, 0x02, \_SB.PCI0.LNKC, 0x00 },
149                         Package (0x04) { 0x0000FFFF, 0x03, \_SB.PCI0.LNKD, 0x00 },
150
151 //                      Package (0x04) { 0x0001FFFF, 0x00, \_SB.PCI0.LNKB, 0x00 },//Slot 1
152 //                      Package (0x04) { 0x0001FFFF, 0x01, \_SB.PCI0.LNKC, 0x00 },
153 //                      Package (0x04) { 0x0001FFFF, 0x02, \_SB.PCI0.LNKD, 0x00 },
154 //                      Package (0x04) { 0x0001FFFF, 0x03, \_SB.PCI0.LNKA, 0x00 },
155 //
156 //                      Package (0x04) { 0x0002FFFF, 0x00, \_SB.PCI0.LNKC, 0x00 },//Slot 1
157 //                      Package (0x04) { 0x0002FFFF, 0x01, \_SB.PCI0.LNKD, 0x00 },
158 //                      Package (0x04) { 0x0002FFFF, 0x02, \_SB.PCI0.LNKA, 0x00 },
159 //                      Package (0x04) { 0x0002FFFF, 0x03, \_SB.PCI0.LNKB, 0x00 },
160 //
161 //                      Package (0x04) { 0x0003FFFF, 0x00, \_SB.PCI0.LNKD, 0x00 },//Slot 1
162 //                      Package (0x04) { 0x0003FFFF, 0x01, \_SB.PCI0.LNKA, 0x00 },
163 //                      Package (0x04) { 0x0003FFFF, 0x02, \_SB.PCI0.LNKB, 0x00 },
164 //                      Package (0x04) { 0x0003FFFF, 0x03, \_SB.PCI0.LNKC, 0x00 },
165 //
166                 })
167
168                 Name (DNCG, Ones)
169
170                 Method (_PRT, 0, NotSerialized)
171                 {
172                         If (LEqual (^DNCG, Ones)) {
173                                 Multiply (HCIN, 0x000e, Local2) // GSI for 8132 is 7 so we get 14
174                                 Store (0x00, Local1)
175                                 While (LLess (Local1, 0x10))
176                                 {
177                                         // Update the GSI according to HCIN
178                                         Store(DeRefOf(Index (DeRefOf (Index (APIC, Local1)), 3)), Local0)
179                                         Add(Local2, Local0, Local0)
180                                         Store(Local0, Index (DeRefOf (Index (APIC, Local1)), 3))
181                                         Increment (Local1)
182                                 }
183
184                         Store (0x00, ^DNCG)
185
186                         }
187
188                         If (LNot (PICF)) { Return (PICM) }
189                         Else { Return (APIC) }
190                 }
191         }