Jump to content

Patch DSDT OwnerShip EHCI et XHCI


FredWst
 Share

3 posts in this topic

Recommended Posts

Salut,

 

Voici un patch DSDT pour OwnerShip Ehci et Xhci.

Je l'ai testé sur un Dell Optiplex 7020 et Ozmosis. (oui oui OZ fonctionne sur ce type de machine  :) )

J'ai aussi un procédure pour flasher avec les outils efi. si cela intéresse quelqu'un.  ;)

 

 

Régions à ajouter au device ECH1
       Device (EHC1)
        {
            Name (_ADR, 0x001D0000)  // _ADR: Address
            OperationRegion (MADB, PCI_Config, 0x10, 0x04)
            Field (MADB, DWordAcc, NoLock, Preserve)
            {
                BADR,   32
            }
 
            OperationRegion (MHCC, SystemMemory, Add (BADR, 0x08), 0x04)
            Field (MHCC, DWordAcc, NoLock, Preserve)
            {
                VAL,    32
            }
 
            OperationRegion (MHC1, SystemMemory, Add (BADR, 0x20), 0x0C)
            Field (MHC1, DWordAcc, NoLock, Preserve)
            {
                UCMD,   32, 
                USTS,   32, 
                INTR,   32
            }
 
            OperationRegion (ECAP, PCI_Config, And (ShiftRight (VAL, 0x08), 0xFF), 0x08)
            Field (ECAP, DWordAcc, NoLock, Preserve)
            {
                V00,    32, 
                V04,    32
            }

Régions à ajouter au device ECH2

       Device (EHC2)
        {
            Name (_ADR, 0x001A0000)  // _ADR: Address
            OperationRegion (MADB, PCI_Config, 0x10, 0x04)
            Field (MADB, DWordAcc, NoLock, Preserve)
            {
                BADR,   32
            }
 
            OperationRegion (MHCC, SystemMemory, Add (BADR, 0x08), 0x04)
            Field (MHCC, DWordAcc, NoLock, Preserve)
            {
                VAL,    32
            }
 
            OperationRegion (MHC1, SystemMemory, Add (BADR, 0x20), 0x0C)
            Field (MHC1, DWordAcc, NoLock, Preserve)
            {
                UCMD,   32, 
                USTS,   32, 
                INTR,   32
            }
 
            OperationRegion (ECAP, PCI_Config, And (ShiftRight (VAL, 0x08), 0xFF), 0x08)
            Field (ECAP, DWordAcc, NoLock, Preserve)
            {
                V00,    32, 
                V04,    32
            }

Régions à ajouter au device XHC1

       Device (XHC1)
        {
            Name (_ADR, 0x00140000)  // _ADR: Address
            OperationRegion (MCMD, PCI_Config, 0x04, 0x02)
            Field (MCMD, WordAcc, NoLock, Preserve)
            {
                CMD,    16
            }
 
            OperationRegion (MADB, PCI_Config, 0x10, 0x04)
            Field (MADB, DWordAcc, NoLock, Preserve)
            {
                BADR,   32
            }
 
            OperationRegion (MHCC, SystemMemory, Subtract (BADR, 0x04), 0x1C)
            Field (MHCC, ByteAcc, NoLock, Preserve)
            {
                CARV,   32, 
                HCS1,   32, 
                HCS2,   32, 
                HCS3,   32, 
                HCCP,   32, 
                DBOF,   32, 
                RTSO,   32
            }

Fonction à ajouter au même niveau que PINI qui doit déjà exister.

   Method (FHCI, 2, Serialized)
    {
        Name (TMP, Zero)
        OperationRegion (ECAP, SystemMemory, Add (Arg0, Arg1), 0x08)
        Field (ECAP, DWordAcc, NoLock, Preserve)
        {
            V00,    32, 
            V04,    32
        }
 
        If (LEqual (And (V00, 0xFF), One))
        {
            Store (V00, TMP) /* \FHCI.TMP_ */
            Or (TMP, 0x01000000, TMP) /* \FHCI.TMP_ */
            Store (TMP, V00) /* \FHCI.V00_ */
            Store (V04, TMP) /* \FHCI.TMP_ */
            And (TMP, 0x001F1FEE, TMP) /* \FHCI.TMP_ */
            Or (TMP, 0xE0000000, TMP) /* \FHCI.TMP_ */
            Store (TMP, V04) /* \FHCI.V04_ */
            And (V00, 0xFEFEFFFF, V00) /* \FHCI.V00_ */
            Return (Zero)
        }
 
        Return (Add (Arg1, And (ShiftRight (V00, 0x06), 0x03FC), Arg1))
    }

Code à ajouter dans PINI

   Method (PINI, 0, Serialized)
    {
        And (\_SB.PCI0.EHC1.V04, 0xFFFF0000, \_SB.PCI0.EHC1.V04)
        And (\_SB.PCI0.EHC1.UCMD, 0xFFFFFF00, \_SB.PCI0.EHC1.UCMD)
        Store (Zero, \_SB.PCI0.EHC1.INTR)
        Store (0x1000, \_SB.PCI0.EHC1.USTS)
        Store (One, \_SB.PCI0.EHC1.V00)
        Or (\_SB.PCI0.EHC1.V00, 0x01000000, \_SB.PCI0.EHC1.V00)
        And (\_SB.PCI0.EHC2.V04, 0xFFFF0000, \_SB.PCI0.EHC2.V04)
        And (\_SB.PCI0.EHC2.UCMD, 0xFFFFFF00, \_SB.PCI0.EHC2.UCMD)
        Store (Zero, \_SB.PCI0.EHC2.INTR)
        Store (0x1000, \_SB.PCI0.EHC2.USTS)
        Store (One, \_SB.PCI0.EHC2.V00)
        Or (\_SB.PCI0.EHC2.V00, 0x01000000, \_SB.PCI0.EHC2.V00)
        Name (ADDR, Zero)
        Name (EXTC, Zero)
        Store (Subtract (\_SB.PCI0.XHC1.BADR, 0x04), ADDR) /* \PINI.ADDR */
        Store (And (ShiftRight (\_SB.PCI0.XHC1.HCCP, 0x0E), 0x0003FFFC), EXTC) /* \PINI.EXTC */
        While (EXTC)
        {
            Store (FHCI (ADDR, EXTC), EXTC) /* \PINI.EXTC */
        }
    }

Fred

  • Like 2
Link to comment
Share on other sites

Je n'ai jamais compris à quoi ces régions servaient ? Tu peux nous en dire plus sur le but de ce patch ?

 

Et je suis bien tenté par Oz mais sur Intel NUC, j'ai commencé à rassembler les tutos et autres outils mais je ne suis pas contre un petit peu plus d'infos !

Link to comment
Share on other sites

Salut,

 

Les régions sont des zones qui permettent d'accéder aux registres du matériel pour (re) configurer celui-ci. (Les datasheets sont disponibles chez intel)

Dans certain cas le bios garde l'accès aux ports USB ce qui peut bloquer le boot de OSX.

J'avais ce problème avec mon Optiplex 7020 et donc pas de boot avec Osmoses. (Pas d'option dans le bios)

Ce patch est l'équivalent à l'option de clover : (il est d'ailleurs basé sur ce code) 

<key>FixOwnership</key>

<true/>

 

 

Ozmosis fonctionne à 100% sur les cartes mère avec Bios Aptio Ami. C'est le cas de mon Dell Optiplex 7020.

Les autres bios, c'est à tester. 

 

Fred.

Link to comment
Share on other sites

 Share

×
×
  • Create New...