Add support for ENE932 EC w/ Compal firmware
Change-Id: I19b03139e7edfee6ff3e0bcef735bb36bfadc354 Signed-off-by: Stefan Reinauer <reinauer@google.com> Reviewed-on: http://review.coreboot.org/2024 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
parent
f89e6b22c0
commit
d8a5fd2321
|
@ -1,3 +1,4 @@
|
||||||
source src/ec/acpi/Kconfig
|
source src/ec/acpi/Kconfig
|
||||||
|
source src/ec/compal/Kconfig
|
||||||
source src/ec/lenovo/Kconfig
|
source src/ec/lenovo/Kconfig
|
||||||
source src/ec/smsc/Kconfig
|
source src/ec/smsc/Kconfig
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
subdirs-$(CONFIG_EC_ACPI) += acpi
|
subdirs-$(CONFIG_EC_ACPI) += acpi
|
||||||
subdirs-y += lenovo smsc
|
subdirs-y += compal lenovo smsc
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
source src/ec/compal/ene932/Kconfig
|
|
@ -0,0 +1 @@
|
||||||
|
subdirs-$(CONFIG_EC_COMPAL_ENE932) += ene932
|
|
@ -0,0 +1,4 @@
|
||||||
|
config EC_COMPAL_ENE932
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
Interface to COMPAL ENE932 Embedded Controller.
|
|
@ -0,0 +1,3 @@
|
||||||
|
ramstage-y += ec.c
|
||||||
|
smm-y += ec.c
|
||||||
|
smm-y += ../../../lib/delay.c
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011-2012 The Chromium OS Authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; version 2 of
|
||||||
|
* the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Scope (EC0)
|
||||||
|
|
||||||
|
Device (AC)
|
||||||
|
{
|
||||||
|
Name (_HID, "ACPI0003")
|
||||||
|
Name (_PCL, Package () { \_SB })
|
||||||
|
|
||||||
|
Method (_PSR)
|
||||||
|
{
|
||||||
|
Store(ADPT, Local0)
|
||||||
|
Return(Local0)
|
||||||
|
}
|
||||||
|
|
||||||
|
Method (_STA)
|
||||||
|
{
|
||||||
|
Return (0x0F)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,158 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011-2012 The Chromium OS Authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; version 2 of
|
||||||
|
* the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Scope (EC0)
|
||||||
|
|
||||||
|
Device (BATX)
|
||||||
|
{
|
||||||
|
Name (_HID, EISAID ("PNP0C0A"))
|
||||||
|
Name (_UID, 1)
|
||||||
|
Name (_PCL, Package () { \_SB })
|
||||||
|
|
||||||
|
Name (PBIF, Package () {
|
||||||
|
0x00000001, // Power Unit: mAh
|
||||||
|
0xFFFFFFFF, // Design Capacity
|
||||||
|
0xFFFFFFFF, // Last Full Charge Capacity
|
||||||
|
0x00000001, // Battery Technology: Rechargeable
|
||||||
|
0xFFFFFFFF, // Design Voltage
|
||||||
|
0x00000003, // Design Capacity of Warning
|
||||||
|
0xFFFFFFFF, // Design Capacity of Low
|
||||||
|
0x00000001, // Capacity Granularity 1
|
||||||
|
0x00000001, // Capacity Granularity 2
|
||||||
|
"", // Model Number
|
||||||
|
"", // Serial Number
|
||||||
|
"LION", // Battery Type
|
||||||
|
"" // OEM Information
|
||||||
|
})
|
||||||
|
|
||||||
|
Name (PBST, Package () {
|
||||||
|
0x00000000, // Battery State
|
||||||
|
0xFFFFFFFF, // Battery Present Rate
|
||||||
|
0xFFFFFFFF, // Battery Remaining Capacity
|
||||||
|
0xFFFFFFFF, // Battery Present Voltage
|
||||||
|
})
|
||||||
|
Name (BTNM, Zero) // Battery number
|
||||||
|
|
||||||
|
// Workaround for full battery status, enabled by default
|
||||||
|
Name (BFWK, One)
|
||||||
|
|
||||||
|
// Method to enable full battery workaround
|
||||||
|
Method (BFWE)
|
||||||
|
{
|
||||||
|
Store (One, BFWK)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method to disable full battery workaround
|
||||||
|
Method (BFWD)
|
||||||
|
{
|
||||||
|
Store (Zero, BFWK)
|
||||||
|
}
|
||||||
|
|
||||||
|
Method (_STA, 0, Serialized)
|
||||||
|
{
|
||||||
|
If (BOL0) {
|
||||||
|
Return (0x1F)
|
||||||
|
} Else {
|
||||||
|
Return (0x0F)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Method (_BIF, 0, Serialized)
|
||||||
|
{
|
||||||
|
// Update fields from EC
|
||||||
|
Store (BAM0, Index (PBIF, 0))
|
||||||
|
Store (BDC0, Index (PBIF, 1))
|
||||||
|
Store (BFC0, Index (PBIF, 2))
|
||||||
|
Store (BDV0, Index (PBIF, 4))
|
||||||
|
Divide(BFC0, 0x64, Local0, Local1)
|
||||||
|
Multiply(Local1, 0x0A, Local1)
|
||||||
|
Store(Local1, Index(PBIF, 5))
|
||||||
|
Divide(BFC0, 0x64, Local0, Local1)
|
||||||
|
Multiply(Local1, 0x03, Local1)
|
||||||
|
Store (Local1, Index (PBIF, 6))
|
||||||
|
|
||||||
|
Store (ToString(BATD), Index (PBIF, 9)) // model
|
||||||
|
Store (ToHexString(BSN0), Index (PBIF, 10)) // serial
|
||||||
|
Store (ToString(BMFN), Index (PBIF, 12)) // venor
|
||||||
|
|
||||||
|
Store(BDN0, BTNM) // Save the battery number
|
||||||
|
|
||||||
|
Return (PBIF)
|
||||||
|
}
|
||||||
|
|
||||||
|
Method (_BST, 0, Serialized)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// 0: BATTERY STATE
|
||||||
|
//
|
||||||
|
// bit 0 = discharging
|
||||||
|
// bit 1 = charging
|
||||||
|
// bit 2 = critical level
|
||||||
|
//
|
||||||
|
|
||||||
|
// Get battery state from EC and save it for the charging workaround
|
||||||
|
Store (BST0, Local0)
|
||||||
|
Store (Local0, Index (PBST, 0))
|
||||||
|
|
||||||
|
//
|
||||||
|
// 1: BATTERY PRESENT RATE/CURRENT
|
||||||
|
//
|
||||||
|
|
||||||
|
Store (BAC0, Local1)
|
||||||
|
Subtract(0xFFFF, Local1, Local1)
|
||||||
|
Store (Local1, Index (PBST, 1))
|
||||||
|
|
||||||
|
//
|
||||||
|
// 2: BATTERY REMAINING CAPACITY
|
||||||
|
//
|
||||||
|
Multiply(BFC0, GAU0, Local1)
|
||||||
|
Divide(Local1, 0x64, Local2, Local1)
|
||||||
|
|
||||||
|
If (LAnd (BFWK, LAnd (ADPT, LNot (Local0)))) {
|
||||||
|
// On AC power and battery is neither charging
|
||||||
|
// nor discharging. Linux expects a full battery
|
||||||
|
// to report same capacity as last full charge.
|
||||||
|
// https://bugzilla.kernel.org/show_bug.cgi?id=12632
|
||||||
|
Store (GAU0, Local2)
|
||||||
|
|
||||||
|
// See if within ~3% of full
|
||||||
|
ShiftRight (Local2, 5, Local3)
|
||||||
|
If (LAnd (LGreater (Local1, Subtract (Local2, Local3)),
|
||||||
|
LLess (Local1, Add (Local2, Local3))))
|
||||||
|
{
|
||||||
|
Store (Local2, Local1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Store (Local1, Index (PBST, 2))
|
||||||
|
|
||||||
|
//
|
||||||
|
// 3: BATTERY PRESENT VOLTAGE
|
||||||
|
//
|
||||||
|
Store (BPV0, Index (PBST, 3))
|
||||||
|
|
||||||
|
// Check the Battery Number
|
||||||
|
If(LNotEqual(BDN0, BTNM)) {
|
||||||
|
Notify(BATX, 0x81)
|
||||||
|
}
|
||||||
|
|
||||||
|
Return (PBST)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,355 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011-2012 The Chromium OS Authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The mainboard must define a PNOT method to handle power
|
||||||
|
* state notifications and Notify CPU device objects to
|
||||||
|
* re-evaluate their _PPC and _CST tables.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Device (EC0)
|
||||||
|
{
|
||||||
|
Name (_HID, EISAID ("PNP0C09"))
|
||||||
|
Name (_UID, 1)
|
||||||
|
Name (_GPE, EC_SCI) // GPE for Runtime SCI
|
||||||
|
|
||||||
|
OperationRegion (ERAM, EmbeddedControl, 0x00, 0xff)
|
||||||
|
Field (ERAM, ByteAcc, Lock, Preserve)
|
||||||
|
{
|
||||||
|
// EC Name Space Configuration
|
||||||
|
Offset(0x00),
|
||||||
|
, 1, // Reserved ; 00h.0
|
||||||
|
LCDS, 1, // 1= BACKLIGHT ON , 0= BACKLIGHT OFF ; 00h.1
|
||||||
|
, 6, // Reserved ; 00h.2 ~ 00h.6
|
||||||
|
HTBN, 8, // HOTKEY_BUTTON_NUMBER ; 01h For ABO Hot Key Function
|
||||||
|
HTBT, 8, // HOTKEY_BUTTON_TYPE ; 02h For ABO Hot Key Function
|
||||||
|
LMEN, 1, // Launch Manager enable .(1=Enable ) ; 03h.0, Lauanch manage
|
||||||
|
, 7, // Reserved ; 03h.1 ~ 03h.7
|
||||||
|
ADAP, 2, // Adaptor Type ; 04h.0 ~ 1
|
||||||
|
// 0x00 = default(65w)
|
||||||
|
// 0x01 = 65w
|
||||||
|
// 0x02 = 90w
|
||||||
|
// 0x03 = 120w
|
||||||
|
, 6, // Reserved ; 04h.2 ~ 04h.7
|
||||||
|
Offset(0x08), // Project Common Name space definition ; 08h - 2Ch
|
||||||
|
Offset(0x2D),
|
||||||
|
DSPM, 1, // Display Mode.(0=dGPU, 1=iGPU ) ; 2Dh.0
|
||||||
|
Offset(0x2E),
|
||||||
|
EFP1, 4, // Turbo Off P-State ; 2Eh.3-0
|
||||||
|
Offset(0x40), // ABO Common Name space definition ; 2F - 5Ch
|
||||||
|
Offset(0x5D),
|
||||||
|
ENIB, 16, // Ext_NameSpace_Index ; 5Dh
|
||||||
|
// Ext_NameSpace_Bank ; 5Eh
|
||||||
|
ENDD, 8, // Ext_NameSpace_Data ; 5Fh
|
||||||
|
Offset(0x60),
|
||||||
|
SMPR, 8, // SMBus protocol register ; 60h
|
||||||
|
SMST, 8, // SMBus status register ; 61h
|
||||||
|
SMAD, 8, // SMBus address register ; 62h
|
||||||
|
SMCM, 8, // SMBus command register ; 63h
|
||||||
|
SMD0, 0x100, // SMBus data regs (32) ; 64h - 83h
|
||||||
|
BCNT, 8, // SMBus Block Count ; 84h
|
||||||
|
SMAA, 24, // SMBus Alarm Address ; 85h - 87h
|
||||||
|
Offset(0x90),
|
||||||
|
BMFN, 72, // Battery Manufacture name ; 90h - 98h
|
||||||
|
BATD, 56, // Battery Device name ; 99h - 9fh
|
||||||
|
Offset(0xA1),
|
||||||
|
, 1, // Reserve ; A1h.0
|
||||||
|
VIDO, 1, // Video Out Button (1=Pressed) ; A1h.1
|
||||||
|
TOUP, 1, // Touch Pad Button (0=On, 1=Off) ; A1h.2
|
||||||
|
Offset(0xA2),
|
||||||
|
ODTS, 8, // OS Shutdown Temp2 (DTS) ; A2h
|
||||||
|
Offset(0xA3),
|
||||||
|
OSTY, 3, // OSTYPE : 000- XP ; A3h.0-2
|
||||||
|
// 001- Vista
|
||||||
|
// 010- Linux
|
||||||
|
// 011- Win7
|
||||||
|
, 4, // Reserve ; A3h.3-6
|
||||||
|
ADPT, 1, // AC Adapter (0=OffLine, 1=OnLine) ; A3h.7
|
||||||
|
Offset(0xA4),
|
||||||
|
PWAK, 1, // PME Wake Enable(0=Disable, 1=Enable) ; A4h.0
|
||||||
|
MWAK, 1, // Modem Wake Enable(0/1=Disable/Enable); A4h.1
|
||||||
|
LWAK, 1, // LAN Wake Enable (0=Disable, 1=Enable); A4h.2
|
||||||
|
RWAK, 1, // RTC Wake Enable(0=DIsable,1=Enable) ; A4h.3
|
||||||
|
WWAK, 1, // WLAN wake Enable (0=Disable,1=Enable); A4h.4
|
||||||
|
UWAK, 1, // USB WAKE(0=Disable, 1=Enable) ; A4h.5
|
||||||
|
KWAK, 1, // Keyboard WAKE(0=Disable,1=Enable) ; A4h.6
|
||||||
|
TWAK, 1, // TouchPad WAKE(0=Disable,1=Enable) ; A4h.7
|
||||||
|
Offset(0xA5),
|
||||||
|
CCAC, 1, // Charge Current (1=AC OFF) ; A5h.0
|
||||||
|
AOAC, 1, // Adapter OVP (1=AC OFF) ; A5h.1
|
||||||
|
BLAC, 1, // Batt learning (1=AC OFF) ; A5h.2
|
||||||
|
PSRC, 1, // Command (1=AC OFF) ; A5h.3
|
||||||
|
BOAC, 1, // Batt OVP (1=AC OFF) ; A5h.4
|
||||||
|
LCAC, 1, // Leak Current (1=AC OFF) ; A5h.5
|
||||||
|
AAAC, 1, // Air Adapter (1=AC OFF) ; A5h.6
|
||||||
|
ACAC, 1, // AC Off (1=AC OFF) ; A5h.7
|
||||||
|
Offset(0xA6),
|
||||||
|
S3ST, 1, // System entry S3 State : A6.0
|
||||||
|
S3RM, 1, // System resume from S3 State : A6.1
|
||||||
|
S4ST, 1, // System entry S4 State : A6.2
|
||||||
|
S4RM, 1, // System resume from S4 State : A6.3
|
||||||
|
S5ST, 1, // System entry S4 State : A6.4
|
||||||
|
S5RM, 1, // System resume from S4 State : A6.5
|
||||||
|
, 2, // Reserve ; A6h.6-7
|
||||||
|
Offset(0xA7),
|
||||||
|
OSTT, 8, // OS Throttling Temp ; A7h
|
||||||
|
OSST, 8, // OS Shutdown Temp ; A8h
|
||||||
|
THLT, 8, // Throttling Temp ; A9h
|
||||||
|
TCNL, 8, // Tcontrol Temp ; AAh
|
||||||
|
MODE, 1, // Mode(0=Local, 1=Remote) ; ABh.0
|
||||||
|
, 2, // Reserve ; ABh.1-2
|
||||||
|
INIT, 1, // INITOK(0/1=Controlled by OS/EC) ; ABh.3
|
||||||
|
FAN1, 1, // FAN1 Active ; ABh.4
|
||||||
|
FAN2, 1, // FAN2 Active ; ABh.5
|
||||||
|
FANT, 1, // FAN Speed Time OK ; ABh.6
|
||||||
|
SKNM, 1, // Skin Mode (0/1=Skin Address 90/92) ; ABh.7
|
||||||
|
SDTM, 8, // Shutdown Thermal Temperature ; ACh
|
||||||
|
FSSN, 4, // Fan Speed Step Number ; ADh.0-3
|
||||||
|
// 00 : Fan Off
|
||||||
|
// 01 : Fan On Speed 1
|
||||||
|
// 10 : Fan On Speed 2
|
||||||
|
// 11 : Fan On Speed 3
|
||||||
|
FANU, 4, // Machine Fan's number ; ADh.4-7
|
||||||
|
PCVL, 4, // Throttling Level ; AEh.0-3
|
||||||
|
// 0000 : Nothing
|
||||||
|
// 0001 : Clock throttling 12.5%
|
||||||
|
// 0010 : Clock throttling 25%
|
||||||
|
// 0011 : Clock throttling 37.5%
|
||||||
|
// 0100 : Clock throttling 50%
|
||||||
|
, 2, // Reserved ; AEh.4-5
|
||||||
|
SWTO, 1, // SW Throttling (1=Active) ; AEh.6
|
||||||
|
TTHR, 1, // HW (THRM#) Throttling (1=Active) ; AEh.7
|
||||||
|
TTHM, 1, // TS_THERMAL(1:Throttling for thermal) ; AFh.0
|
||||||
|
THTL, 1, // THROTTLING(1:Ctrl H/W throtting act) ; AFh.1
|
||||||
|
, 2, // Reserved ; AFh.2-3
|
||||||
|
NPST, 4, // Number of P-State level ; AFh.4-7
|
||||||
|
CTMP, 8, // Current CPU Temperature ; B0h
|
||||||
|
CTML, 8, // CPU local temperature ; B1h
|
||||||
|
SKTA, 8, // Skin Temperature A ; B2h
|
||||||
|
SKTB, 8, // GPU Temperature ; B3h
|
||||||
|
SKTC, 8, // Skin Temperature C ; B4h
|
||||||
|
, 8, // Reserved ; B5h
|
||||||
|
NTMP, 8, // North Bridge Diode Temp ; B6h
|
||||||
|
Offset(0xB7),
|
||||||
|
, 1, // Reserved ; B7h.0
|
||||||
|
SKEY, 1, // Security key event ; B7h.1
|
||||||
|
DIGM, 1, // Digital Mode (1=Selected) ; B7h.2
|
||||||
|
CDLE, 1, // CD lock mode enable ; B7h.3
|
||||||
|
, 4, // Reserved ; B7h.4-7
|
||||||
|
, 1, // Reserved ; B8h.0
|
||||||
|
LIDF, 1, // LID flag (1=Closed, 0=Opened) ; B8h.1
|
||||||
|
PMEE, 1, // PME event (0=off, 1=On) ; B8h.2
|
||||||
|
PWBE, 1, // Power button event (0=off, 1=On) ; B8h.3
|
||||||
|
RNGE, 1, // Ring in event (0=off, 1=On) ; B8h.4
|
||||||
|
BTWE, 1, // Bluetooth wake event (0=off, 1=On) ; B8h.5
|
||||||
|
, 2, // Reserved ; B8h.6-7
|
||||||
|
Offset(0xB9),
|
||||||
|
BRTS, 8, // Brightness Value ; B9h
|
||||||
|
S35M, 1, // S3.5 HotKey test mode ; BAh.0
|
||||||
|
S35S, 1, // S3.5 function status ; BAh.1
|
||||||
|
, 2, // Reserved ; BAh.2-3
|
||||||
|
FFEN, 1, // IRST support bit (1= Support) ; BAh.4
|
||||||
|
FFST, 1, // IRST status flag ; BAh.5
|
||||||
|
, 2, // Reserved ; BAh.6-7
|
||||||
|
WLAT, 1, // Wireless LAN (0=Inactive, 1=Active) ; BBh.0
|
||||||
|
BTAT, 1, // BlueTooth (0=Inactive, 1=Active) ; BBh.1
|
||||||
|
WLEX, 1, // Wireless LAN (0=Not Exist, 1=Exist) ; BBh.2
|
||||||
|
BTEX, 1, // BlueTooth (0=Not Exist, 1=Exist) ; BBh.3
|
||||||
|
KLSW, 1, // Kill Switch (0=Off, 1=On) ; BBh.4
|
||||||
|
WLOK, 1, // Wireless LAN Initialize OK ; BBh.5
|
||||||
|
AT3G, 1, // 3G (0=non-active, 1=active) ; BBh.6
|
||||||
|
EX3G, 1, // 3G (0=Not Exist, 1=Exist) ; BBh.7
|
||||||
|
PJID, 8, // Project ID ; BCh
|
||||||
|
CPUJ, 3, // CPU Type ; BDh.0-2
|
||||||
|
// 00, Tj85,
|
||||||
|
// 01, Tj90,
|
||||||
|
// 02, Tj100,
|
||||||
|
// 03, Tj105,
|
||||||
|
// 04 - 07, Reserved
|
||||||
|
CPNM, 3, // CPU Core number ; BDh.3-5
|
||||||
|
// 00, Single Core
|
||||||
|
// 01, Dual Core
|
||||||
|
// 02, Quad Core
|
||||||
|
// 03 - 07, Reserved
|
||||||
|
GATY, 2, // VGA Type ; BDh.6-7
|
||||||
|
// 00, UMA
|
||||||
|
// 01. Discrete
|
||||||
|
// 02 - 03, Reserved
|
||||||
|
Offset(0xBE),
|
||||||
|
BOL0, 1, // Batt0 (0=OffLine, 1=OnLine) ; BEh.0
|
||||||
|
BOL1, 1, // Batt1 (0=OffLine, 1=OnLine) ; BEh.1
|
||||||
|
, 2, // Reserved ; BEh.2-3
|
||||||
|
BCC0, 1, // Batt0 be charging (1=Charging) ; BEh.4
|
||||||
|
BCC1, 1, // Batt1 be charging (1=Charging) ; BEh.5
|
||||||
|
, 2, // Reserved ; BEh.6-7
|
||||||
|
BPU0, 1, // Batt0 (1=PowerUp) ; BFh.0
|
||||||
|
BPU1, 1, // Batt1 (1=PowerUp) ; BFh.1
|
||||||
|
, 2, // Reserved ; BFh.2-3
|
||||||
|
BOS0, 1, // Batt0 (1=OnSMBUS) ; BFh.4
|
||||||
|
BOS1, 1, // Batt1 (1=OnSMBUS) ; BFh.5
|
||||||
|
, 2, // Reserved ; BFh.6-7
|
||||||
|
Offset(0xC0),
|
||||||
|
BTY0, 1, // Batt Type (0=NiMh, 1=LiIon) ; C0h.0
|
||||||
|
BAM0, 1, // Battery mode (0=mA, 1=mW) ; C0h.1
|
||||||
|
BAL0, 1, // Low Battery ; C0h.2
|
||||||
|
, 1, // Reserved ; C0h.3
|
||||||
|
BMF0, 3, // Battery Manufacturer ; C0h.4-6
|
||||||
|
// 001 : Sanyo
|
||||||
|
// 010 : Sony
|
||||||
|
// 100 : Pansonic
|
||||||
|
// 101 : CPT
|
||||||
|
, 1, // Reserved ; C0h.7
|
||||||
|
BST0, 8, // Battery Status ; C1h
|
||||||
|
// Bit0 : Discharging
|
||||||
|
// Bit1 : Charging
|
||||||
|
// Bit2 : Discharg and Critical Low
|
||||||
|
// Bit3-7 : Reserved
|
||||||
|
BRC0, 16, // Batt Remaining Capacity ; C2h, C3h
|
||||||
|
BSN0, 16, // Batt Serial Number ; C4h, C5h
|
||||||
|
BPV0, 16, // Batt Present Voltage ; C6h, C7h
|
||||||
|
BDV0, 16, // Batt Design Voltage ; C8h, C9h
|
||||||
|
BDC0, 16, // Batt Design Capacity ; CAh, CBh
|
||||||
|
BFC0, 16, // Batt Last Full Charge Capacity ; CCh, CDh
|
||||||
|
GAU0, 8, // Batt Gasgauge ; CEh
|
||||||
|
CYC0, 8, // Batt Cycle Counter ; CFh
|
||||||
|
BPC0, 16, // Batt Current ; D0h, D1h
|
||||||
|
BAC0, 16, // Batt Average Current ; D2h, D3h
|
||||||
|
BTW0, 8, // Batt Comsuption ; D4h
|
||||||
|
BVL0, 8, // Batt Battery Volt ; D5h
|
||||||
|
BTM0, 8, // Batt Battery Temp ; D6h
|
||||||
|
BAT0, 8, // Batt Average Temp (Degree C) ; D7h
|
||||||
|
BCG0, 16, // Batt charge current ; D8h, D9h
|
||||||
|
BCT0, 8, // Batt Current Temp Semple counter ; DAh
|
||||||
|
BCI0, 8, // BATT CMD Index for read BATT(SMB) ; DBh
|
||||||
|
BCM0, 8, // Count up to Communicate BATT ; DCh
|
||||||
|
BOT0, 8, // Count up if BATT over Temp ; DDh
|
||||||
|
BSSB, 16, // BATT Battery Status SMB ; DEh, DFh
|
||||||
|
BOV0, 8, // BATT Over Voltage Count ; E0h
|
||||||
|
BCF0, 8, // BATT Communication Fail Counter ; E1h
|
||||||
|
BAD0, 8, // Battery Voltage of ADC ; E2h
|
||||||
|
BCV1, 16, // Cell Voltage 1 (mV) ; E3h, E4h
|
||||||
|
BCV2, 16, // Cell Voltage 2 (mV) ; E5h, E6h
|
||||||
|
BCV3, 16, // Cell Voltage 3 (mV) ; E7h, E8h
|
||||||
|
BCV4, 16, // Cell Voltage 4 (mV) ; E9h, EAh
|
||||||
|
Offset(0xF4),
|
||||||
|
BMD0, 16, // Manufacture Date ; F4h, F5h
|
||||||
|
// Batt Day ; BIT[4:0] (Day)
|
||||||
|
// Batt Month ; BIT[9:5] (Month)
|
||||||
|
// Batt Year ; BIT[15:10] (Year)
|
||||||
|
BACV, 16, // Charging Voltage ; F6h, F7h
|
||||||
|
BDN0, 8, // Battery Cell Number ; F8h
|
||||||
|
, 8 // Last byte for Reserved.
|
||||||
|
}
|
||||||
|
|
||||||
|
Method (_CRS, 0, NotSerialized)
|
||||||
|
{
|
||||||
|
Name (ECMD, ResourceTemplate()
|
||||||
|
{
|
||||||
|
IO (Decode16, 0x62, 0x62, 0, 1)
|
||||||
|
IO (Decode16, 0x66, 0x66, 0, 1)
|
||||||
|
})
|
||||||
|
Return (ECMD)
|
||||||
|
}
|
||||||
|
|
||||||
|
Method (_REG, 2, NotSerialized)
|
||||||
|
{
|
||||||
|
// Initialize AC power state
|
||||||
|
Store (ADPT, \PWRS)
|
||||||
|
|
||||||
|
// Initialize LID switch state
|
||||||
|
Store (GP15, \LIDS)
|
||||||
|
|
||||||
|
// Force a read of CPU temperature
|
||||||
|
Store (CTML, Local0)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EC Query Responses
|
||||||
|
*
|
||||||
|
* DTS temperature update 10h
|
||||||
|
* Decrease brightness event 11h
|
||||||
|
* Increase brightness event 12h
|
||||||
|
* Cover lid open 15h
|
||||||
|
* Cover lid close 16h
|
||||||
|
* External device plugged 17h
|
||||||
|
* External device removed 18h
|
||||||
|
* Bluetooth wake up event 19h
|
||||||
|
* Scr expand event 1Bh
|
||||||
|
* Display toggle 1Ch
|
||||||
|
* CPU fast/slow event 1Dh
|
||||||
|
* Battery in critical low 22h
|
||||||
|
* Battery in low state 23h
|
||||||
|
* Battery pack plug in 25h
|
||||||
|
* Docking in 2Ah
|
||||||
|
* Undock 2Bh
|
||||||
|
* Power button pressed 32h
|
||||||
|
* AC plug in 37h
|
||||||
|
* AC removed 38h
|
||||||
|
* Modem ring in 3Ah
|
||||||
|
* PME signal active 3Eh
|
||||||
|
* Hotkey make Function 45h
|
||||||
|
* Hotkey break Function 46h
|
||||||
|
*/
|
||||||
|
|
||||||
|
// AC Power Connected
|
||||||
|
Method (_Q37, 0, NotSerialized)
|
||||||
|
{
|
||||||
|
Store (One, \PWRS)
|
||||||
|
Notify (AC, 0x80)
|
||||||
|
Notify (BATX, 0x80)
|
||||||
|
// TODO ADD CPU power profile
|
||||||
|
\PNOT ()
|
||||||
|
}
|
||||||
|
|
||||||
|
// AC Power Removed
|
||||||
|
Method (_Q38, 0, NotSerialized)
|
||||||
|
{
|
||||||
|
Store (Zero, \PWRS)
|
||||||
|
Notify (AC, 0x80)
|
||||||
|
Notify (BATX, 0x80)
|
||||||
|
// TODO ADD CPU power profile
|
||||||
|
\PNOT ()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Battery at critical low state
|
||||||
|
Method (_Q22, 0, NotSerialized)
|
||||||
|
{
|
||||||
|
Notify (BATX, 0x80)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Battery insert
|
||||||
|
Method(_Q25, 0, NotSerialized)
|
||||||
|
{
|
||||||
|
Notify(BATX, 0x81)
|
||||||
|
Notify(BATX, 0x80)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commuation Device Disable/Enable Event
|
||||||
|
Method(_Q60, 0, NotSerialized)
|
||||||
|
{
|
||||||
|
IF(WLEX) //if Wlan exist
|
||||||
|
{
|
||||||
|
//TODO Store(WLAT, LANE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "ac.asl"
|
||||||
|
#include "battery.asl"
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 The ChromiumOS Authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Scope is \_SB.PCI0.LPCB
|
||||||
|
|
||||||
|
Device (SIO) {
|
||||||
|
Name (_UID, 0)
|
||||||
|
Name (_ADR, 0)
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef SIO_EC_ENABLE_PS2K
|
||||||
|
Device (PS2K) // Keyboard
|
||||||
|
{
|
||||||
|
Name (_UID, 0)
|
||||||
|
Name (_ADR, 0)
|
||||||
|
Name (_HID, EISAID("PNP0303"))
|
||||||
|
Name (_CID, EISAID("PNP030B"))
|
||||||
|
|
||||||
|
Method (_STA, 0, NotSerialized) {
|
||||||
|
Return (0x0F)
|
||||||
|
}
|
||||||
|
|
||||||
|
Name (_CRS, ResourceTemplate()
|
||||||
|
{
|
||||||
|
FixedIO (0x60, 0x01)
|
||||||
|
FixedIO (0x64, 0x01)
|
||||||
|
IRQNoFlags () {1}
|
||||||
|
})
|
||||||
|
|
||||||
|
Name (_PRS, ResourceTemplate()
|
||||||
|
{
|
||||||
|
StartDependentFn (0, 0) {
|
||||||
|
FixedIO (0x60, 0x01)
|
||||||
|
FixedIO (0x64, 0x01)
|
||||||
|
IRQNoFlags () {1}
|
||||||
|
}
|
||||||
|
EndDependentFn ()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 The Chromium OS Authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; version 2 of
|
||||||
|
* the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _EC_COMPAL_ENE932_CHIP_H
|
||||||
|
#define _EC_COMPAL_ENE932_CHIP_H
|
||||||
|
|
||||||
|
#include <device/device.h>
|
||||||
|
#include <pc80/keyboard.h>
|
||||||
|
|
||||||
|
struct chip_operations;
|
||||||
|
extern struct chip_operations ec_compal_ene932_ops;
|
||||||
|
|
||||||
|
struct ec_compal_ene932_config {
|
||||||
|
struct pc_keyboard keyboard;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _EC_COMPAL_ENE932_CHIP_H */
|
|
@ -0,0 +1,180 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 The Chromium OS Authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; version 2 of
|
||||||
|
* the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __PRE_RAM__
|
||||||
|
|
||||||
|
#include <console/console.h>
|
||||||
|
#include <device/device.h>
|
||||||
|
#include <device/pnp.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <arch/io.h>
|
||||||
|
#include <delay.h>
|
||||||
|
#include "ec.h"
|
||||||
|
#include "chip.h"
|
||||||
|
|
||||||
|
/* kbc helper functions from drivers/pc80/keyboard.c. TODO: share functions. */
|
||||||
|
static int kbc_input_buffer_empty(void)
|
||||||
|
{
|
||||||
|
u32 timeout;
|
||||||
|
for(timeout = KBC_TIMEOUT_IN_MS; timeout && (inb(KBD_STATUS) & KBD_IBF);
|
||||||
|
timeout--) {
|
||||||
|
mdelay(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!timeout) {
|
||||||
|
printk(BIOS_WARNING,
|
||||||
|
"Unexpected Keyboard controller input buffer full\n");
|
||||||
|
}
|
||||||
|
return !!timeout;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int kbc_output_buffer_full(void)
|
||||||
|
{
|
||||||
|
u32 timeout;
|
||||||
|
for(timeout = KBC_TIMEOUT_IN_MS; timeout && ((inb(KBD_STATUS)
|
||||||
|
& KBD_OBF) == 0); timeout--) {
|
||||||
|
mdelay(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!timeout) {
|
||||||
|
printk(BIOS_INFO, "Keyboard controller output buffer result timeout\n");
|
||||||
|
}
|
||||||
|
return !!timeout;
|
||||||
|
}
|
||||||
|
|
||||||
|
int kbc_cleanup_buffers(void)
|
||||||
|
{
|
||||||
|
u32 timeout;
|
||||||
|
for(timeout = KBC_TIMEOUT_IN_MS; timeout && (inb(KBD_STATUS)
|
||||||
|
& (KBD_OBF | KBD_IBF)); timeout--) {
|
||||||
|
mdelay(1);
|
||||||
|
inb(KBD_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!timeout) {
|
||||||
|
printk(BIOS_ERR, "Couldn't cleanup the keyboard controller buffers\n");
|
||||||
|
printk(BIOS_ERR, "Status (0x%x): 0x%x, Buffer (0x%x): 0x%x\n",
|
||||||
|
KBD_STATUS, inb(KBD_STATUS), KBD_DATA, inb(KBD_DATA));
|
||||||
|
}
|
||||||
|
|
||||||
|
return !!timeout;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* The ENE 60/64 EC registers are the same comand/status IB/OB KBC pair.
|
||||||
|
* Check status from 64 port before each command.
|
||||||
|
*
|
||||||
|
* Ex. Get panel ID command C43/D77
|
||||||
|
* Check IBF empty. Then Write 0x43(CMD) to 0x64 Port
|
||||||
|
* Check IBF empty. Then Write 0x77(DATA) to 0x60 Port
|
||||||
|
* Check OBF set. Then Get Data(0x03:panel ID) from 0x60
|
||||||
|
* Different commands return may or maynot respond and may have multiple
|
||||||
|
* bytes. Keep it simple for nor
|
||||||
|
*/
|
||||||
|
|
||||||
|
u8 ec_kbc_read_ob(void)
|
||||||
|
{
|
||||||
|
if (!kbc_output_buffer_full()) return 0;
|
||||||
|
return inb(KBD_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ec_kbc_write_cmd(u8 cmd)
|
||||||
|
{
|
||||||
|
if (!kbc_input_buffer_empty()) return;
|
||||||
|
outb(cmd, KBD_COMMAND);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ec_kbc_write_ib(u8 data)
|
||||||
|
{
|
||||||
|
if (!kbc_input_buffer_empty()) return;
|
||||||
|
outb(data, KBD_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These functions are for accessing the ENE932 device space, but are not
|
||||||
|
* currently used.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
static u8 ec_io_read(u16 addr)
|
||||||
|
{
|
||||||
|
outb(addr >> 8, EC_IO_HIGH);
|
||||||
|
outb(addr & 0xff, EC_IO_LOW);
|
||||||
|
return inb(EC_IO_DATA);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
/*static void ec_write(u16 addr, u8 data)
|
||||||
|
{
|
||||||
|
outb(addr >> 8, EC_IO_HIGH);
|
||||||
|
outb(addr & 0xff, EC_IO_LOW;
|
||||||
|
outb(data, EC_IO_DATA);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __SMM__
|
||||||
|
static void ene932_init(device_t dev)
|
||||||
|
{
|
||||||
|
struct ec_compal_ene932_config *conf = dev->chip_info;
|
||||||
|
|
||||||
|
|
||||||
|
if (!dev->enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
printk(BIOS_DEBUG, "Compal ENE932: Initializing keyboard.\n");
|
||||||
|
pc_keyboard_init(&conf->keyboard);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void ene932_read_resources(device_t dev)
|
||||||
|
{
|
||||||
|
/* This function avoids an error on serial console. */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void ene932_enable_resources(device_t dev)
|
||||||
|
{
|
||||||
|
/* This function avoids an error on serial console. */
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct device_operations ops = {
|
||||||
|
.init = ene932_init,
|
||||||
|
.read_resources = ene932_read_resources,
|
||||||
|
.enable_resources = ene932_enable_resources
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct pnp_info pnp_dev_info[] = {
|
||||||
|
{ &ops, 0, 0, { 0, 0 }, }
|
||||||
|
};
|
||||||
|
|
||||||
|
static void enable_dev(device_t dev)
|
||||||
|
{
|
||||||
|
pnp_enable_devices(dev, &pnp_ops, ARRAY_SIZE(pnp_dev_info),
|
||||||
|
pnp_dev_info);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct chip_operations ec_compal_ene932_ops = {
|
||||||
|
CHIP_NAME("COMPAL ENE932 EC")
|
||||||
|
.enable_dev = enable_dev
|
||||||
|
};
|
||||||
|
#endif /* ! __SMM__ */
|
||||||
|
#endif /* ! __PRE_RAM__ */
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 The Chromium OS Authors. All rights reserved.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EC communication interface for COMPAL ENE932 Embedded Controller.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _EC_COMPAL_ENE932_EC_H
|
||||||
|
#define _EC_COMPAL_ENE932_EC_H
|
||||||
|
|
||||||
|
#define EC_IO 0xfd60 /* Mainboard specific. Could be Kconfig option */
|
||||||
|
#define EC_IO_HIGH EC_IO + 1
|
||||||
|
#define EC_IO_LOW EC_IO + 2
|
||||||
|
#define EC_IO_DATA EC_IO + 3
|
||||||
|
|
||||||
|
/* ENE EC internal address space */
|
||||||
|
#define REG_SPI_DATA 0xfeab
|
||||||
|
#define REG_SPI_COMMAND 0xfeac
|
||||||
|
#define REG_SPI_CONFIG 0xfead
|
||||||
|
#define CFG_CSn_FORCE_LOW (1 << 4)
|
||||||
|
#define CFG_COMMAND_WRITE_ENABLE (1 << 3)
|
||||||
|
#define CFG_STATUS (1 << 1)
|
||||||
|
|
||||||
|
|
||||||
|
#define KBD_DATA 0x60
|
||||||
|
#define KBD_COMMAND 0x64
|
||||||
|
#define KBD_STATUS 0x64
|
||||||
|
#define KBD_IBF (1 << 1) // 1: input buffer full (data ready for ec)
|
||||||
|
#define KBD_OBF (1 << 0) // 1: output buffer full (data ready for host)
|
||||||
|
|
||||||
|
|
||||||
|
/* Wait 400ms for keyboard controller answers */
|
||||||
|
#define KBC_TIMEOUT_IN_MS 400
|
||||||
|
|
||||||
|
u8 ec_kbc_read_ob(void);
|
||||||
|
void ec_kbc_write_cmd(u8 cmd);
|
||||||
|
void ec_kbc_write_ib(u8 data);
|
||||||
|
int kbc_cleanup_buffers(void);
|
||||||
|
|
||||||
|
#endif /* _EC_COMPAL_ENE932_EC_H */
|
Loading…
Reference in New Issue