Skip to content

Making Config for Yoga 910 (Need a Little Help) #970

@carloslockward

Description

@carloslockward

Hello,

I've been trying to create a config for my Lenovo Yoga 910-13IKB for a couple of days but I got stuck.

First thing I did was, obviously, try out all other available configs. None worked.

Then using RWEverything I opened all the ACPI tables on my computer, after extracting the DSDT table I found nothing but 1 register that seemed related to the fan, "CFAN" it is 1 bit long and changing it doesn't have any effect. Seems to be off by default.

DSDT.txt

After this i started investigating and got into one of the SSDTs where i found this:

Name(OSD1, Package(21)
{
  0x04, "CPU Fan Duty Cycle", "RAW", 0x04, "CPU Fan #1 Speed", "RPM",
  0x03, "Skin Temp 0", "RAW", 0x03, "Thermistor 1 ", "RAW", 0x03, "Thermistor 2 ",
  "RAW", 0x03, "Thermistor 3 ", "RAW", 0x03, "Thermistor 4 ", "RAW"
})
Name(OSD2, Package(24)
{
  0x04, "CPU Fan Duty Cycle", "RAW", 0x04, "CPU Fan #1 Speed", "RPM",
  0x03, "Skin Temp 0", "RAW", 0x03, "Thermistor 1 ", "RAW", 0x03, "Thermistor 2 ",
  "RAW", 0x03, "Thermistor 3 ", "RAW", 0x03, "Thermistor 4 ", "RAW",
  0x03, "Thermistor 5 ", "RAW"
})

and a couple lines after i found this:


Method(OSDD, 0, Serialized)
{
	If(LEqual(\_SB.PCI0.LPCB.H_EC.ECAV, One))
	{
		If(LEqual(TSDB, One))
		{
			Name(OSD2, Package(8)
			{
				0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
				0x80000000, 0x80000000
			})
			Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.PENV)), Index(OSD2, Zero))
			Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.CFSP)), Index(OSD2, One))
			Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TSR3)), Index(OSD2, 0x02))
			Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER1)), 0x02), Index(OSD2, 0x03))
			Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER2)), 0x02), Index(OSD2, 0x04))
			Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER3)), 0x02), Index(OSD2, 0x05))
			Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER4)), 0x02), Index(OSD2, 0x06))
			Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER5)), 0x02), Index(OSD2, 0x07))
			Return(OSD2)
		}
		Name(OSD1, Package(7)
		{
			0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
			0x80000000
		})
		Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.PENV)), Index(OSD1, Zero))
		Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.CFSP)), Index(OSD1, One))
		Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TSR3)), Index(OSD1, 0x02))
		Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER1)), 0x02), Index(OSD1, 0x03))
		Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER2)), 0x02), Index(OSD1, 0x04))
		Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER3)), 0x02), Index(OSD1, 0x05))
		Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER4)), 0x02), Index(OSD1, 0x06))
		Return(OSD1)
	}
	Return(Package(0){})
}

SSDT.txt

As you can see, it seems that the fan duty cycle is register _SB.PCI0.LPCB.H_EC.PENV and the fan speed is _SB.PCI0.LPCB.H_EC.CFSP. However, I looked in every table for the words "PENV" and "CFSP" but couldn't find the numeric address. (No definition anywhere)

So, using a combination of the ec-probe.exe monitor --clearly and RWEverything I was able to identify a couple of registers that changed in sync with the fan. (Red text and highlighted yellow)

EC-registers

I tried all of these registers out with no luck.

I think the registers from 0x50 to 0x57 are temperature related, 0xB4 seems to be the same. As for the others I have no clue.

I am extremely new to all this so I am probably missing something silly.

Feel free to ask any questions and any help will be greatly appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions