diff options
author | Bill Richardson <wfrichar@chromium.org> | 2013-12-09 15:54:12 -0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2013-12-12 18:21:56 +0000 |
commit | e6588c803f93c421970eb7b7220e05074922b096 (patch) | |
tree | 4dafad5857709a37b6b26851e6b2de1b935ffe76 /include | |
parent | 878f29330b8855a31ffcf6222ef3db2ed2451307 (diff) | |
download | chrome-ec-e6588c803f93c421970eb7b7220e05074922b096.tar.gz |
Move ACPI stuff out of chip/lm4 and into common
The port 62/66 ACPI commands were implemented in chip/lm4/lpc.c. They should
be handled in common instead of being tied to a particular EC.
BUG=chrome-os-partner:23774
BRANCH=none
TEST=manual
read EC_ACPI_MEM_VERSION
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 0; iotools io_read8 0x62
0x01
write & read EC_ACPI_MEM_TEST
# iotools io_write8 0x66 0x81; iotools io_write8 0x62 1; iotools io_write8 0x62 0xa5
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 1; iotools io_read8 0x62
0xa5
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 2; iotools io_read8 0x62
0x5a
# iotools io_write8 0x66 0x81; iotools io_write8 0x62 1; iotools io_write8 0x62 0xbb
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 1; iotools io_read8 0x62
0xbb
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 2; iotools io_read8 0x62
0x44
read & write EC_ACPI_MEM_KEYBOARD_BACKLIGHT
# iotools io_write8 0x66 0x81; iotools io_write8 0x62 3; iotools io_write8 0x62 100
(keyboard lights up)
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 3; iotools io_read8 0x62
0x64
# iotools io_write8 0x66 0x81; iotools io_write8 0x62 3; iotools io_write8 0x62 50
(keyboard dimmer)
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 3; iotools io_read8 0x62
0x32
# iotools io_write8 0x66 0x81; iotools io_write8 0x62 3; iotools io_write8 0x62 0
(keyboard goes dark)
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 3; iotools io_read8 0x62
0x00
read & write EC_ACPI_MEM_FAN_DUTY
# iotools io_write8 0x66 0x81; iotools io_write8 0x62 4; iotools io_write8 0x62 100
(fan on full)
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 4; iotools io_read8 0x62
0x64
# iotools io_write8 0x66 0x81; iotools io_write8 0x62 4; iotools io_write8 0x62 50
(fan on half speed)
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 4; iotools io_read8 0x62
0x32
# iotools io_write8 0x66 0x81; iotools io_write8 0x62 4; iotools io_write8 0x62 0
(fan off)
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 4; iotools io_read8 0x62
0x00
# iotools io_write8 0x66 0x81; iotools io_write8 0x62 4; iotools io_write8 0x62 0xff
(fan back to EC control)
# iotools io_write8 0x66 0x80; iotools io_write8 0x62 4; iotools io_read8 0x62
0xff
test EC_CMD_ACPI_QUERY_EVENT
# iotools io_write8 0x66 0x84; iotools io_read8 0x62
0x00
On EC console:
> hostevent set 0x0f000000
# ectool eventget
Current host events: 0x0f000000
# iotools io_write8 0x66 0x84; iotools io_read8 0x62
0x19
# iotools io_write8 0x66 0x84; iotools io_read8 0x62
0x1a
# iotools io_write8 0x66 0x84; iotools io_read8 0x62
0x1b
# iotools io_write8 0x66 0x84; iotools io_read8 0x62
0x1c
# iotools io_write8 0x66 0x84; iotools io_read8 0x62
0x00
# ectool eventget
Current host events: 0x00000000
Change-Id: I011a5a2051171ec1d37e55ce03e1ce74b93a7e14
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/179692
Diffstat (limited to 'include')
-rw-r--r-- | include/acpi.h | 23 | ||||
-rw-r--r-- | include/lpc.h | 5 |
2 files changed, 28 insertions, 0 deletions
diff --git a/include/acpi.h b/include/acpi.h new file mode 100644 index 0000000000..0ffc8d9f10 --- /dev/null +++ b/include/acpi.h @@ -0,0 +1,23 @@ +/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/* ACPI EC interface block. */ + +#ifndef __CROS_EC_ACPI_H +#define __CROS_EC_ACPI_H + +#include <stdint.h> + +/** + * Handle AP write to EC via the ACPI I/O port. + * + * @param is_cmd Is write command (is_cmd=1) or data (is_cmd=0) + * @param value Value written to cmd or data register by AP + * @param result Value for AP to read from data port, if any + * @return True if *result was updated by this call + */ +int acpi_ap_to_ec(int is_cmd, uint8_t value, uint8_t *result); + +#endif /* __CROS_EC_ACPI_H */ diff --git a/include/lpc.h b/include/lpc.h index 9ecef5027b..0ecaa6b822 100644 --- a/include/lpc.h +++ b/include/lpc.h @@ -79,6 +79,11 @@ enum lpc_host_event_type { void lpc_set_host_event_state(uint32_t mask); /** + * Clear and return the lowest host event. + */ +int lpc_query_host_event_state(void); + +/** * Set the event mask for the specified event type. * * @param type Event type |