Paul Menzel (paulepanter(a)users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5583
-gerrit
commit ecbaa0f0af0785ffda08697067e71cd980151e0b
Author: Paul Menzel <paulepanter(a)users.sourceforge.net>
Date: Sat Apr 26 10:28:19 2014 +0200
drivers/pc80/Kconfig: Do not initialize PS/2 keyboard with GRUB 2 payload
Change-Id: Ia5d902e7c0fa34eaff26a31507751815bf2d2581
Signed-off-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
---
src/drivers/pc80/Kconfig | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/drivers/pc80/Kconfig b/src/drivers/pc80/Kconfig
index 37ba6bc..485dd64 100644
--- a/src/drivers/pc80/Kconfig
+++ b/src/drivers/pc80/Kconfig
@@ -2,8 +2,8 @@
# reliably support PS/2 init themselves.
config DRIVERS_PS2_KEYBOARD
bool "PS/2 keyboard init"
- default n if PAYLOAD_SEABIOS
- default y if !PAYLOAD_SEABIOS
+ default n if PAYLOAD_GRUB2 || PAYLOAD_SEABIOS
+ default y if !(PAYLOAD_GRUB2 || PAYLOAD_SEABIOS)
help
Enable this option to initialize PS/2 keyboards found connected
to the PS/2 port.
Paul Menzel (paulepanter(a)users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5582
-gerrit
commit 7ad328bbf83db6352b5db04b0c696042cd90cc53
Author: Paul Menzel <paulepanter(a)users.sourceforge.net>
Date: Sat Apr 26 10:22:43 2014 +0200
drivers/pc80/Kconfig: Add GRUB 2 to list of payloads not needing PS/2 keyboard inits
Change-Id: I0783ee123e0e1ecd5603bc6a40b53d3b0c23bf6d
Signed-off-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
---
src/drivers/pc80/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/drivers/pc80/Kconfig b/src/drivers/pc80/Kconfig
index acd1503..37ba6bc 100644
--- a/src/drivers/pc80/Kconfig
+++ b/src/drivers/pc80/Kconfig
@@ -9,7 +9,7 @@ config DRIVERS_PS2_KEYBOARD
to the PS/2 port.
Some payloads (eg, filo) require this option. Other payloads
- (eg, SeaBIOS, Linux) do not require it.
+ (eg, GRUB 2, SeaBIOS, Linux) do not require it.
Initializing a PS/2 keyboard can take several hundred milliseconds.
If you know you will only use a payload which does not require
Paul Menzel (paulepanter(a)users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5581
-gerrit
commit f1e271be20f465546e1e971c722b0e6ebb02eb88
Author: Paul Menzel <paulepanter(a)users.sourceforge.net>
Date: Sat Apr 26 10:18:12 2014 +0200
drivers/pc80/Kconfig: Do not init PS/2 keyboard if SeaBIOS is used as payload
As the Kconfig description of `DRIVERS_PS2_KEYBOARD` says, SeaBIOS is able to
initialize the PS/2 keyboard itself, so it is not necessary to do it in coreboot.
SeaBIOS is also able to do it faster as discussed in a thread from October 2010 [1].
[1] http://www.coreboot.org/pipermail/coreboot/2010-October/thread.html#61310
[coreboot] coreboot+seabios timings
Change-Id: I1248cec3e2ca5b9311e46df8aabf67e14ffd4ea6
Signed-off-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
---
src/drivers/pc80/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/drivers/pc80/Kconfig b/src/drivers/pc80/Kconfig
index 3c8fd8c..acd1503 100644
--- a/src/drivers/pc80/Kconfig
+++ b/src/drivers/pc80/Kconfig
@@ -2,7 +2,8 @@
# reliably support PS/2 init themselves.
config DRIVERS_PS2_KEYBOARD
bool "PS/2 keyboard init"
- default y
+ default n if PAYLOAD_SEABIOS
+ default y if !PAYLOAD_SEABIOS
help
Enable this option to initialize PS/2 keyboards found connected
to the PS/2 port.
Edward O'Callaghan (eocallaghan(a)alterapraxis.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5576
-gerrit
commit 3d4f1e5c2535c27cca2b7962be56048db148c7d1
Author: Edward O'Callaghan <eocallaghan(a)alterapraxis.com>
Date: Thu Apr 24 02:58:11 2014 +1000
superio/fintek/f71869ad: Configure multi-func reg in devicetree
Facilitate for the configuration of so called "Multi-function Select
Registers" with devicetree.cb in ramstage.
Make use of this new functionality in, mainboard/jetway/nf81-t56n-lf to
correctly configure the Fintek's multiplexed GPIO pins to be in AMD TSI
mode. This allows the Fintek to correctly talk to the Southbridge over
the SMBus for CPU temperature data as to control fans and so on.
Change-Id: I80abcd8b767fc4b22d00d1384ce4ef89fe837e3d
Signed-off-by: Edward O'Callaghan <eocallaghan(a)alterapraxis.com>
---
src/mainboard/jetway/nf81-t56n-lf/devicetree.cb | 5 ++
src/superio/fintek/f71869ad/Makefile.inc | 1 +
src/superio/fintek/f71869ad/chip.h | 9 +++-
src/superio/fintek/f71869ad/f71869ad_multifunc.c | 61 ++++++++++++++++++++++++
src/superio/fintek/f71869ad/fintek_internal.h | 29 +++++++++++
src/superio/fintek/f71869ad/superio.c | 4 ++
6 files changed, 108 insertions(+), 1 deletion(-)
diff --git a/src/mainboard/jetway/nf81-t56n-lf/devicetree.cb b/src/mainboard/jetway/nf81-t56n-lf/devicetree.cb
index 574bb8a..18722de 100644
--- a/src/mainboard/jetway/nf81-t56n-lf/devicetree.cb
+++ b/src/mainboard/jetway/nf81-t56n-lf/devicetree.cb
@@ -56,6 +56,11 @@ chip northbridge/amd/agesa/family14/root_complex
device pci 14.2 on end # HDA 0x4383
device pci 14.3 on # LPC 0x439d
chip superio/fintek/f71869ad
+ register "multi_function_register_1" = "0x01"
+ register "multi_function_register_2" = "0x6f"
+ register "multi_function_register_3" = "0x24"
+ register "multi_function_register_4" = "0x00"
+ register "multi_function_register_5" = "0x60"
# XXX: 4e is the default index port and .xy is the
# LDN indexing the pnp_info array found in the superio.c
# NB: Jetway board changes the default (0x4e) index port to (0x2e) by pin 124,
diff --git a/src/superio/fintek/f71869ad/Makefile.inc b/src/superio/fintek/f71869ad/Makefile.inc
index 12efbeb..35e596d 100644
--- a/src/superio/fintek/f71869ad/Makefile.inc
+++ b/src/superio/fintek/f71869ad/Makefile.inc
@@ -19,4 +19,5 @@
##
romstage-$(CONFIG_SUPERIO_FINTEK_F71869AD) += early_serial.c
+ramstage-$(CONFIG_SUPERIO_FINTEK_F71869AD) += f71869ad_multifunc.c
ramstage-$(CONFIG_SUPERIO_FINTEK_F71869AD) += superio.c
diff --git a/src/superio/fintek/f71869ad/chip.h b/src/superio/fintek/f71869ad/chip.h
index 5b18c33..5011383 100644
--- a/src/superio/fintek/f71869ad/chip.h
+++ b/src/superio/fintek/f71869ad/chip.h
@@ -22,10 +22,17 @@
#define SUPERIO_FINTEK_F71869AD_CHIP_H
#include <pc80/keyboard.h>
-#include <device/device.h>
+#include <stdint.h>
struct superio_fintek_f71869ad_config {
struct pc_keyboard keyboard;
+
+ /* Member variables are defined in devicetree.cb. */
+ uint8_t multi_function_register_1;
+ uint8_t multi_function_register_2;
+ uint8_t multi_function_register_3;
+ uint8_t multi_function_register_4;
+ uint8_t multi_function_register_5;
};
#endif /* SUPERIO_FINTEK_F71869AD_CHIP_H */
diff --git a/src/superio/fintek/f71869ad/f71869ad_multifunc.c b/src/superio/fintek/f71869ad/f71869ad_multifunc.c
new file mode 100644
index 0000000..221d154
--- /dev/null
+++ b/src/superio/fintek/f71869ad/f71869ad_multifunc.c
@@ -0,0 +1,61 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2014 Edward O'Callaghan <eocallaghan(a)alterapraxis.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 2 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.
+ *
+ * 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 <arch/io.h>
+#include <device/device.h>
+#include <device/pnp.h>
+#include "chip.h"
+#include "fintek_internal.h"
+
+#define MULTI_FUNC_SEL_REG1 0x28
+#define MULTI_FUNC_SEL_REG2 0x29
+#define MULTI_FUNC_SEL_REG3 0x2A
+#define MULTI_FUNC_SEL_REG4 0x2B
+#define MULTI_FUNC_SEL_REG5 0x2C
+
+void f71869ad_multifunc_init(device_t dev)
+{
+ struct superio_fintek_f71869ad_config *conf = dev->chip_info;
+
+ pnp_enable_resources(dev);
+ pnp_enter_conf_mode(dev);
+
+ /* multi-func select reg1 */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG1,
+ conf->multi_function_register_1);
+
+ /* multi-func select reg2 (CLK_TUNE_EN=0) */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG2,
+ conf->multi_function_register_2);
+
+ /* multi-func select reg3 (CLK_TUNE_EN=0) */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG3,
+ conf->multi_function_register_3);
+
+ /* multi-func select reg4 (CLK_TUNE_EN=0) */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG4,
+ conf->multi_function_register_4);
+
+ /* multi-func select reg5 (CLK_TUNE_EN=0) */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG5,
+ conf->multi_function_register_5);
+
+ pnp_exit_conf_mode(dev);
+}
diff --git a/src/superio/fintek/f71869ad/fintek_internal.h b/src/superio/fintek/f71869ad/fintek_internal.h
new file mode 100644
index 0000000..86f5669
--- /dev/null
+++ b/src/superio/fintek/f71869ad/fintek_internal.h
@@ -0,0 +1,29 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2014 Edward O'Callaghan <eocallaghan(a)alterapraxis.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 2 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.
+ *
+ * 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 SUPERIO_FINTEK_F71869AD_INTERNAL_H
+#define SUPERIO_FINTEK_F71869AD_INTERNAL_H
+
+#include <arch/io.h>
+#include <device/pnp.h>
+
+void f71869ad_multifunc_init(device_t dev);
+
+#endif /* SUPERIO_FINTEK_F71869AD_INTERNAL_H */
diff --git a/src/superio/fintek/f71869ad/superio.c b/src/superio/fintek/f71869ad/superio.c
index 11ad6f8..770a712 100644
--- a/src/superio/fintek/f71869ad/superio.c
+++ b/src/superio/fintek/f71869ad/superio.c
@@ -25,6 +25,7 @@
#include <console/console.h>
#include <stdlib.h>
+#include "fintek_internal.h"
#include "chip.h"
#include "f71869ad.h"
@@ -40,6 +41,9 @@ static void f71869ad_init(device_t dev)
case F71869AD_KBC:
pc_keyboard_init(&conf->keyboard);
break;
+ case F71869AD_HWM:
+ f71869ad_multifunc_init(dev);
+ break;
}
}
Edward O'Callaghan (eocallaghan(a)alterapraxis.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5576
-gerrit
commit 6b2273ae6534caf6c2319a86bcc5c20f2aea931f
Author: Edward O'Callaghan <eocallaghan(a)alterapraxis.com>
Date: Thu Apr 24 02:58:11 2014 +1000
superio/fintek/f71869ad: devicetree conf of multi-func reg
Facilitate for the configuration of so called "Multi-function Select
Registers" with devicetree.cb in ramstage.
Make use of this new functionality in, mainboard/jetway/nf81-t56n-lf.
Change-Id: I80abcd8b767fc4b22d00d1384ce4ef89fe837e3d
Signed-off-by: Edward O'Callaghan <eocallaghan(a)alterapraxis.com>
---
src/mainboard/jetway/nf81-t56n-lf/devicetree.cb | 5 ++
src/superio/fintek/f71869ad/Makefile.inc | 1 +
src/superio/fintek/f71869ad/chip.h | 9 ++++
src/superio/fintek/f71869ad/f71869ad_multifunc.c | 61 ++++++++++++++++++++++++
src/superio/fintek/f71869ad/fintek_internal.h | 29 +++++++++++
src/superio/fintek/f71869ad/superio.c | 4 ++
6 files changed, 109 insertions(+)
diff --git a/src/mainboard/jetway/nf81-t56n-lf/devicetree.cb b/src/mainboard/jetway/nf81-t56n-lf/devicetree.cb
index 574bb8a..18722de 100644
--- a/src/mainboard/jetway/nf81-t56n-lf/devicetree.cb
+++ b/src/mainboard/jetway/nf81-t56n-lf/devicetree.cb
@@ -56,6 +56,11 @@ chip northbridge/amd/agesa/family14/root_complex
device pci 14.2 on end # HDA 0x4383
device pci 14.3 on # LPC 0x439d
chip superio/fintek/f71869ad
+ register "multi_function_register_1" = "0x01"
+ register "multi_function_register_2" = "0x6f"
+ register "multi_function_register_3" = "0x24"
+ register "multi_function_register_4" = "0x00"
+ register "multi_function_register_5" = "0x60"
# XXX: 4e is the default index port and .xy is the
# LDN indexing the pnp_info array found in the superio.c
# NB: Jetway board changes the default (0x4e) index port to (0x2e) by pin 124,
diff --git a/src/superio/fintek/f71869ad/Makefile.inc b/src/superio/fintek/f71869ad/Makefile.inc
index 117239a..87d96e4 100644
--- a/src/superio/fintek/f71869ad/Makefile.inc
+++ b/src/superio/fintek/f71869ad/Makefile.inc
@@ -18,4 +18,5 @@
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##
+ramstage-$(CONFIG_SUPERIO_FINTEK_F71869AD) += f71869ad_multifunc.c
ramstage-$(CONFIG_SUPERIO_FINTEK_F71869AD) += superio.c
diff --git a/src/superio/fintek/f71869ad/chip.h b/src/superio/fintek/f71869ad/chip.h
index ea2ee6e..f10c151 100644
--- a/src/superio/fintek/f71869ad/chip.h
+++ b/src/superio/fintek/f71869ad/chip.h
@@ -22,9 +22,18 @@
#define SUPERIO_FINTEK_F71869AD_CHIP_H
#include <pc80/keyboard.h>
+#include <stdint.h>
struct superio_fintek_f71869ad_config {
struct pc_keyboard keyboard;
+
+ /* Member variables are defined in devicetree.cb. */
+ u8 multi_function_register_1;
+ u8 multi_function_register_2;
+ u8 multi_function_register_3;
+ u8 multi_function_register_4;
+ u8 multi_function_register_5;
+
};
#endif /* SUPERIO_FINTEK_F71869AD_CHIP_H */
diff --git a/src/superio/fintek/f71869ad/f71869ad_multifunc.c b/src/superio/fintek/f71869ad/f71869ad_multifunc.c
new file mode 100644
index 0000000..221d154
--- /dev/null
+++ b/src/superio/fintek/f71869ad/f71869ad_multifunc.c
@@ -0,0 +1,61 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2014 Edward O'Callaghan <eocallaghan(a)alterapraxis.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 2 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.
+ *
+ * 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 <arch/io.h>
+#include <device/device.h>
+#include <device/pnp.h>
+#include "chip.h"
+#include "fintek_internal.h"
+
+#define MULTI_FUNC_SEL_REG1 0x28
+#define MULTI_FUNC_SEL_REG2 0x29
+#define MULTI_FUNC_SEL_REG3 0x2A
+#define MULTI_FUNC_SEL_REG4 0x2B
+#define MULTI_FUNC_SEL_REG5 0x2C
+
+void f71869ad_multifunc_init(device_t dev)
+{
+ struct superio_fintek_f71869ad_config *conf = dev->chip_info;
+
+ pnp_enable_resources(dev);
+ pnp_enter_conf_mode(dev);
+
+ /* multi-func select reg1 */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG1,
+ conf->multi_function_register_1);
+
+ /* multi-func select reg2 (CLK_TUNE_EN=0) */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG2,
+ conf->multi_function_register_2);
+
+ /* multi-func select reg3 (CLK_TUNE_EN=0) */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG3,
+ conf->multi_function_register_3);
+
+ /* multi-func select reg4 (CLK_TUNE_EN=0) */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG4,
+ conf->multi_function_register_4);
+
+ /* multi-func select reg5 (CLK_TUNE_EN=0) */
+ pnp_write_config(dev, MULTI_FUNC_SEL_REG5,
+ conf->multi_function_register_5);
+
+ pnp_exit_conf_mode(dev);
+}
diff --git a/src/superio/fintek/f71869ad/fintek_internal.h b/src/superio/fintek/f71869ad/fintek_internal.h
new file mode 100644
index 0000000..86f5669
--- /dev/null
+++ b/src/superio/fintek/f71869ad/fintek_internal.h
@@ -0,0 +1,29 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2014 Edward O'Callaghan <eocallaghan(a)alterapraxis.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 2 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.
+ *
+ * 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 SUPERIO_FINTEK_F71869AD_INTERNAL_H
+#define SUPERIO_FINTEK_F71869AD_INTERNAL_H
+
+#include <arch/io.h>
+#include <device/pnp.h>
+
+void f71869ad_multifunc_init(device_t dev);
+
+#endif /* SUPERIO_FINTEK_F71869AD_INTERNAL_H */
diff --git a/src/superio/fintek/f71869ad/superio.c b/src/superio/fintek/f71869ad/superio.c
index 11ad6f8..770a712 100644
--- a/src/superio/fintek/f71869ad/superio.c
+++ b/src/superio/fintek/f71869ad/superio.c
@@ -25,6 +25,7 @@
#include <console/console.h>
#include <stdlib.h>
+#include "fintek_internal.h"
#include "chip.h"
#include "f71869ad.h"
@@ -40,6 +41,9 @@ static void f71869ad_init(device_t dev)
case F71869AD_KBC:
pc_keyboard_init(&conf->keyboard);
break;
+ case F71869AD_HWM:
+ f71869ad_multifunc_init(dev);
+ break;
}
}