• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* SPDX-License-Identifier: GPL-2.0-only */
2
3Scope (\_SB)
4{
5	Device(DOCK)
6	{
7		Name(_HID, "ACPI0003")
8		Name(_UID, 0x00)
9		Name(_PCL, Package() { \_SB } )
10
11		Method(_DCK, 1, NotSerialized)
12		{
13			if (Arg0) {
14			   /* connect dock */
15			   \GP28 = 1
16			   \_SB.PCI0.LPCB.EC.DKR1 = 1
17			} else {
18			   /* disconnect dock */
19			   \GP28 = 0
20			   \_SB.PCI0.LPCB.EC.DKR1 = 0
21			}
22			Local0 = Arg0 ^ \_SB.PCI0.LPCB.EC.DKR1
23			Return (Local0)
24		}
25
26		Method(_STA, 0, NotSerialized)
27		{
28			Return (\_SB.PCI0.LPCB.EC.DKR1)
29		}
30
31		Name (G_ID, 0xFFFFFFFF)
32		/* Returns 0x7 (dock absent) or 0x3 (dock present) */
33		Method(GGID, 0, NotSerialized)
34		{
35			Local0 = G_ID
36			if (Local0 == 0xFFFFFFFF)
37			{
38				Local0 = GP02 | (GP03 << 1) | (GP04 << 2)
39				If (Local0 == 0x00)
40				{
41					Local0 = 0x03
42				}
43				G_ID = Local0
44			}
45			return (Local0)
46		}
47	}
48}
49
50Scope(\_SB.PCI0.LPCB.EC)
51{
52	Method(_Q18, 0, NotSerialized)
53	{
54		Notify(\_SB.DOCK, 3)
55	}
56
57	Method(_Q37, 0, NotSerialized)
58	{
59		Notify(\_SB.DOCK, 0)
60	}
61
62	Method(_Q45, 0, NotSerialized)
63	{
64		Notify(\_SB.DOCK, 3)
65	}
66
67	/* Undock button on dock */
68	Method(_Q50, 0, NotSerialized)
69	{
70		Local0 = \_SB.DOCK.GGID ()
71		if (Local0 != 0x07)
72		{
73			Notify(\_SB.DOCK, 3)
74		}
75	}
76
77	Method(_Q58, 0, NotSerialized)
78	{
79		Notify(\_SB.DOCK, 0)
80	}
81
82	/* Unplug power: only disconnect dock on force eject */
83	Method(_Q5A, 0, NotSerialized)
84	{
85		Local0 = \_SB.DOCK.GGID ()
86		if (Local0 == 0x07)
87		{
88			Notify(\_SB.DOCK, 3)
89		}
90		if (Local0 == 0x03)
91		{
92			Sleep(0x64)
93			Local1 = DKR1
94			if (Local1 == 1)
95			{
96				Notify(\_SB.DOCK, 0)
97			}
98		}
99	}
100}
101