Jump to content

Sony Vaio VPCF115FM Discussion: DSDT Injection


kizwan
 Share

787 posts in this topic

Recommended Posts

Nah, they weren't using a DSDT before, they were dumping the EDID into xorg.conf. I'm not 100% settled in Ubuntu yet (in fact, part of me kinda wants to stick with Windows now lol), but it is somewhat usable.

 

Kinda blows my mind it doesn't support Gnome 3 though

 

Edit: There's 2 easy ways to tell if your clock is running too fast; 1. the dock icons bounce faster than they are supposed to, and 2. the clock - if you open date and time settings, click the box where it says time.apple.com and hit return (assuming you have internet up), it will force an update. If you wait a minute and do that you'll see the clock jump back somewhat if your clock is running fast. For me 1 minute would jump back 20 seconds! Aiye!

 

That's actually a real problem. It can wreak all kinds of havoc. Curiously it's one that's USUALLY fixed when you use the busratio=12 flag and perhaps fsb=133000000 (IF you have an i7 720qm! These numbers vary depending on your chip).

 

However, I wasn't having luck with that. So odd!

Link to comment
Share on other sites

Oh yes you are right! it was the EDID and not the DSDT.. I will reinstall snow soon and check that clock issue.. what i had done was shrink my original windows partition and install snow on the new partition but since its basically unusable with the display issue i deleted it to regain the extra space..

 

If i do get that clock issue then ill really be giving up! ive never seen that happen to any other computer i hackintoshed :D

 

Im really not a fan of windows at all! and the reason i dont wipe windows and rely on linux is that im not able to run the softwares i use the most ;) But i much prefer Linux!! Always been a fan!

 

Anyways ill try snow once again and see how it goes, i believe my processor is the 720qm also!

Link to comment
Share on other sites

That's not gonna work :)

 

You know, it's funny but Ubuntu is barely any more usable than OS X is on the Vaio lol. Between the crazy glitches with the nvidia driver and the lack of support for the alps touchpad (no way to disable tap clicking :P)...

 

it's horrible. ;) A large part of me wishes I had never bought this machine lol.

Link to comment
Share on other sites

i think you mean Ubuntu is barely anymore usable than snow not linux, caus ubuntu is linux :) I actually tried Zorin which is based on ubuntu and the major problem i have is the alps touchpad driver! the display seems pretty stable for me so far. all the effects work and it runs pretty quick.

 

I did reinstall snow tho and tried the issue with the clock and mine is fine! i tested it in many ways and it keeps the time. thats when i use no extra kexts or dsdt or bootflags. Well except for using not turning on graphics enabler caus that will black out the internal screen but work perfectly on the external screen..

 

 

 

A part of me also wishes i got a diferent machine :D

 

and jlvaio that program only detects if your hardware can support decoding under osx. I'm almost sure it does on our laptops but it will in no way enable internal display

Link to comment
Share on other sites

Yep, that's what I meant lol - though all Linux distros will have the same issues. I was just having weird issues with my screen when the nvidia driver was applied in 11.04. *shrug*

 

Anyway, I guess I'll try OS X again soon, but I'm not really in the mood atm. Wifi is great, but how the heck do we get that screen running. I can definitely write code, but I don't know anything about working with frame buffers lol.

Link to comment
Share on other sites

Has anyone tried Lion GM install?

Maybe it has "better support" for our VAIO display's... I'm gonna try it on my VAIO (see my signature) and I'll let you know, even though I don't think something changes.. :D

Link to comment
Share on other sites

And here I'm again, with bad news for me... :P

I'm writing through Lion installed into my VAIO FZ21M, but I'm using an external Wireless Adapter coz my Intel 4965agn will never be recognized...

 

Apart from that, I was able to install Lion GM without any problem, simply following a guide by Mald0n here at Insanelymac and I also have audio working with VoodooHDA, keyboard and touchpad with Lion PS2 kexts, even if the ALPS touchpad works bad coz there's no tap-to-click e no scrolling obviously...

 

Also I was able to set the correct resolution (1280x800) in VESA mode into com.apple.boot.plist for Chamaleon v2.0 RC5 r1083, but NO Nvidia 8400M GT.. I've tried only to set GraphicsEnabler=Yes and, with that, my screen goes black and if I connect my laptop via HDMI to my HDTV, neither of the screens works... :P

 

Someone here have a solution which I can try to enable my Nvidia?

 

I'm not a DSDT addict... I've tried to use DSDTSE app, but when compiling it gave me a lot of errors and I'm not able to do anything to solve.

 

Hoping for some help.. Thanks!!!

Now I'll reinstall my Windows partition side-by-side with OSX Lion in a GUID Partition Table.

Link to comment
Share on other sites

Well i'm glad to hear lion actually works! Your model is diferent from mine, but i know the 4965agn is one of the most unsupported wifi cards for osx! I know this caus my older vaio had it and i just swapped it out.. My f11 uses atheros wifi

 

Dont know why the hdmi wouldnt work! usually when there is a black internal screen it means the video card is detected and enabled but it just wont recognise the internal screen so the hdmi SHOULD work :)

Link to comment
Share on other sites

  • 2 weeks later...

jlvaio: You did try out the SNC_for_SODV.kext from ryuu123 one year ago... :P Using it you wrote that it will be a new nvcap visible in ioreg? Could you explain this to me in detail? What changed exactly?

 

 

Some SNC ACPI method's description:

 

EDIT: See here

 

AlexanderPD: Do we have the EDID of the MacBookPro6,2 ? In your posted calypso.ioreg there is:

 

