soc/intel/alderlake: Add ADL-P 4+4 with 28W TDP
[coreboot.git] / src / ec / lenovo / h8 / acpi / thinkpad_bat_thresholds.asl
blobb1ff65f10046a4d0dc2e83fdc8157e547b43a0a1
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 /*
4  * This defines the battery charging thresholds setting methods tpacpi-bat can
5  * use. This implements what the vendor defines but is rather ugly...
6  */
8 /* SetBatteryCharge Start/Stop Capacity Threshold
9  * In Parameter:
10  * DWORD
11  * Bit 7-0: Charge stop capacity (Unit:%)
12  *     =0: Use battery default setting
13  *     =1-99: Threshold to stop charging battery (Relative capacity)
14  * Bit 9-8:BatteryID
15  *    = 0: Any battery
16  *    = 1: Primary battery
17  *    = 2: Secondary battery
18  *    = Others: Reserved (0)
19  * Bit 31-10: Reserved (0)
20  *     Must be 0
21  *
22  * Out Parameter:
23  * DWORD
24  * Bit 30-0: Reserved (0)
25  * Bit 31:     Error status
26  *  0 ... Success
27  *  1 ... Fail
28  */
30 #define START_THRESH_ARG 0
31 #define STOP_THRESH_ARG 1
33 // Set stop threshold
34 Method (BCSS, 1, NotSerialized)
36         Local0 = Arg0 & 0xff        // Percentage
37         Local1 = (Arg0 >> 8) & 0x3  // Battery ID
39         // Any battery
40         If (Local1 == 0)
41         {
42                 \_SB.PCI0.LPCB.EC.BAT0.SETT(STOP_THRESH_ARG, Local0)
43                 \_SB.PCI0.LPCB.EC.BAT1.SETT(STOP_THRESH_ARG, Local0)
45                 Local2 = Local0 != \_SB.PCI0.LPCB.EC.BAT0.GETT(STOP_THRESH_ARG)
46                 Local3 = Local0 != \_SB.PCI0.LPCB.EC.BAT1.GETT(STOP_THRESH_ARG)
48                 Return ((Local2 && Local3) << 31)
49         }
51         // Battery1
52         If (Local1 == 1)
53         {
54                 \_SB.PCI0.LPCB.EC.BAT0.SETT(STOP_THRESH_ARG, Local0)
55                 Return ((Local0 !=
56                         \_SB.PCI0.LPCB.EC.BAT0.GETT(STOP_THRESH_ARG)) << 31)
57         }
59         // Battery2
60         If (Local1 == 2)
61         {
62                 \_SB.PCI0.LPCB.EC.BAT1.SETT(STOP_THRESH_ARG, Local0)
63                 Return ((Local0 !=
64                         \_SB.PCI0.LPCB.EC.BAT1.GETT(STOP_THRESH_ARG)) << 31)
65         }
67         Return (1 << 31) /* Should not be reached */
70 // Set start threshold
71 Method (BCCS, 1, NotSerialized)
73         Local0 = Arg0 & 0xff        // Percentage
74         Local1 = (Arg0 >> 8) & 0x3  // Battery ID
76         // Any battery
77         If (Local1 == 0)
78         {
79                 \_SB.PCI0.LPCB.EC.BAT0.SETT(START_THRESH_ARG, Local0)
80                 \_SB.PCI0.LPCB.EC.BAT1.SETT(START_THRESH_ARG, Local0)
82                 Local2 = Local0 != \_SB.PCI0.LPCB.EC.BAT0.GETT(START_THRESH_ARG)
83                 Local3 = Local0 != \_SB.PCI0.LPCB.EC.BAT1.GETT(START_THRESH_ARG)
85                 Return ((Local2 && Local3) << 31)
86         }
88         // Battery1
89         If (Local1 == 1)
90         {
91                 \_SB.PCI0.LPCB.EC.BAT0.SETT(START_THRESH_ARG, Local0)
92                 Return ((Local0 !=
93                         \_SB.PCI0.LPCB.EC.BAT0.GETT(START_THRESH_ARG)) << 31)
94         }
96         // Battery2
97         If (Local1 == 2)
98         {
99                 \_SB.PCI0.LPCB.EC.BAT1.SETT(START_THRESH_ARG, Local0)
100                 Return ((Local0 !=
101                         \_SB.PCI0.LPCB.EC.BAT1.GETT(START_THRESH_ARG)) << 31)
102         }
104         Return (1 << 31) /* Should not be reached */
108  * GetBatteryCharge Start/Stop Capacity Threshold
109  * In Parameter:
110  * DWORD
111  * Bit 7-0:BatteryID
112  * Bit 31-8: Reserved (0)
113  *     Must be 0
115  * Out Parameter:
116  * DWORD
117  * Bit 7-0: Charge stop capacity (Unit:%)
118  *     =0: Use battery default setting
119  *     =1-99: Threshold to stop charging battery (Relative capacity)
120  *     =Others: Reserved (0)
121  * Bit 9-8: Capability of BatteryCharge Stop Capacity Threshold
122  * Bit 8:Batterycharge stop capacity threshold
123  *     (0:Not support   1:Support)
124  * Bit 9: Specify every battery parameter
125  *     (0:Not support(apply parameter for all battery)
126  *      1:Support(apply parameter for all battery))
127  * Bit 30-10: Reserved (0)
128  * Bit 31:     Error status
129  *     0 ... Success
130  *     1 ... Fail
133 // Get stop threshold
134 Method (BCSG, 1, NotSerialized)
136         // Battery1
137         If (Arg0 == 1)
138         {
139                 Return (0x300 | \_SB.PCI0.LPCB.EC.BAT0.GETT(STOP_THRESH_ARG))
140         }
142         // Battery2
143         If (Arg0 == 2)
144         {
145                 Return (0x300 | \_SB.PCI0.LPCB.EC.BAT1.GETT(STOP_THRESH_ARG))
146         }
148         Return (1 << 31)
151 // Get start threshold
152 Method (BCTG, 1, NotSerialized)
154         // Battery 1
155         If (Arg0 == 1)
156         {
157                 Return (0x300 | \_SB.PCI0.LPCB.EC.BAT0.GETT(START_THRESH_ARG))
158         }
160         // Battery 2
161         If (Arg0 == 2)
162         {
163                 Return (0x300 | \_SB.PCI0.LPCB.EC.BAT1.GETT(START_THRESH_ARG))
164         }
166         Return (1 << 31)