diff options
author | Rudolf Marek <r.marek@assembler.cz> | 2009-04-12 18:01:55 +0000 |
---|---|---|
committer | Rudolf Marek <r.marek@assembler.cz> | 2009-04-12 18:01:55 +0000 |
commit | e86c65b62e4dff095512058fe300814c424ceb6f (patch) | |
tree | 47f01dc77c842bb277ad4036d4378cb1ee5cd8d1 /src/superio/ite/it8712f | |
parent | 7845fb59a2890b7cc9d724aa0f29c463154edbde (diff) | |
download | coreboot-e86c65b62e4dff095512058fe300814c424ceb6f.tar.xz |
The IT8712F needs to have the configuration bits changed to handle the power for
memory correctly during suspend.s
Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Acked-by: Peter Stuge <peter@stuge.se>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4096 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/superio/ite/it8712f')
-rw-r--r-- | src/superio/ite/it8712f/it8712f_early_serial.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/superio/ite/it8712f/it8712f_early_serial.c b/src/superio/ite/it8712f/it8712f_early_serial.c index 9758e868fd..03899625bf 100644 --- a/src/superio/ite/it8712f/it8712f_early_serial.c +++ b/src/superio/ite/it8712f/it8712f_early_serial.c @@ -32,6 +32,7 @@ #define IT8712F_CONFIG_REG_CONFIGSEL 0x22 /* Configuration Select. */ #define IT8712F_CONFIG_REG_CLOCKSEL 0x23 /* Clock Selection. */ #define IT8712F_CONFIG_REG_SWSUSP 0x24 /* Software Suspend, Flash I/F. */ +#define IT8712F_CONFIG_REG_MFC 0x2a /* Multi-function control */ #define IT8712F_CONFIG_REG_WATCHDOG 0x72 /* Watchdog control. */ #define IT8712F_CONFIGURATION_PORT 0x2e /* Write-only. */ @@ -78,6 +79,21 @@ static void it8712f_24mhz_clkin(void) } +static void it8712f_enable_3vsbsw(void) { + + /* We need to set enable 3VSBSW#, this was documented only in IT8712F_V0.9.2! + LDN 7, reg 0x2a - needed for S3, or memory power will be cut off. + Enable 3VSBSW#. (For System Suspend-to-RAM) + 0: 3VSBSW# will be always inactive. + 1: 3VSBSW# enabled. It will be (NOT SUSB#) NAND SUSC#. + */ + + it8712f_enter_conf(); + it8712f_sio_write(0x07, IT8712F_CONFIG_REG_MFC, 0x80); + it8712f_exit_conf(); +} + + static void it8712f_kill_watchdog(void) { it8712f_enter_conf(); |