Jump to content

Sony Vaio VPCF115FM Discussion: DSDT Injection


  • Please log in to reply
777 replies to this topic

#581
AlexanderPD

AlexanderPD

    InsanelyMac Protégé

  • Members
  • PipPip
  • 59 posts

[s]That's interesting. display_A and display_B, its subclasses "NVDA" are matched my com.apple.NVDAResman. On Sony with attached HDMI it's iographicsfamily which matches the hdmi.


EDIT: Alexander, can you get the DSDT from your friend's macbookpro too?


just for give a little info: i'm using external monitor via VGA port and i have com.apple.NVDAResman too in both Display_A and B, under the voice "CFBundleIdentifier"

i don't have a DSDT dump but i can ask, i'll post here ASAP

edit: here the DSDT

Attached Files



#582
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 322 posts

edit: here the DSDT

Hm, cannot find any LCD device inside the POP2.GFX0 path in the dsdt. Only the intel graphics IGPU has DD01 until DD08. So there is no LCD dsdt that is hooked up or something in MacBookPro.

#583
OoTLink

OoTLink

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 142 posts
That makes sense, on the newer style hybrid graphics systems, the framebuffer is always on the IGP and the LCD is connected there, in optimus-style setups the dedicated GPU chip writes to the IGP's framebuffer.

http://arstechnica.c...aller-ion-2.ars

That shouldn't really be a problem though - it means that the MBP guys are driving their LCDs off the intel framebuffer. We don't even have that, BUT the nvidia driver detects our GPU just fine anyway.

In theory, the regular NVDA framebuffer should work just fine, but it never has for any Nvidia VAIO (or ATI vaio, for that matter - although the hackintosh-made ATI framebuffer supports vaios), so we're still at step 1.

