summaryrefslogtreecommitdiff
path: root/src/superio/winbond/common
diff options
context:
space:
mode:
authorKeith Hui <buurin@gmail.com>2017-09-01 19:55:49 -0400
committerKyösti Mälkki <kyosti.malkki@gmail.com>2017-09-21 15:29:49 +0000
commitaaa16fede70aaac56d1c835e663f52c4735826d8 (patch)
tree35b72d736a61528999a2ccacb02480618acaa316 /src/superio/winbond/common
parent402276574b9812c0e2d527ed50a3392439a97919 (diff)
downloadcoreboot-aaa16fede70aaac56d1c835e663f52c4735826d8.tar.xz
superio/winbond/*: Unify w*_set_clksel_48()
This function is identical throughout all Winbond superios in the tree, so move it into superio/winbond/common/early_init.c, renamed from early_serial.c because it now does more than just early serial. Change all affected mainboards to use the unified function. Change-Id: If05e0db93375641917e538d83aacd1b50fbd033b Signed-off-by: Keith Hui <buurin@gmail.com> Reviewed-on: https://review.coreboot.org/21331 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net> Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src/superio/winbond/common')
-rw-r--r--src/superio/winbond/common/early_init.c (renamed from src/superio/winbond/common/early_serial.c)13
-rw-r--r--src/superio/winbond/common/winbond.h1
2 files changed, 13 insertions, 1 deletions
diff --git a/src/superio/winbond/common/early_serial.c b/src/superio/winbond/common/early_init.c
index aebbd38b46..7c3ce2b3a5 100644
--- a/src/superio/winbond/common/early_serial.c
+++ b/src/superio/winbond/common/early_init.c
@@ -15,7 +15,7 @@
*/
/*
- * A generic romstage (pre-ram) driver for Winbond variant Super I/O chips.
+ * A generic romstage (pre-ram) driver for various Winbond Super I/O chips.
*
* The following is derived directly from the vendor Winbond's data-sheets:
*
@@ -79,3 +79,14 @@ void winbond_set_pinmux(pnp_devfn_t dev, uint8_t offset, uint8_t mask, uint8_t s
pnp_write_config(dev, offset, byte);
pnp_exit_conf_state(dev);
}
+
+void winbond_set_clksel_48(pnp_devfn_t dev)
+{
+ u8 reg8;
+
+ pnp_enter_conf_state(dev);
+ reg8 = pnp_read_config(dev, 0x24);
+ reg8 |= (1 << 6); /* Set the clock input to 48MHz. */
+ pnp_write_config(dev, 0x24, reg8);
+ pnp_exit_conf_state(dev);
+}
diff --git a/src/superio/winbond/common/winbond.h b/src/superio/winbond/common/winbond.h
index 6e67eeb83d..e472018bf1 100644
--- a/src/superio/winbond/common/winbond.h
+++ b/src/superio/winbond/common/winbond.h
@@ -22,6 +22,7 @@
void winbond_enable_serial(pnp_devfn_t dev, uint16_t iobase);
void winbond_set_pinmux(pnp_devfn_t dev, uint8_t offset, uint8_t mask, uint8_t state);
+void winbond_set_clksel_48(pnp_devfn_t dev);
void pnp_enter_conf_state(pnp_devfn_t dev);
void pnp_exit_conf_state(pnp_devfn_t dev);