diff --git a/src/ec/Kconfig b/src/ec/Kconfig
new file mode 100644
index 0000000..9408f6b
--- /dev/null
+++ b/src/ec/Kconfig
@@ -0,0 +1 @@
+source src/ec/acpi/Kconfig
diff --git a/src/ec/Makefile.inc b/src/ec/Makefile.inc
new file mode 100644
index 0000000..20d71ab
--- /dev/null
+++ b/src/ec/Makefile.inc
@@ -0,0 +1 @@
+subdirs-y += acpi
diff --git a/src/ec/acpi/Kconfig b/src/ec/acpi/Kconfig
new file mode 100644
index 0000000..642f178
--- /dev/null
+++ b/src/ec/acpi/Kconfig
@@ -0,0 +1,4 @@
+config EC_ACPI
+	bool
+	help
+	ACPI Embedded Controller interface. Mostly found in laptops.
diff --git a/src/ec/acpi/Makefile.inc b/src/ec/acpi/Makefile.inc
new file mode 100644
index 0000000..34c5136
--- /dev/null
+++ b/src/ec/acpi/Makefile.inc
@@ -0,0 +1,2 @@
+ramstage-y += ec.c
+smm-$(CONFIG_HAVE_SMI_HANDLER) += ec.c
diff --git a/src/ec/acpi/ec.c b/src/ec/acpi/ec.c
new file mode 100644
index 0000000..7a01b7e
--- /dev/null
+++ b/src/ec/acpi/ec.c
@@ -0,0 +1,118 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2008-2009 coresystems GmbH
+ *
+ * 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
+ */
+
+#include <console/console.h>
+#include <device/device.h>
+#include <arch/io.h>
+#include <delay.h>
+#include "ec.h"
+
+int send_ec_command(u8 command)
+{
+	int timeout;
+
+	timeout = 0x7ff;
+	while ((inb(EC_SC) & EC_IBF) && --timeout) {
+		udelay(10);
+		if ((timeout & 0xff) == 0)
+			printk(BIOS_SPEW, ".");
+	}
+	if (!timeout) {
+		printk(BIOS_DEBUG, "Timeout while sending command 0x%02x to EC!\n",
+				command);
+		// return -1;
+	}
+
+	outb(command, EC_SC);
+	return 0;
+}
+
+int send_ec_data(u8 data)
+{
+	int timeout;
+
+	timeout = 0x7ff;
+	while ((inb(EC_SC) & EC_IBF) && --timeout) { // wait for IBF = 0
+		udelay(10);
+		if ((timeout & 0xff) == 0)
+			printk(BIOS_SPEW, ".");
+	}
+	if (!timeout) {
+		printk(BIOS_DEBUG, "Timeout while sending data 0x%02x to EC!\n",
+				data);
+		// return -1;
+	}
+
+	outb(data, EC_DATA);
+
+	return 0;
+}
+
+int send_ec_data_nowait(u8 data)
+{
+	outb(data, EC_DATA);
+
+	return 0;
+}
+
+u8 recv_ec_data(void)
+{
+	int timeout;
+	u8 data;
+
+	timeout = 0x7fff;
+	while (--timeout) { // Wait for OBF = 1
+		if (inb(EC_SC) & EC_OBF) {
+			break;
+		}
+		udelay(10);
+		if ((timeout & 0xff) == 0)
+			printk(BIOS_SPEW, ".");
+	}
+	if (!timeout) {
+		printk(BIOS_DEBUG, "\nTimeout while receiving data from EC!\n");
+		// return -1;
+	}
+
+	data = inb(EC_DATA);
+	printk(BIOS_DEBUG, "recv_ec_data: 0x%02x\n", data);
+
+	return data;
+}
+
+u8 ec_read(u8 addr)
+{
+	send_ec_command(0x80);
+	send_ec_data(addr);
+
+	return recv_ec_data();
+}
+
+int ec_write(u8 addr, u8 data)
+{
+	send_ec_command(0x81);
+	send_ec_data(addr);
+	return send_ec_data(data);
+}
+
+struct chip_operations ec_acpi_ops = {
+	CHIP_NAME("ACPI Embedded Controller")
+};
diff --git a/src/ec/acpi/ec.h b/src/ec/acpi/ec.h
new file mode 100644
index 0000000..77ee637
--- /dev/null
+++ b/src/ec/acpi/ec.h
@@ -0,0 +1,49 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2008-2009 coresystems GmbH
+ *
+ * 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_ACPI_H
+#define _EC_ACPI_H
+
+#define EC_DATA	0x62
+#define EC_SC	0x66
+
+/* EC_SC input */
+#define   EC_SMI_EVT	(1 << 6) // 1: SMI event pending
+#define   EC_SCI_EVT	(1 << 5) // 1: SCI event pending
+#define   EC_BURST	(1 << 4) // controller is in burst mode
+#define   EC_CMD	(1 << 3) // 1: byte in data register is command
+				 // 0: byte in data register is data
+#define   EC_IBF	(1 << 1) // 1: input buffer full (data ready for ec)
+#define   EC_OBF	(1 << 0) // 1: output buffer full (data ready for host)
+/* EC_SC output */
+#define   RD_EC		0x80 // Read Embedded Controller
+#define   WR_EC		0x81 // Write Embedded Controller
+#define   BE_EC		0x82 // Burst Enable Embedded Controller
+#define   BD_EC 	0x83 // Burst Disable Embedded Controller
+#define   QR_EC 	0x84 // Query Embedded Controller
+
+int send_ec_command(u8 command);
+int send_ec_data(u8 data);
+int send_ec_data_nowait(u8 data);
+u8 recv_ec_data(void);
+u8 ec_read(u8 addr);
+int ec_write(u8 addr, u8 data);
+
+#endif
+