MacBookPro6,2 lvds EDID:

<00 ff ff ff ff ff ff 00 06 10 bb 9c 00 00 00 00 00 13 01 03 80 21 15 78 0a 50 c5 98 58 52 8e 27 25 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 7c 2e 90 a0 60 1a 1e 40 30 20 36 00 4b cf 10 00 00 18 00 00 00 01 00 06 10 30 00 00 00 00 00 00 00 00 0a 20 00 00 00 fe 00 4c 50 31 35 34 57 45 33 2d 54 4c 42 31 00 00 00 fe 00 43 6f 6c 6f 72 20 4c 43 44 0a 20 20 20 00 dd>

Connector type: <02 00 00 00>
Display-type: <"LCD">

 

VAIO F11 lvds EDID:

00FFFFFF FFFFFF00 367F2500 00000000 2D0C0104 90241400 EAA8E099 574B9225 1C505400 00000101 01010101 01010101 01010101 01014038 80B47038 40403C3C 550068C8 10000018 40388080 7138AA40 80808800 68C81000 00180000 00FC004E 76696469 61204465 6661756C 000000FC 00742046 6C617420 50616E65 6C00001F

 

 

Edit: Messed around with _DSM method of NGFX:

								"@0,AAPL,boot-display", 
							Buffer (Zero) {}, 
							"@0,built-in", 
							Buffer (Zero) {}, 
							"@0,has-static-EDID", 
							Buffer (Zero)
							{
							}, 
							"@0,display-connect-flags", 
							Buffer ()
							{
								0x04,0x00,0x00,0x00
							}, 
							"@0,connector-type", 
							Buffer ()
							{
								0x02,0x00,0x00,0x00
							}, 
							"@0,display-type", 
							Buffer ()
							{
								"LCD"
							}, 
							"@0,display-cfg", 
							Buffer ()
							{
								0x03, 0x00, 0x0F, 0x00
							}, 
							 "@0,EDID", 
							Buffer ()
							{
								/* 0000 */	0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
								 /* 0008 */	0x36, 0x7F, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 
							 /* 0010 */	0x2D, 0x0C, 0x01, 0x04, 0x90, 0x24, 0x14, 0x00, 
								/* 0018 */	0xEA, 0xA8, 0xE0, 0x99, 0x57, 0x4B, 0x92, 0x25, 
								/* 0020 */	0x1C, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 
					/* 0028 */	0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
					/* 0030 */	0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x38, 
					/* 0038 */	0x80, 0xB4, 0x70, 0x38, 0x40, 0x40, 0x3C, 0x3C, 
					/* 0040 */	0x55, 0x00, 0x68, 0xC8, 0x10, 0x00, 0x00, 0x18, 
					/* 0048 */	0x40, 0x38, 0x80, 0x80, 0x71, 0x38, 0xAA, 0x40, 
					/* 0050 */	0x80, 0x80, 0x88, 0x00, 0x68, 0xC8, 0x10, 0x00, 
					/* 0058 */	0x00, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x4E, 
					/* 0060 */	0x76, 0x69, 0x64, 0x69, 0x61, 0x20, 0x44, 0x65, 
					/* 0068 */	0x66, 0x61, 0x75, 0x6C, 0x00, 0x00, 0x00, 0xFC, 
					/* 0070 */	0x00, 0x74, 0x20, 0x46, 0x6C, 0x61, 0x74, 0x20, 
					/* 0078 */	0x50, 0x61, 0x6E, 0x65, 0x6C, 0x00, 0x00, 0x1F
							}, 
										 "@0,name", 
							Buffer ()
							{
								0x4e, 0x56, 0x44, 0x41, 0x2c, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2d, 0x41 // NVDA,Display-A
							}, 
							"@1,compatible", 
							Buffer (0x0B)
							{
								"NVDA,NVMac"
							}, 
							"@1,device_type", 
							Buffer (0x08)
							{
								"display"
							}, 
							"@1,connector-type", 
							Buffer ()
							{
								0x00,0x08,0x00,0x00
							}, 
							"@1,can-hot-plug", 
							Buffer (Zero)
							{
							}, 
						   "@1,device_type", 
							Buffer (0x08)
							{
								"display"
							}, 
						   "NVCAP", 
							Buffer ()
							{
								0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
								0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 
								0x00, 0x00, 0x00, 0x00
							}, 
							"VRAM,totalsize", 
							Buffer (0x04)
							{
								0x00, 0x00, 0x00, 0x40
							}, 
							"device_type", 
							Buffer ()
							{
								"NVDA,Parent"
							}, 
							"NVDA,Features", 
							Buffer ()
							{
								0xff ,0x06 ,0xc7 ,0x00
							}, 
							"model", 
							Buffer (0x17)
							{
								"NVIDIA GeForce GT 330M"
							}
						}, Local0)

Results in proper HDMI hot-pluggin...

Link to comment
Share on other sites

jlvaio: You did try out the SNC_for_SODV.kext from ryuu123 one year ago... :) Using it you wrote that it will be a new nvcap visible in ioreg? Could you explain this to me in detail? What changed exactly? Some SNC ACPI method's description:
_INI		Init SODV		Switch Screen / Gfx (values 0 / 1) SN02			Enable events ( 0xffff all) SN03			Disable events ( 0xffff all ) SN06			Some kind of general purpose method that returns availability of methods SN07			Returns event messages BRBR		Get panel brightness?

AlexanderPD: Do we have the EDID of the MacBookPro6,2 ? In your posted calypso.ioreg there is: MacBookPro6,2 lvds EDID:

