Jump to content

Ayuda con la creacion ssdt-ec opencore personalizado para mi placa


8 posts in this topic

Recommended Posts

hola buenas noches, aver si alguien es capaz de aclarar mis dudas , sobre como hacer este ssdt , solo para el dispositivo de mi placa....

He estado siguiendo la guia Op'encore de Dortania y he conseguido crear el ssdt-plug , especifico para mi placa, ahora estoy tratando de hacer el ssdt-ec , especifico pàra mi placa y siguiendo la guia opencore de Dortania, estoy tratando de hacer el ssdt-ec especifico pra mi placa de forma manual, segun explica en esta seccion de la guia....

Fixing Embedded Controllers: Manual | Getting Started With ACPI (dortania.github.io)

 

En definitiva abro mi dsdt y busco el dispositivo PNP0C09 y solo me aparce un dispositivo, este:

 Scope (_SB.PCI0.LPCB)
    {
        Device (H_EC)
        {
            Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */)  // _HID: Hardware ID
            Name (_UID, One)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                ^^^GFX0.CLID = 0x03
                Return (Zero)
            }

como podeis ver en la imagen....

 

la duda que tengo es que al abrir el ssdt-ec-desktop , preconfigurado de la pagina de Dortania o el que viene preconfigurado en la carpeta docs de opencore , me salen muchos externals  para muchas placas , asi que para personalizarlo , he ido quitando todos los dispositivos que no se conrrespondian con mi el de mi placa base... y al final solo me han quedado 3 dispositivos que podrian que pueden concordar con mi placa base , pero no se cual de los 3 es el que debo de dejar y y cual de los otros debo eliminar..... esa es mi principal duda..... de los 3 externals , marcados en amarillo,que me quedan despues de haber eliminado los que no eran, cual es el que se corresponde al de mi placa segun la imagen que he subido de mi dsdt??? y la otra duda es cuales son los dispositivos que debo de renombrar,todos, o renombro todos , menos el 1???

y como los renombro,como _SB.PC00.LPC0 o _SB.PC00.LPC0.H_EC??? Porque en la Guia de Dortania , no queda muy claro cuales renombrar , ni como renombrarlos....


 

Quote

 

  External (_SB_.PCI0.LPCB, DeviceObj)
    External (_SB_.PCI0.LPCB.H_EC, DeviceObj)
    External (_SB_.PCI0.LPCB.H_EC._STA, MethodObj)    // 255 Arguments

    If (CondRefOf (\_SB.PCI0.LPCB.H_EC)) <---DEBO RENOMBRAR, ESTE QUE ES EL 1??
    {

        If ((((CondRefOf (\_SB.PCI0.LPCB.H_EC._HID) && CondRefOf (\_SB.PCI0.LPCB.H_EC._CRS)) && CondRefOf (\_SB.PCI0.LPCB.H_EC._GPE
            )) && !CondRefOf (\_SB.PCI0.LPCB.H_EC._STA))) <--- DEBO RENOMBRAR , ESTOS QUE PONGAMOS SON EL 2 ??
        {
            Scope (\_SB.PCI0.LPCB.H_EC) <--- DEBO RENOMBRAR, QUE POR DARLE UN IDENFICATIVO ES EL 3 ???
            {
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If (_OSI ("Darwin"))
                    {
                        Return (Zero)
                    }
                    Else
                    {
                        Return (0x0F)
                    }
                }
            }
        }
    }
    Scope (\_SB)
    {
        Device (EC)
        {
            Name (_HID, "ACID0001")  // _HID: Hardware ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (_OSI ("Darwin"))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }
        }
    }
}

 

 

espero alguien pueda ayudarma ha escalrecer mis dudas... gracias y saludos

SNAG-21070921305700.png

Posted (edited)

@XAVIDENIA

Yo creo que tú estás en el subgrupo de la guía de Dortania "PNP0C09 already has an _STA method". Pero crear a mano el archivo SSDT-EC es una tarea relativamente compleja salvo que sólo tengas un dispositivo PNP0C09 y que este no tenga método _STA.

La mayoría de nosotros usamos los SSDT precompilados, no creados por nosotros mismos, y suelen funcionar bien. Aunque veas más código del requerido por tu sistema, en la práctica no suele generar inconveniente alguno.

Con tu CPU necesitas 2: SSDT-PLUG y SSDT-EC-DESKTOP,

Este es el enlace para el que requiere tu sistema.

Edited by miliuco

