soc/intel/common: Simply code accessing scaling factors
[coreboot2.git] / src / soc / intel / braswell / acpi / dptf / charger.asl
blob0c9b3f51d2f0c96591072a470ae72fae529129fd
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 Device (TCHG)
5         Name (_HID, "INT3403")
6         Name (_UID, 0)
7         Name (PTYP, 0x0B)
8         Name (_STR, Unicode("Battery Charger"))
10         Method (_STA)
11         {
12                 If (\DPTE == 1) {
13                         Return (0xF)
14                 } Else {
15                         Return (0x0)
16                 }
17         }
19         /* Return charger performance states defined by mainboard */
20         Method (PPSS)
21         {
22                 Return (\_SB.CHPS)
23         }
25         /* Return maximum charger current limit */
26         Method (PPPC)
27         {
28                 /* Convert size of PPSS table to index */
29                 Local0 = SizeOf (\_SB.CHPS)
30                 Local0--
32                 /* Check if charging is disabled (AC removed) */
33                 If (\_SB.PCI0.LPCB.EC0.ACEX == 0) {
34                         /* Return last power state */
35                         Return (Local0)
36                 } Else {
37                         /* Return highest power state */
38                         Return (0)
39                 }
41                 Return (0)
42         }
44         /* Set charger current limit */
45         Method (SPPC, 1)
46         {
47                 /* Retrieve Control (index 4) for specified PPSS level */
48                 Local0 = DerefOf (DerefOf (\_SB.CHPS[ToInteger (Arg0)])[4])
50                 /* Pass Control value to EC to limit charging */
51                 \_SB.PCI0.LPCB.EC0.CHGS (Local0)
52         }
54         /* Initialize charger participant */
55         Method (INIT)
56         {
57                 /* Disable charge limit */
58                 \_SB.PCI0.LPCB.EC0.CHGD ()
59         }