<00 ff ff ff ff ff ff 00 06 10 bb 9c 00 00 00 00 00 13 01 03 80 21 15 78 0a 50 c5 98 58 52 8e 27 25 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 7c 2e 90 a0 60 1a 1e 40 30 20 36 00 4b cf 10 00 00 18 00 00 00 01 00 06 10 30 00 00 00 00 00 00 00 00 0a 20 00 00 00 fe 00 4c 50 31 35 34 57 45 33 2d 54 4c 42 31 00 00 00 fe 00 43 6f 6c 6f 72 20 4c 43 44 0a 20 20 20 00 dd>  Connector type: <02 00 00 00> Display-type: <"LCD">

VAIO F11 lvds EDID:

00FFFFFF FFFFFF00 367F2500 00000000 2D0C0104 90241400 EAA8E099 574B9225 1C505400 00000101 01010101 01010101 01010101 01014038 80B47038 40403C3C 550068C8 10000018 40388080 7138AA40 80808800 68C81000 00180000 00FC004E 76696469 61204465 6661756C 000000FC 00742046 6C617420 50616E65 6C00001F

Edit: Messed around with _DSM method of NGFX:

								"@0,AAPL,boot-display",								  Buffer (Zero) {},								  "@0,built-in",								  Buffer (Zero) {},								  "@0,has-static-EDID",								  Buffer (Zero) 								{ 								},								  "@0,display-connect-flags",								  Buffer () 								{ 									0x04,0x00,0x00,0x00 								},								  "@0,connector-type",								  Buffer () 								{ 									0x02,0x00,0x00,0x00 								},								  "@0,display-type",								  Buffer () 								{ 									"LCD" 								},								  "@0,display-cfg",								  Buffer () 								{ 									0x03, 0x00, 0x0F, 0x00 								},								   "@0,EDID",								  Buffer () 								{ 									/* 0000 */	0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,									   /* 0008 */	0x36, 0x7F, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00,								   /* 0010 */	0x2D, 0x0C, 0x01, 0x04, 0x90, 0x24, 0x14, 0x00,									  /* 0018 */	0xEA, 0xA8, 0xE0, 0x99, 0x57, 0x4B, 0x92, 0x25,									  /* 0020 */	0x1C, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01,						  /* 0028 */	0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,						  /* 0030 */	0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x38,						  /* 0038 */	0x80, 0xB4, 0x70, 0x38, 0x40, 0x40, 0x3C, 0x3C,						  /* 0040 */	0x55, 0x00, 0x68, 0xC8, 0x10, 0x00, 0x00, 0x18,						  /* 0048 */	0x40, 0x38, 0x80, 0x80, 0x71, 0x38, 0xAA, 0x40,						  /* 0050 */	0x80, 0x80, 0x88, 0x00, 0x68, 0xC8, 0x10, 0x00,						  /* 0058 */	0x00, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x4E,						  /* 0060 */	0x76, 0x69, 0x64, 0x69, 0x61, 0x20, 0x44, 0x65,						  /* 0068 */	0x66, 0x61, 0x75, 0x6C, 0x00, 0x00, 0x00, 0xFC,						  /* 0070 */	0x00, 0x74, 0x20, 0x46, 0x6C, 0x61, 0x74, 0x20,						  /* 0078 */	0x50, 0x61, 0x6E, 0x65, 0x6C, 0x00, 0x00, 0x1F 								},											   "@0,name",								  Buffer () 								{ 									0x4e, 0x56, 0x44, 0x41, 0x2c, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2d, 0x41 // NVDA,Display-A 								},								  "@1,compatible",								  Buffer (0x0B) 								{ 									"NVDA,NVMac" 								},								  "@1,device_type",								  Buffer (0x08) 								{ 									"display" 								},								  "@1,connector-type",								  Buffer () 								{ 									0x00,0x08,0x00,0x00 								},								  "@1,can-hot-plug",								  Buffer (Zero) 								{ 								},								 "@1,device_type",								  Buffer (0x08) 								{ 									"display" 								},								 "NVCAP",								  Buffer () 								{ 									0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,									  0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A,									  0x00, 0x00, 0x00, 0x00 								},								  "VRAM,totalsize",								  Buffer (0x04) 								{ 									0x00, 0x00, 0x00, 0x40 								},								  "device_type",								  Buffer () 								{ 									"NVDA,Parent" 								},								  "NVDA,Features",								  Buffer () 								{ 									0xff ,0x06 ,0xc7 ,0x00 								},								  "model",								  Buffer (0x17) 								{ 									"NVIDIA GeForce GT 330M" 								} 							}, Local0)

Results in proper HDMI hot-pluggin...

 

sorry i have crash my computer system this winter and lost lot of data and actually so much work need to be done ,i don't remember exactly what it did maybe i had post results anywhere the things of ioreg i think i have used too a kext seems to be called pci util or pcifix with some kind of pci overide don t remember exactly but remember after something shown insystem info but not much things hope you have sucess that really help me

 

can you explain more detailed the advanced you get thanx?

Link to comment
Share on other sites

can you explain more detailed the advanced you get thanx?

 

jlvaio: I want to enable the snc-device, so I can bomb it with acpi values over the acpi plugin for chameleon. I want to test the SODV method and also some power management methods, for example display on/off.

 

 

Mattia Dongili wrote:

 

I am trying to build a driver for Mac OSX for the Vaio VPCF11.

Sadly I cannot find any documentation about the SNY5001 methods

that are included in the ACPI.

 

They seem to differ a lot to your described methods and the common

Vaio methods.

 

correct, I never updated the documentation on the very new models.

 

Could you take a look on it and tell me some words about

you know about it? Or some hints for me?

 

try to read the sony-laptop code. You basically have to call into

SN06/SN07 with an index (as well as the other parameters) that

identifies a function. The function is identified by the SNN* field

values. in sony-laptop.c you should take a look a all the sony_nc

functions and anything that deals with "handles".

 

 

Some links:

 

Original sony-laptop.c from linux kernel

Original sonypi.h from linux kernel

Patch for sony-laptop.c for Vaio F11

 

Could someone patch the sony-laptop.c and sonypi.h with the vaio-test13-2.6.39.patch for me and post the to resulting files here? I have no clue about linux and the command line tools ;)