Gracias por la rapida respuesta ,  y  efectivamente, si lees bien mi post de arriba en mi dsdt , extraido de mi pc , desde windows 10, solo aparece un dispositivo PNP0C09 que es la imagen que he subido, por eso no creo que sea tan dificil , crearlo especificamente para mi placa.... solo necesito resolver las dudas que expuesto anteriormente , para poder llevarlo a cabo y terminarlo...  nadie dice que no funcionen bien los ssdt's precompilados , pero en mi caso  preferiria hacerlo exclusivo para mi placa o cpu, y asi evitar la penalizacion de tiempo de arranque y ejecucion, que conlleva poner un ssdt precompilado, asi entre un poco que le gano al ssdt-plug y otro poco al ssdt-ec entre otras cosas, aver si consigo hacer un arranque realmente rapido... gracias y saludos....

Este es tu caso

Captura de pantalla 2021-07-10 a las 13.57.02.png

 

O sea, no tocar nada de ahi y crear un Device EC ficticio

 

Y si no me equivoco lo que querrias es algo asi:

(Basado en el SSDT de Dortania y quitando no que no corresponde)

 

 

 

 

Captura de pantalla 2021-07-10 a las 14.14.38.png

Edited by uzmi
Ahora si, me habia liado
  • Like 1

@uzmi tiene razón.

 

El dispositivo H_EC no está activado (_STA devuelve 0); solo necesitas un EC ficticio.

 

El SSDT-EC predeterminado es muy inteligente.

 If (CondRefOf (\_SB.PCI0.LPCB.H_EC)) <--- Esto prueba si hay un objeto \ _SB.PCI0.LPCB.H_EC. Nunca cambie el nombre, simplemente elimine toda la sección si no es aplicable.
    {
        If ((((CondRefOf (\_SB.PCI0.LPCB.H_EC._HID) && CondRefOf (\_SB.PCI0.LPCB.H_EC._CRS)) && CondRefOf (\_SB.PCI0.LPCB.H_EC._GPE
            )) && !CondRefOf (\_SB.PCI0.LPCB.H_EC._STA))) <--- Esto luego prueba que H_EC es un EC verdadero, funcional y NO tiene método _STA. No cambies.
        {
            Scope (\_SB.PCI0.LPCB.H_EC) <-- Si se cumplen todas las condiciones, esto deshabilita H_EC solo para OS X. No cambies.
            { … }
        }
    } <-- Fin de la sección. Elimine todo o déjelo todo como está. 

Disculpas si esto suena extraño, no hablo español. Pero yo hago mi propio SSDT, y creo en: "Dale un pescado a un hombre y lo alimentarás por un día. Enséñale a pescar y lo alimentarás por el resto de su vida".

  • Like 1
  • Thanks 1
Posted (edited)

Gracias  por las respuestas... he modificado el ssdt segun sus ayudas.... y así seria como se me queda....

Quote

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20210604 (32-bit version)
 * Copyright (c) 2000 - 2021 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of SSDT-EC-DESKTOP.aml, Fri Jul  9 21:34:26 2021
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00001C1B (7195)
 *     Revision         0x02
 *     Checksum         0xB4
 *     OEM ID           "DRTNIA"
 *     OEM Table ID     "SsdtEC"
 *     OEM Revision     0x00001000 (4096)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20210105 (539033861)
 */
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "SsdtEC", 0x00001000)
{
    
    External (_SB_.PCI0.LPCB.H_EC, DeviceObj)
    External (_SB_.PCI0.LPCB.H_EC._STA, MethodObj)    // 255 Arguments

 

    If (CondRefOf (\_SB.PCI0.LPCB.H_EC))
    {
        If ((((CondRefOf (\_SB.PCI0.LPCB.H_EC._HID) && CondRefOf (\_SB.PCI0.LPCB.H_EC._CRS)) && CondRefOf (\_SB.PCI0.LPCB.H_EC._GPE
            )) && !CondRefOf (\_SB.PCI0.LPCB.H_EC._STA)))
        {
            Scope (\_SB.PCI0.LPCB.H_EC)
            {
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If (_OSI ("Darwin"))
                    {
                        Return (Zero)
                    }
                    Else
                    {
                        Return (0x0F)
                    }
                }
            }
        }
    }
    Scope (\_SB)
    {
        Device (EC)
        {
            Name (_HID, "ACID0001")  // _HID: Hardware ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (_OSI ("Darwin"))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }
        }
    }
}

 

Serian tan amables de decirme, si esta bien, o si me he dejado algo por el camino... gracias y saludos

Edited by XAVIDENIA
×
×
  • Create New...