Jump to content
5 posts in this topic

Recommended Posts

https://dortania.github.io/OpenCore-Install-Guide/extras/spoof.html

 

I've been researching on this page how to disable the Intel HD4600 graphics card without having to disable it in the BIOS, and also how to use it with Windows 11. The first two methods work perfectly when adapted to the Intel graphics card. However, I can't get the SSDT presented here to work properly.

image.png.414b67dbf7428cfc8bbc7f324f8b4b3c.png

Is it possible to use an SSDT?

 

 

 

@kaoskinkae I don't think that I have used condition "If (!Arg2)" in my _DSM methods.  According to the ACPI specification, Arg2 is an integer from 0 to n.  I have always used "If (Arg2 == Zero)".  Do you find that "If (!Arg2)" works as expected?  You could also wrap your _DSM method in condition "If (_OSI("Darwin"))" iike this:

 

If (_OSI("Darwin"))
{
    Method (_DSM ....
    {
    	If (Arg2 == Zero)
        {
            Return (Buffer (One)
            {
            	0x03
            })
        }
		...
    }
}

 

Edited by deeveedee
  • Like 1
15 minutes ago, deeveedee said:

@kaoskinkae No creo haber usado la condición "If (!Arg2)" en mis métodos _DSM. Según la especificación ACPI, Arg2 es un entero de 0 a n. Siempre he usado "If (Arg2 == Zero)". ¿Crees que "If (!Arg2)" funciona como se espera? También podrías encapsular tu método _DSM en la condición "If (_OSI("Darwin"))" de esta manera:

 

 

I've always wanted to understand ACPI in SSDTs and previously in DSDTs compiled; it's a shame I don't understand everything I could know.

12 hours ago, deeveedee said:

@kaoskinkae I don't think that I have used condition "If (!Arg2)" in my _DSM methods.  According to the ACPI specification, Arg2 is an integer from 0 to n.  I have always used "If (Arg2 == Zero)".  Do you find that "If (!Arg2)" works as expected?  You could also wrap your _DSM method in condition "If (_OSI("Darwin"))" iike this:

 

If (_OSI("Darwin"))
{
    Method (_DSM ....
    {
    	If (Arg2 == Zero)
        {
            Return (Buffer (One)
            {
            	0x03
            })
        }
		...
    }
}

 

 

When used in an if statement (or negated with !), Arg2 will be coerced from an integer into a boolean (True or False) using Arg2 != Zero.

Or more simply, values that are non-zero (Arg2 != Zero) will resolve to true while zero will resolve to false. Thus, !Arg2 is the equivalent of !(Arg2 != Zero) or Arg2 == Zero.

Edited by Avery B
  • Like 2
×
×
  • Create New...