diff options
author | Keith Hui <buurin@gmail.com> | 2017-09-01 19:55:49 -0400 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2017-09-21 15:29:49 +0000 |
commit | aaa16fede70aaac56d1c835e663f52c4735826d8 (patch) | |
tree | 35b72d736a61528999a2ccacb02480618acaa316 /src/superio/winbond | |
parent | 402276574b9812c0e2d527ed50a3392439a97919 (diff) | |
download | coreboot-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')
-rw-r--r-- | src/superio/winbond/Makefile.inc | 2 | ||||
-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.h | 1 |
3 files changed, 14 insertions, 2 deletions
diff --git a/src/superio/winbond/Makefile.inc b/src/superio/winbond/Makefile.inc index ae4b283d3c..b0b7b8c520 100644 --- a/src/superio/winbond/Makefile.inc +++ b/src/superio/winbond/Makefile.inc @@ -14,7 +14,7 @@ ## ## include generic winbond pre-ram stage driver -romstage-$(CONFIG_SUPERIO_WINBOND_COMMON_ROMSTAGE) += common/early_serial.c +romstage-$(CONFIG_SUPERIO_WINBOND_COMMON_ROMSTAGE) += common/early_init.c subdirs-y += w83627dhg subdirs-y += w83627ehg 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); |