aboutsummaryrefslogtreecommitdiff
path: root/src/ec/google/chromeec/ec_lpc.c
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2015-04-01 16:52:37 -0700
committerPatrick Georgi <pgeorgi@google.com>2015-04-22 08:58:13 +0200
commit5725ea30ddadf35099e5cdd5074663f3ca9b939b (patch)
tree199cb310727d7ef6af6c2d9f90d844e7a3cf8f8e /src/ec/google/chromeec/ec_lpc.c
parent4f332fbd4aeea3eb1cf2b7c8f103e3928430c9bd (diff)
chromeec: lpc: Add variant MEC IO
MEC cannot access memmap-range data directly though LPC and instead must access through its EMI unit. BUG=chrome-os-partner:38224 TEST=Verify host command functionality on glower. BRANCH=None Change-Id: If98d425014a894ddeafad4268f92af5860878522 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 58ed3c50ab97ca1e172d5cdc00f4cd8e069e565c Original-Change-Id: I32b897836d28ef4f3b3aa5f81b9023f2ceb629c8 Original-Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/263611 Original-Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: http://review.coreboot.org/9910 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src/ec/google/chromeec/ec_lpc.c')
-rw-r--r--src/ec/google/chromeec/ec_lpc.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/ec/google/chromeec/ec_lpc.c b/src/ec/google/chromeec/ec_lpc.c
index 0fa0cf8d6d..826142bcf1 100644
--- a/src/ec/google/chromeec/ec_lpc.c
+++ b/src/ec/google/chromeec/ec_lpc.c
@@ -41,6 +41,14 @@ static void read_bytes(u16 port, unsigned int length, u8 *dest, u8 *csum)
{
int i;
+#if CONFIG_EC_GOOGLE_CHROMEEC_MEC
+ /* Access desired range though EMI interface */
+ if (port >= MEC_EMI_RANGE_START && port <= MEC_EMI_RANGE_END) {
+ mec_io_bytes(0, port, length, dest, csum);
+ return;
+ }
+#endif
+
for (i = 0; i < length; ++i) {
dest[i] = inb(port + i);
if (csum)
@@ -68,6 +76,14 @@ static void write_bytes(u16 port, unsigned int length, u8 *msg, u8 *csum)
{
int i;
+#if CONFIG_EC_GOOGLE_CHROMEEC_MEC
+ /* Access desired range though EMI interface */
+ if (port >= MEC_EMI_RANGE_START && port <= MEC_EMI_RANGE_END) {
+ mec_io_bytes(1, port, length, msg, csum);
+ return;
+ }
+#endif
+
for (i = 0; i < length; ++i) {
outb(msg[i], port + i);
if (csum)