Link to comment
Share on other sites

Omigosh. Can you attach the real .c files? I can't find a way to download the file from that site and if I copy/paste it inclues the line numbers :P

 

You can automatically run a .patch file (I forget how), but if you want to do it the manual way it basically just tells you what to open first. Then from there it's a series of things: First a few lines that are to clue the computer in on where the patch needs to be done, then you see lines that start with +s and -s. The +s mean add, and the -s mean remove.

 

If you seee something like this:

 

#define int blah 42

function();

blah;

+blahblahblah

-zeekyboogydoog

 

It'd mean that at the point in the file where you find function(); blah;, you insert blahblahblah and remove zeekyboogydoog.

 

Of course, doing a patch the automated way can be easy.. but has a habit of just not working.

 

For that:

http://icu-project.org/download/patch.html

Link to comment
Share on other sites

Thanks for trying.

If you seee something like this:

 

#define int blah 42

function();

blah;

+blahblahblah

-zeekyboogydoog

I know, why you telling me this? Do you think I am willing to patch it manually? :D I am asking some linux users to apply this patch for me, because I don't use linux. The files are available in the kernel sources that are installed on every? linux distribution. I also cannot find the original file as binary download. For sure it is available somewhere.

 

 

EDIT:

 

Here is the kernel source package

 

Files are located at:

drivers/platform/x86/sony-laptop.c

include/linux/sonypi.h

Link to comment
Share on other sites

Frank the patch does mostly go through (with large offsets) but where it doesn't, the differences in variables are rather large. I'm going to patch it anyway, but I don't really expect it to work that well because of that.

 

attach failed >> trying again.

So this version is the correctly patched version?

Link to comment
Share on other sites

Tell ya what, I intend to redo the partition table on my vaio so that I can install chameleon RC5 and muck around with the DSDT and this snc driver :P Then I can compile it and properly analyze/bugfix the code.

 

Will be a few hours .Have you got AIM? My screename is the same as my name here :)

 

Edit: come to think of it, where does this code need to go anyway? that SODV kext? It doesn't use anything from sony_laptop.c, and I don't see much like that in fakesmc.kext either. I'm lost. XD

 

Edit II: On further thought I'm not in the mood to muck around with my hard drive tonight lol. Too much stuff on it atm

Link to comment
Share on other sites

Edit: come to think of it, where does this code need to go anyway? that SODV kext? It doesn't use anything from sony_laptop.c, and I don't see much like that in fakesmc.kext either. I'm lost. XD

 

The kext only enables the snc device. Using fakesmc with the acpi monitor plugin, you can bomb the acpi methods of the snc device.

 

If I boot osx the nv_disable=1, so all nvidia kexts are enabled and then start SMC monitor, the monitor will become black, so some kind of call of my test snc-acpi-methods will cause the deactivation of the internal screen.

Link to comment
Share on other sites

Some testing SNC testing functions

 

UPDATED 09-Aug-2011, added my FakeSMC.kext and ACPIMonitor.kext

UPDATED 04-Aug-2011 19:10, new ACPI!

UPDATED 04-Aug-2011 15:33, new ACPI!

 

 

Add this to Info.plist of ACPIMonitor.kext:

			<key>keysToAdd</key>
		<dict>
			<key>GGID</key>
			<string>GGID</string>
			<key>TRG1</key>
			<string>TRG1</string>
			<key>TRG2</key>
			<string>TRG2</string>
			<key>DRG1</key>
			<string>DRG1</string>
			<key>DRG2</key>
			<string>DRG2</string>
			<key>TSF2</key>
			<string>TSF2</string>
			<key>TSF3</key>
			<string>TSF3</string>
			<key>TSF4</key>
			<string>TSF4</string>
			<key>TSF5</key>
			<string>TSF5</string>
			<key>TSN2</key>
			<string>TSN2</string>
			<key>TSN3</key>
			<string>TSN3</string>
			<key>TSN5</key>
			<string>TSN5</string>
			<key>TMPA</key>
			<string>TMPA</string>
			<key>TMPB</key>
			<string>TMPB</string>
			<key>TINI</key>
			<string>TINI</string>
			<key>TSDV</key>
			<string>TSDV</string>
			<key>TECO</key>
			<string>TECO</string>
			<key>TECA</key>
			<string>TECA</string>
			<key>TECR</key>
			<string>TECR</string>
			<key>TPHS</key>
			<string>TPHS</string>
		</dict>

 

