summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--src/Kconfig2
-rw-r--r--src/ec/Kconfig1
-rw-r--r--src/ec/Makefile.inc1
-rw-r--r--src/ec/acpi/Kconfig4
-rw-r--r--src/ec/acpi/Makefile.inc2
-rw-r--r--src/ec/acpi/ec.c (renamed from src/mainboard/roda/rk886ex/ec.c)4
-rw-r--r--src/ec/acpi/ec.h (renamed from src/mainboard/roda/rk886ex/ec.h)4
-rw-r--r--src/mainboard/getac/p470/Kconfig1
-rw-r--r--src/mainboard/getac/p470/devicetree.cb2
-rw-r--r--src/mainboard/getac/p470/ec_oem.c (renamed from src/mainboard/getac/p470/ec.c)109
-rw-r--r--src/mainboard/getac/p470/ec_oem.h (renamed from src/mainboard/getac/p470/ec.h)15
-rw-r--r--src/mainboard/getac/p470/mainboard.c2
-rw-r--r--src/mainboard/getac/p470/mainboard_smi.c3
-rw-r--r--src/mainboard/roda/rk886ex/Makefile.inc1
-rw-r--r--src/mainboard/roda/rk886ex/devicetree.cb2
-rw-r--r--src/mainboard/roda/rk886ex/m3885.c2
-rw-r--r--src/mainboard/roda/rk886ex/mainboard.c2
18 files changed, 31 insertions, 128 deletions
diff --git a/Makefile b/Makefile
index a41efd049f..0a834c74e3 100644
--- a/Makefile
+++ b/Makefile
@@ -123,7 +123,7 @@ export MAINBOARDDIR
PLATFORM-y += src/arch/$(ARCHDIR-y) src/cpu src/mainboard/$(MAINBOARDDIR)
TARGETS-y :=
-BUILD-y := src/lib src/boot src/console src/devices src/southbridge src/northbridge src/superio src/drivers
+BUILD-y := src/lib src/boot src/console src/devices src/ec src/southbridge src/northbridge src/superio src/drivers
BUILD-y += util/cbfstool util/sconfig
BUILD-$(CONFIG_ARCH_X86) += src/pc80
diff --git a/src/Kconfig b/src/Kconfig
index 77546b0590..28915b2181 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -124,6 +124,8 @@ comment "Super I/O"
source src/superio/Kconfig
comment "Devices"
source src/devices/Kconfig
+comment "Embedded Controllers"
+source src/ec/Kconfig
endmenu
diff --git a/src/ec/Kconfig b/src/ec/Kconfig
new file mode 100644
index 0000000000..9408f6bd9e
--- /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 0000000000..20d71ab786
--- /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 0000000000..642f1786c1
--- /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 0000000000..34c5136052
--- /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/mainboard/roda/rk886ex/ec.c b/src/ec/acpi/ec.c
index 4c39a8419e..7a01b7e455 100644
--- a/src/mainboard/roda/rk886ex/ec.c
+++ b/src/ec/acpi/ec.c
@@ -20,6 +20,7 @@
*/
#include <console/console.h>
+#include <device/device.h>
#include <arch/io.h>
#include <delay.h>
#include "ec.h"
@@ -112,3 +113,6 @@ int ec_write(u8 addr, u8 data)
return send_ec_data(data);
}
+struct chip_operations ec_acpi_ops = {
+ CHIP_NAME("ACPI Embedded Controller")
+};
diff --git a/src/mainboard/roda/rk886ex/ec.h b/src/ec/acpi/ec.h
index 49b7491696..77ee6379ea 100644
--- a/src/mainboard/roda/rk886ex/ec.h
+++ b/src/ec/acpi/ec.h
@@ -17,8 +17,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef _MAINBOARD_EC_H
-#define _MAINBOARD_EC_H
+#ifndef _EC_ACPI_H
+#define _EC_ACPI_H
#define EC_DATA 0x62
#define EC_SC 0x66
diff --git a/src/mainboard/getac/p470/Kconfig b/src/mainboard/getac/p470/Kconfig
index f531a511a6..e4e8292349 100644
--- a/src/mainboard/getac/p470/Kconfig
+++ b/src/mainboard/getac/p470/Kconfig
@@ -27,6 +27,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select SOUTHBRIDGE_TI_PCIXX12
select SUPERIO_SMSC_FDC37N972
select SUPERIO_SMSC_SIO10N268
+ select EC_ACPI
select BOARD_HAS_FADT
select HAVE_ACPI_TABLES
select HAVE_PIRQ_TABLE
diff --git a/src/mainboard/getac/p470/devicetree.cb b/src/mainboard/getac/p470/devicetree.cb
index 2929cbee5b..9b376c79cf 100644
--- a/src/mainboard/getac/p470/devicetree.cb
+++ b/src/mainboard/getac/p470/devicetree.cb
@@ -135,6 +135,8 @@ chip northbridge/intel/i945
end
device pnp 4e.b off # HWM
end
+ chip ec/acpi
+ end
end
end
diff --git a/src/mainboard/getac/p470/ec.c b/src/mainboard/getac/p470/ec_oem.c
index 2fe44afb8a..30d41359cf 100644
--- a/src/mainboard/getac/p470/ec.c
+++ b/src/mainboard/getac/p470/ec_oem.c
@@ -22,113 +22,8 @@
#include <console/console.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_SPEW, "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);
-}
-
-int ec_dump_status(void)
-{
- u8 ec_sc = inb(EC_SC);
- printk(BIOS_DEBUG, "Embedded Controller Status: ");
- if (ec_sc & (1 << 6)) printk(BIOS_DEBUG, "SMI_EVT ");
- if (ec_sc & (1 << 5)) printk(BIOS_DEBUG, "SCI_EVT ");
- if (ec_sc & (1 << 4)) printk(BIOS_DEBUG, "BURST ");
- if (ec_sc & (1 << 3)) printk(BIOS_DEBUG, "CMD ");
- if (ec_sc & (1 << 1)) printk(BIOS_DEBUG, "IBF ");
- if (ec_sc & (1 << 0)) printk(BIOS_DEBUG, "OBF ");
- printk(BIOS_DEBUG, "\n");
-
- return ec_sc;
-}
-
-
-/* ********************************** */
+#include <ec/acpi/ec.h>
+#include "ec_oem.h"
int send_ec_oem_command(u8 command)
{
diff --git a/src/mainboard/getac/p470/ec.h b/src/mainboard/getac/p470/ec_oem.h
index 1fe21e5eb5..14f7484a78 100644
--- a/src/mainboard/getac/p470/ec.h
+++ b/src/mainboard/getac/p470/ec_oem.h
@@ -19,12 +19,8 @@
* MA 02110-1301 USA
*/
-#ifndef _MAINBOARD_EC_H
-#define _MAINBOARD_EC_H
-
-#define EC_DATA 0x62
-#define EC_SC 0x66
-
+#ifndef _MAINBOARD_EC_OEM_H
+#define _MAINBOARD_EC_OEM_H
#define EC_OEM_DATA 0x68
#define EC_OEM_SC 0x6c
@@ -44,13 +40,6 @@
#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);
-
int send_ec_oem_command(u8 command);
int send_ec_oem_data(u8 data);
int send_ec_oem_data_nowait(u8 data);
diff --git a/src/mainboard/getac/p470/mainboard.c b/src/mainboard/getac/p470/mainboard.c
index a861f43855..8f8a39544c 100644
--- a/src/mainboard/getac/p470/mainboard.c
+++ b/src/mainboard/getac/p470/mainboard.c
@@ -28,7 +28,7 @@
#include "chip.h"
#include "hda_verb.h"
-#include "ec.c"
+#include "ec_oem.c"
#define MAX_LCD_BRIGHTNESS 0xd8
diff --git a/src/mainboard/getac/p470/mainboard_smi.c b/src/mainboard/getac/p470/mainboard_smi.c
index 47dd3bce85..d29fe587c8 100644
--- a/src/mainboard/getac/p470/mainboard_smi.c
+++ b/src/mainboard/getac/p470/mainboard_smi.c
@@ -25,7 +25,8 @@
#include <cpu/x86/smm.h>
#include "southbridge/intel/i82801gx/i82801gx.h"
#include "southbridge/intel/i82801gx/nvs.h"
-#include "ec.c"
+#include <ec/acpi/ec.h>
+#include "ec_oem.c"
#define MAX_LCD_BRIGHTNESS 0xd8
diff --git a/src/mainboard/roda/rk886ex/Makefile.inc b/src/mainboard/roda/rk886ex/Makefile.inc
index e36824cce1..549654ad8e 100644
--- a/src/mainboard/roda/rk886ex/Makefile.inc
+++ b/src/mainboard/roda/rk886ex/Makefile.inc
@@ -18,7 +18,6 @@
##
ramstage-y += m3885.c
-ramstage-y += ec.c
driver-y += rtl8168.c
smm-$(CONFIG_HAVE_SMI_HANDLER) += mainboard_smi.c
diff --git a/src/mainboard/roda/rk886ex/devicetree.cb b/src/mainboard/roda/rk886ex/devicetree.cb
index a139e25966..a713331172 100644
--- a/src/mainboard/roda/rk886ex/devicetree.cb
+++ b/src/mainboard/roda/rk886ex/devicetree.cb
@@ -106,6 +106,8 @@ chip northbridge/intel/i945
device pnp ff.1 on # dummy address
end
end
+ chip ec/acpi
+ end
end
#device pci 1f.1 off end # IDE
diff --git a/src/mainboard/roda/rk886ex/m3885.c b/src/mainboard/roda/rk886ex/m3885.c
index 5173ecfd39..29d12bca99 100644
--- a/src/mainboard/roda/rk886ex/m3885.c
+++ b/src/mainboard/roda/rk886ex/m3885.c
@@ -25,7 +25,7 @@
#include <arch/io.h>
#include <delay.h>
-#include "ec.h"
+#include <ec/acpi/ec.h>
#include "m3885.h"
#define TH0LOW 80
diff --git a/src/mainboard/roda/rk886ex/mainboard.c b/src/mainboard/roda/rk886ex/mainboard.c
index f444e0aad7..2c5b5e3d71 100644
--- a/src/mainboard/roda/rk886ex/mainboard.c
+++ b/src/mainboard/roda/rk886ex/mainboard.c
@@ -30,7 +30,7 @@
#include <arch/coreboot_tables.h>
#include "chip.h"
-#include "ec.h"
+#include <ec/acpi/ec.h>
#include "m3885.h"
#define DUMP_RUNTIME_REGISTERS 0