2 // This file is part of the LinuxBIOS project.
4 // Copyright (C) 2007 Advanced Micro Devices, Inc.
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.
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.
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
23 Method (_ADR, 0, NotSerialized)
25 Return (DADD(GHCD(HCIN, 0), 0x00000000))
28 Method (_PRW, 0, NotSerialized)
30 If (CondRefOf (\_S3, Local0)) { Return (Package (0x02) { 0x29, 0x03 }) }
31 Else { Return (Package (0x02) { 0x29, 0x01 }) }
34 Name (APIC, Package (0x10)
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 },
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 },
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 },
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 },
58 Name (PICM, Package (0x04)
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 },
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 },
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 },
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 },
84 Method (_PRT, 0, NotSerialized)
86 If (LEqual (^DNCG, Ones)) {
87 Multiply (HCIN, 0x000e, Local2) // GSI for 8132 is 7 so we get 14
89 While (LLess (Local1, 0x10))
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))
102 If (LNot (PICF)) { Return (PICM) }
103 Else { Return (APIC) }
109 // 8132 pcix bridge 2
110 Method (_ADR, 0, NotSerialized)
112 Return (DADD(GHCD(HCIN, 0), 0x00010000))
115 Method (_PRW, 0, NotSerialized)
117 If (CondRefOf (\_S3, Local0)) { Return (Package (0x02) { 0x22, 0x03 }) }
118 Else { Return (Package (0x02) { 0x22, 0x01 }) }
121 Name (APIC, Package (0x10)
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 },
144 Name (PICM, Package (0x04)
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 },
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 },
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 },
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 },
170 Method (_PRT, 0, NotSerialized)
172 If (LEqual (^DNCG, Ones)) {
173 Multiply (HCIN, 0x000e, Local2) // GSI for 8132 is 7 so we get 14
175 While (LLess (Local1, 0x10))
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))
188 If (LNot (PICF)) { Return (PICM) }
189 Else { Return (APIC) }