blob: 97e153b23a5feb802dd2e9c26ff959ed0bf310a1 [file] [log] [blame]
Angel Pons210a0082020-04-02 23:48:24 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Duncan Lauriec145e542019-04-18 16:37:50 -07002
3Device (UCSI)
4{
5 Name (_HID, "GOOG000E")
6 Name (_CID, EisaId ("PNP0CA0"))
7 Name (_DDN, "Wilco EC UCSI")
Felix Singerca4b5872022-12-26 08:17:06 +01008 Name (_UID, 1)
Matt DeVillier1b302932022-05-23 17:10:04 -05009 Name (_STA, 0xb)
Duncan Lauriec145e542019-04-18 16:37:50 -070010
11 /* Value written to EC control register to start UCSI command */
12 Name (UCMD, 0xE0)
13
14 /* Shared memory fields are defined in the SSDT */
15 External (VER0, FieldUnitObj)
16 External (VER1, FieldUnitObj)
17 External (CCI0, FieldUnitObj)
18 External (CCI1, FieldUnitObj)
19 External (CCI2, FieldUnitObj)
20 External (CCI3, FieldUnitObj)
21 External (CTL0, FieldUnitObj)
22 External (CTL1, FieldUnitObj)
23 External (CTL2, FieldUnitObj)
24 External (CTL3, FieldUnitObj)
25 External (CTL4, FieldUnitObj)
26 External (CTL5, FieldUnitObj)
27 External (CTL6, FieldUnitObj)
28 External (CTL7, FieldUnitObj)
29 External (MGI0, FieldUnitObj)
30 External (MGI1, FieldUnitObj)
31 External (MGI2, FieldUnitObj)
32 External (MGI3, FieldUnitObj)
33 External (MGI4, FieldUnitObj)
34 External (MGI5, FieldUnitObj)
35 External (MGI6, FieldUnitObj)
36 External (MGI7, FieldUnitObj)
37 External (MGI8, FieldUnitObj)
38 External (MGI9, FieldUnitObj)
39 External (MGIA, FieldUnitObj)
40 External (MGIB, FieldUnitObj)
41 External (MGIC, FieldUnitObj)
42 External (MGID, FieldUnitObj)
43 External (MGIE, FieldUnitObj)
44 External (MGIF, FieldUnitObj)
45 External (MGO0, FieldUnitObj)
46 External (MGO1, FieldUnitObj)
47 External (MGO2, FieldUnitObj)
48 External (MGO3, FieldUnitObj)
49 External (MGO4, FieldUnitObj)
50 External (MGO5, FieldUnitObj)
51 External (MGO6, FieldUnitObj)
52 External (MGO7, FieldUnitObj)
53 External (MGO8, FieldUnitObj)
54 External (MGO9, FieldUnitObj)
55 External (MGOA, FieldUnitObj)
56 External (MGOB, FieldUnitObj)
57 External (MGOC, FieldUnitObj)
58 External (MGOD, FieldUnitObj)
59 External (MGOE, FieldUnitObj)
60 External (MGOF, FieldUnitObj)
61
62 Method (INIT)
63 {
64 /* Read UCSI version from EC into shared memory */
65 ^VER0 = R (^^UVR0)
66 ^VER1 = R (^^UVR1)
67 }
68
69 Method (_DSM, 4, Serialized)
70 {
71 If (Arg0 != ToUUID ("6f8398c2-7ca4-11e4-ad36-631042b5008f")) {
Felix Singer42efd7f2022-12-26 09:38:45 +010072 Return (Buffer (1) { 0 })
Duncan Lauriec145e542019-04-18 16:37:50 -070073 }
74
75 Switch (ToInteger (Arg2))
76 {
Felix Singer42efd7f2022-12-26 09:38:45 +010077 Case (0)
Duncan Lauriec145e542019-04-18 16:37:50 -070078 {
Felix Singerca4b5872022-12-26 08:17:06 +010079 Return (Buffer (1) { 0x07 })
Duncan Lauriec145e542019-04-18 16:37:50 -070080 }
Felix Singerca4b5872022-12-26 08:17:06 +010081 Case (1)
Duncan Lauriec145e542019-04-18 16:37:50 -070082 {
83 /* Write Message Out */
84 W (^^UMO0, ^MGO0)
85 W (^^UMO1, ^MGO1)
86 W (^^UMO2, ^MGO2)
87 W (^^UMO3, ^MGO3)
88 W (^^UMO4, ^MGO4)
89 W (^^UMO5, ^MGO5)
90 W (^^UMO6, ^MGO6)
91 W (^^UMO7, ^MGO7)
92 W (^^UMO8, ^MGO8)
93 W (^^UMO9, ^MGO9)
94 W (^^UMOA, ^MGOA)
95 W (^^UMOB, ^MGOB)
96 W (^^UMOC, ^MGOC)
97 W (^^UMOD, ^MGOD)
98 W (^^UMOE, ^MGOE)
99 W (^^UMOF, ^MGOF)
100
101 /* Write Control */
102 W (^^UCL0, ^CTL0)
103 W (^^UCL1, ^CTL1)
104 W (^^UCL2, ^CTL2)
105 W (^^UCL3, ^CTL3)
106 W (^^UCL4, ^CTL4)
107 W (^^UCL5, ^CTL5)
108 W (^^UCL6, ^CTL6)
109 W (^^UCL7, ^CTL7)
110
111 /* Start EC Command */
112 W (^^UCTL, ^UCMD)
113 }
114 Case (2)
115 {
116 /* Read Message In */
117 ^MGI0 = R (^^UMI0)
118 ^MGI1 = R (^^UMI1)
119 ^MGI2 = R (^^UMI2)
120 ^MGI3 = R (^^UMI3)
121 ^MGI4 = R (^^UMI4)
122 ^MGI5 = R (^^UMI5)
123 ^MGI6 = R (^^UMI6)
124 ^MGI7 = R (^^UMI7)
125 ^MGI8 = R (^^UMI8)
126 ^MGI9 = R (^^UMI9)
127 ^MGIA = R (^^UMIA)
128 ^MGIB = R (^^UMIB)
129 ^MGIC = R (^^UMIC)
130 ^MGID = R (^^UMID)
131 ^MGIE = R (^^UMIE)
132 ^MGIF = R (^^UMIF)
133
134 /* Read Status */
135 ^CCI0 = R (^^UCI0)
136 ^CCI1 = R (^^UCI1)
137 ^CCI2 = R (^^UCI2)
138 ^CCI3 = R (^^UCI3)
139 }
140 }
Felix Singer42efd7f2022-12-26 09:38:45 +0100141 Return (Buffer (1) { 0 })
Duncan Lauriec145e542019-04-18 16:37:50 -0700142 }
143}