Angel Pons | 210a008 | 2020-04-02 23:48:24 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Duncan Laurie | c145e54 | 2019-04-18 16:37:50 -0700 | [diff] [blame] | 2 | |
| 3 | Device (UCSI) |
| 4 | { |
| 5 | Name (_HID, "GOOG000E") |
| 6 | Name (_CID, EisaId ("PNP0CA0")) |
| 7 | Name (_DDN, "Wilco EC UCSI") |
Felix Singer | ca4b587 | 2022-12-26 08:17:06 +0100 | [diff] [blame^] | 8 | Name (_UID, 1) |
Matt DeVillier | 1b30293 | 2022-05-23 17:10:04 -0500 | [diff] [blame] | 9 | Name (_STA, 0xb) |
Duncan Laurie | c145e54 | 2019-04-18 16:37:50 -0700 | [diff] [blame] | 10 | |
| 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 Singer | ca4b587 | 2022-12-26 08:17:06 +0100 | [diff] [blame^] | 72 | Return (Buffer (1) { Zero }) |
Duncan Laurie | c145e54 | 2019-04-18 16:37:50 -0700 | [diff] [blame] | 73 | } |
| 74 | |
| 75 | Switch (ToInteger (Arg2)) |
| 76 | { |
| 77 | Case (Zero) |
| 78 | { |
Felix Singer | ca4b587 | 2022-12-26 08:17:06 +0100 | [diff] [blame^] | 79 | Return (Buffer (1) { 0x07 }) |
Duncan Laurie | c145e54 | 2019-04-18 16:37:50 -0700 | [diff] [blame] | 80 | } |
Felix Singer | ca4b587 | 2022-12-26 08:17:06 +0100 | [diff] [blame^] | 81 | Case (1) |
Duncan Laurie | c145e54 | 2019-04-18 16:37:50 -0700 | [diff] [blame] | 82 | { |
| 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 Singer | ca4b587 | 2022-12-26 08:17:06 +0100 | [diff] [blame^] | 141 | Return (Buffer (1) { Zero }) |
Duncan Laurie | c145e54 | 2019-04-18 16:37:50 -0700 | [diff] [blame] | 142 | } |
| 143 | } |