summaryrefslogtreecommitdiffstats
path: root/src/ec/roda/it8518/acpi/battery.asl
blob: 04fe769977e316c449c24eba725c02bbf81ec8ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* SPDX-License-Identifier: GPL-2.0-only */

//SCOPE EC0

Device (BAT0)
{
	Name (_HID, EISAID ("PNP0C0A"))
	Name (_UID, 1)
	Name (_PCL, Package () { \_SB })


	//
	// Default Static Battery Information
	//
	Name (PBIF, Package (13)
	{
		1,		//  0: Power Unit
		4800,		//  1: Design Capacity
		4650,		//  2: Last Full Charge Capacity
		1,		//  3: Battery Technology(Rechargeable)
		12608,		//  4: Design Voltage 10.8V
		0,		//  5: Design capacity of warning
		0,		//  6: Design capacity of low
		0,		//  7: Battery capacity granularity 1
		0,		//  8: Battery capacity granularity 2
		"BAT0",		//  9: Model Number
		"RT672",	// 10: Serial Number
		"LiON",		// 11: Battery Type
		"ASP"		// 12: OEM Information
	})


	Name (PBST, Package (4)
	{
		0x00000000,	// Battery State
		0xFFFFFFFF,	// Battery Present Rate
		0xFFFFFFFF,	// Battery Remaining Capacity
		0xFFFFFFFF,	// Battery Present Voltage
	})


	// Battery Slot Status
	Method (_STA, 0, Serialized)
	{
		Store ("-----> BAT0: _STA", Debug)

		Store (0x0F, Local0)

		Store (ECPS, Local1)
		And (Local1, 0x02, Local1)
		If (LEqual (Local1, 0x02))
		{
			Store (0x1F, Local0)
		}

		Store ("<----- BAT0: _STA", Debug)

		Return (Local0)
	}

	Method (_BIF, 0, Serialized)
	{
		Store ("-----> BAT0: _BIF", Debug)

		Store (B0FC, Index (PBIF, 0x02))
		Store (Divide (Multiply (B0FC, 6), 100), Index (PBIF, 0x05))
		Store (Divide (Multiply (B0FC, 3), 100), Index (PBIF, 0x06))

		Store ("<----- BAT0: _BIF", Debug)

		Return (PBIF)
	}

	Method (_BST, 0, Serialized)
	{
		Store ("-----> BAT0: _BST", Debug)

		Store (B0ST, Local0)
		And (Local0, 0x40, Local0)
		If (LEqual (Local0, 0x40))
		{
			If (LEqual (PWRS, 1))
			{
				Store (0x00, Index (PBST, 0x00))
			}
			Else
			{
				Store (0x01, Index (PBST, 0x00))
			}
		}
		Else
		{
			Store (0x02, Index (PBST, 0x00))
		}

		Store (B0AC, Local1)
		If (LGreaterEqual (Local1, 0x8000))
		{
			Subtract (0x00010000, Local1, Local1)
		}

		Store (Local1, Index (PBST, 0x01))
		Store (B0RC, Index (PBST, 0x02))
		Store (B0VT, Index (PBST, 0x03))

		Store ("<----- BAT0: _BST", Debug)

		Return (PBST)
	}
}