Add this LDRC device to DSDT at _SB.PCI0.LPCB:

				Device (LDRC)
			{
				Name (_HID, EisaId ("PNP0C02"))
				Name (_CID, "monitor")
				Name (_UID, 0x02)
				Name (_CRS, ResourceTemplate ()
				{
					IO (Decode16,
						0x002E,			 // Range Minimum
						0x002E,			 // Range Maximum
						0x01,			   // Alignment
						0x02,			   // Length
						)
					IO (Decode16,
						0x004E,			 // Range Minimum
						0x004E,			 // Range Maximum
						0x01,			   // Alignment
						0x02,			   // Length
						)
					IO (Decode16,
						0x0061,			 // Range Minimum
						0x0061,			 // Range Maximum
						0x01,			   // Alignment
						0x01,			   // Length
						)
					IO (Decode16,
						0x0063,			 // Range Minimum
						0x0063,			 // Range Maximum
						0x01,			   // Alignment
						0x01,			   // Length
						)
					IO (Decode16,
						0x0065,			 // Range Minimum
						0x0065,			 // Range Maximum
						0x01,			   // Alignment
						0x01,			   // Length
						)
					IO (Decode16,
						0x0067,			 // Range Minimum
						0x0067,			 // Range Maximum
						0x01,			   // Alignment
						0x01,			   // Length
						)
					IO (Decode16,
						0x0070,			 // Range Minimum
						0x0070,			 // Range Maximum
						0x01,			   // Alignment
						0x01,			   // Length
						)
					IO (Decode16,
						0x0080,			 // Range Minimum
						0x0080,			 // Range Maximum
						0x01,			   // Alignment
						0x01,			   // Length
						)
					IO (Decode16,
						0x0092,			 // Range Minimum
						0x0092,			 // Range Maximum
						0x01,			   // Alignment
						0x01,			   // Length
						)
					IO (Decode16,
						0x00B2,			 // Range Minimum
						0x00B2,			 // Range Maximum
						0x01,			   // Alignment
						0x02,			   // Length
						)
					IO (Decode16,
						0x0680,			 // Range Minimum
						0x0680,			 // Range Maximum
						0x01,			   // Alignment
						0x20,			   // Length
						)
					IO (Decode16,
						0xFF00,			 // Range Minimum
						0xFF00,			 // Range Maximum
						0x01,			   // Alignment
						0x10,			   // Length
						)
					IO (Decode16,
						0xFF10,			 // Range Minimum
						0xFF10,			 // Range Maximum
						0x01,			   // Alignment
						0x04,			   // Length
						)
					IO (Decode16,
						0x0800,			 // Range Minimum
						0x0800,			 // Range Maximum
						0x01,			   // Alignment
						0x04,			   // Length
						)
					IO (Decode16,
						0x0400,			 // Range Minimum
						0x0400,			 // Range Maximum
						0x01,			   // Alignment
						0x80,			   // Length
						)
					IO (Decode16,
						0x0500,			 // Range Minimum
						0x0500,			 // Range Maximum
						0x01,			   // Alignment
						0x80,			   // Length
						)
					IO (Decode16,
						0x164E,			 // Range Minimum
						0x164E,			 // Range Maximum
						0x01,			   // Alignment
						0x02,			   // Length
						)
				})
				Name (MRG1, Zero)
				Name (MRG2, Zero)
				Method (TRG1, 1, NotSerialized)
				{
					Store (Arg0, MRG1)
				}
				Method (TRG2, 1, NotSerialized)
				{
					Store (Arg0, MRG2)
				}
				Method (DRG1, 0, NotSerialized)
				{
					Return (MRG1)
				}
				Method (DRG2, 0, NotSerialized)
				{
					Return (MRG2)
				}
				Method (TMPA, 0, NotSerialized)
				{
					Store (\_TZ.TZ00._TMP (), Local0)
					Return (Local0)
				}
				Method (TMPB, 0, NotSerialized)
				{
					Store (\_TZ.TZ01._TMP (), Local0)
					Return (Local0)
				}
				Method (TECO, 0, NotSerialized)
				{
					Return (ECON)
				}
				Method (TECA, 0, NotSerialized)
				{
					Return (^^EC.ECAK)
				}
				Method (TECR, 0, NotSerialized)
				{
					^^EC._REG (0x03, 0x01)
					Return (ECON)
				}
				Method (TSF4, 0, NotSerialized)
				{
					Store (MRG1, Local0)
					Store (MRG2, Local1)
					If (LEqual (Local0, Zero))
					{
						Store (PHS (0xE7), Local1)
					}
					If (LEqual (Local0, One))
					{
						ShiftRight (And (Store (^^SNC.SN04 (), Local1), 0x10), 0x04, Local1)
					}
					Else
					{
						If (LEqual (Local0, 0x02))
						{
							Store (PHS (0xDD), Local1)
							Store (And (Local1, One), Local1)
						}
						Else
						{
							If (LEqual (Local0, 0x03))
							{
								Store (PHS (0xDD), Local1)
								ShiftRight (And (Local1, 0x06), One, Local1)
							}
							Else
							{
								If (LEqual (Local0, 0x04))
								{
									And (Local1, 0x03, Local1)
									PHSD (0xDE, Local1)
								}
								Else
								{
									If (LEqual (Local0, 0x05))
									{
										Store (PHS (0xDD), Local1)
										ShiftRight (And (Local1, 0x30), 0x04, Local1)
									}
									Else
									{
										If (LEqual (Local0, 0x06))
										{
											And (Local1, 0x03, Local1)
											PHSD (0xDF, Local1)
										}
										Else
										{
											If (LEqual (Local0, 0x09))
											{
												Store (PHS (0xDD), Local1)
												ShiftRight (And (Local1, 0x3000), 0x0C, Local1)
											}
											Else
											{
												If (LEqual (Local0, 0x0A))
												{
													And (Local1, 0x03, Local1)
													PHSD (0xEC, Local1)
												}
											}
										}
									}
								}
							}
						}
					}
					DBGC (0x74, 0x80, BCEN)
					Return (Local1)
				}
				Method (TSN5, 0, NotSerialized)
				{
					Store (MRG1, Local0)
					^^SNC.SN05 (Local0)
					Return (Zero)
				}
				Method (TSF3, 0, NotSerialized)
				{
					Store (MRG1, Local0)
					Store (MRG2, Local1)
					If (LEqual (Local0, 0x02))
					{
						Store (^^^PEG3.NGFX.GBRI (), Local1)
						Store ("CMD2 current brightness data:", Debug)
						Store (Local1, Debug)
					}
					Else
					{
						If (LEqual (Local0, 0x03))
						{
							Store ("CMD3 send byte:", Debug)
							Store (0x32, Local2)
							ShiftLeft (Local1, 0x08, Local1)
							PHSD (0xEF, Or (Local1, 0xA0))
							Sleep (0x02)
							Store (0x32, Local2)
							While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero)))
							{
								Sleep (One)
								Decrement (Local2)
							}
							Store (Zero, Local1)
							XOr (^^EC.CMST, One, Local1)
						}
						Else
						{
							If (LEqual (Local0, 0x04))
							{
								ShiftLeft (Local1, 0x08, Local1)
								PHSD (0xEF, Or (Local1, 0xA4))
								Sleep (0x02)
								Store (0x32, Local2)
								While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero)))
								{
									Sleep (One)
									Decrement (Local2)
								}
								Store (Zero, Local1)
								XOr (^^EC.CMST, One, Local1)
								Store ("CMD4 read byte", Debug)
							}
							Else
							{
								If (LEqual (Local0, 0x05))
								{
									ShiftLeft (Local1, 0x08, Local1)
									Store ("CMD5 write byte:", Debug)
									Store (Local1, Debug)
									PHSD (0xEF, Or (Local1, 0xA2))
									Sleep (0x02)
									Store (0x32, Local2)
									While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero)))
									{
										Sleep (One)
										Decrement (Local2)
									}
									Store (Zero, Local1)
									XOr (^^EC.CMST, One, Local1)
								}
								Else
								{
									If (LEqual (Local0, 0x06))
									{
										ShiftLeft (Local1, 0x08, Local1)
										PHSD (0xEF, Or (Local1, 0xA3))
										Sleep (0x02)
										Store (0x32, Local2)
										While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero)))
										{
											Sleep (One)
											Decrement (Local2)
										}
										Store ("CMD6", Debug)
										Store (Zero, Local1)
										XOr (^^EC.CMST, One, Local1)
									}
									Else
									{
										If (LEqual (Local0, 0x08))
										{
											ShiftRight (And (Store (^^SNC.SN04 (), Local1), 0x08), 0x03, Local1)
											Or (Local1, And (ALER, 0x02), Local1)
											Store ("CMD8 get event reason:", Debug)
											Store (Local1, Debug)
										}
										Else
										{
											If (LEqual (Local0, 0x09))
											{
												If (Local1)
												{
													Store (0xA011, Local1)
												}
												Else
												{
													Store (0xA111, Local1)
												}
												PHSD (0xEF, Local1)
											}
											Else
											{
												If (LEqual (Local0, 0x0A))
												{
													Store (^^EC.ALFS, Local1)
												}
												Else
												{
													If (LEqual (Local0, 0x0B))
													{
														Store (PHSD (0xF0, 0x14), Local1)
													}
													Else
													{
														If (LEqual (Local0, 0x0C))
														{
															ShiftLeft (Local1, 0x08, Local1)
															PHSD (0xF0, Or (Local1, 0xA015))
														}
														Else
														{
															If (LEqual (Local0, 0x0D))
															{
																ShiftLeft (Local1, 0x08, Local1)
																PHSD (0xF0, Or (Local1, 0xA016))
															}
															Else
															{
																If (LEqual (Local0, 0x0E))
																{
																	ShiftLeft (Local1, 0x08, Local1)
																	PHSD (0xF0, Or (Local1, 0xA017))
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
					Return (Local1)
				}
				Method (GGID, 0, NotSerialized)
				{
					Store (GPID, Local0)
					Return (Local0)
				}
				Method (TSF2, 0, NotSerialized)
				{
					Store (MRG1, Local0)
					Store (Zero, Local1)
					If (LEqual (Local0, Zero))
					{
						Store (0x04, Local1)
						PHSB (0xD0, Local1)
					}
					Else
					{
						If (LEqual (Local0, One))
						{
							Store (0x04, Local1)
							PHSB (0xD1, Local1)
						}
						Else
						{
							If (LEqual (Local0, 0x02))
							{
								Store (^^EC.GECR (), Local1)
							}
						}
					}
					DBGC (0x72, 0x80, BCEN)
					Return (Local1)
				}
				Method (TSF5, 0, NotSerialized)
				{
					Store (MRG1, Local0)
					Store (MRG2, Local2)
					If (LEqual (Local0, Zero))
					{
						Store (^^EC.ISID, Local1)
						If (LEqual (Local1, 0x05))
						{
							Store (One, Local1)
						}
						Else
						{
							Store (Zero, Local1)
						}
						DBGC (0x75, 0x80, BCEN)
						Return (Local1)
					}
					Else
					{
						If (LEqual (Local0, One))
						{
							And (Local2, One, Local2)
							Store (Local2, ATFR)
						}
					}
					Return (Package (0x02)
					{
						Zero, 
						Zero
					})
				}
				Method (TSN2, 0, NotSerialized)
				{
					Store (MRG1, Local0)
					^^SNC.SN02 (Local0)
					Return (Zero)
				}
				Method (TSN3, 0, NotSerialized)
				{
					Store (MRG1, Local0)
					^^SNC.SN03 (Local0)
					Return (Zero)
				}
			   Method (TINI, 0, NotSerialized)
				{
					Store (PHS (0xEA), Local1)
					And (Local1, One, Local1)
					PHSB (0xE1, Local1)

					Store (Zero, ALER)
					Store (Zero, Local0)
					While (LLessEqual (Local0, 0x08))
					{
						Store (DerefOf (Index (^^^PEG3.NGFX.BCL4, Local0)), Index (BRTB, Local0))
						Increment (Local0)
					}
					Divide (Subtract (BRTL, 0x04), 0x0C, , Local1)
					Store (DerefOf (Index (BRTB, Local1)), Local1)
					Store (Local1, SBRL)
				}
				Method (TPHS, 0, NotSerialized)
				{
					Store (MRG1, Local0)
					Store (MRG2, Local1)
					Store (PHSD (Local0, Local1), Local1)
					Return (Local1)
				}
				Method (TSDV, 0, NotSerialized)
				{
					DBGC (0xF6, Zero, BCEN)
					If (LNotEqual (DSEN, Zero))
					{
						Return (Ones)
					}
					Store (MRG1, AODV)
					If (LNot (And (AODV, CADD)))
					{
						Store (One, AODV)
					}
					If (LNotEqual (CADD, PADD))
					{
						Store (CADD, PADD)
						Notify (PCI0, Zero)
						And (PNHM, 0x000FFFF0, Local0)
						Notify (PEG3, Zero)
						Sleep (0x02EE)
					}
					DBGC (0xF6, 0x80, BCEN)
					Return (Zero)
				}
			}

 

Methods

 

TMPA - Returns temp of thermal zone 1

TMPB - Returns temp of thermal zone 2

TRG1 - Set register 1

TRG2 - Set register 2

DRG1 - Get register 1

DRG2 - Get register 2

GGID - Returns GPID, should be 4 for returning EDI4... Who sets GPID?

TSF2 - Like SNC.SNF2, 1 parameter, sets active gfx card?

TSF3 - Like SNC.SNF3, 2 parameters, param 0: function, param 1: function param

TSF4 - Like SNC.SNF4, 2 parameters, param 0: function, param 1: function param

TSF5 - Like SNC.SNF5, 2 parameters, param 0: function, param 1: function param

TSN2 - Like SNC.SN02, 1 parameter, activate events, 0xFFFF all

TSN3 - Like SNC.SN03, 1 parameter, disable events, 0xFFFF all

TSN5 - Like SNC.SN05, 1 parameter, sets active output gfx

TINI - Like SNC.INIT, 0 parameter

TSDV - Like SNC.SODV, 1 parameter, 0x0 or 0x1 gfx card switching

TECO - Return ECON, status of EC-device, 0x1 = activated

TECA - Return ECAK, some EC-device status?

TECR - Activates EC-device, returns ECON

TPHS - Calls PHSD with RG1,RG2 and returns result

 

 

Example

 

Reading SNF4 with param 0x0 and param 0x1:

sudo -s
SMC_util2 -w0x00 -kTRG1
SMC_util2 -r -kDRG1 (just check)
SMC_util2 -r -kTSF4
SMC_util2 -w0100 -kTRG1
SMC_util2 -r -kTSF4

At the second "-r -kTSF4" you will get other return bytes, because the method is now called with parameter 0x1 instead of 0x0. The "-w0100 -kTRG1" will set parameter 1 to 0x1. Seems you have to byteswap the value. So 0x0100 is 0x0001.

 

 

SNC ACPI method's description (updated 04-Aug-11)

 

_INI		Init, calls PHSB (0xE1, PHS (0xEA)&&1)
SODV		Switch Screen / Gfx (values 0 / 1)
SN00		Returns bytes (?) by value 0x0 to 0x4, 0x10 and 0x20 to 0x2f. See below.
SN01		Returns event status
SN02		Enable events ( 0xffff all)
SN03		Disable events ( 0xffff all )
SN04		Returns active gfx output  (var ESR),called rom SN03 param 0x8, SNF4
SN05		Sets active gfx output/brightness?  (var ESR), PHSD (0xDA, x),
		param: 0x9 to 0xf
SN06		Some kind of wrapper method that calls methods SNF0 to SNFF over
		method SNCM and returns the return value of SNF0 - SNFF
		Param: Buffer (0x02) { 0x0 - 0xf calling method SNF0 - SNFF, 0xXX parameter
		for SNFx-method }

SN07		Returns event messages
BRBR		Set panel brightness
BRTB		panel brightness table
CBMF		Change Battery Mode Flag?
RBMF		Read Battery Mode inFormation?


SNF1		?nop
SNF2		Set device??, 0x0 set PHSB (0xd0 0x04), 0x1 set PHSB (0xd1 0x04),
		0x2  get key code from EC.GECR?
SNF3		general brightness? , 0x0 set br table, 0x1 set default br,
		0x2 get gfx br value,
		0x3 set brightness PHSD 0xEF xxA0, 0x4 set brightness PHSD 0xEF xxA4,
		0x5 set brightness PHSD 0xEF xxA2, 0x6 set brightness PHSD 0xEF xxA3,
		0x7 set brightness PHSD 0xEF xxA1, 0x8 get active gfx out?,
		0x9 set br PHSD 0xEF 0xA011 / 0xA111 (off?), 0xA get EC.ALFS
		0xB get PHSD (0xF0, 0x14), 0xC ...
SNF4		Set/Get output, 0x0 get PHS (0xE7), 0x1 get SN04()/active displays,
		0x2 get PHS (0xDD), 0x3 get PHS (0xDD)&&6>>1,
		0x4 set PHSD (0xDE, x)/output 0-3, 0x5 get PHS (0xDD)&&30>>4,
		0x6 set PHSD (0xDF, x)/output 0-3 ,0x9 get PHS (0xDD)&&3000>>C,
		0xA set PHSD (0xEC, x)/output 0-3
SNF5		?? 0x0 get ISID==0x5  / 0x1 set ATFR param2: 0x0-0x1
SNF6		?? 0x0 get PHSD (0xF1, 0x12), 0x1 get PHSD (0xF1, 0x13)
SNF7		?nop
SNF8		?nop
SNF9		0x0 get PHS (0xE4) && 0xF5, 0x1 get PHSD (0xE5),
		0x2 get PHS (0xF3) && 0xF5
SNFA		0x0 get GPID (=0x3)
SNFB		?? get battery 0x0 get PHSD (0xDC, Zero)
SNFC		?nop
SNFD		?nop
SNFE		get/set something: 0x0 get PHS (0xC7)==0xFE, 0x1 set PHSB (0xC8, 0/1)
SNFF		? get/set output internal gfx? uses method P8XH (Zero, x)


PHSD			Some general hardware call, 2 parameter
PHS			Some general hardware call, 1 parameter

PHSD params:
0xC7				? SNFE get something
0xC8, 0xA0/0xA1	? SNFE set something
0xD0, 0x01		? SNF0
0xD1, 0x01		? SNF0
0xD0, 0x04		? SNF1, Set brightness
0xD1, 0x04		? SNF1, Set brightness
0xDA, 0x08		Set brightnes
0xDA, 0x09 - 0x0F	Set gfx output?
0xDC, ?			? SNFB, RBMF, CBMF, battery??
0xD7, ?			Interrupts enable
0xD8, ?			Interrupts disable
0xEF, ?			? SNF3 Set brightness value (value left shift 8, OR 0xA0 and value
			left shift 8, OR 0xA4)
0xF0, ?			? SNF3 Set/Get brightness value?
0xDD				? SNF4 Get output
0xDE, 0x00 - 0x03	? SNF4 Set output
0xDF, 0x00 - 0x03	? SNF4 Set output
0xEC, 0x00 - 0x03	? SNF4 Set output
0xE7				? SNF4 Get output
0xE8, 0x00 - 0x03	? SNFF Set output
0xF1, 0x12			? SNF6 get something
0xF2				? SNFF get something
0xF1, 0x13			? SNF6 get something
0xE5, ?			? SNF9


EC device:
SECR			set Extended key scan-Code result Set brightness
GECR		get Extended key scan-Code result, Get brightness
ECAK			EC ready? 0x1
ECON		EC on? 0x1
ESR0			Active output


SN00 parameter and return codes:
0x0			Name (SNI0, 0x53636E53)
...			Name (SNI1, 0x6F707075)
		Name (SNI2, 0x64657472)
		Name (SNI3, 0x0100)
0x4			Name (SNI4, 0x36590000)
0x10			 Name (SNIA, 0xCE7D)
0x20			Name (SNN0, 0x0101)
..			Name (SNN1, Zero)
				Name (SNN2, 0x0100)
				Name (SNN3, 0x0137)
				Name (SNN4, 0x0124)
				Name (SNN5, 0x013A)
				Name (SNN6, 0x0139)
				Name (SNN7, Zero)
				Name (SNN8, Zero)
				Name (SNN9, 0x0136)
				Name (SNNA, 0x011D)
				Name (SNNB, 0x0114)
				Name (SNNC, Zero)
				Name (SNND, Zero)
				Name (SNNE, 0x0105)
0x2f					Name (SNNF, 0x0122)

 

 

 

Downloads

 

Recent dsdt.aml

Version 09-Aug-2011: removed GFX0 device, it's intel and not needed - DSDT.aml_2.zip

Version 04-Aug-2011: brightness works? acpi test methods inside - DSDT.aml.zip

Bootloader kexts

FakeSMCandACPIMonitorF11.zip

Link to comment
Share on other sites

a little remark

 

yesterday i went to store and look at vaio and saw this model:

<h1 class="fontnormal mrg_b_sm lienNosouligne">Sony Vaio VPC-F13J8E/H 16,4" TFT Blu-Ray USB 3.0

</h1>and i seae a button called display and when pushed it on/off the display :

 

so the touch enable or not the black screen instantly so could we see on it a track related to snc

as i remember it is the first vaio with that function and if there 's a button there 's a acpi solution not?

 

if we get dsdt of it or acpi from linux is there a track?

 

what do you think?

 

sorry if i waste the time....

Link to comment
Share on other sites

what do you think?

 

sorry if i waste the time....

Why not make some ACPI SNC-device tests? Maybe the functionality for enabling/disabling display is inside the chip...

Look at the "SNC ACPI method's description" section, especially the methods SNF2-SNF5, SNFE-SNFF seem to be interesting. I already converted some methods for proper testing.

Link to comment
Share on other sites

 Share

×
×
  • Create New...