Kyösti Mälkki (kyosti.malkki(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17547
-gerrit
commit 9612d7312063326021d71bf164a8f786575e5c97
Author: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Date: Tue Nov 29 16:26:14 2016 +0200
intel/fsp_rangeley: Switch to MMCONF_SUPPORT_DEFAULT
Boards with this chipset do not have any reference of
MMCONF_BASE_ADDRESS being written to chipset registers.
Either board support is already broken or FSP takes
care of this early and Kconfig lacks the notice that
this parameter must match with the chosen FSP binary.
CPU bootblock associated with this chipset uses
exclusive PCI IO access already.
Untested.
Change-Id: I07d20d81266ff6aaa6384d20a806d52fd4568e08
Signed-off-by: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
---
src/northbridge/intel/fsp_rangeley/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/northbridge/intel/fsp_rangeley/Kconfig b/src/northbridge/intel/fsp_rangeley/Kconfig
index 6a9dbe9..506a913 100644
--- a/src/northbridge/intel/fsp_rangeley/Kconfig
+++ b/src/northbridge/intel/fsp_rangeley/Kconfig
@@ -17,7 +17,7 @@
config NORTHBRIDGE_INTEL_FSP_RANGELEY
bool
select CPU_INTEL_FSP_MODEL_406DX
- select MMCONF_SUPPORT
+ select MMCONF_SUPPORT_DEFAULT
if NORTHBRIDGE_INTEL_FSP_RANGELEY
the following patch was just integrated into master:
commit 35d7d586cd7a2a350d813697813ff8496edc1353
Author: Kevin Chiu <Kevin.Chiu(a)quantatw.com>
Date: Wed Nov 30 16:30:28 2016 +0800
google/pyro: set i2c bus timings by rise/fall times
Provide the rise and fall times for the i2c buses and let the
library perform the necessary calculations for the i2c
controller registers instead of manually tuning the values.
BUG=chrome-os-partner:58112
BRANCH=master
TEST=emerge-pyro coreboot
Change-Id: I68be9b96dc731eb0084ee5e15921866818637e73
Signed-off-by: Kevin Chiu <Kevin.Chiu(a)quantatw.com>
Reviewed-on: https://review.coreboot.org/17652
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
See https://review.coreboot.org/17652 for details.
-gerrit
the following patch was just integrated into master:
commit 152c0ee5d0eae8e882f9aafbe9530982f659b66b
Author: Sathyanarayana Nujella <sathyanarayana.nujella(a)intel.com>
Date: Wed Nov 30 10:11:55 2016 -0800
mainboard/google/reef: Add all DMIC endpoints
Independent of Board DMIC configuration, add all DMIC points
i.e. add DMIC-1ch, DMIC-2ch, DMIC-4ch endpoints.
This allows flexibility to userspace to open capture devices as needed.
This is a temporary fix; once upper layers support choosing
particular channels from 4-ch PCM stream, we will limit exposing only
DMIC-4ch endpoint.
BUG=chrome-os-partner:60444
BRANCH=none
TEST=Verify All DMIC blobs are included
Change-Id: I9729a3570c0668f3da4e7986291ebad6fe1de47a
Signed-off-by: Sathyanarayana Nujella <sathyanarayana.nujella(a)intel.com>
Reviewed-on: https://review.coreboot.org/17660
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
See https://review.coreboot.org/17660 for details.
-gerrit
the following patch was just integrated into master:
commit 89e39b5c55cd7612c70cb25d2b2000965cc25539
Author: Andrey Petrov <andrey.petrov(a)intel.com>
Date: Wed Nov 30 17:58:38 2016 -0800
soc/intel/apollolake: Drop privilege level to IA_UNTRUSTED
As per guidelines CPU security level should be dropped before OS start,
so that certain MSRs are locked out. Drop privilege levels on all logical
CPUs.
BUG=chrome-os-partner:60454
TEST=iotools rdmsr x 0x120, make sure bit 6 is set, rdmsr x 0x121 results
in io error.
Change-Id: I67540f6da16f58b822db9160d00b7a5e235188db
Signed-off-by: Andrey Petrov <andrey.petrov(a)intel.com>
Reviewed-on: https://review.coreboot.org/17665
Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
Tested-by: build bot (Jenkins)
See https://review.coreboot.org/17665 for details.
-gerrit
the following patch was just integrated into master:
commit 3b637531c91d0cb290dcff26584274f41c06ec85
Author: Andrey Petrov <andrey.petrov(a)intel.com>
Date: Wed Nov 30 17:39:16 2016 -0800
soc/intel/apollolake: Enable ACPI PM timer emulation on all CPUs
Currently we enable ACPI PM timer emulation only on BSP. So the timer
doesn't work on other cores and that breaks OSes that use it. Also,
microcode uses this information to figure out ACPI IO base, and that
is used for other features. This patch enables ACPI timer emulation
on all the logical CPUs.
BUG=chrome-os-partner:60011
TEST=iotools rdmsr x 0x121, x={0..3}, make sure it is set
Change-Id: I0d6cb8761c1c25d3a2fcf59a49c1eda9e4ccc70c
Signed-off-by: Andrey Petrov <andrey.petrov(a)intel.com>
Reviewed-on: https://review.coreboot.org/17663
Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
See https://review.coreboot.org/17663 for details.
-gerrit
Marty Plummer (ntzrmtthihu777(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17669
-gerrit
commit 22b3720bbb5c5a3ec1bf098cae25e882e4d396f6
Author: Marty Plummer <ntzrmtthihu777(a)gmail.com>
Date: Thu Dec 1 02:14:39 2016 -0600
superio/fintek: Add support for Fintek F71889A.
Datasheet: F71889A rev V0.21P
Change-Id: I91c60a3b48cd4872ae7a27de8f49faa40e877a27
Signed-off-by: Marty Plummer <ntzrmtthihu777(a)gmail.com>
---
src/superio/fintek/Makefile.inc | 1 +
src/superio/fintek/f71889a/Kconfig | 20 ++++++++++
src/superio/fintek/f71889a/Makefile.inc | 18 +++++++++
src/superio/fintek/f71889a/f71889a.h | 31 ++++++++++++++
src/superio/fintek/f71889a/superio.c | 71 +++++++++++++++++++++++++++++++++
5 files changed, 141 insertions(+)
diff --git a/src/superio/fintek/Makefile.inc b/src/superio/fintek/Makefile.inc
index 0d0ae66..d70fc99 100644
--- a/src/superio/fintek/Makefile.inc
+++ b/src/superio/fintek/Makefile.inc
@@ -21,6 +21,7 @@ subdirs-y += f71859
subdirs-y += f71863fg
subdirs-y += f71869ad
subdirs-y += f71872
+subdirs-y += f71889a
subdirs-y += f81216h
subdirs-y += f81865f
subdirs-y += f81866d
diff --git a/src/superio/fintek/f71889a/Kconfig b/src/superio/fintek/f71889a/Kconfig
new file mode 100644
index 0000000..96366d9
--- /dev/null
+++ b/src/superio/fintek/f71889a/Kconfig
@@ -0,0 +1,20 @@
+#
+# This file is part of the coreboot project.
+#
+# Copyright (C) 2014 Edward O'Callaghan <eocallaghan(a)alterapraxis.com>
+# Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+#
+# 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, either version 3 of the License, or
+# (at your option) any later version.
+#
+# 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.
+#
+
+config SUPERIO_FINTEK_F71889A
+ bool
+ select SUPERIO_FINTEK_COMMON_ROMSTAGE
diff --git a/src/superio/fintek/f71889a/Makefile.inc b/src/superio/fintek/f71889a/Makefile.inc
new file mode 100644
index 0000000..06fcff9
--- /dev/null
+++ b/src/superio/fintek/f71889a/Makefile.inc
@@ -0,0 +1,18 @@
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2014 Edward O'Callaghan <eocallaghan(a)alterapraxis.com>
+## Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+##
+## 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, either version 3 of the License, or
+## (at your option) any later version.
+##
+## 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.
+##
+
+ramstage-$(CONFIG_SUPERIO_FINTEK_F71889A) += superio.c
diff --git a/src/superio/fintek/f71889a/f71889a.h b/src/superio/fintek/f71889a/f71889a.h
new file mode 100644
index 0000000..acabc65
--- /dev/null
+++ b/src/superio/fintek/f71889a/f71889a.h
@@ -0,0 +1,31 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2014 Edward O'Callaghan <eocallaghan(a)alterapraxis.com>
+ * Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+ *
+ * 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, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ */
+
+#ifndef SUPERIO_FINTEK_F71889A_H
+#define SUPERIO_FINTEK_F71889A_H
+
+/* Logical Device Numbers (LDN). */
+#define F71889A_SP1 0x01 /* UART1 */
+#define F71889A_SP2 0x02 /* UART2 */
+#define F71889A_PP 0x03 /* Parallel Port */
+#define F71889A_HWM 0x04 /* Hardware Monitor */
+#define F71889A_KBC 0x05 /* Keyboard/Mouse */
+#define F71889A_GPIO 0x06 /* GPIO */
+#define F71889A_VID 0x07 /* VID */
+#define F71889A_PM 0x0a /* ACPI/PME */
+
+#endif /* SUPERIO_FINTEK_F71889A_H */
diff --git a/src/superio/fintek/f71889a/superio.c b/src/superio/fintek/f71889a/superio.c
new file mode 100644
index 0000000..7aa31af
--- /dev/null
+++ b/src/superio/fintek/f71889a/superio.c
@@ -0,0 +1,71 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2014 Edward O'Callaghan <eocallaghan(a)alterapraxis.com>
+ * Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+ *
+ * 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, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ */
+
+#include <arch/io.h>
+#include <device/device.h>
+#include <device/pnp.h>
+#include <superio/conf_mode.h>
+#include <console/console.h>
+#include <stdlib.h>
+#include <pc80/keyboard.h>
+#include "f71889a.h"
+
+static void f71889a_init(struct device *dev)
+{
+ if (!dev->enabled)
+ return;
+
+ switch (dev->path.pnp.device) {
+
+ case F71889A_KBC:
+ pc_keyboard_init(NO_AUX_DEVICE);
+ break;
+ }
+}
+
+static struct device_operations ops = {
+ .read_resources = pnp_read_resources,
+ .set_resources = pnp_set_resources,
+ .enable_resources = pnp_enable_resources,
+ .enable = pnp_alt_enable,
+ .init = f71889a_init,
+ .ops_pnp_mode = &pnp_conf_mode_8787_aa,
+};
+
+static struct pnp_info pnp_dev_info[] = {
+ /* TODO: Some of the 0x07f8 etc. values may not be correct.
+ * double check bitmasks
+ */
+ { &ops, F71889A_SP1, PNP_IO0 | PNP_IRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_SP2, PNP_IO0 | PNP_IRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_PP, PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_HWM, PNP_IO0 | PNP_IRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_KBC, PNP_IO0 | PNP_IRQ0 | PNP_IRQ1, {0x07ff, 0}, },
+ { &ops, F71889A_GPIO, PNP_IRQ0, },
+ { &ops, F71889A_VID, PNP_IO0, {0x0ff8, 0}, },
+ { &ops, F71889A_PM, },
+};
+
+static void enable_dev(struct device *dev)
+{
+ pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
+}
+
+struct chip_operations superio_fintek_f71889a_ops = {
+ CHIP_NAME("Fintek F71889A Super I/O")
+ .enable_dev = enable_dev
+};
Marty Plummer (ntzrmtthihu777(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17669
-gerrit
commit f010ef5a682e85ec4026edcdc5baa2e3d8af9228
Author: Marty Plummer <ntzrmtthihu777(a)gmail.com>
Date: Thu Dec 1 02:14:39 2016 -0600
superio/fintek: Add support for Fintek F71889A.
Datasheet: F71889A rev V0.21P
Change-Id: I91c60a3b48cd4872ae7a27de8f49faa40e877a27
Signed-off-by: Marty Plummer <ntzrmtthihu777(a)gmail.com>
---
src/superio/fintek/Makefile.inc | 1 +
src/superio/fintek/f71889a/Kconfig | 19 +++++++++
src/superio/fintek/f71889a/Makefile.inc | 17 ++++++++
src/superio/fintek/f71889a/f71889a.h | 30 ++++++++++++++
src/superio/fintek/f71889a/superio.c | 70 +++++++++++++++++++++++++++++++++
5 files changed, 137 insertions(+)
diff --git a/src/superio/fintek/Makefile.inc b/src/superio/fintek/Makefile.inc
index 0d0ae66..d70fc99 100644
--- a/src/superio/fintek/Makefile.inc
+++ b/src/superio/fintek/Makefile.inc
@@ -21,6 +21,7 @@ subdirs-y += f71859
subdirs-y += f71863fg
subdirs-y += f71869ad
subdirs-y += f71872
+subdirs-y += f71889a
subdirs-y += f81216h
subdirs-y += f81865f
subdirs-y += f81866d
diff --git a/src/superio/fintek/f71889a/Kconfig b/src/superio/fintek/f71889a/Kconfig
new file mode 100644
index 0000000..1e561aa
--- /dev/null
+++ b/src/superio/fintek/f71889a/Kconfig
@@ -0,0 +1,19 @@
+#
+# This file is part of the coreboot project.
+#
+# Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+#
+# 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, either version 3 of the License, or
+# (at your option) any later version.
+#
+# 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.
+#
+
+config SUPERIO_FINTEK_F71889A
+ bool
+ select SUPERIO_FINTEK_COMMON_ROMSTAGE
diff --git a/src/superio/fintek/f71889a/Makefile.inc b/src/superio/fintek/f71889a/Makefile.inc
new file mode 100644
index 0000000..99dee02
--- /dev/null
+++ b/src/superio/fintek/f71889a/Makefile.inc
@@ -0,0 +1,17 @@
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+##
+## 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, either version 3 of the License, or
+## (at your option) any later version.
+##
+## 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.
+##
+
+ramstage-$(CONFIG_SUPERIO_FINTEK_F71889A) += superio.c
diff --git a/src/superio/fintek/f71889a/f71889a.h b/src/superio/fintek/f71889a/f71889a.h
new file mode 100644
index 0000000..c28c55f
--- /dev/null
+++ b/src/superio/fintek/f71889a/f71889a.h
@@ -0,0 +1,30 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+ *
+ * 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, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ */
+
+#ifndef SUPERIO_FINTEK_F71889A_H
+#define SUPERIO_FINTEK_F71889A_H
+
+/* Logical Device Numbers (LDN). */
+#define F71889A_SP1 0x01 /* UART1 */
+#define F71889A_SP2 0x02 /* UART2 */
+#define F71889A_PP 0x03 /* Parallel Port */
+#define F71889A_HWM 0x04 /* Hardware Monitor */
+#define F71889A_KBC 0x05 /* Keyboard/Mouse */
+#define F71889A_GPIO 0x06 /* GPIO */
+#define F71889A_VID 0x07 /* VID */
+#define F71889A_PM 0x0a /* ACPI/PME */
+
+#endif /* SUPERIO_FINTEK_F71889A_H */
diff --git a/src/superio/fintek/f71889a/superio.c b/src/superio/fintek/f71889a/superio.c
new file mode 100644
index 0000000..89b9245
--- /dev/null
+++ b/src/superio/fintek/f71889a/superio.c
@@ -0,0 +1,70 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+ *
+ * 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, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ */
+
+#include <arch/io.h>
+#include <device/device.h>
+#include <device/pnp.h>
+#include <superio/conf_mode.h>
+#include <console/console.h>
+#include <stdlib.h>
+#include <pc80/keyboard.h>
+#include "f71889a.h"
+
+static void f71889a_init(struct device *dev)
+{
+ if (!dev->enabled)
+ return;
+
+ switch (dev->path.pnp.device) {
+
+ case F71889A_KBC:
+ pc_keyboard_init(NO_AUX_DEVICE);
+ break;
+ }
+}
+
+static struct device_operations ops = {
+ .read_resources = pnp_read_resources,
+ .set_resources = pnp_set_resources,
+ .enable_resources = pnp_enable_resources,
+ .enable = pnp_alt_enable,
+ .init = f71889a_init,
+ .ops_pnp_mode = &pnp_conf_mode_8787_aa,
+};
+
+static struct pnp_info pnp_dev_info[] = {
+ /* TODO: Some of the 0x07f8 etc. values may not be correct.
+ * double check bitmasks
+ */
+ { &ops, F71889A_SP1, PNP_IO0 | PNP_IRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_SP2, PNP_IO0 | PNP_IRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_PP, PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_HWM, PNP_IO0 | PNP_IRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_KBC, PNP_IO0 | PNP_IRQ0 | PNP_IRQ1, {0x07ff, 0}, },
+ { &ops, F71889A_GPIO, PNP_IRQ0, },
+ { &ops, F71889A_VID, PNP_IO0, {0x0ff8, 0}, },
+ { &ops, F71889A_PM, },
+};
+
+static void enable_dev(struct device *dev)
+{
+ pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
+}
+
+struct chip_operations superio_fintek_f71889a_ops = {
+ CHIP_NAME("Fintek F71889A Super I/O")
+ .enable_dev = enable_dev
+};
Marty Plummer (ntzrmtthihu777(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17669
-gerrit
commit ad8fb9eb0b8e5b8f72ccfe59b8278e84e71fa28d
Author: Marty Plummer <ntzrmtthihu777(a)gmail.com>
Date: Thu Dec 1 02:14:39 2016 -0600
superio/fintek: Add support for Fintek F71889A.
Datasheet: F71889A rev V0.21P
Change-Id: I91c60a3b48cd4872ae7a27de8f49faa40e877a27
Signed-off-by: Marty Plummer <ntzrmtthihu777(a)gmail.com>
---
src/superio/fintek/Makefile.inc | 1 +
src/superio/fintek/f71889a/Kconfig | 19 +++++++++
src/superio/fintek/f71889a/Makefile.inc | 17 ++++++++
src/superio/fintek/f71889a/f71889a.h | 30 ++++++++++++++
src/superio/fintek/f71889a/superio.c | 70 +++++++++++++++++++++++++++++++++
5 files changed, 137 insertions(+)
diff --git a/src/superio/fintek/Makefile.inc b/src/superio/fintek/Makefile.inc
index 0d0ae66..d70fc99 100644
--- a/src/superio/fintek/Makefile.inc
+++ b/src/superio/fintek/Makefile.inc
@@ -21,6 +21,7 @@ subdirs-y += f71859
subdirs-y += f71863fg
subdirs-y += f71869ad
subdirs-y += f71872
+subdirs-y += f71889a
subdirs-y += f81216h
subdirs-y += f81865f
subdirs-y += f81866d
diff --git a/src/superio/fintek/f71889a/Kconfig b/src/superio/fintek/f71889a/Kconfig
new file mode 100644
index 0000000..1e561aa
--- /dev/null
+++ b/src/superio/fintek/f71889a/Kconfig
@@ -0,0 +1,19 @@
+#
+# This file is part of the coreboot project.
+#
+# Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+#
+# 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, either version 3 of the License, or
+# (at your option) any later version.
+#
+# 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.
+#
+
+config SUPERIO_FINTEK_F71889A
+ bool
+ select SUPERIO_FINTEK_COMMON_ROMSTAGE
diff --git a/src/superio/fintek/f71889a/Makefile.inc b/src/superio/fintek/f71889a/Makefile.inc
new file mode 100644
index 0000000..99dee02
--- /dev/null
+++ b/src/superio/fintek/f71889a/Makefile.inc
@@ -0,0 +1,17 @@
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+##
+## 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, either version 3 of the License, or
+## (at your option) any later version.
+##
+## 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.
+##
+
+ramstage-$(CONFIG_SUPERIO_FINTEK_F71889A) += superio.c
diff --git a/src/superio/fintek/f71889a/f71889a.h b/src/superio/fintek/f71889a/f71889a.h
new file mode 100644
index 0000000..c28c55f
--- /dev/null
+++ b/src/superio/fintek/f71889a/f71889a.h
@@ -0,0 +1,30 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+ *
+ * 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, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ */
+
+#ifndef SUPERIO_FINTEK_F71889A_H
+#define SUPERIO_FINTEK_F71889A_H
+
+/* Logical Device Numbers (LDN). */
+#define F71889A_SP1 0x01 /* UART1 */
+#define F71889A_SP2 0x02 /* UART2 */
+#define F71889A_PP 0x03 /* Parallel Port */
+#define F71889A_HWM 0x04 /* Hardware Monitor */
+#define F71889A_KBC 0x05 /* Keyboard/Mouse */
+#define F71889A_GPIO 0x06 /* GPIO */
+#define F71889A_VID 0x07 /* VID */
+#define F71889A_PM 0x0a /* ACPI/PME */
+
+#endif /* SUPERIO_FINTEK_F71889A_H */
diff --git a/src/superio/fintek/f71889a/superio.c b/src/superio/fintek/f71889a/superio.c
new file mode 100644
index 0000000..54770b4
--- /dev/null
+++ b/src/superio/fintek/f71889a/superio.c
@@ -0,0 +1,70 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2016 Marty Plummer <ntzrmtthihu777(a)gmail.com>
+ *
+ * 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, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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.
+ */
+
+#include <arch/io.h>
+#include <device/device.h>
+#include <device/pnp.h>
+#include <superio/conf_mode.h>
+#include <console/console.h>
+#include <stdlib.h>
+#include <pc80/keyboard.h>
+#include "f71889a.h"
+
+static void f71889a_init(struct device *dev)
+{
+ if (!dev->enabled)
+ return;
+
+ switch (dev->path.pnp.device) {
+
+ case F71889A_KBC:
+ pc_keyboard_init(NO_AUX_DEVICE);
+ break;
+ }
+}
+
+static struct device_operations ops = {
+ .read_resources = pnp_read_resources,
+ .set_resources = pnp_set_resources,
+ .enable_resources = pnp_enable_resources,
+ .enable = pnp_alt_enable,
+ .init = f71889a_init,
+ .ops_pnp_mode = &pnp_conf_mode_8787_aa,
+};
+
+static struct pnp_info pnp_dev_info[] = {
+ /* TODO: Some of the 0x07f8 etc. values may not be correct.
+ * double check bitmasks
+ */
+ { &ops, F71889A_SP1, PNP_IO0 | PNP_IRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_SP2, PNP_IO0 | PNP_IRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_PP, PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_HWM, PNP_IO0 | PNP_IRQ0, {0x07f8, 0}, },
+ { &ops, F71889A_KBC, PNP_IO0 | PNP_IRQ0 | PNP_IRQ1, {0x07ff, 0}, },
+ { &ops, F71889A_GPIO, PNP_IRQ0, },
+ { &ops, F71889A_VID, PNP_IO0, {0x0ff8, 0}, },
+ { &ops, F71889A_PM, },
+};
+
+static void enable_dev(struct device *dev)
+{
+ pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
+}
+
+struct chip_operations superio_fintek_f71889a_ops = {
+ CHIP_NAME("Fintek F71889A Super I/O")
+ .enable_Dev = enable_dev
+};