Jump to content
3 posts in this topic

Recommended Posts

Here is the dsdt of the SNC/SNY5001 device of the Sony Vaio f11 as is known for changing brightness and do other things.

 

Questions now to all dsdt experts:

 

- Does this code looks to you like there could be some functionality for enabling/disabling or sleeping/waking up the internal lvds?

- In generally can there be dsdt code that calls or wrties directly to controlling hardware registers that change a behaviour of the machine and if so can you show me a section like this?

 

PEG3.NGFX is the interesting nvidia device, PEGP.NGFX is for Vaios with hybrid graphics.

 

Regards.

 

 

			   Device (SNC)
			{
				Name (_HID, EisaId ("SNY5001"))
				Name (CPUT, Zero)
				Name (UPBR, Zero)
				Name (DNBR, Zero)
				Method (_INI, 0, NotSerialized)
				{
					If (_OSI ("Windows 2006"))
					{
						Store (PHS (0xEA), Local1)
						And (Local1, One, Local1)
						PHSB (0xE1, Local1)
					}
					Store (Zero, ALER)
					And (PNHM, 0x000FFFF0, CPUT)
					If (LEqual (GPID, 0x04))
					{
						Store (Zero, Local0)
						While (LLessEqual (Local0, 0x08))
						{
							If (Or (LEqual (CPUT, 0x000106E0), LEqual (CPUT, 0x000106A0)))
							{
								Store (DerefOf (Index (^^^PEG3.NGFX.BCL4, Local0)), Index (BRTB, Local0))
							}
							Else
							{
								Store (DerefOf (Index (^^^PEGP.NGFX.BCL4, Local0)), Index (BRTB, Local0))
							}
							Increment (Local0)
						}
					}
					Divide (Subtract (BRTL, 0x04), 0x0C, , Local1)
					Store (DerefOf (Index (BRTB, Local1)), Local1)
					Store (Local1, SBRL)
				}
				Method (PWAK, 0, NotSerialized)
				{
					DBGC (0xF3, Zero, BCEN)
					PNOT ()
					DBGC (0xF3, 0x80, BCEN)
					Return (Zero)
				}
				Name (EVS0, 0x07)
				Name (EVS1, Zero)
				Name (EVS2, Zero)
				Mutex (MSNE, 0x00)
				Method (GSNE, 1, NotSerialized)
				{
					Acquire (MSNE, 0xFFFF)
					DBGC (0xF1, Zero, BCEN)
					Store (ShiftRight (And (Arg0, 0xFF000000), 0x18), Local1)
					Store (ShiftRight (And (Arg0, 0x00FF0000), 0x10), Local2)
					Store (And (Arg0, 0xFFFF), Local3)
					Store (Zero, Local0)
					If (LEqual (Local1, Zero))
					{
						If (LEqual (Local2, Zero))
						{
							Store (And (Arg0, 0xFFFF0000), Local0)
							Store (Or (Local0, 0x07), Local0)
						}
						If (LEqual (Local2, One))
						{
							Store (And (Arg0, 0xFFFF0000), Local0)
							Store (Or (Local0, Zero), Local0)
						}
						If (LEqual (Local2, 0x02))
						{
							Store (And (Arg0, 0xFFFF0000), Local0)
							Store (Or (Local0, Zero), Local0)
						}
					}
					Else
					{
						If (LEqual (Local1, One))
						{
							If (LEqual (Local2, Zero))
							{
								Store (And (Arg0, 0xFFFF0000), Local0)
								Store (Or (Local0, EVS0), Local0)
							}
							If (LEqual (Local2, One))
							{
								Store (And (Arg0, 0xFFFF0000), Local0)
								Store (Or (Local0, EVS1), Local0)
							}
							If (LEqual (Local2, 0x02))
							{
								Store (And (Arg0, 0xFFFF0000), Local0)
								Store (Or (Local0, EVS2), Local0)
							}
						}
						Else
						{
							Store (Ones, Local0)
						}
					}
					DBGC (0xF1, 0x80, BCEN)
					Release (MSNE)
					Return (Local0)
				}
				Method (SSNE, 1, NotSerialized)
				{
					Acquire (MSNE, 0xFFFF)
					DBGC (0xF4, Zero, BCEN)
					Store (ShiftRight (And (Arg0, 0xFF000000), 0x18), Local1)
					Store (ShiftRight (And (Arg0, 0x00FF0000), 0x10), Local2)
					Store (And (Arg0, 0xFFFF), Local3)
					Store (Zero, Local0)
					If (LEqual (Local1, Zero))
					{
						If (LEqual (Local2, Zero))
						{
							Store (Or (Arg0, EVS0), EVS0)
						}
						If (LEqual (Local2, One))
						{
							Store (Or (Arg0, EVS1), EVS1)
						}
						If (LEqual (Local2, 0x02))
						{
							Store (Or (Arg0, EVS2), EVS2)
						}
					}
					Else
					{
						If (LEqual (Local1, One))
						{
							If (LEqual (Local2, Zero))
							{
								Store (And (EVS0, Not (Arg0)), EVS0)
							}
							If (LEqual (Local2, One))
							{
								Store (And (EVS1, Not (Arg0)), EVS1)
							}
							If (LEqual (Local2, 0x02))
							{
								Store (And (EVS2, Not (Arg0)), EVS2)
							}
						}
					}
					DBGC (0xF4, 0x80, BCEN)
					Release (MSNE)
				}
				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)
				}
				Mutex (MIDB, 0x00)
				Method (RBMF, 1, Serialized)
				{
					Acquire (MIDB, 0xFFFF)
					DBGC (0xF7, Zero, BCEN)
					And (Arg0, 0x00010000, Local0)
					Store (PHSD (0xDC, Local0), Local0)
					If (LEqual (Local0, 0x02))
					{
						Sleep (0x1388)
					}
					DBGC (0xF7, 0x80, BCEN)
					Release (MIDB)
					Return (Local0)
				}
				Method (RSBI, 1, Serialized)
				{
					Return (Zero)
				}
				Method (CBMF, 1, Serialized)
				{
					Acquire (MIDB, 0xFFFF)
					Or (And (Arg0, 0x0001FFFF), 0x02000000, Local0)
					Store (PHSD (0xDC, Local0), Local0)
					Release (MIDB)
					Return (Zero)
				}
				Method (EAWK, 1, Serialized)
				{
					Acquire (MIDB, 0xFFFF)
					PHSB (0xD3, Zero)
					Not (Arg0, Local0)
					Release (MIDB)
					Return (Local0)
				}
				Name (SNI0, 0x53636E53)
				Name (SNI1, 0x6F707075)
				Name (SNI2, 0x64657472)
				Name (SNI3, 0x0100)
				Name (SNI4, 0x36590000)
				Name (SNIA, 0xCE7D)
				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)
				Name (SNNF, 0x0122)
				Name (XECR, Zero)
				Name (ENMK, 0xFFE2)
				Name (ENCR, Zero)
				Name (ESR, Zero)
				Method (SN00, 1, NotSerialized)
				{
					Store (And (Arg0, 0xFF), Local1)
					If (LEqual (Local1, Zero))
					{
						Return (SNI0)
					}
					If (LEqual (Local1, One))
					{
						Return (SNI1)
					}
					If (LEqual (Local1, 0x02))
					{
						Return (SNI2)
					}
					If (LEqual (Local1, 0x03))
					{
						Return (SNI3)
					}
					If (LEqual (Local1, 0x04))
					{
						Return (SNI4)
					}
					If (LEqual (Local1, 0x10))
					{
						Return (SNIA)
					}
					If (LAnd (LGreaterEqual (Local1, 0x20), LLessEqual (Local1, 0x2F)))
					{
						Store (SNGN (Local1), Local2)
						Return (Local2)
					}
					Return (Zero)
				}
				Method (SNGN, 1, NotSerialized)
				{
					Store (And (Arg0, 0x0F), Local1)
					If (LEqual (Local1, Zero))
					{
						Return (SNN0)
					}
					If (LEqual (Local1, One))
					{
						Return (SNN1)
					}
					If (LEqual (Local1, 0x02))
					{
						Return (SNN2)
					}
					If (LEqual (Local1, 0x03))
					{
						Return (SNN3)
					}
					If (LEqual (Local1, 0x04))
					{
						Return (SNN4)
					}
					If (LEqual (Local1, 0x05))
					{
						Return (SNN5)
					}
					If (LEqual (Local1, 0x06))
					{
						Return (SNN6)
					}
					If (LEqual (Local1, 0x07))
					{
						Return (SNN7)
					}
					If (LEqual (Local1, 0x08))
					{
						Return (SNN8)
					}
					If (LEqual (Local1, 0x09))
					{
						Return (SNN9)
					}
					If (LEqual (Local1, 0x0A))
					{
						Return (SNNA)
					}
					If (LEqual (Local1, 0x0B))
					{
						Return (SNNB)
					}
					If (LEqual (Local1, 0x0C))
					{
						Return (SNNC)
					}
					If (LEqual (Local1, 0x0D))
					{
						Return (SNND)
					}
					If (LEqual (Local1, 0x0E))
					{
						Return (SNNE)
					}
					If (LEqual (Local1, 0x0F))
					{
						Return (SNNF)
					}
					Return (Zero)
				}
				Mutex (SNM0, 0x00)
				Method (SN01, 0, NotSerialized)
				{
					Acquire (SNM0, 0xFFFF)
					Store (PHS (0xD6), Local1)
					And (Local1, Not (ENMK), Local1)
					And (ENCR, ENMK, Local2)
					Or (Local1, Local2, Local1)
					Release (SNM0)
					Return (Local1)
				}
				Method (SN02, 1, NotSerialized)
				{
					Acquire (SNM0, 0xFFFF)
					Store (Arg0, Local1)
					If (LNotEqual (Local1, Zero))
					{
						And (Local1, Not (ENMK), Local2)
						If (LNotEqual (Local2, Zero))
						{
							PHSD (0xD7, Local2)
						}
						And (Local1, ENMK, Local2)
						If (LNotEqual (Local2, Zero))
						{
							And (ENCR, ENMK, Local3)
							Or (Local3, Local2, ENCR)
						}
					}
					Release (SNM0)
				}
				Method (SN03, 1, NotSerialized)
				{
					Acquire (SNM0, 0xFFFF)
					Store (Arg0, Local1)
					If (LNotEqual (Local1, Zero))
					{
						And (Local1, Not (ENMK), Local2)
						If (LNotEqual (Local2, Zero))
						{
							PHSD (0xD8, Local1)
						}
						And (Local1, ENMK, Local2)
						If (LNotEqual (Local2, Zero))
						{
							And (ENCR, ENMK, Local3)
							And (Local3, Not (Local2), ENCR)
						}
					}
					Release (SNM0)
				}
				Method (SN04, 0, NotSerialized)
				{
					Store (^^EC.ESR0, Local1)
					And (Local1, Not (ENMK), Local1)
					And (ESR, ENMK, Local2)
					Or (Local1, Local2, Local1)
					Return (Local1)
				}
				Method (SN05, 1, NotSerialized)
				{
					Store (Arg0, Local1)
					If (LNotEqual (Local1, Zero))
					{
						And (Local1, Not (ENMK), Local2)
						If (LEqual (Arg0, 0x08))
						{
							And (Local2, 0xFFFFFFF7, Local2)
						}
						If (LNotEqual (Local2, Zero))
						{
							PHSD (0xDA, Local1)
						}
						And (Local1, ENMK, Local2)
						If (LNotEqual (Local2, Zero))
						{
							And (ESR, ENMK, Local3)
							And (Local3, Not (Local2), ESR)
						}
					}
				}
				Mutex (SNM1, 0x00)
				Mutex (SNM2, 0x00)
				Name (SNBF, Buffer (0x0410) {})
				CreateField (SNBF, Zero, 0x20, SNBD)
				Method (SN06, 1, NotSerialized)
				{
					Acquire (SNM2, 0xFFFF)
					Store (Arg0, SNBF)
					SNCM ()
					Release (SNM2)
					Return (SNBF)
				}
				Method (SNCM, 0, NotSerialized)
				{
					Acquire (SNM1, 0xFFFF)
					Store (DerefOf (Index (SNBF, Zero)), Local0)
					DBGC (0xF0, Local0, BCEN)
					And (Local0, 0x0F, Local0)
					If (LEqual (Local0, Zero))
					{
						SNF0 (SNBF)
					}
					Else
					{
						If (LEqual (Local0, 0x02))
						{
							SNF2 (SNBF)
						}
						Else
						{
							If (LEqual (Local0, 0x03))
							{
								SNF3 (SNBF)
							}
							Else
							{
								If (LEqual (Local0, 0x04))
								{
									SNF4 (SNBF)
								}
								Else
								{
									If (LEqual (Local0, 0x05))
									{
										SNF5 (SNBF)
									}
									Else
									{
										If (LEqual (Local0, 0x06))
										{
											SNF6 (SNBF)
										}
										Else
										{
											If (LEqual (Local0, 0x09))
											{
												SNF9 (SNBF)
											}
											Else
											{
												If (LEqual (Local0, 0x0A))
												{
													SNFA (SNBF)
												}
												Else
												{
													If (LEqual (Local0, 0x0B))
													{
														SNFB (SNBF)
													}
													Else
													{
														If (LEqual (Local0, 0x0E))
														{
															SNFE (SNBF)
														}
														Else
														{
															If (LEqual (Local0, 0x0F))
															{
																SNFF (SNBF)
															}
															Else
															{
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
					Release (SNM1)
					Return (SNBF)
				}
				Method (SN07, 1, NotSerialized)
				{
					Acquire (SNM2, 0xFFFF)
					Store (Arg0, Local0)
					Store (Local0, SNBD)
					SNCM ()
					Release (SNM2)
					Return (SNBD)
				}
				Method (SNF0, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Store (One, Local1)
						PHSB (0xD0, Local1)
					}
					Else
					{
						If (LEqual (Local0, One))
						{
							Store (One, Local1)
							PHSB (0xD1, Local1)
						}
						Else
						{
						}
					}
					DBGC (0x70, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNF1, 1, NotSerialized)
				{
					DBGC (0x71, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNF2, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					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)
								Store (Local1, Index (SNBF, Zero))
							}
							Else
							{
							}
						}
					}
					DBGC (0x72, 0x80, BCEN)
				}
				Name (BRTB, Buffer (0x09)
				{
					/* 0000 */	0x34, 0x40, 0x4F, 0x5E, 0x6F, 0x86, 0xA0, 0xC3, 
					/* 0008 */	0xFF
				})
				Name (DEFU, Buffer (0x0D)
				{
					/* 0000 */	0x05, 0xAA, 0x00, 0x55, 0x6E, 0x01, 0x23, 0x02, 
					/* 0008 */	0x01, 0x04, 0x32, 0x0A, 0x00
				})
				Method (BRBR, 1, NotSerialized)
				{
					If (Or (LEqual (CPUT, 0x000106E0), LEqual (CPUT, 0x000106A0)))
					{
						^^^PEG3.NGFX.SBRI (Arg0)
					}
					Else
					{
						^^^PEGP.NGFX.SBRI (Arg0)
					}
				}
				Method (SNF3, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Store ("CMD0 Get parameter:", Debug)
						Store (Zero, Local1)
						While (LLessEqual (Local1, 0x08))
						{
							Store (DerefOf (Index (BRTB, Local1)), Index (SNBF, Local1))
							Increment (Local1)
						}
						Store (Zero, Local1)
						While (LLessEqual (Local1, 0x0C))
						{
							Store (DerefOf (Index (DEFU, Local1)), Index (SNBF, Add (Local1, 
								0x09)))
							Increment (Local1)
						}
					}
					Else
					{
						If (LEqual (Local0, One))
						{
							Store ("CMD1 brightness data:", Debug)
							Store (DerefOf (Index (SNBF, 0x02)), Local1)
							Store (Local1, Debug)
							BRBR (Local1)
						}
						Else
						{
							If (LEqual (Local0, 0x02))
							{
								If (Or (LEqual (CPUT, 0x000106E0), LEqual (CPUT, 0x000106A0)))
								{
									Store (^^^PEG3.NGFX.GBRI (), Local1)
								}
								Else
								{
									Store (^^^PEGP.NGFX.GBRI (), Local1)
								}
								Store ("CMD2 current brightness data:", Debug)
								Store (Local1, Debug)
								Store (Local1, Index (SNBF, Zero))
							}
							Else
							{
								If (LEqual (Local0, 0x03))
								{
									Store ("CMD3 send byte:", Debug)
									Store (0x32, Local2)
									Store (DerefOf (Index (SNBF, 0x02)), Local1)
									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)
									}
									XOr (^^EC.CMST, One, Index (SNBF, Zero))
								}
								Else
								{
									If (LEqual (Local0, 0x04))
									{
										Store (DerefOf (Index (SNBF, 0x02)), Local1)
										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)
										}
										XOr (^^EC.CMST, One, Index (SNBF, Zero))
										Store ("CMD4 read byte", Debug)
										Store (^^EC.ALSL, Debug)
										Store (^^EC.ALSL, Index (SNBF, One))
									}
									Else
									{
										If (LEqual (Local0, 0x05))
										{
											Store (DerefOf (Index (SNBF, 0x03)), Local1)
											Or (ShiftLeft (Local1, 0x08), DerefOf (Index (SNBF, 0x02)), 
												Local1)
											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)
											}
											XOr (^^EC.CMST, One, Index (SNBF, Zero))
										}
										Else
										{
											If (LEqual (Local0, 0x06))
											{
												Store (DerefOf (Index (SNBF, 0x02)), Local1)
												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)
												XOr (^^EC.CMST, One, Index (SNBF, Zero))
												Store (^^EC.ALSL, Index (SNBF, One))
												Store (^^EC.ALSH, Index (SNBF, 0x02))
											}
											Else
											{
												If (LEqual (Local0, 0x07))
												{
													Store (DerefOf (Index (SNBF, 0x04)), Local1)
													Or (ShiftLeft (Local1, 0x08), DerefOf (Index (SNBF, 0x03)), 
														Local1)
													Or (ShiftLeft (Local1, 0x08), DerefOf (Index (SNBF, 0x02)), 
														Local1)
													ShiftLeft (Local1, 0x08, Local1)
													Store ("CMD7 write word to ALS:", Debug)
													Store (Local1, Debug)
													PHSD (0xEF, Or (Local1, 0xA1))
													Sleep (0x02)
													Store (0x32, Local2)
													While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero)))
													{
														Sleep (One)
														Decrement (Local2)
													}
													XOr (^^EC.CMST, One, Index (SNBF, Zero))
												}
												Else
												{
													If (LEqual (Local0, 0x08))
													{
														ShiftRight (And (Store (SN04 (), Local1), 0x08), 0x03, Local1)
														Or (Local1, And (ALER, 0x02), Local1)
														Store ("CMD8 get event reason:", Debug)
														Store (Local1, Debug)
														Store (Local1, Index (SNBF, Zero))
													}
													Else
													{
														If (LEqual (Local0, 0x09))
														{
															And (DerefOf (Index (SNBF, 0x02)), One, Local1)
															If (Local1)
															{
																Store (0xA011, Local1)
															}
															Else
															{
																Store (0xA111, Local1)
															}
															PHSD (0xEF, Local1)
														}
														Else
														{
															If (LEqual (Local0, 0x0A))
															{
																Store (^^EC.ALFS, Index (SNBF, Zero))
															}
															Else
															{
																If (LEqual (Local0, 0x0B))
																{
																	Store (PHSD (0xF0, 0x14), Index (SNBF, Zero))
																}
																Else
																{
																	If (LEqual (Local0, 0x0C))
																	{
																		And (DerefOf (Index (SNBF, 0x02)), One, Local1)
																		ShiftLeft (Local1, 0x08, Local1)
																		PHSD (0xF0, Or (Local1, 0xA015))
																	}
																	Else
																	{
																		If (LEqual (Local0, 0x0D))
																		{
																			And (DerefOf (Index (SNBF, 0x02)), One, Local1)
																			ShiftLeft (Local1, 0x08, Local1)
																			PHSD (0xF0, Or (Local1, 0xA016))
																		}
																		Else
																		{
																			If (LEqual (Local0, 0x0E))
																			{
																				And (DerefOf (Index (SNBF, 0x02)), 0x03, Local1)
																				ShiftLeft (Local1, 0x08, Local1)
																				PHSD (0xF0, Or (Local1, 0xA017))
																			}
																		}
																	}
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
					DBGC (0x73, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNF4, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Store (PHS (0xE7), Local1)
						Store (Local1, SNBF)
					}
					If (LEqual (Local0, One))
					{
						ShiftRight (And (Store (SN04 (), Local1), 0x10), 0x04, Local1)
						Store (Local1, Index (SNBF, Zero))
					}
					Else
					{
						If (LEqual (Local0, 0x02))
						{
							Store (PHS (0xDD), Local1)
							Store (And (Local1, One), Index (SNBF, Zero))
						}
						Else
						{
							If (LEqual (Local0, 0x03))
							{
								Store (PHS (0xDD), Local1)
								ShiftRight (And (Local1, 0x06), One, Local1)
								Store (Local1, Index (SNBF, Zero))
							}
							Else
							{
								If (LEqual (Local0, 0x04))
								{
									Store (DerefOf (Index (SNBF, 0x02)), Local1)
									And (Local1, 0x03, Local1)
									PHSD (0xDE, Local1)
								}
								Else
								{
									If (LEqual (Local0, 0x05))
									{
										Store (PHS (0xDD), Local1)
										ShiftRight (And (Local1, 0x30), 0x04, Local1)
										Store (Local1, Index (SNBF, Zero))
									}
									Else
									{
										If (LEqual (Local0, 0x06))
										{
											Store (DerefOf (Index (SNBF, 0x02)), Local1)
											And (Local1, 0x03, Local1)
											PHSD (0xDF, Local1)
										}
										Else
										{
											If (LEqual (Local0, 0x09))
											{
												Store (PHS (0xDD), Local1)
												ShiftRight (And (Local1, 0x3000), 0x0C, Local1)
												Store (Local1, Index (SNBF, Zero))
											}
											Else
											{
												If (LEqual (Local0, 0x0A))
												{
													Store (DerefOf (Index (SNBF, 0x02)), Local1)
													And (Local1, 0x03, Local1)
													PHSD (0xEC, Local1)
												}
												Else
												{
												}
											}
										}
									}
								}
							}
						}
					}
					DBGC (0x74, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNF5, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Store (^^EC.ISID, Local1)
						If (LEqual (Local1, 0x05))
						{
							Store (One, Local1)
						}
						Else
						{
							Store (Zero, Local1)
						}
						Store (Local1, Index (SNBF, Zero))
						DBGC (0x75, 0x80, BCEN)
						Return (SNBF)
					}
					Else
					{
						If (LEqual (Local0, One))
						{
							Store (DerefOf (Index (SNBF, 0x02)), Local2)
							And (Local2, One, Local2)
							Store (Local2, ATFR)
						}
						Else
						{
						}
					}
					Return (Package (0x02)
					{
						Zero, 
						Zero
					})
				}
				Method (SNF6, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Store (PHSD (0xF1, 0x12), Local1)
					}
					Else
					{
						If (LEqual (Local0, One))
						{
							Store (PHSD (0xF1, 0x13), Local1)
						}
						Else
						{
							Store (Zero, Local1)
						}
					}
					Store (Local1, Index (SNBF, Zero))
					Store (ShiftRight (Local1, 0x08), Index (SNBF, One))
					DBGC (0x76, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNF7, 1, NotSerialized)
				{
					DBGC (0x77, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNF8, 1, NotSerialized)
				{
					DBGC (0x78, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNF9, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Store (PHS (0xE4), Local1)
						Store (And (Local1, 0xF5), Index (SNBF, Zero))
					}
					Else
					{
						If (LEqual (Local0, One))
						{
							Store (DerefOf (Index (SNBF, 0x02)), Local1)
							PHSD (0xE5, Local1)
						}
						Else
						{
							If (LEqual (Local0, 0x02))
							{
								Store (PHS (0xF3), Local1)
								Store (Local1, Index (SNBF, Zero))
							}
						}
					}
					DBGC (0x79, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNFA, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Store (GPID, Index (SNBF, Zero))
						Store (Zero, Index (SNBF, One))
					}
					Else
					{
					}
					DBGC (0x7A, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNFB, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Acquire (MIDB, 0xFFFF)
						Store (PHSD (0xDC, Zero), Local1)
						If (LEqual (Local1, 0x02))
						{
							Sleep (0x1388)
						}
						Release (MIDB)
						Store (And (Local1, 0x07), Index (SNBF, Zero))
					}
					DBGC (0x7B, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNFC, 1, NotSerialized)
				{
					DBGC (0x7C, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNFD, 1, NotSerialized)
				{
					DBGC (0x7D, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNFE, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Store (PHS (0xC7), Local1)
						And (Local1, 0xFF, Local1)
						If (LEqual (Local1, 0xFE))
						{
							Store (One, Local1)
						}
						Else
						{
							Store (Zero, Local1)
						}
						Store (Local1, Index (SNBF, Zero))
						Return (SNBF)
					}
					Else
					{
						If (LEqual (Local0, One))
						{
							Store (DerefOf (Index (SNBF, 0x02)), Local2)
							And (Local2, One, Local2)
							If (LEqual (Local2, Zero))
							{
								Store (0xA0, Local3)
							}
							Else
							{
								Store (0xA1, Local3)
							}
							PHSB (0xC8, Local3)
						}
						Else
						{
						}
					}
					DBGC (0x7E, 0x80, BCEN)
					Return (SNBF)
				}
				Method (SNFF, 1, NotSerialized)
				{
					Store (DerefOf (Index (SNBF, One)), Local0)
					If (LEqual (Local0, Zero))
					{
						Store (0x02, Local1)
						Store (Local1, Index (SNBF, Zero))
					}
					If (LEqual (Local0, One))
					{
						Store (Zero, Local1)
						Store (PHS (0xF2), Local1)
						P8XH (Zero, Local1)
						And (Local1, 0x03, Local1)
						Store (Local1, Index (SNBF, Zero))
					}
					Else
					{
						If (LEqual (Local0, 0x02))
						{
							Store (DerefOf (Index (SNBF, 0x02)), Local1)
							P8XH (Zero, Local1)
							And (Local1, 0x03, Local1)
							PHSB (0xE8, Local1)
						}
					}
					DBGC (0x7F, 0x80, BCEN)
					Return (SNBF)
				}
			}

  • 4 weeks later...

Hey Frank, i have a vaio vpcf126fm. This snc, how you get it?

 

This is the key for the graphic aceleration solution?

 

Thanks!

  • 1 month later...

This is what I discovered about the ACPI of the SNY5001 inside the Vaio F11 so far. It's only very rudimentary info and I don't understand the usage of the methods. SN06 seems to be a general purpose method that returns an array of available methods.

 

Here are some important sources. I would like to have the linux sony kernel module patched with the vaio-f11-project. But I don't have a clue how to diff patch this.

 

Linux Kernel 2.6.39 sony-laptop.c browser readable

 

Vaio-F11-Linux project diff patch

 

Sony_Notebook_Control_ACPI_support.webarchive.zip (Very outdated Sony ACPI descriptions)

 

 

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

 

More info here.

 

_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		?? get ISID==0x5  / set ATFR 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)

×
×
  • Create New...