At least we all know this now :( We've got to screw around with the nvda framebuffer! You're not going to learn a ton more from studying the MBP files.

Unfortunately I can't really help you guys atm, I am still using boot think and can't find a way (just yet) to replace that with chameleon. At the time I tried it, boot think was the -only- thing I could make work on my vaio's funky partition table. It ended up making 2 folders on my windows partition in just the right place, that I could probably jack :(

#584
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 322 posts
The new MacBookPro Update 1.4 consists of new NVDA-kexts (don't know versions of update 1.3, maybe the same):

NVDANV50Hal.kext / NVDAResman.kext
update: 1.6.34.13 (256.02.05f01)
10.6.7: 1.6.26.31 (256.00.35f05)

Unfortunately still no 260.xxx version. We need to focus on gfxfamily.


That makes sense, on the newer style hybrid graphics systems, the framebuffer is always on the IGP and the LCD is connected there, in optimus-style setups the dedicated GPU chip writes to the IGP's framebuffer.

Well, I believe lcd devices inside the dsdt just absolutely do not matter for OSX. But if there was a lcd device triggered in the dsdt somehow, I hoped we could call there some kind of SNY5001 devices's wakeup method...

#585
AlexanderPD

AlexanderPD

    InsanelyMac Protégé

  • Members
  • PipPip
  • 59 posts
we must remember that experts said the original problem is about SNC, so i think it's right to still investigate a bit over that :D
i found an old topic here by Krazubu (wow!) about this and a guy posted a beta driver for osx 10.5.5 that try to "switch" display outputs calling a method from dsdt called "SODV". In linucs it works, in osX driver works but that method do nothing. Post with that driver: http://www.insanelym...p...t&p=1115004
We must still remember that other laptops with geforce 330m have working internal screen, so the real difference is only the SNC. Ootlink opened a thread about this but it died after 3 reply, sadly :D
i'm tring to investigate more on this SNC and understand what exacly it does, maybe the solution is a simple dsdt patch on the snc device!

#586
OoTLink

OoTLink

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 142 posts
In Linux, they only use the SNC driver you speak of to control backlight brightness. It's not used for anything else that I recall.

If you dig up some info on the stuff the Linux guys use, they're usually using either the nvidia driver and adding the EDID info to a profile, or using the driver that comes with Ubuntu (I forgot the name right now) - which was probably made to support Sony laptops to begin with.

#587
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 322 posts

we must remember that experts said the original problem is about SNC, so i think it's right to still investigate a bit over that :P
i found an old topic here by Krazubu (wow!) about this and a guy posted a beta driver for osx 10.5.5 that try to "switch" display outputs calling a method from dsdt called "SODV". In linucs it works, in osX driver works but that method do nothing. Post with that driver: http://www.insanelym...p...t&p=1115004
We must still remember that other laptops with geforce 330m have working internal screen, so the real difference is only the SNC. Ootlink opened a thread about this but it died after 3 reply, sadly :)
i'm tring to investigate more on this SNC and understand what exacly it does, maybe the solution is a simple dsdt patch on the snc device!


This is the VAIO F11 SODV function:
Method (SODV, 1, NotSerialized)
					{
						DBGC (0xF6, Zero, BCEN)
						If (LNotEqual (DSEN, Zero))
						{
							Return (Ones)
						}
						Store (Arg0, AODV)
						If (LNot (And (AODV, CADD)))
						{
							Store (One, AODV)
						}
						If (LNotEqual (CADD, PADD))
						{
							Store (CADD, PADD)
							Notify (PCI0, Zero)
							And (PNHM, 0x000FFFF0, Local0)
							If (Or (LEqual (Local0, 0x000106E0), LEqual (Local0, 0x000106A0)))
							{
								Notify (PEG3, Zero)
							}
							Else
							{
								Notify (PEGP, Zero)
							}
							Sleep (0x02EE)
						}
						DBGC (0xF6, 0x80, BCEN)
						Return (Zero)
					}

If the Notify PEG3 with 0 or 0x80(?) and sleep moved to a place in the dsdt that is called, for example inside peg3... There would not be the need of a driver... Or did I miss something? The SODV method needs to be called after driver activation?

EDIT: Btw. FakeSMC'S ACPIMonitor plugin now seems to support writing to smc, so I guess we could use smc_util to call the SODV method with some value... What do you think?

#588
salvo89

salvo89

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts
  • Gender:Male
  • Location:Italy
In my DSDT instead there's this ...


Method (SODV, 1, NotSerialized)
{
If (LNotEqual (DSEN, Zero))
{
Return (Ones)
}

Store (Arg0, AODV)
If (LNot (And (AODV, CADD)))
{
Store (One, AODV)
}

If (LNotEqual (CADD, PADD))
{
Store (CADD, PADD)
Notify (PCI0, Zero)
Notify (PEGP, Zero)
Sleep (0x02EE)
}

Notify (GFX0, 0x80)
Notify (^^^PEGP.NGFX, 0x80)
Return (Zero)
}


there is also this ....



Method (HKDS, 1, Serialized)
{
If (LEqual (Zero, DSEN))
{
Store (Arg0, SMIF)
Store (Zero, TRP0)
If (LEqual (SMIF, Zero))
{
If (LNotEqual (CADL, PADL))
{
Store (CADL, PADL)
If (LEqual (OSYS, 0x07D1))
{
Notify (\_SB.PCI0, Zero)
}
Else
{
Notify (\_SB.PCI0.GFX0, Zero)
}

Sleep (0x02EE)
}

Notify (\_SB.PCI0.GFX0, 0x80)
}
}

#589
salvo89

salvo89

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts
  • Gender:Male
  • Location:Italy
Yes, I agree with you ... the device snc just about saving energy on a bluetooth, wireless, sleep, hibernate, etc ...

I think the problem is in the EDID .... my tests are as follows:

- tried to inject edid in dsdt with the result that resx switch me back another edid false.

- just by adding edid folder I get an override edid correct switchresx
but I still always use the leopard his false edid ...
should be responsible for the kext which gives the false edid and try them an injection ....

What do you think?

#590
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 322 posts

Yes, I agree with you ... the device snc just about saving energy on a bluetooth, wireless, sleep, hibernate, etc ...

I think the problem is in the EDID ....

SODV seems to be responsible for switching vga/lvds. It makes sense to me that the default output seems to be vga (works with nv drivers) and needs to be switched to lvds. So the next test I would suggest is to configure a method for the acpiplugin of fakesmc to call the sodv method with different parameters and see what happens.

#591
salvo89

salvo89

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts
  • Gender:Male
  • Location:Italy

SODV seems to be responsible for switching vga/lvds. It makes sense to me that the default output seems to be vga (works with nv drivers) and needs to be switched to lvds. So the next test I would suggest is to configure a method for the acpiplugin of fakesmc to call the sodv method with different parameters and see what happens.


I think snc is essentially managed by the bios....in fact, during the black screen lcd is turned on, only when connecting the vga lcd is turned off. So it is not the snc that switches the output, but osx is waiting for a signal from vga output.
Probably the error is in the nvidia driver or kext responsible for managing the video outputs.

#592
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 322 posts
Hm salvo, what exact vaio model do you have? On my machine the screen is completly black and powered off. Also stated as "not connected". VAIO F11 i7 gt330m

#593
salvo89

salvo89

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts
  • Gender:Male
  • Location:Italy

Hm salvo, what exact vaio model do you have? On my machine the screen is completly black and powered off. Also stated as "not connected". VAIO F11 i7 gt330m


The model is in the signature... is a sony vaio VGN-FE21B 7400 go 256 MB

If you want to see my videos I am attaching the link:





As you can see the LCD screen is not all black and off ...

In system profiler I get the external display as primary monitor and no attached monitor .... as if he recognized the external display as primary ....

#594
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 322 posts
I am trying here to make some acpi methods for fakesmc that we can call for tests. Especially in method SNCE I am trying to build a extract of the SNC method:
Method (SNCE, 2, NotSerialized)
				{
					DBGC (0xF6, Zero, BCEN)
					Store (Arg0, AODV)
					Store (Arg1, Local1)
					If (LNot (And (AODV, CADD)))
					{
						Store (One, AODV)
					}
					If (LNotEqual (CADD, PADD))
					{
						Store (CADD, PADD)
						Notify (PCI0, Zero)
						Notify (PEG3, Zero)
						Sleep (0x02EE)
					}
					Notify (GFX0, Local1)
					Notify (^^PEG3.NGFX, Local1)
					DBGC (0xF6, 0x80, BCEN)
					Return (Zero)
				}
This method currently expects 2 parameters, the first one like in the SODV method and the second one for setting a parameter for the Notify byte. In the F11 dsdt it's 0x00, in salvo's dsdt it's 0x80.

I think there are still some unneeded lines of code in it. Maybe this would be the essence:
Method (SNCF, 1, NotSerialized)
				{
					DBGC (0xF6, Zero, BCEN)
					Store (Arg0, Local0)
					Notify (PCI0, Zero)
					Notify (PEG3, Zero)
					Sleep (0x02EE)
					Notify (GFX0, Local0)
					Notify (^^PEG3.NGFX, Local0)
					DBGC (0xF6, 0x80, BCEN)
					Return (Zero)
				}
What do you think?

#595
salvo89

salvo89

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts
  • Gender:Male
  • Location:Italy

I am trying here to make some acpi methods for fakesmc that we can call for tests. Especially in method SNCE I am trying to build a extract of the SNC method:

Method (SNCE, 2, NotSerialized)
				 {
					 DBGC (0xF6, Zero, BCEN)
					 Store (Arg0, AODV)
					 Store (Arg1, Local1)
					 If (LNot (And (AODV, CADD)))
					 {
						 Store (One, AODV)
					 }
					 If (LNotEqual (CADD, PADD))
					 {
						 Store (CADD, PADD)
						 Notify (PCI0, Zero)
						 Notify (PEG3, Zero)
						 Sleep (0x02EE)
					 }
					 Notify (GFX0, Local1)
					 Notify (^^PEG3.NGFX, Local1)
					 DBGC (0xF6, 0x80, BCEN)
					 Return (Zero)
				 }
This method currently expects 2 parameters, the first one like in the SODV method and the second one for setting a parameter for the Notify byte. In the F11 dsdt it's 0x00, in salvo's dsdt it's 0x80.

I think there are still some unneeded lines of code in it. Maybe this would be the essence:
Method (SNCF, 1, NotSerialized)
				 {
					 DBGC (0xF6, Zero, BCEN)
					 Store (Arg0, Local0)
					 Notify (PCI0, Zero)
					 Notify (PEG3, Zero)
					 Sleep (0x02EE)
					 Notify (GFX0, Local0)
					 Notify (^^PEG3.NGFX, Local0)
					 DBGC (0xF6, 0x80, BCEN)
					 Return (Zero)
				 }
What do you think?


I can do some tests with fakesmc?
I have version 10.5.2 of Leopard.

#596
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 322 posts
Here are the right download links for FakeSMC 3.

Ok, I wrote 0x00 and 0x80 to SODV, without any result.


How to read/write ACPI from OSX

If you want to try, download FakeSMC 3.1, smc_util2 and ACPIMonitor above, place it into Extra/Extensions. Now edit Info.plist of ACPIMonitor and add:
<key>keysToAdd</key>
				<dict>
					<key>SMC0</key>
					<string>SMC0</string>
					<key>SMCA</key>
					<string>SMCA</string>
					<key>SNCA</key>
					<string>SNCA</string>
					<key>SNCB</key>
					<string>SNCB</string>
					<key>SNCC</key>
					<string>SNCC</string>
					<key>SNCD</key>
					<string>SNCD</string>
					<key>SNCE</key>
					<string>SNCE</string>
					<key>SNCF</key>
					<string>SNCF</string>
					<key>SNCG</key>
					<string>SNCG</string>
					<key>SNCH</key>
					<string>SNCH</string>
				</dict>
In your dsdt add to the device "PDRC" (can be named different, then search for "PNP0C02") add "__CID monitor" and some test methods, for example the following:
Device (PDRC)
			{
				Name (_HID, EisaId ("PNP0C02"))
				Name (_CID, "monitor")
 ...
			  Method (SMC0, 0, NotSerialized)
				{
					Store (\_TZ.TZ00._TMP (), Local0)
					Return (Local0)
				}
				Method (SMCA, 0, NotSerialized)
				{
					Store (\_TZ.TZ01._TMP (), Local0)
					Return (Local0)
				}
				Method (SNCA, 0, NotSerialized)
				{
					^^LPCB.SNC._INI ()
				}
				Method (SNCB, 1, NotSerialized)
				{
					Store (Arg0, Local0)
					Store (^^LPCB.SNC.SODV (Local0), Local1)
					Return (Local1)
				}
				Method (SNCC, 0, NotSerialized)
				{
					Store (^^LPCB.SNC.SODV (Zero), Local0)
					Return (Local0)
				}
				Method (SNCD, 0, NotSerialized)
				{
					Store (^^LPCB.SNC.SODV (0x80), Local0)
					Return (Local0)
				}
				Method (SNCE, 2, NotSerialized)
				{
					DBGC (0xF6, Zero, BCEN)
					Store (Arg0, AODV)
					Store (Arg1, Local1)
					If (LNot (And (AODV, CADD)))
					{
						Store (One, AODV)
					}
					If (LNotEqual (CADD, PADD))
					{
						Store (CADD, PADD)
						Notify (PCI0, Zero)
						Notify (PEG3, Zero)
						Sleep (0x02EE)
					}
					Notify (GFX0, Local1)
					Notify (^^PEG3.NGFX, Local1)
					DBGC (0xF6, 0x80, BCEN)
					Return (Zero)
				}
				Method (SNCF, 1, NotSerialized)
				{
					DBGC (0xF6, Zero, BCEN)
					Store (Arg0, Local0)
					Notify (PCI0, Zero)
					Notify (PEG3, Zero)
					Sleep (0x02EE)
					Notify (GFX0, Local0)
					Notify (^^PEG3.NGFX, Local0)
					DBGC (0xF6, 0x80, BCEN)
					Return (Zero)
				}
				Method (SNCG, 0, NotSerialized)
				{
					DBGC (0xF6, Zero, BCEN)
					Notify (PCI0, Zero)
					Notify (PEG3, Zero)
					Sleep (0x02EE)
					Notify (GFX0, 0x80)
					Notify (^^PEG3.NGFX, 0x80)
					DBGC (0xF6, 0x80, BCEN)
					Return (Zero)
				}
				Method (SNCH, 0, NotSerialized)
				{
					DBGC (0xF6, Zero, BCEN)
					Notify (PCI0, Zero)
					Notify (PEG3, Zero)
					Notify (GFX0, 0x80)
					Notify (^^PEG3.NGFX, 0x80)
					Sleep (0x02EE)
					DBGC (0xF6, 0x80, BCEN)
					Return (Zero)
				}
...
		   }
Methods SMC0/SMCA just return values, so try it after reboot with:
sudo -s
SMC_util2 -kSMC0 -r
The other methods are my test write methods (you can see it in the method header if it expects a parameter). For example:
SMC_util2 -kSNCF -w80
For a help page about what is smc_util2 capable of, write:
SMC_util2 -h


#597
salvo89

salvo89

    InsanelyMac Protégé

  • Members
  • Pip
  • 20 posts
  • Gender:Male
  • Location:Italy

Here are the right download links for FakeSMC 3.

Trying it out now...


I am not registered to download it.

Anyway, I do not know how to use it ... add in the extension?

#598
jlvaio

jlvaio

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 220 posts
news??????

#599
Funky frank

Funky frank

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 322 posts

news??????

Why not do some DSDT tests??

#600
OoTLink

OoTLink

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 142 posts
Cuz they stubborn and wanna do the same things over and over XD





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy