1/* SPDX-License-Identifier: GPL-2.0-only */ 2 3Name(\CBA1, 0x60) 4Name(\CBA2, 0x60) 5 6/* ACPI doesn't care if capacity is given in mWh or mAh, 7 but it has to be consistent */ 8 9Device (BAT1) 10{ 11 Name(_HID, EisaId("PNP0C0A")) 12 Name(_UID, 1) 13 14 Name(_PCL, Package(){ _SB }) 15 Name(PSTA, 0x1f) 16 17 /* battery information */ 18 Name(PBIF, Package() { 19 0x01, // power unit 20 0x01, // design capacity (mWh/mAh), updated by UPBI 21 0x01, // last full charge capacity (mWh/mAh), updated by UPBI 22 0x01, // battery technology: "rechargeable" 23 0x01, // design voltage (mV), updated by UPBI 24 0x0294, // design capacity of warning (mWh/mAh) 25 0x014a, // design capacity of low (mWh/mAh) 26 0x42, // battery capacity granularity between low and warning 27 0x42, // battery capacity granularity between warning and full 28 "BAT1", // Name 29 "001 ", // Number 30 "LION", // Type 31 "JSE" // Vendor 32 }) 33 /* battery status */ 34 /* dummy values, filled in by UPBS */ 35 Name(PBST, Package() { 36 0x00, // battery state 37 // bit0: discharging 38 // bit1: charging 39 // bit2: critical energy state 40 0x01, // battery present rate (mW/mA) 41 0x01, // remaining capacity (mW/mA) 42 0x01 // battery present voltage (mV) 43 }) 44 45 /* Status */ 46 Method(_STA, 0) 47 { 48 If(\_SB.PCI0.LPCB.EC0.ECON) { 49 If(\_SB.PCI0.LPCB.EC0.B1PR) { 50 If(\_SB.PCI0.LPCB.EC0.B1CH) { 51 Return(0x1f) 52 } 53 } 54 } 55 Return(0x0f) 56 } 57 58 /* Battery Info */ 59 Method(_BIF, 0) 60 { 61 If(\_SB.PCI0.LPCB.EC0.ECON) { 62 PBIF [1] = \_SB.PCI0.LPCB.EC0.B1DW 63 PBIF [2] = \_SB.PCI0.LPCB.EC0.B1FW 64 PBIF [4] = \_SB.PCI0.LPCB.EC0.B1DV 65 } 66 67 Return(PBIF) 68 } 69 70 /* Battery Status */ 71 Method(_BST, 0) 72 { 73 If(\_SB.PCI0.LPCB.EC0.ECON) { 74 Local0 = \_SB.PCI0.LPCB.EC0.B1PW 75 If (Local0 >= 0x8000) { 76 Local0 = 0x10000 - Local0 77 } 78 PBST [1] = Local0 79 PBST [3] = \_SB.PCI0.LPCB.EC0.B1PV 80 81 PBST [2] = \_SB.PCI0.LPCB.EC0.B1RW 82 83 If (\_SB.PCI0.LPCB.EC0.ACCH) { 84 If (\_SB.PCI0.LPCB.EC0.B1CH) { 85 If (\_SB.PCI0.LPCB.EC0.B1CG) { 86 PBST [0] = 2 87 } 88 } 89 } Else { 90 If (\_SB.PCI0.LPCB.EC0.B1LO) { 91 PBST [0] = 5 92 } Else { 93 PBST [0] = 1 94 } 95 } 96 } 97 98 Return(PBST) 99 } 100 101} 102 103Device (BAT2) 104{ 105 Name(_HID, EisaId("PNP0C0A")) 106 Name(_UID, 2) 107 108 Name(_PCL, Package(){ _SB }) 109 Name(PSTA, 0x1f) 110 111 /* battery information */ 112 Name(PBIF, Package() { 113 0x01, // power unit 114 0x01, // design capacity (mWh/mAh), updated by UPBI 115 0x01, // last full charge capacity (mWh/mAh), updated by UPBI 116 0x01, // battery technology: "rechargeable" 117 0x01, // design voltage (mV), updated by UPBI 118 0x0294, // design capacity of warning (mWh/mAh) 119 0x014a, // design capacity of low (mWh/mAh) 120 0x42, // battery capacity granularity between low and warning 121 0x42, // battery capacity granularity between warning and full 122 "BAT1", // Name 123 "002 ", // Number 124 "LION", // Type 125 "JSE" // Vendor 126 }) 127 /* battery status */ 128 /* dummy values, filled in by UPBS */ 129 Name(PBST, Package() { 130 0x00, // battery state 131 // bit0: discharging 132 // bit1: charging 133 // bit2: critical energy state 134 0x01, // battery present rate (mW/mA) 135 0x01, // remaining capacity (mW/mA) 136 0x01 // battery present voltage (mV) 137 }) 138 139 /* Status */ 140 Method(_STA, 0) 141 { 142 If(\_SB.PCI0.LPCB.EC0.ECON) { 143 If(\_SB.PCI0.LPCB.EC0.B2PR) { 144 If(\_SB.PCI0.LPCB.EC0.B2CH) { 145 Return(0x1f) 146 } 147 } 148 } 149 Return(0x0f) 150 } 151 152 /* Battery Info */ 153 Method(_BIF, 0) 154 { 155 If(\_SB.PCI0.LPCB.EC0.ECON) { 156 PBIF [1] = \_SB.PCI0.LPCB.EC0.B2DW 157 PBIF [2] = \_SB.PCI0.LPCB.EC0.B2FW 158 PBIF [4] = \_SB.PCI0.LPCB.EC0.B2DV 159 } 160 161 Return(PBIF) 162 } 163 164 /* Battery Status */ 165 Method(_BST, 0) 166 { 167 If(\_SB.PCI0.LPCB.EC0.ECON) { 168 Local0 = \_SB.PCI0.LPCB.EC0.B2PW 169 If (Local0 >= 0x8000) { 170 Local0 = 0x10000 - Local0 171 } 172 PBST [1] = Local0 173 PBST [3] = \_SB.PCI0.LPCB.EC0.B2PV 174 175 PBST [2] = \_SB.PCI0.LPCB.EC0.B2RW 176 177 If (\_SB.PCI0.LPCB.EC0.ACCH) { 178 If (\_SB.PCI0.LPCB.EC0.B2CH) { 179 If (\_SB.PCI0.LPCB.EC0.B2CG) { 180 PBST [0] = 2 181 } 182 } 183 } Else { 184 If (\_SB.PCI0.LPCB.EC0.B2LO) { 185 PBST [0] = 5 186 } Else { 187 PBST [0] = 1 188 } 189 } 190 } 191 192 Return(PBST) 193 } 194 195} 196 197Device (ADP1) 198{ 199 Name (_HID, "ACPI0003") 200 Method (_PSR, 0) 201 { 202 PWRS = \_SB.PCI0.LPCB.EC0.ACCH 203 Stall (0x02) 204 Return (PWRS) 205 } 206 207 Method (_PCL, 0) 208 { 209 Return (_SB) 210 } 211} 212