Changeset 2256


Ignore:
Timestamp:
Jun 8, 2011, 12:56:48 AM (4 years ago)
Author:
quozl
Message:

OLPC XO-1.5 trac #10970 - code review comments merged and tested against 11.2.0 os22.

Location:
cpu/x86/pc/olpc/via
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cpu/x86/pc/olpc/via/dsdt-c2only.dsl

    r2255 r2256  
    332332    IF (LEqual(Arg0, 0x03))     //S3
    333333    {
    334         // Store(0x2,\_SB.PCI0.MEMC.FSEG)  //Set F Segment to Read only
    335334        // Notify(\_SB.PCI0, 0x00)
    336335    }
     
    374373
    375374    IF (LEqual(Arg0, 0x03)) {       // S3
    376         // Store(0x0,\_SB.PCI0.MEMC.FSEG)     // Disable F Segment Read/Write
    377375    }
    378376
     
    387385    Return (0x00)
    388386}
    389 
    390 //  Method(STRC, 2) {   // Compare two String
    391 //      If(LNotEqual(Sizeof(Arg0), Sizeof(Arg1))) {
    392 //          Return(1)
    393 //      }
    394 //
    395 //      Add(Sizeof(Arg0), 1, Local0)
    396 //
    397 //      Name(BUF0, Buffer(Local0) {})
    398 //      Name(BUF1, Buffer(Local0) {})
    399 //
    400 //      Store(Arg0, BUF0)
    401 //      Store(Arg1, BUF1)
    402 //
    403 //      While(Local0) {
    404 //          Decrement(Local0)
    405 //          If(LNotEqual(Derefof(Index(BUF0, Local0)), Derefof(Index(BUF1, Local0)))) {
    406 //              Return(1)
    407 //          }
    408 //      }
    409 //      Return(0)           // Str1 & Str2 are match
    410 //  }
    411387
    412388//
     
    576552            Field(MCPS,ByteAcc,NoLock,Preserve)
    577553            {
    578                 Offset(0x83),
    579                     , 4,
    580                 FSEG, 2,            //Rx83[4:5]
    581                     , 2,
    582 
    583554                Offset(0x84),
    584555                LTMA, 16,           //Rx84 and Rx85. Low Top Address of Memory
     
    623594            }
    624595        }//Device(USBD)
    625 
    626 //        // SDIO Controller
    627 //        Device (SDIO)
    628 //        {
    629 //            Name(_ADR, 0x000C0000)
    630 //
    631 //            OperationRegion(RSDC,PCI_Config,0x00,0x100)
    632 //            Field(RSDC,ByteAcc,NoLock,Preserve){
    633 //                Offset(0x00),
    634 //                VID, 16,
    635 //                Offset(0x04),
    636 //                CMDR, 3,
    637 //            }
    638 //
    639 //            Method(_STA, 0)
    640 //            {
    641 //                If(LNotEqual(\_SB.PCI0.SDIO.VID, 0x1106)) {
    642 //                    Return(0x00)
    643 //                } Else {
    644 //                    If(LEqual(\_SB.PCI0.SDIO.CMDR, 0x00)) {
    645 //                        Return(0x0D)
    646 //                    } Else {
    647 //                        Return(0x0F)    // present, enabled, functioning
    648 //                    }
    649 //                }
    650 //            }
    651 //        }//Device(SDIO)
    652 
    653 //        // SD $ MS Controller
    654 //        Device (SDMS)
    655 //        {
    656 //            Name(_ADR, 0x000D0000)
    657 //
    658 //            OperationRegion(RSDM,PCI_Config,0x00,0x100)
    659 //            Field(RSDM,ByteAcc,NoLock,Preserve){
    660 //                Offset(0x00),
    661 //                VID, 16,
    662 //                Offset(0x04),
    663 //                CMDR, 3,
    664 //            }
    665 //
    666 //            Method(_STA, 0)
    667 //            {
    668 //                If(LNotEqual(\_SB.PCI0.SDMS.VID, 0x1106)) {
    669 //                    Return(0x00)
    670 //                } Else {
    671 //                    If(LEqual(\_SB.PCI0.SDMS.CMDR, 0x00)) {
    672 //                        Return(0x0D)
    673 //                    } Else {
    674 //                        Return(0x0F)    // present, enabled, functioning
    675 //                    }
    676 //                }
    677 //            }
    678 //        }//Device(SDMS)
    679 //
    680 //        // CE-ATA $ NF Controller(Card Boot)
    681 //        Device(CENF)
    682 //        {
    683 //            Name(_ADR, 0x000E0000)
    684 //
    685 //            OperationRegion(RENF,PCI_Config,0x00,0x100)
    686 //            Field(RENF,ByteAcc,NoLock,Preserve){
    687 //                Offset(0x00),
    688 //                VID, 16,
    689 //                Offset(0x04),
    690 //                CMDR, 3,
    691 //            }
    692 //
    693 //            Method(_STA, 0)
    694 //            {
    695 //                If(LNotEqual(\_SB.PCI0.CENF.VID, 0x1106)) {
    696 //                    Return(0x00)
    697 //                } Else {
    698 //                    If(LEqual(\_SB.PCI0.CENF.CMDR, 0x00)) {
    699 //                        Return(0x0D)
    700 //                    } Else {
    701 //                        Return(0x0F)    // present, enabled, functioning
    702 //                    }
    703 //                }
    704 //            }
    705 //        }
    706 //
    707 //        Device(IDEC)
    708 //        {
    709 //
    710 //            Name(_ADR, 0x000F0000)  //D15F0: a Pata device
    711 //
    712 //            Method(_STA,0,NotSerialized)    //Status of the Pata Device
    713 //            {
    714 //                If(LNot(LEqual(\_SB.PCI0.IDEC.VID,0x1106)))
    715 //                {
    716 //                    Return(0x00)    //device not exists
    717 //                }
    718 //                Else
    719 //                {
    720 //                    If(LEqual(\_SB.PCI0.IDEC.CMDR,0x00))
    721 //                    {
    722 //                        Return(0x0D)        //device exists & disable
    723 //                    }
    724 //                    Else
    725 //                    {
    726 //                        Return(0x0F)        //device exists & enable
    727 //                    }
    728 //                }
    729 //            }
    730 //            OperationRegion(SAPR,PCI_Config,0x00,0xC2)
    731 //            Field(SAPR,ByteAcc,NoLock,Preserve)
    732 //            {
    733 //                VID,16,
    734 //                Offset(0x04),
    735 //                CMDR,3,
    736 //                Offset(0x40),
    737 //                        , 1,
    738 //                EPCH, 1,                    // Enable Primary channel.
    739 //                Offset(0x4A),
    740 //                PSPT, 8,                    // IDE Timings, Primary Slave
    741 //                PMPT, 8,                    // IDE Timings, Primary Master
    742 //                Offset(0x52),
    743 //                PSUT, 4,                    // Primary Slave UDMA Timing
    744 //                PSCT, 1,                    // Primary Drive Slave Cabal Type
    745 //                PSUE, 3,                    // Primary Slave UDMA Enable
    746 //                PMUT, 4,                    // Primary Master UDMA Timing
    747 //                PMCT, 1,                    // Primary Drive Master Cabal Type
    748 //                PMUE, 3,                    // Primary Master UDMA Enable
    749 //            }
    750 //
    751 //            Name(REGF,0x01)         //accessible OpRegion default
    752 //            Method(_REG,2,NotSerialized)    // is PCI Config space accessible as OpRegion?
    753 //            {
    754 //                If(LEqual(Arg0,0x02))
    755 //                {
    756 //                    Store(Arg1,REGF)
    757 //                }
    758 //            }
    759 //            /*
    760 //            Name(TIM0,Package(0x04){
    761 //                Package(){0x78,0xB4,0xF0,0x017F,0x0258},
    762 //                Package(){0x20,0x22,0x33,0x47,0x5D},
    763 //                Package(){0x78,0x50,0x3C,0x2D,0x1E,0x14,0x0F},
    764 //                Package(){0x06,0x05,0x04,0x04,0x03,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x00}
    765 //            })
    766 //        */
    767 //            Name(TIM0, Package()
    768 //            {                               // Primary / Secondary channels timings
    769 //                Package(){120, 180, 240, 383, 600},         // Timings in ns - Mode 4,3,2,1,0 defined from ATA spec.
    770 //                Package(){0x20, 0x22, 0x33, 0x47, 0x5D },   // PIO Timing - Mode 4,3,2,1,0
    771 //                Package(){4, 3, 2, 1, 0},                           // PIO mode (TIM0,0)
    772 //                Package(){2, 1, 0, 0},                              // Multi-word DMA mode
    773 //                Package(){120, 80, 60, 45, 30, 20, 15},         // Min UDMA Timings in ns
    774 //                Package(){6,5,4,4,3,3,2,2,1,1,1,1,1,1,0},   // UDMA mode
    775 //                Package(){0x0E, 8, 6, 4, 2, 1, 0},          // UDMA timing
    776 //            })
    777 //
    778 //            Name(TMD0,Buffer(0x14){})
    779 //            CreateDwordField(TMD0,0x00,PIO0)
    780 //            CreateDwordField(TMD0,0x04,DMA0)
    781 //            CreateDwordField(TMD0,0x08,PIO1)
    782 //            CreateDwordField(TMD0,0x0C,DMA1)
    783 //            CreateDwordField(TMD0,0x10,CHNF)
    784 //
    785 //            Name(GMPT, 0)           // Master PIO Timings
    786 //            Name(GMUE, 0)           // Master UDMA enable
    787 //            Name(GMUT, 0)           // Master UDMA Timings
    788 //            Name(GSPT, 0)           // Slave PIO Timings
    789 //            Name(GSUE, 0)           // Slave UDMA enable
    790 //            Name(GSUT, 0)           // Slave UDMA Timings
    791 //
    792 //            Device(CHN0)    //Primary Channel: Pata device
    793 //            {
    794 //                Name(_ADR,0x00)
    795 //
    796 //                Method(_STA,0,NotSerialized)
    797 //                {
    798 //                    If(LNotEqual(\_SB.PCI0.IDEC.EPCH, 0x1))
    799 //                    {
    800 //                        Return(0x00)        //channel disable
    801 //                    }
    802 //                    Else
    803 //                    {
    804 //                        Return(0x0F)        //channel enable
    805 //                    }
    806 //               }
    807 //                Method(_GTM,0,NotSerialized)        //Get Timing Mode
    808 //                {
    809 //                    Return(GTM(PMPT,PMUE,PMUT,PSPT,PSUE,PSUT))
    810 //                }
    811 //                Method(_STM, 3)                     // Set Timing PIO/DMA Mode
    812 //                {
    813 //                   Store(Arg0, TMD0)        // Copy Arg0 into TMD0 buffer
    814 //                   Store(PMPT, GMPT)        // Master PIO Timings
    815 //                   Store(PMUE, GMUE)        // Master UDMA enable
    816 //                   Store(PMUT, GMUT)        // Master UDMA Timings
    817 //                   Store(PSPT, GSPT)        // Slave PIO Timings
    818 //                   Store(PSUE, GSUE)        // Slave UDMA enable
    819 //                   Store(PSUT, GSUT)        // Slave UDMA Timings
    820 //                   STM()
    821 //                   Store(GMPT, PMPT)        // Master PIO Timings
    822 //                   Store(GMUE, PMUE)        // Master UDMA enable
    823 //                   Store(GMUT, PMUT)        // Master UDMA Timings
    824 //                   Store(GSPT, PSPT)        // Slave PIO Timings
    825 //                   Store(GSUE, PSUE)        // Slave UDMA enable
    826 //                   Store(GSUT, PSUT)        // Slave UDMA Timings
    827 //                }                           // end Method _STM
    828 //
    829 //                Device(DRV0)        //Master Device
    830 //                {
    831 //                    Name(_ADR,0x00) //0 indicates master drive
    832 //                    Method(_GTF,0,NotSerialized)    //Get Task File: return a buffer of ATA command used to re-initialize //////the device
    833 //                    {
    834 //                            Return(GTF(0,PMUE,PMUT,PMPT))
    835 //                    }
    836 //                }
    837 //                Device(DRV1)        //Slave Device
    838 //                {
    839 //                    Name(_ADR,0x01) //1 indicates slave drive
    840 //                    Method(_GTF,0,NotSerialized)    //Get Task File: return a buffer of ATA command used to re-initialize //the device
    841 //                    {
    842 //                            Return(GTF(0,PSUE,PSUT,PSPT))
    843 //                    }
    844 //                }
    845 //            }
    846 //
    847 //            Method(GTM,6,Serialized)
    848 //            {
    849 //                Store(Ones,PIO0)    //default value: all bits set to 1
    850 //                Store(Ones,PIO1)    //default value: all bits set to 1
    851 //                Store(Ones,DMA0)    //default value: all bits set to 1
    852 //                Store(Ones,DMA1)    //default value: all bits set to 1
    853 //                Store(0x10,CHNF)    //default value: 0x10
    854 //                If(REGF)
    855 //                {
    856 //                }
    857 //                Else
    858 //                {
    859 //                    Return(TMD0)    //unable to setup PCI config space as opRegion;return default value
    860 //                }
    861 //                Store(Match(DeRefOf(Index(TIM0,0x01)),MEQ,Arg0,MTR,0x00,0x00),Local6)
    862 //                If(LLess(Local6,Ones))
    863 //                {
    864 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x00)),Local6)),Local7)
    865 //                    Store(Local7,DMA0)
    866 //                    Store(Local7,PIO0)
    867 //                }
    868 //                Store(Match(DeRefOf(Index(TIM0,0x01)),MEQ,Arg3,MTR,0x00,0x00),Local6)
    869 //                If(LLess(Local6,Ones))
    870 //                {
    871 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x00)),Local6)),Local7)
    872 //                    Store(Local7,DMA1)
    873 //                    Store(Local7,PIO1)
    874 //                }
    875 //                If(Arg1)
    876 //                {
    877 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x05)),Arg2)),Local5)
    878 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x04)),Local5)),DMA0)
    879 //                    Or(CHNF,0x01,CHNF)
    880 //                }
    881 //                If(Arg4)
    882 //                {
    883 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x05)),Arg5)),Local5)
    884 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x04)),Local5)),DMA1)
    885 //                    Or(CHNF,0x04,CHNF)
    886 //                }
    887 //                Return(TMD0)        //return timing mode
    888 //            }
    889 //
    890 //            Method(STM, 0, Serialized)
    891 //            {
    892 //
    893 //                If(REGF){}                  // PCI space not accessible
    894 //                Else        {  Return(TMD0)  }
    895 //
    896 //                Store(0x00, GMUE)           // Master UDMA Disable
    897 //                Store(0x00, GSUE)           // Slave UDMA Disable
    898 //                Store(0x07, GMUT)           // Master UDMA Mode 0
    899 //                Store(0x07, GSUT)           // Slave UDMA Mode 0
    900 //
    901 //                If(And(CHNF, 0x1))
    902 //                {
    903 //                    Store(Match(DeRefOf(Index(TIM0, 4)), MLE, DMA0, MTR,0,0), Local0)    // Get DMA mode
    904 //                    Store(DeRefOf(Index(DeReFof(Index(TIM0, 6)), Local0)), GMUT)         // Timing bit mask 66Mhz
    905 //                    Or(GMUE, 0x07, GMUE)                                    // Enable UltraDMA for Device 0
    906 //                }
    907 //                Else        // non - UDMA mode. Possible Multi word DMA
    908 //                {
    909 //                    If(Or(LEqual(PIO0,Ones), LEqual(PIO0,0)))
    910 //                    {
    911 //                        If(And(LLess(DMA0,Ones), LGreater(DMA0,0)))
    912 //                        {
    913 //                            Store(DMA0, PIO0)       // Make PIO0=DMA0
    914 //                        }
    915 //                    }
    916 //                }
    917 //
    918 //                If(And(CHNF, 0x4))
    919 //                {
    920 //                    Store(Match(DeRefOf(Index(TIM0, 4)), MLE, DMA1, MTR,0,0), Local0)
    921 //                    Store(DeRefOf(Index(DeReFof(Index(TIM0, 6)), Local0)), GSUT) // Timing bit mask 66Mhz
    922 //                    Or(GSUE, 0x07, GSUE)    // Enable UltraDMA for Device 0
    923 //                }
    924 //                Else        // non - UDMA mode. Possible Multi word DMA
    925 //                {
    926 //                    If(Or(LEqual(PIO1, Ones), LEqual(PIO1,0)))
    927 //                    {
    928 //                        If(And(LLess(DMA1, Ones), LGreater(DMA1,0)))
    929 //                        {
    930 //                           Store(DMA1, PIO1)        // Make PIO1 = DMA1
    931 //                        }
    932 //                    }
    933 //                }
    934 //
    935 //                And(Match(DeRefOf(Index(TIM0, 0)), MGE, PIO0, MTR,0,0), 0x3, Local0)
    936 //                Store(DeRefOf(Index(DeReFof(Index(TIM0, 1)), Local0)), Local1)
    937 //                Store(Local1, GMPT)
    938 //
    939 //                And(Match(DeRefOf(Index(TIM0, 0)), MGE, PIO1, MTR,0,0), 0x3, Local0)
    940 //                Store(DeRefOf(Index(DeReFof(Index(TIM0, 1)), Local0)), Local1)
    941 //                Store(Local1, GSPT)
    942 //                Return(TMD0)
    943 //            } // end Method STM
    944 //
    945 //            Method(GTF , 4 , Serialized)
    946 //            {
    947 //                Store(Buffer(7){0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF}, Local1)
    948 //                Store(Buffer(7){0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF}, Local2)
    949 //                CreateByteField(Local1, 1, Mode)            // PIO mode
    950 //                CreateByteField(Local2, 1, UMOD)            // Ultra mode
    951 //                CreateByteField(Local1, 5, PCHA)            // master or slave
    952 //                CreateByteField(Local2, 5, UCHA)            // master or slave
    953 //                And(Arg0,0x03,Local3)
    954 //
    955 //                If(Lequal(And(Local3,0x01),0x01))
    956 //                {
    957 //                    Store(0xB0,PCHA)        // drive 1
    958 //                    Store(0xB0,UCHA)        // drive 1
    959 //                }
    960 //
    961 //                If(Arg1)
    962 //                {
    963 //                    Store(DeRefOf(Index(DeReFof(Index(TIM0, 5)), Arg2)), UMOD)     //Programming DMA Mode
    964 //                    Or( UMOD, 0x40, UMOD)
    965 //                }
    966 //                Else
    967 //                {   // non-UltraDMA
    968 //                    Store(Match(DeRefOf(Index(TIM0, 1)), MEQ, Arg3, MTR,0,0), Local0)
    969 //                    Or(0x20, DeRefOf(Index(DeReFof(Index(TIM0, 3)), Local0)), UMOD)
    970 //                }
    971 //
    972 //                Store(Match(DeRefOf(Index(TIM0, 1)), MEQ, Arg3, MTR,0,0), Local0)
    973 //                Or(0x08, DeRefOf(Index(DeReFof(Index(TIM0, 2)), Local0)), Mode)
    974 //                Concatenate(Local1, Local2, Local6)
    975 //                Return(Local6)
    976 //
    977 //            } // end of GTF
    978 //        }
    979596
    980597        Device(USB1)        {
  • cpu/x86/pc/olpc/via/dsdt.dsl

    r2255 r2256  
    334334    IF (LEqual(Arg0, 0x03))     //S3
    335335    {
    336         // Store(0x2,\_SB.PCI0.MEMC.FSEG)  //Set F Segment to Read only
    337336        // Notify(\_SB.PCI0, 0x00)
    338337    }
     
    376375
    377376    IF (LEqual(Arg0, 0x03)) {       // S3
    378         // Store(0x0,\_SB.PCI0.MEMC.FSEG)     // Disable F Segment Read/Write
    379377    }
    380378
     
    389387    Return (0x00)
    390388}
    391 
    392 //  Method(STRC, 2) {   // Compare two String
    393 //      If(LNotEqual(Sizeof(Arg0), Sizeof(Arg1))) {
    394 //          Return(1)
    395 //      }
    396 //
    397 //      Add(Sizeof(Arg0), 1, Local0)
    398 //
    399 //      Name(BUF0, Buffer(Local0) {})
    400 //      Name(BUF1, Buffer(Local0) {})
    401 //
    402 //      Store(Arg0, BUF0)
    403 //      Store(Arg1, BUF1)
    404 //
    405 //      While(Local0) {
    406 //          Decrement(Local0)
    407 //          If(LNotEqual(Derefof(Index(BUF0, Local0)), Derefof(Index(BUF1, Local0)))) {
    408 //              Return(1)
    409 //          }
    410 //      }
    411 //      Return(0)           // Str1 & Str2 are match
    412 //  }
    413389
    414390//
     
    578554            Field(MCPS,ByteAcc,NoLock,Preserve)
    579555            {
    580                 Offset(0x83),
    581                     , 4,
    582                 FSEG, 2,            //Rx83[4:5]
    583                     , 2,
    584 
    585556                Offset(0x84),
    586557                LTMA, 16,           //Rx84 and Rx85. Low Top Address of Memory
     
    625596            }
    626597        }//Device(USBD)
    627 
    628 //        // SDIO Controller
    629 //        Device (SDIO)
    630 //        {
    631 //            Name(_ADR, 0x000C0000)
    632 //
    633 //            OperationRegion(RSDC,PCI_Config,0x00,0x100)
    634 //            Field(RSDC,ByteAcc,NoLock,Preserve){
    635 //                Offset(0x00),
    636 //                VID, 16,
    637 //                Offset(0x04),
    638 //                CMDR, 3,
    639 //            }
    640 //
    641 //            Method(_STA, 0)
    642 //            {
    643 //                If(LNotEqual(\_SB.PCI0.SDIO.VID, 0x1106)) {
    644 //                    Return(0x00)
    645 //                } Else {
    646 //                    If(LEqual(\_SB.PCI0.SDIO.CMDR, 0x00)) {
    647 //                        Return(0x0D)
    648 //                    } Else {
    649 //                        Return(0x0F)    // present, enabled, functioning
    650 //                    }
    651 //                }
    652 //            }
    653 //        }//Device(SDIO)
    654 
    655 //        // SD $ MS Controller
    656 //        Device (SDMS)
    657 //        {
    658 //            Name(_ADR, 0x000D0000)
    659 //
    660 //            OperationRegion(RSDM,PCI_Config,0x00,0x100)
    661 //            Field(RSDM,ByteAcc,NoLock,Preserve){
    662 //                Offset(0x00),
    663 //                VID, 16,
    664 //                Offset(0x04),
    665 //                CMDR, 3,
    666 //            }
    667 //
    668 //            Method(_STA, 0)
    669 //            {
    670 //                If(LNotEqual(\_SB.PCI0.SDMS.VID, 0x1106)) {
    671 //                    Return(0x00)
    672 //                } Else {
    673 //                    If(LEqual(\_SB.PCI0.SDMS.CMDR, 0x00)) {
    674 //                        Return(0x0D)
    675 //                    } Else {
    676 //                        Return(0x0F)    // present, enabled, functioning
    677 //                    }
    678 //                }
    679 //            }
    680 //        }//Device(SDMS)
    681 //
    682 //        // CE-ATA $ NF Controller(Card Boot)
    683 //        Device(CENF)
    684 //        {
    685 //            Name(_ADR, 0x000E0000)
    686 //
    687 //            OperationRegion(RENF,PCI_Config,0x00,0x100)
    688 //            Field(RENF,ByteAcc,NoLock,Preserve){
    689 //                Offset(0x00),
    690 //                VID, 16,
    691 //                Offset(0x04),
    692 //                CMDR, 3,
    693 //            }
    694 //
    695 //            Method(_STA, 0)
    696 //            {
    697 //                If(LNotEqual(\_SB.PCI0.CENF.VID, 0x1106)) {
    698 //                    Return(0x00)
    699 //                } Else {
    700 //                    If(LEqual(\_SB.PCI0.CENF.CMDR, 0x00)) {
    701 //                        Return(0x0D)
    702 //                    } Else {
    703 //                        Return(0x0F)    // present, enabled, functioning
    704 //                    }
    705 //                }
    706 //            }
    707 //        }
    708 //
    709 //        Device(IDEC)
    710 //        {
    711 //
    712 //            Name(_ADR, 0x000F0000)  //D15F0: a Pata device
    713 //
    714 //            Method(_STA,0,NotSerialized)    //Status of the Pata Device
    715 //            {
    716 //                If(LNot(LEqual(\_SB.PCI0.IDEC.VID,0x1106)))
    717 //                {
    718 //                    Return(0x00)    //device not exists
    719 //                }
    720 //                Else
    721 //                {
    722 //                    If(LEqual(\_SB.PCI0.IDEC.CMDR,0x00))
    723 //                    {
    724 //                        Return(0x0D)        //device exists & disable
    725 //                    }
    726 //                    Else
    727 //                    {
    728 //                        Return(0x0F)        //device exists & enable
    729 //                    }
    730 //                }
    731 //            }
    732 //            OperationRegion(SAPR,PCI_Config,0x00,0xC2)
    733 //            Field(SAPR,ByteAcc,NoLock,Preserve)
    734 //            {
    735 //                VID,16,
    736 //                Offset(0x04),
    737 //                CMDR,3,
    738 //                Offset(0x40),
    739 //                        , 1,
    740 //                EPCH, 1,                    // Enable Primary channel.
    741 //                Offset(0x4A),
    742 //                PSPT, 8,                    // IDE Timings, Primary Slave
    743 //                PMPT, 8,                    // IDE Timings, Primary Master
    744 //                Offset(0x52),
    745 //                PSUT, 4,                    // Primary Slave UDMA Timing
    746 //                PSCT, 1,                    // Primary Drive Slave Cabal Type
    747 //                PSUE, 3,                    // Primary Slave UDMA Enable
    748 //                PMUT, 4,                    // Primary Master UDMA Timing
    749 //                PMCT, 1,                    // Primary Drive Master Cabal Type
    750 //                PMUE, 3,                    // Primary Master UDMA Enable
    751 //            }
    752 //
    753 //            Name(REGF,0x01)         //accessible OpRegion default
    754 //            Method(_REG,2,NotSerialized)    // is PCI Config space accessible as OpRegion?
    755 //            {
    756 //                If(LEqual(Arg0,0x02))
    757 //                {
    758 //                    Store(Arg1,REGF)
    759 //                }
    760 //            }
    761 //            /*
    762 //            Name(TIM0,Package(0x04){
    763 //                Package(){0x78,0xB4,0xF0,0x017F,0x0258},
    764 //                Package(){0x20,0x22,0x33,0x47,0x5D},
    765 //                Package(){0x78,0x50,0x3C,0x2D,0x1E,0x14,0x0F},
    766 //                Package(){0x06,0x05,0x04,0x04,0x03,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x00}
    767 //            })
    768 //        */
    769 //            Name(TIM0, Package()
    770 //            {                               // Primary / Secondary channels timings
    771 //                Package(){120, 180, 240, 383, 600},         // Timings in ns - Mode 4,3,2,1,0 defined from ATA spec.
    772 //                Package(){0x20, 0x22, 0x33, 0x47, 0x5D },   // PIO Timing - Mode 4,3,2,1,0
    773 //                Package(){4, 3, 2, 1, 0},                           // PIO mode (TIM0,0)
    774 //                Package(){2, 1, 0, 0},                              // Multi-word DMA mode
    775 //                Package(){120, 80, 60, 45, 30, 20, 15},         // Min UDMA Timings in ns
    776 //                Package(){6,5,4,4,3,3,2,2,1,1,1,1,1,1,0},   // UDMA mode
    777 //                Package(){0x0E, 8, 6, 4, 2, 1, 0},          // UDMA timing
    778 //            })
    779 //
    780 //            Name(TMD0,Buffer(0x14){})
    781 //            CreateDwordField(TMD0,0x00,PIO0)
    782 //            CreateDwordField(TMD0,0x04,DMA0)
    783 //            CreateDwordField(TMD0,0x08,PIO1)
    784 //            CreateDwordField(TMD0,0x0C,DMA1)
    785 //            CreateDwordField(TMD0,0x10,CHNF)
    786 //
    787 //            Name(GMPT, 0)           // Master PIO Timings
    788 //            Name(GMUE, 0)           // Master UDMA enable
    789 //            Name(GMUT, 0)           // Master UDMA Timings
    790 //            Name(GSPT, 0)           // Slave PIO Timings
    791 //            Name(GSUE, 0)           // Slave UDMA enable
    792 //            Name(GSUT, 0)           // Slave UDMA Timings
    793 //
    794 //            Device(CHN0)    //Primary Channel: Pata device
    795 //            {
    796 //                Name(_ADR,0x00)
    797 //
    798 //                Method(_STA,0,NotSerialized)
    799 //                {
    800 //                    If(LNotEqual(\_SB.PCI0.IDEC.EPCH, 0x1))
    801 //                    {
    802 //                        Return(0x00)        //channel disable
    803 //                    }
    804 //                    Else
    805 //                    {
    806 //                        Return(0x0F)        //channel enable
    807 //                    }
    808 //               }
    809 //                Method(_GTM,0,NotSerialized)        //Get Timing Mode
    810 //                {
    811 //                    Return(GTM(PMPT,PMUE,PMUT,PSPT,PSUE,PSUT))
    812 //                }
    813 //                Method(_STM, 3)                     // Set Timing PIO/DMA Mode
    814 //                {
    815 //                   Store(Arg0, TMD0)        // Copy Arg0 into TMD0 buffer
    816 //                   Store(PMPT, GMPT)        // Master PIO Timings
    817 //                   Store(PMUE, GMUE)        // Master UDMA enable
    818 //                   Store(PMUT, GMUT)        // Master UDMA Timings
    819 //                   Store(PSPT, GSPT)        // Slave PIO Timings
    820 //                   Store(PSUE, GSUE)        // Slave UDMA enable
    821 //                   Store(PSUT, GSUT)        // Slave UDMA Timings
    822 //                   STM()
    823 //                   Store(GMPT, PMPT)        // Master PIO Timings
    824 //                   Store(GMUE, PMUE)        // Master UDMA enable
    825 //                   Store(GMUT, PMUT)        // Master UDMA Timings
    826 //                   Store(GSPT, PSPT)        // Slave PIO Timings
    827 //                   Store(GSUE, PSUE)        // Slave UDMA enable
    828 //                   Store(GSUT, PSUT)        // Slave UDMA Timings
    829 //                }                           // end Method _STM
    830 //
    831 //                Device(DRV0)        //Master Device
    832 //                {
    833 //                    Name(_ADR,0x00) //0 indicates master drive
    834 //                    Method(_GTF,0,NotSerialized)    //Get Task File: return a buffer of ATA command used to re-initialize //////the device
    835 //                    {
    836 //                            Return(GTF(0,PMUE,PMUT,PMPT))
    837 //                    }
    838 //                }
    839 //                Device(DRV1)        //Slave Device
    840 //                {
    841 //                    Name(_ADR,0x01) //1 indicates slave drive
    842 //                    Method(_GTF,0,NotSerialized)    //Get Task File: return a buffer of ATA command used to re-initialize //the device
    843 //                    {
    844 //                            Return(GTF(0,PSUE,PSUT,PSPT))
    845 //                    }
    846 //                }
    847 //            }
    848 //
    849 //            Method(GTM,6,Serialized)
    850 //            {
    851 //                Store(Ones,PIO0)    //default value: all bits set to 1
    852 //                Store(Ones,PIO1)    //default value: all bits set to 1
    853 //                Store(Ones,DMA0)    //default value: all bits set to 1
    854 //                Store(Ones,DMA1)    //default value: all bits set to 1
    855 //                Store(0x10,CHNF)    //default value: 0x10
    856 //                If(REGF)
    857 //                {
    858 //                }
    859 //                Else
    860 //                {
    861 //                    Return(TMD0)    //unable to setup PCI config space as opRegion;return default value
    862 //                }
    863 //                Store(Match(DeRefOf(Index(TIM0,0x01)),MEQ,Arg0,MTR,0x00,0x00),Local6)
    864 //                If(LLess(Local6,Ones))
    865 //                {
    866 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x00)),Local6)),Local7)
    867 //                    Store(Local7,DMA0)
    868 //                    Store(Local7,PIO0)
    869 //                }
    870 //                Store(Match(DeRefOf(Index(TIM0,0x01)),MEQ,Arg3,MTR,0x00,0x00),Local6)
    871 //                If(LLess(Local6,Ones))
    872 //                {
    873 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x00)),Local6)),Local7)
    874 //                    Store(Local7,DMA1)
    875 //                    Store(Local7,PIO1)
    876 //                }
    877 //                If(Arg1)
    878 //                {
    879 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x05)),Arg2)),Local5)
    880 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x04)),Local5)),DMA0)
    881 //                    Or(CHNF,0x01,CHNF)
    882 //                }
    883 //                If(Arg4)
    884 //                {
    885 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x05)),Arg5)),Local5)
    886 //                    Store(DeRefOf(Index(DeRefOf(Index(TIM0,0x04)),Local5)),DMA1)
    887 //                    Or(CHNF,0x04,CHNF)
    888 //                }
    889 //                Return(TMD0)        //return timing mode
    890 //            }
    891 //
    892 //            Method(STM, 0, Serialized)
    893 //            {
    894 //
    895 //                If(REGF){}                  // PCI space not accessible
    896 //                Else        {  Return(TMD0)  }
    897 //
    898 //                Store(0x00, GMUE)           // Master UDMA Disable
    899 //                Store(0x00, GSUE)           // Slave UDMA Disable
    900 //                Store(0x07, GMUT)           // Master UDMA Mode 0
    901 //                Store(0x07, GSUT)           // Slave UDMA Mode 0
    902 //
    903 //                If(And(CHNF, 0x1))
    904 //                {
    905 //                    Store(Match(DeRefOf(Index(TIM0, 4)), MLE, DMA0, MTR,0,0), Local0)    // Get DMA mode
    906 //                    Store(DeRefOf(Index(DeReFof(Index(TIM0, 6)), Local0)), GMUT)         // Timing bit mask 66Mhz
    907 //                    Or(GMUE, 0x07, GMUE)                                    // Enable UltraDMA for Device 0
    908 //                }
    909 //                Else        // non - UDMA mode. Possible Multi word DMA
    910 //                {
    911 //                    If(Or(LEqual(PIO0,Ones), LEqual(PIO0,0)))
    912 //                    {
    913 //                        If(And(LLess(DMA0,Ones), LGreater(DMA0,0)))
    914 //                        {
    915 //                            Store(DMA0, PIO0)       // Make PIO0=DMA0
    916 //                        }
    917 //                    }
    918 //                }
    919 //
    920 //                If(And(CHNF, 0x4))
    921 //                {
    922 //                    Store(Match(DeRefOf(Index(TIM0, 4)), MLE, DMA1, MTR,0,0), Local0)
    923 //                    Store(DeRefOf(Index(DeReFof(Index(TIM0, 6)), Local0)), GSUT) // Timing bit mask 66Mhz
    924 //                    Or(GSUE, 0x07, GSUE)    // Enable UltraDMA for Device 0
    925 //                }
    926 //                Else        // non - UDMA mode. Possible Multi word DMA
    927 //                {
    928 //                    If(Or(LEqual(PIO1, Ones), LEqual(PIO1,0)))
    929 //                    {
    930 //                        If(And(LLess(DMA1, Ones), LGreater(DMA1,0)))
    931 //                        {
    932 //                           Store(DMA1, PIO1)        // Make PIO1 = DMA1
    933 //                        }
    934 //                    }
    935 //                }
    936 //
    937 //                And(Match(DeRefOf(Index(TIM0, 0)), MGE, PIO0, MTR,0,0), 0x3, Local0)
    938 //                Store(DeRefOf(Index(DeReFof(Index(TIM0, 1)), Local0)), Local1)
    939 //                Store(Local1, GMPT)
    940 //
    941 //                And(Match(DeRefOf(Index(TIM0, 0)), MGE, PIO1, MTR,0,0), 0x3, Local0)
    942 //                Store(DeRefOf(Index(DeReFof(Index(TIM0, 1)), Local0)), Local1)
    943 //                Store(Local1, GSPT)
    944 //                Return(TMD0)
    945 //            } // end Method STM
    946 //
    947 //            Method(GTF , 4 , Serialized)
    948 //            {
    949 //                Store(Buffer(7){0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF}, Local1)
    950 //                Store(Buffer(7){0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF}, Local2)
    951 //                CreateByteField(Local1, 1, Mode)            // PIO mode
    952 //                CreateByteField(Local2, 1, UMOD)            // Ultra mode
    953 //                CreateByteField(Local1, 5, PCHA)            // master or slave
    954 //                CreateByteField(Local2, 5, UCHA)            // master or slave
    955 //                And(Arg0,0x03,Local3)
    956 //
    957 //                If(Lequal(And(Local3,0x01),0x01))
    958 //                {
    959 //                    Store(0xB0,PCHA)        // drive 1
    960 //                    Store(0xB0,UCHA)        // drive 1
    961 //                }
    962 //
    963 //                If(Arg1)
    964 //                {
    965 //                    Store(DeRefOf(Index(DeReFof(Index(TIM0, 5)), Arg2)), UMOD)     //Programming DMA Mode
    966 //                    Or( UMOD, 0x40, UMOD)
    967 //                }
    968 //                Else
    969 //                {   // non-UltraDMA
    970 //                    Store(Match(DeRefOf(Index(TIM0, 1)), MEQ, Arg3, MTR,0,0), Local0)
    971 //                    Or(0x20, DeRefOf(Index(DeReFof(Index(TIM0, 3)), Local0)), UMOD)
    972 //                }
    973 //
    974 //                Store(Match(DeRefOf(Index(TIM0, 1)), MEQ, Arg3, MTR,0,0), Local0)
    975 //                Or(0x08, DeRefOf(Index(DeReFof(Index(TIM0, 2)), Local0)), Mode)
    976 //                Concatenate(Local1, Local2, Local6)
    977 //                Return(Local6)
    978 //
    979 //            } // end of GTF
    980 //        }
    981598
    982599        Device(USB1)        {
Note: See TracChangeset for help on using the changeset viewer.