1/** @file 2 Differentiated System Description Table Fields (DSDT) 3 4 Copyright (c) 2014, 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 15Scope(_SB) 16{ 17 Device (MDIO) 18 { 19 OperationRegion(CLKR, SystemMemory, 0x80000338, 8) 20 Field(CLKR, DWordAcc, NoLock, Preserve) { 21 CLKE, 1, // clock enable 22 , 31, 23 CLKD, 1, // clode disable 24 , 31, 25 } 26 OperationRegion(RSTR, SystemMemory, 0x80000A38, 8) 27 Field(RSTR, DWordAcc, NoLock, Preserve) { 28 RSTE, 1, // reset 29 , 31, 30 RSTD, 1, // de-reset 31 , 31, 32 } 33 34 Name(_HID, "HISI0141") 35 Name (_CRS, ResourceTemplate (){ 36 Memory32Fixed (ReadWrite, 0x803c0000 , 0x10000) 37 }) 38 39 Method(_RST, 0, Serialized) { 40 Store (0x1, RSTE) 41 Sleep (10) 42 Store (0x1, CLKD) 43 Sleep (10) 44 Store (0x1, RSTD) 45 Sleep (10) 46 Store (0x1, CLKE) 47 Sleep (10) 48 } 49 } 50 51 Device (DSF0) 52 { 53 OperationRegion(H3SR, SystemMemory, 0xC0000180, 4) 54 Field(H3SR, DWordAcc, NoLock, Preserve) { 55 H3ST, 1, 56 , 31, //RESERVED 57 } 58 OperationRegion(H4SR, SystemMemory, 0xC0000190, 4) 59 Field(H4SR, DWordAcc, NoLock, Preserve) { 60 H4ST, 1, 61 , 31, //RESERVED 62 } 63 // DSAF RESET 64 OperationRegion(DRER, SystemMemory, 0xC0000A00, 8) 65 Field(DRER, DWordAcc, NoLock, Preserve) { 66 DRTE, 1, 67 , 31, //RESERVED 68 DRTD, 1, 69 , 31, //RESERVED 70 } 71 // NT RESET 72 OperationRegion(NRER, SystemMemory, 0xC0000A08, 8) 73 Field(NRER, DWordAcc, NoLock, Preserve) { 74 NRTE, 1, 75 , 31, //RESERVED 76 NRTD, 1, 77 , 31, //RESERVED 78 } 79 // XGE RESET 80 OperationRegion(XRER, SystemMemory, 0xC0000A10, 8) 81 Field(XRER, DWordAcc, NoLock, Preserve) { 82 XRTE, 31, 83 , 1, //RESERVED 84 XRTD, 31, 85 , 1, //RESERVED 86 } 87 88 // GE RESET 89 OperationRegion(GRTR, SystemMemory, 0xC0000A18, 16) 90 Field(GRTR, DWordAcc, NoLock, Preserve) { 91 GR0E, 30, 92 , 2, //RESERVED 93 GR0D, 30, 94 , 2, //RESERVED 95 GR1E, 18, 96 , 14, //RESERVED 97 GR1D, 18, 98 , 14, //RESERVED 99 } 100 // PPE RESET 101 OperationRegion(PRTR, SystemMemory, 0xC0000A48, 8) 102 Field(PRTR, DWordAcc, NoLock, Preserve) { 103 PRTE, 10, 104 , 22, //RESERVED 105 PRTD, 10, 106 , 22, //RESERVED 107 } 108 109 // RCB PPE COM RESET 110 OperationRegion(RRTR, SystemMemory, 0xC0000A88, 8) 111 Field(RRTR, DWordAcc, NoLock, Preserve) { 112 RRTE, 1, 113 , 31, //RESERVED 114 RRTD, 1, 115 , 31, //RESERVED 116 } 117 118 // ROCE 119 120 // CPLD LED 121 122 // Serdes 123 OperationRegion(H4LR, SystemMemory, 0xC2288100, 0x1000) 124 Field(H4LR, DWordAcc, NoLock, Preserve) { 125 H4L0, 16, // port0 126 H4R0, 16, //RESERVED 127 Offset (0x400), 128 H4L1, 16, // port1 129 H4R1, 16, //RESERVED 130 Offset (0x800), 131 H4L2, 16, // port2 132 H4R2, 16, //RESERVED 133 Offset (0xc00), 134 H4L3, 16, // port3 135 H4R3, 16, //RESERVED 136 } 137 OperationRegion(H3LR, SystemMemory, 0xC2208900, 0x800) 138 Field(H3LR, DWordAcc, NoLock, Preserve) { 139 H3L2, 16, // port4 140 , 16, //RESERVED 141 Offset (0x400), 142 H3L3, 16, // port5 143 , 16, //RESERVED 144 } 145 Name (_HID, "HISI00B1") 146 Name (_CCA, 1) // Cache-coherent controller 147 Name (_CRS, ResourceTemplate (){ 148 Memory32Fixed (ReadWrite, 0xc5000000 , 0x890000) 149 Memory32Fixed (ReadWrite, 0xc7000000 , 0x60000) 150 Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive,,,) 151 { 152 149,150,151,152,153,154,26,27,155,156,157,158,159,160, //[14] ge fifo err 8 / xge 6 153 6,7,8,9,16,17,18,19,22,23,24,25, //[12] rcb com 4*3 154 0,1,2,3,4,5,12,13, //[8] ppe tnl 0-7 155 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148, //[21] dsaf event int 3+18 156 161,162,163,164, 157 } 158 Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,) 159 { 160 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, //[256] sevice rcb 2*128 161 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 162 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 163 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 164 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 165 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 166 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 167 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 168 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 169 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 170 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 171 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 172 } 173 }) 174 Name (_DSD, Package () { 175 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 176 Package () { 177 Package () {"mode", "6port-16rss"}, 178 Package () {"buf-size", 4096}, 179 Package () {"desc-num", 1024}, 180 Package () {"interrupt-parent", Package() {\_SB.MBI1}}, 181 } 182 }) 183 184 //reset XGE port 185 //Arg0 : XGE port index in dsaf 186 //Arg1 : 0 reset, 1 cancle reset 187 Method(XRST, 2, Serialized) { 188 ShiftLeft (0x2082082, Arg0, Local0) 189 Or (Local0, 0x1, Local0) 190 191 If (LEqual (Arg1, 0)) { 192 Store(Local0, XRTE) 193 } Else { 194 Store(Local0, XRTD) 195 } 196 } 197 198 //reset XGE core 199 //Arg0 : XGE port index in dsaf 200 //Arg1 : 0 reset, 1 cancle reset 201 Method(XCRT, 2, Serialized) { 202 ShiftLeft (0x2080, Arg0, Local0) 203 204 If (LEqual (Arg1, 0)) { 205 Store(Local0, XRTE) 206 } Else { 207 Store(Local0, XRTD) 208 } 209 } 210 211 //reset GE port 212 //Arg0 : GE port index in dsaf 213 //Arg1 : 0 reset, 1 cancle reset 214 Method(GRST, 2, Serialized) { 215 If (LLessEqual (Arg0, 5)) { 216 //Service port 217 ShiftLeft (0x1041041, Arg0, Local0) 218 ShiftLeft (0x1, Arg0, Local1) 219 220 If (LEqual (Arg1, 0)) { 221 Store(Local1, GR1E) 222 Store(Local0, GR0E) 223 } Else { 224 Store(Local0, GR0D) 225 Store(Local1, GR1D) 226 } 227 } 228 } 229 230 //reset PPE port 231 //Arg0 : PPE port index in dsaf 232 //Arg1 : 0 reset, 1 cancle reset 233 Method(PRST, 2, Serialized) { 234 ShiftLeft (0x1, Arg0, Local0) 235 If (LEqual (Arg1, 0)) { 236 Store(Local0, PRTE) 237 } Else { 238 Store(Local0, PRTD) 239 } 240 } 241 242 // Set Serdes Loopback 243 //Arg0 : port 244 //Arg1 : 0 disable, 1 enable 245 Method(SRLP, 2, Serialized) { 246 ShiftLeft (Arg1, 10, Local0) 247 Switch (ToInteger(Arg0)) 248 { 249 case (0x0){ 250 Store (H4L0, Local1) 251 And (Local1, 0xfffffbff, Local1) 252 Or (Local0, Local1, Local0) 253 Store (Local0, H4L0) 254 } 255 case (0x1){ 256 Store (H4L1, Local1) 257 And (Local1, 0xfffffbff, Local1) 258 Or (Local0, Local1, Local0) 259 Store (Local0, H4L1) 260 } 261 case (0x2){ 262 Store (H4L2, Local1) 263 And (Local1, 0xfffffbff, Local1) 264 Or (Local0, Local1, Local0) 265 Store (Local0, H4L2) 266 } 267 case (0x3){ 268 Store (H4L3, Local1) 269 And (Local1, 0xfffffbff, Local1) 270 Or (Local0, Local1, Local0) 271 Store (Local0, H4L3) 272 } 273 case (0x4){ 274 Store (H3L2, Local1) 275 And (Local1, 0xfffffbff, Local1) 276 Or (Local0, Local1, Local0) 277 Store (Local0, H3L2) 278 } 279 case (0x5){ 280 Store (H3L3, Local1) 281 And (Local1, 0xfffffbff, Local1) 282 Or (Local0, Local1, Local0) 283 Store (Local0, H3L3) 284 } 285 } 286 } 287 288 //Reset 289 //Arg0 : reset type (1: dsaf; 2: ppe; 3:XGE core; 4:XGE; 5:G3) 290 //Arg1 : port 291 //Arg2 : 0 disable, 1 enable 292 Method(DRST, 3, Serialized) 293 { 294 Switch (ToInteger(Arg0)) 295 { 296 //DSAF reset 297 case (0x1) 298 { 299 Store (Arg2, Local0) 300 If (LEqual (Local0, 0)) 301 { 302 Store (0x1, DRTE) 303 Store (0x1, NRTE) 304 Sleep (10) 305 Store (0x1, RRTE) 306 } 307 Else 308 { 309 Store (0x1, DRTD) 310 Store (0x1, NRTD) 311 Sleep (10) 312 Store (0x1, RRTD) 313 } 314 } 315 //Reset PPE port 316 case (0x2) 317 { 318 Store (Arg1, Local0) 319 Store (Arg2, Local1) 320 PRST (Local0, Local1) 321 } 322 323 //Reset XGE core 324 case (0x3) 325 { 326 Store (Arg1, Local0) 327 Store (Arg2, Local1) 328 XCRT (Local0, Local1) 329 } 330 //Reset XGE port 331 case (0x4) 332 { 333 Store (Arg1, Local0) 334 Store (Arg2, Local1) 335 XRST (Local0, Local1) 336 } 337 338 //Reset GE port 339 case (0x5) 340 { 341 Store (Arg1, Local0) 342 Store (Arg2, Local1) 343 GRST (Local0, Local1) 344 } 345 } 346 } 347 348 // _DSM Device Specific Method 349 // 350 // Arg0: UUID Unique function identifier 351 // Arg1: Integer Revision Level 352 // Arg2: Integer Function Index 353 // 0 : Return Supported Functions bit mask 354 // 1 : Reset Sequence 355 // Arg3[0] : reset type (1:dsaf; 2:ppe; 3:xge core; 4:xge; 5: ge) 356 // Arg3[1] : port index in dsaf 357 // Arg3[2] : 0 reset, 1 cancle reset 358 // 2 : Set Serdes Loopback 359 // Arg3[0] : port 360 // Arg3[1] : 0 disable, 1 enable 361 // 3 : LED op set 362 // Arg3[0] : op type 363 // Arg3[1] : port 364 // Arg3[2] : para 365 // 4 : Get port type (GE or XGE) 366 // Arg3[0] : port index in dsaf 367 // Return : 0 GE, 1 XGE 368 // 5 : Get sfp status 369 // Arg3[0] : port index in dsaf 370 // Return : 0 no sfp, 1 have sfp 371 // Arg3: Package Parameters 372 Method (_DSM, 4, Serialized) 373 { 374 If (LEqual(Arg0,ToUUID("1A85AA1A-E293-415E-8E28-8D690A0F820A"))) 375 { 376 If (LEqual (Arg1, 0x00)) 377 { 378 Switch (ToInteger(Arg2)) 379 { 380 case (0x0) 381 { 382 Return (Buffer () {0x3F}) 383 } 384 385 //Reset Sequence 386 case (0x1) 387 { 388 Store (DeRefOf (Index (Arg3, 0)), Local0) 389 Store (DeRefOf (Index (Arg3, 1)), Local1) 390 Store (DeRefOf (Index (Arg3, 2)), Local2) 391 DRST (Local0, Local1, Local2) 392 } 393 394 //Set Serdes Loopback 395 case (0x2) 396 { 397 Store (DeRefOf (Index (Arg3, 0)), Local0) 398 Store (DeRefOf (Index (Arg3, 1)), Local1) 399 SRLP (Local0, Local1) 400 } 401 402 //LED op set 403 case (0x3) 404 { 405 406 } 407 408 // Get port type (GE or XGE) 409 case (0x4) 410 { 411 Store (0, Local1) 412 Store (DeRefOf (Index (Arg3, 0)), Local0) 413 If (LLessEqual (Local0, 3)) 414 { 415 Store (H4ST, Local1) 416 } 417 ElseIf (LLessEqual (Local0, 5)) 418 { 419 Store (H3ST, Local1) 420 } 421 422 Return (Local1) 423 } 424 425 //Get sfp status 426 case (0x5) 427 { 428 429 } 430 } 431 } 432 } 433 Return (Buffer() {0x00}) 434 } 435 Device (PRT0) 436 { 437 Name (_ADR, 0x0) 438 Name (_DSD, Package () { 439 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 440 Package () { 441 Package () {"reg", 0}, 442 Package () {"media-type", "fiber"}, 443 } 444 }) 445 } 446 Device (PRT1) 447 { 448 Name (_ADR, 0x1) 449 Name (_DSD, Package () { 450 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 451 Package () { 452 Package () {"reg", 1}, 453 Package () {"media-type", "fiber"}, 454 } 455 }) 456 } 457 Device (PRT4) 458 { 459 Name (_ADR, 0x4) 460 Name (_DSD, Package () { 461 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 462 Package () { 463 Package () {"reg", 4}, 464 Package () {"phy-mode", "sgmii"}, 465 Package () {"phy-addr", 0}, 466 Package () {"mdio-node", Package (){\_SB.MDIO}}, 467 Package () {"media-type", "copper"}, 468 } 469 }) 470 } 471 Device (PRT5) 472 { 473 Name (_ADR, 0x5) 474 Name (_DSD, Package () { 475 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 476 Package () { 477 Package () {"reg", 5}, 478 Package () {"phy-mode", "sgmii"}, 479 Package () {"phy-addr", 1}, 480 Package () {"mdio-node", Package (){\_SB.MDIO}}, 481 Package () {"media-type", "copper"}, 482 } 483 }) 484 } 485 } 486/* 487 Device (DSF1) 488 { 489 OperationRegion(H3SR, SystemMemory, 0xC0000180, 4) 490 Field(H3SR, DWordAcc, NoLock, Preserve) { 491 H3ST, 1, 492 , 31, //RESERVED 493 } 494 495 // XGE RESET 496 OperationRegion(XRER, SystemMemory, 0xC0000A10, 8) 497 Field(XRER, DWordAcc, NoLock, Preserve) { 498 XRTE, 31, 499 , 1, //RESERVED 500 XRTD, 31, 501 , 1, //RESERVED 502 } 503 504 // GE RESET 505 OperationRegion(GRTR, SystemMemory, 0xC0000A18, 16) 506 Field(GRTR, DWordAcc, NoLock, Preserve) { 507 GR0E, 30, 508 , 2, //RESERVED 509 GR0D, 30, 510 , 2, //RESERVED 511 GR1E, 18, 512 , 14, //RESERVED 513 GR1D, 18, 514 , 14, //RESERVED 515 } 516 517 // PPE RESET 518 OperationRegion(PRTR, SystemMemory, 0xC0000A48, 8) 519 Field(PRTR, DWordAcc, NoLock, Preserve) { 520 PRTE, 10, 521 , 22, //RESERVED 522 PRTD, 10, 523 , 22, //RESERVED 524 } 525 526 // ROCE 527 528 // CPLD LED 529 530 // Serdes 531 OperationRegion(H3LR, SystemMemory, 0xC2208100, 0x4) 532 Field(H3LR, DWordAcc, NoLock, Preserve) { 533 H3L0, 16, // debug port0 534 , 16, //RESERVED 535 } 536 Name(_HID, "HISI00B1") 537 Name (_CCA, 1) // Cache-coherent controller 538 Name (_CRS, ResourceTemplate (){ 539 Memory32Fixed (ReadWrite, 0xc2000000 , 0x890000) 540 541 Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,) 542 { 543 14, 15, 544 } 545 }) 546 Name (_DSD, Package () { 547 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 548 Package () { 549 Package () {"mode", "single-port"}, 550 Package () {"buf-size", 4096}, 551 Package () {"desc-num", 1024}, 552 Package () {"interrupt-parent", Package() {\_SB.MBI1}}, 553 } 554 }) 555 556 // Set Serdes Loopback 557 //Arg0 : port 558 //Arg1 : 0 disable, 1 enable 559 Method(SRLP, 1, Serialized) { 560 ShiftLeft (Arg0, 10, Local0) 561 Store (H3L0, Local1) 562 And (Local1, 0xfffffbff, Local1) 563 Or (Local0, Local1, Local0) 564 Store (Local1, H3L0) 565 } 566 567 //Reset 568 //Arg0 : reset type (1: dsaf; 2: ppe; 3:reserved; 4:reserved; 5:G3) 569 //Arg1 : 0 disable, 1 enable 570 Method(DRST, 2, Serialized) 571 { 572 Switch (ToInteger(Arg0)) 573 { 574 //DSAF reset 575 case (0x1) 576 { 577 If (LEqual (Arg1, 0)) { 578 Store (0x100, PRTE) 579 } Else { 580 Store (0x100, PRTD) 581 } 582 } 583 //Reset PPE port 584 case (0x2) 585 { 586 If (LEqual (Arg1, 0)) { 587 Store(0x40, PRTE) 588 } Else { 589 Store(0x40, PRTD) 590 } 591 } 592 593 //Reset GE port 594 case (0x5) 595 { 596 If (LEqual (Arg1, 0)) { 597 Store(0x15540, GR1E) 598 Store(0x100, PRTE) 599 } Else { 600 Store(0x15540, GR1D) 601 Store(0x100, PRTD) 602 } 603 } 604 } 605 } 606 // _DSM Device Specific Method 607 // 608 // Arg0: UUID Unique function identifier 609 // Arg1: Integer Revision Level 610 // Arg2: Integer Function Index 611 // 0 : Return Supported Functions bit mask 612 // 1 : Reset Sequence 613 // Arg3[0] : reset type (1:dsaf; 2:ppe; 3:reserved; 4:reserved; 5: ge) 614 // Arg3[1] : reserved 615 // Arg3[2] : 0 reset, 1 cancle reset 616 // 2 : Set Serdes Loopback 617 // Arg3[0] : reserved 618 // Arg3[1] : 0 disable, 1 enable 619 // 3 : LED op set 620 // Arg3[0] : op type 621 // Arg3[1] : reserved 622 // Arg3[2] : para 623 // 4 : Get port type (GE or XGE) 624 // Arg3[0] : reserved 625 // Return : 0 GE, 1 XGE 626 // 5 : Get sfp status 627 // Arg3[0] : reserved 628 // Return : 0 no sfp, 1 have sfp 629 // Arg3: Package Parameters 630 Method (_DSM, 4, Serialized) 631 { 632 If (LEqual(Arg0,ToUUID("1A85AA1A-E293-415E-8E28-8D690A0F820A"))) 633 { 634 If (LEqual (Arg1, 0x00)) 635 { 636 Switch (ToInteger(Arg2)) 637 { 638 case (0x0) 639 { 640 Return (Buffer () {0x3F}) 641 } 642 643 //Reset Sequence 644 case (0x1) 645 { 646 Store (DeRefOf (Index (Arg3, 0)), Local0) 647 Store (DeRefOf (Index (Arg3, 2)), Local2) 648 DRST (Local0, Local2) 649 } 650 651 //Set Serdes Loopback 652 case (0x2) 653 { 654 Store (DeRefOf (Index (Arg3, 2)), Local0) 655 SRLP (Local0) 656 } 657 658 //LED op set 659 case (0x3) 660 { 661 662 } 663 664 // Get port type (GE or XGE) 665 case (0x4) 666 { 667 Store (H3ST, Local0) 668 Return (Local0) 669 } 670 671 //Get sfp status 672 case (0x5) 673 { 674 675 } 676 } 677 } 678 } 679 Return (Buffer() {0x00}) 680 } 681 682 Device (PRT0) 683 { 684 Name (_ADR, 0x0) 685 Name (_DSD, Package () { 686 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 687 Package () { 688 Package () {"reg", 0}, 689 Package () {"phy-mode", "sgmii"}, 690 Package () {"phy-addr", 0}, 691 Package () {"mdio-node", Package (){\_SB.MDIO}}, 692 } 693 }) 694 } 695 } 696 Device (DSF2) 697 { 698 OperationRegion(H3SR, SystemMemory, 0xC0000180, 4) 699 Field(H3SR, DWordAcc, NoLock, Preserve) { 700 H3ST, 1, 701 , 31, //RESERVED 702 } 703 704 // XGE RESET 705 OperationRegion(XRER, SystemMemory, 0xC0000A10, 8) 706 Field(XRER, DWordAcc, NoLock, Preserve) { 707 XRTE, 31, 708 , 1, //RESERVED 709 XRTD, 31, 710 , 1, //RESERVED 711 } 712 713 // GE RESET 714 OperationRegion(GRTR, SystemMemory, 0xC0000A18, 16) 715 Field(GRTR, DWordAcc, NoLock, Preserve) { 716 GR0E, 30, 717 , 2, //RESERVED 718 GR0D, 30, 719 , 2, //RESERVED 720 GR1E, 18, 721 , 14, //RESERVED 722 GR1D, 18, 723 , 14, //RESERVED 724 } 725 726 // PPE RESET 727 OperationRegion(PRTR, SystemMemory, 0xC0000A48, 8) 728 Field(PRTR, DWordAcc, NoLock, Preserve) { 729 PRTE, 10, 730 , 22, //RESERVED 731 PRTD, 10, 732 , 22, //RESERVED 733 } 734 735 // ROCE 736 737 // CPLD LED 738 739 // Serdes 740 OperationRegion(H3LR, SystemMemory, 0xC2208500, 0x4) 741 Field(H3LR, DWordAcc, NoLock, Preserve) { 742 H3L1, 16, // debug port1 743 , 16, //RESERVED 744 } 745 Name(_HID, "HISI00B1") 746 Name (_CCA, 1) // Cache-coherent controller 747 Name (_CRS, ResourceTemplate (){ 748 Memory32Fixed (ReadWrite, 0xc2100000 , 0x890000) 749 750 Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,) 751 { 752 20, 21, 753 } 754 }) 755 Name (_DSD, Package () { 756 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 757 Package () { 758 Package () {"mode", "single-port"}, 759 Package () {"buf-size", 4096}, 760 Package () {"desc-num", 1024}, 761 Package () {"interrupt-parent", Package() {\_SB.MBI1}}, 762 } 763 }) 764 765 // Set Serdes Loopback 766 //Arg0 : port 767 //Arg1 : 0 disable, 1 enable 768 Method(SRLP, 1, Serialized) { 769 ShiftLeft (Arg0, 10, Local0) 770 Store (H3L1, Local1) 771 And (Local1, 0xfffffbff, Local1) 772 Or (Local0, Local1, Local0) 773 Store (Local1, H3L1) 774 } 775 776 //Reset 777 //Arg0 : reset type (1: dsaf; 2: ppe; 3:reserved; 4:reserved; 5:G3) 778 //Arg1 : 0 disable, 1 enable 779 Method(DRST, 2, Serialized) 780 { 781 Switch (ToInteger(Arg0)) 782 { 783 //DSAF reset 784 case (0x1) 785 { 786 If (LEqual (Arg1, 0)) { 787 Store (0x200, PRTE) 788 } Else { 789 Store (0x2200, PRTD) 790 } 791 } 792 793 //Reset PPE port 794 case (0x2) 795 { 796 If (LEqual (Arg1, 0)) { 797 Store(0x80, PRTE) 798 } Else { 799 Store(0x80, PRTD) 800 } 801 } 802 803 //Reset GE port 804 case (0x5) 805 { 806 If (LEqual (Arg1, 0)) { 807 Store(0x2aa80, GR1E) 808 Store(0x200, PRTE) 809 } Else { 810 Store(0x2aa80, GR1D) 811 Store(0x200, PRTD) 812 } 813 } 814 } 815 } 816 // _DSM Device Specific Method 817 // 818 // Arg0: UUID Unique function identifier 819 // Arg1: Integer Revision Level 820 // Arg2: Integer Function Index 821 // 0 : Return Supported Functions bit mask 822 // 1 : Reset sequence 823 // Arg3[0] : reset type (1:dsaf; 2:ppe; 3:reserved; 4:reserved; 5: ge) 824 // Arg3[1] : reserved 825 // Arg3[2] : 0 reset, 1 cancle reset 826 // 2 : Set Serdes Loopback 827 // Arg3[0] : reserved 828 // Arg3[1] : 0 disable, 1 enable 829 // 3 : LED op set 830 // Arg3[0] : op type 831 // Arg3[1] : reserved 832 // Arg3[2] : para 833 // 4 : Get port type (GE or XGE) 834 // Arg3[0] : reserved 835 // Return : 0 GE, 1 XGE 836 // 5 : Get sfp status 837 // Arg3[0] : reserved 838 // Return : 0 no sfp, 1 have sfp 839 // Arg3: Package Parameters 840 Method (_DSM, 4, Serialized) 841 { 842 If (LEqual(Arg0,ToUUID("1A85AA1A-E293-415E-8E28-8D690A0F820A"))) 843 { 844 If (LEqual (Arg1, 0x00)) 845 { 846 Switch (ToInteger(Arg2)) 847 { 848 case (0x0) 849 { 850 Return (Buffer () {0x3F}) 851 } 852 853 //Reset Sequence 854 case (0x1) 855 { 856 Store (DeRefOf (Index (Arg3, 0)), Local0) 857 Store (DeRefOf (Index (Arg3, 2)), Local2) 858 DRST (Local0, Local2) 859 } 860 861 //Set Serdes Loopback 862 case (0x2) 863 { 864 Store (DeRefOf (Index (Arg3, 2)), Local0) 865 SRLP (Local0) 866 } 867 868 //LED op set 869 case (0x3) 870 { 871 872 } 873 874 // Get port type (GE or XGE) 875 case (0x4) 876 { 877 Store (H3ST, Local0) 878 Return (Local0) 879 } 880 881 //Get sfp status 882 case (0x5) 883 { 884 885 } 886 } 887 } 888 } 889 Return (Buffer() {0x00}) 890 } 891 892 Device (PRT0) 893 { 894 Name (_ADR, 0x0) 895 Name (_DSD, Package () { 896 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 897 Package () { 898 Package () {"reg", 0}, 899 Package () {"phy-mode", "sgmii"}, 900 Package () {"phy-addr", 1}, 901 Package () {"mdio-node", Package (){\_SB.MDIO}}, 902 } 903 }) 904 } 905 } 906*/ 907 Device (ETH5) { 908 Name(_HID, "HISI00C1") 909 Name (_CCA, 1) // Cache-coherent controller 910 Name (_DSD, Package () { 911 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 912 Package () { 913 Package () {"local-mac-address", Package () { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }}, // 6-bytes 914 Package () {"ae-handle", Package (){\_SB.DSF0}}, 915 Package () {"port-idx-in-ae", 5}, 916 } 917 }) 918 } 919 Device (ETH4) { 920 Name(_HID, "HISI00C1") 921 Name (_CCA, 1) // Cache-coherent controller 922 Name (_DSD, Package () { 923 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 924 Package () { 925 Package () {"local-mac-address", Package () { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }}, // 6-bytes 926 Package () {"ae-handle", Package (){\_SB.DSF0}}, 927 Package () {"port-idx-in-ae", 4}, 928 } 929 }) 930 } 931 Device (ETH0) { 932 Name(_HID, "HISI00C1") 933 Name (_CCA, 1) // Cache-coherent controller 934 Name (_DSD, Package () { 935 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 936 Package () { 937 Package () {"local-mac-address", Package () { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }}, // 6-bytes 938 Package () {"ae-handle", Package (){\_SB.DSF0}}, 939 Package () {"port-idx-in-ae", 0}, 940 } 941 }) 942 } 943 Device (ETH1) { 944 Name(_HID, "HISI00C1") 945 Name (_CCA, 1) // Cache-coherent controller 946 Name (_DSD, Package () { 947 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 948 Package () { 949 Package () {"local-mac-address", Package () { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }}, // 6-bytes 950 Package () {"ae-handle", Package (){\_SB.DSF0}}, 951 Package () {"port-idx-in-ae", 1}, 952 } 953 }) 954 } 955 956} 957