[coreboot] [commit] r5948 - in trunk/src: . mainboard mainboard/amd/db800 mainboard/amd/norwich mainboard/amd/rumba mainboard/artecgroup/dbe61 mainboard/digitallogic/msm800sev mainboard/iei/pcisa-lx-800-r10 m...

repository service svn at coreboot.org
Wed Oct 13 08:23:02 CEST 2010


Author: stuge
Date: Wed Oct 13 08:23:02 2010
New Revision: 5948
URL: https://tracker.coreboot.org/trac/coreboot/changeset/5948

Log:
Enable or disable the power button in Kconfig

Some mainboards need to disable the power button to avoid turning off
right after being turned on, while other boards ship with a jumper over
the power button and should allow the user to configure the behavior.

This adds infrastructure in the form of four mutually exclusive options
which can be selected in a mainboard Kconfig (power button forced on/off,
and user-controllable with default on/off) and one result bool which
source code can test. (Enable the button or not.)

The options have been implemented in CS5536 code and for all mainboards
which select SOUTHBRIDGE_AMD_CS5536, but should be used also by other
chipsets where applicable. Note that if chipset code uses the result
bool ENABLE_POWER_BUTTON, then every board using that chipset must
select one out of the four control options in order to build.

All touched boards should have unchanged behavior, except
pcengines/alix1c, traverse/geos and lippert/hurricane-lx where the
power button can now be configured by the user.

Build tested for alix1c, alix2d, hurricane-lx and wyse-s50. Confirmed
to work as advertised on alix1c both with button enabled and disabled.

Includes additional traverse/geos changes from Nathan and
lippert/hurricane-lx changes from Jens to correctly use the new
feature on those boards.

Signed-off-by: Peter Stuge <peter at stuge.se>
Acked-by: Aurelien Guillaume <aurelien at iwi.me>
Acked-by: Nils Jacobs <njacobs8 at hetnet.nl>

Modified:
   trunk/src/Kconfig
   trunk/src/mainboard/Kconfig
   trunk/src/mainboard/amd/db800/Kconfig
   trunk/src/mainboard/amd/norwich/Kconfig
   trunk/src/mainboard/amd/rumba/Kconfig
   trunk/src/mainboard/artecgroup/dbe61/Kconfig
   trunk/src/mainboard/digitallogic/msm800sev/Kconfig
   trunk/src/mainboard/iei/pcisa-lx-800-r10/Kconfig
   trunk/src/mainboard/lippert/hurricane-lx/Kconfig
   trunk/src/mainboard/lippert/hurricane-lx/romstage.c
   trunk/src/mainboard/lippert/literunner-lx/Kconfig
   trunk/src/mainboard/lippert/roadrunner-lx/Kconfig
   trunk/src/mainboard/lippert/spacerunner-lx/Kconfig
   trunk/src/mainboard/pcengines/alix1c/Kconfig
   trunk/src/mainboard/pcengines/alix2d/Kconfig
   trunk/src/mainboard/pcengines/alix2d/romstage.c
   trunk/src/mainboard/traverse/geos/Kconfig
   trunk/src/mainboard/winent/pl6064/Kconfig
   trunk/src/mainboard/wyse/s50/Kconfig
   trunk/src/mainboard/wyse/s50/romstage.c
   trunk/src/southbridge/amd/cs5536/cs5536_early_setup.c

Modified: trunk/src/Kconfig
==============================================================================
--- trunk/src/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -736,4 +736,43 @@
 	hex
 	default 0x10
 
+# The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
+# POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
+# mutually exclusive. One of these options must be selected in the
+# mainboard Kconfig if the chipset supports enabling and disabling of
+# the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
+# in mainboard/Kconfig to know if the button should be enabled or not.
+
+config POWER_BUTTON_DEFAULT_ENABLE
+	def_bool n
+	help
+	  Select when the board has a power button which can optionally be
+	  disabled by the user.
+
+config POWER_BUTTON_DEFAULT_DISABLE
+	def_bool n
+	help
+	  Select when the board has a power button which can optionally be
+	  enabled by the user, e.g. when the board ships with a jumper over
+	  the power switch contacts.
+
+config POWER_BUTTON_FORCE_ENABLE
+	def_bool n
+	help
+	  Select when the board requires that the power button is always
+	  enabled.
+
+config POWER_BUTTON_FORCE_DISABLE
+	def_bool n
+	help
+	  Select when the board requires that the power button is always
+	  disabled, e.g. when it has been hardwired to ground.
+
+config POWER_BUTTON_IS_OPTIONAL
+	bool
+	default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
+	default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
+	help
+	  Internal option that controls ENABLE_POWER_BUTTON visibility.
+
 source src/Kconfig.deprecated_options

Modified: trunk/src/mainboard/Kconfig
==============================================================================
--- trunk/src/mainboard/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -247,4 +247,22 @@
 	default 0x200000 if COREBOOT_ROMSIZE_KB_2048
 	default 0x400000 if COREBOOT_ROMSIZE_KB_4096
 
+config ENABLE_POWER_BUTTON
+	bool "Enable the power button" if POWER_BUTTON_IS_OPTIONAL
+	default y if POWER_BUTTON_DEFAULT_ENABLE
+	default n if POWER_BUTTON_DEFAULT_DISABLE
+	help
+	  The selected mainboard can optionally have the power button tied
+	  to ground with a jumper so that the button appears to be
+	  constantly depressed. If this option is enabled and the jumper is
+	  installed then the board will turn on, but turn off again after a
+	  short timeout, usually 4 seconds.
+
+	  Select Y here if you have removed the jumper and want to use an
+	  actual power button. Select N if you have the jumper installed.
+
+config ENABLE_POWER_BUTTON
+	def_bool y if !POWER_BUTTON_IS_OPTIONAL && POWER_BUTTON_FORCE_ENABLE
+	def_bool n if !POWER_BUTTON_IS_OPTIONAL && POWER_BUTTON_FORCE_DISABLE
+
 endmenu

Modified: trunk/src/mainboard/amd/db800/Kconfig
==============================================================================
--- trunk/src/mainboard/amd/db800/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/amd/db800/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -11,6 +11,7 @@
 	select PIRQ_ROUTE
 	select UDELAY_TSC
 	select BOARD_ROMSIZE_KB_256
+	select POWER_BUTTON_FORCE_ENABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/amd/norwich/Kconfig
==============================================================================
--- trunk/src/mainboard/amd/norwich/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/amd/norwich/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -10,6 +10,7 @@
 	select PIRQ_ROUTE
 	select UDELAY_TSC
 	select BOARD_ROMSIZE_KB_256
+	select POWER_BUTTON_FORCE_ENABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/amd/rumba/Kconfig
==============================================================================
--- trunk/src/mainboard/amd/rumba/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/amd/rumba/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -27,6 +27,7 @@
 	select UDELAY_TSC
 	select HAVE_PIRQ_TABLE
 	select BOARD_ROMSIZE_KB_256
+	select POWER_BUTTON_FORCE_ENABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/artecgroup/dbe61/Kconfig
==============================================================================
--- trunk/src/mainboard/artecgroup/dbe61/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/artecgroup/dbe61/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -10,6 +10,7 @@
 	select PIRQ_ROUTE
 	select UDELAY_TSC
 	select BOARD_ROMSIZE_KB_256
+	select POWER_BUTTON_FORCE_DISABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/digitallogic/msm800sev/Kconfig
==============================================================================
--- trunk/src/mainboard/digitallogic/msm800sev/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/digitallogic/msm800sev/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -11,6 +11,7 @@
 	select PIRQ_ROUTE
 	select UDELAY_TSC
 	select BOARD_ROMSIZE_KB_256
+	select POWER_BUTTON_FORCE_ENABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/iei/pcisa-lx-800-r10/Kconfig
==============================================================================
--- trunk/src/mainboard/iei/pcisa-lx-800-r10/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/iei/pcisa-lx-800-r10/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -10,6 +10,7 @@
 	select HAVE_PIRQ_TABLE
 	select PIRQ_ROUTE
 	select BOARD_ROMSIZE_KB_256
+	select POWER_BUTTON_FORCE_ENABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/lippert/hurricane-lx/Kconfig
==============================================================================
--- trunk/src/mainboard/lippert/hurricane-lx/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/lippert/hurricane-lx/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -29,11 +29,20 @@
 config BOARD_OLD_REVISION
 	bool "Board is old pre-3.0 revision"
 	default n
+	select POWER_BUTTON_DEFAULT_DISABLE
 	help
 	  Look on the bottom side for a number like 406-0001-30.  The last 2
 	  digits state the PCB revision (3.0 in this example).  For 2.0 or older
 	  boards choose Y, for 3.0 and newer say N.
 
+	  Old revision boards need a jumper shorting the power button to
+	  power on automatically.  You may enable the button only after this
+	  jumper has been removed.  New revision boards are not restricted
+	  in this way, and always have the power button enabled.
+
+config POWER_BUTTON_FORCE_ENABLE
+	def_bool y if !BOARD_OLD_REVISION
+
 config ONBOARD_UARTS_RS485
 	bool "Switch on-board serial ports to RS485"
 	default n

Modified: trunk/src/mainboard/lippert/hurricane-lx/romstage.c
==============================================================================
--- trunk/src/mainboard/lippert/hurricane-lx/romstage.c	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/lippert/hurricane-lx/romstage.c	Wed Oct 13 08:23:02 2010	(r5948)
@@ -147,14 +147,7 @@
 
 	cpuRegInit(0, DIMM0, DIMM1, DRAM_TERMINATED);
 
-#if CONFIG_BOARD_OLD_REVISION
-	/*
-	 * Old revision boards need a jumper shorting the power button to power
-	 * on automatically. So we must disable the button's fail-safe function,
-	 * or the board will shut down after 4 s.
-	 */
-	outl(0, PMS_IO_BASE + PM_FSD); // Fail-Save Delay register
-#else
+#if !CONFIG_BOARD_OLD_REVISION
 	int err;
 	/* bit0 = Spread Spectrum */
 	if ((err = smc_send_config(SMC_CONFIG))) {

Modified: trunk/src/mainboard/lippert/literunner-lx/Kconfig
==============================================================================
--- trunk/src/mainboard/lippert/literunner-lx/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/lippert/literunner-lx/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -14,6 +14,7 @@
 	# Board is equipped with a 1 MB SPI flash, however, due to limitations
 	# of the IT8712F Super I/O, only the top 512 KB are directly mapped.
 	select BOARD_ROMSIZE_KB_512
+	select POWER_BUTTON_FORCE_ENABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/lippert/roadrunner-lx/Kconfig
==============================================================================
--- trunk/src/mainboard/lippert/roadrunner-lx/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/lippert/roadrunner-lx/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -13,6 +13,7 @@
 	# Standard chip is a 512 KB FWH. Replacing it with a 1 MB
 	# SST 49LF008A is possible.
 	select BOARD_ROMSIZE_KB_512
+	select POWER_BUTTON_FORCE_ENABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/lippert/spacerunner-lx/Kconfig
==============================================================================
--- trunk/src/mainboard/lippert/spacerunner-lx/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/lippert/spacerunner-lx/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -14,6 +14,7 @@
 	# Board is equipped with a 1 MB SPI flash, however, due to limitations
 	# of the IT8712F Super I/O, only the top 512 KB are directly mapped.
 	select BOARD_ROMSIZE_KB_512
+	select POWER_BUTTON_FORCE_ENABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/pcengines/alix1c/Kconfig
==============================================================================
--- trunk/src/mainboard/pcengines/alix1c/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/pcengines/alix1c/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -11,6 +11,7 @@
 	select PIRQ_ROUTE
 	select UDELAY_TSC
 	select BOARD_ROMSIZE_KB_512
+	select POWER_BUTTON_DEFAULT_DISABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/pcengines/alix2d/Kconfig
==============================================================================
--- trunk/src/mainboard/pcengines/alix2d/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/pcengines/alix2d/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -10,6 +10,7 @@
 	select PIRQ_ROUTE
 	select UDELAY_TSC
 	select BOARD_ROMSIZE_KB_512
+	select POWER_BUTTON_FORCE_DISABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/pcengines/alix2d/romstage.c
==============================================================================
--- trunk/src/mainboard/pcengines/alix2d/romstage.c	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/pcengines/alix2d/romstage.c	Wed Oct 13 08:23:02 2010	(r5948)
@@ -120,12 +120,6 @@
 static void mb_gpio_init(void)
 {
 	/*
-	 * Disable power button, since it is hardwired to ground on this board,
-	 * and the power would be cut off atfer a 4-second delay otherwise.
-	 */
-	outl(0x00020000, PMS_IO_BASE + 0x40);
-
-	/*
 	 * Enable LEDs GPIO outputs to light up the leds
 	 * This is how the original tinyBIOS sets them after boot.
 	 * Info: GPIO_IO_BASE, 0x6100, is only valid before PCI init, so it

Modified: trunk/src/mainboard/traverse/geos/Kconfig
==============================================================================
--- trunk/src/mainboard/traverse/geos/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/traverse/geos/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -10,6 +10,7 @@
 	select PIRQ_ROUTE
 	select UDELAY_TSC
 	select BOARD_ROMSIZE_KB_1024
+	select POWER_BUTTON_DEFAULT_DISABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/winent/pl6064/Kconfig
==============================================================================
--- trunk/src/mainboard/winent/pl6064/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/winent/pl6064/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -11,6 +11,7 @@
 	select PIRQ_ROUTE
 	select UDELAY_TSC
 	select BOARD_ROMSIZE_KB_512
+	select POWER_BUTTON_FORCE_ENABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/wyse/s50/Kconfig
==============================================================================
--- trunk/src/mainboard/wyse/s50/Kconfig	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/wyse/s50/Kconfig	Wed Oct 13 08:23:02 2010	(r5948)
@@ -28,6 +28,7 @@
 	select HAVE_PIRQ_TABLE
 	select PIRQ_ROUTE
 	select BOARD_ROMSIZE_KB_256
+	select POWER_BUTTON_FORCE_DISABLE
 
 config MAINBOARD_DIR
 	string

Modified: trunk/src/mainboard/wyse/s50/romstage.c
==============================================================================
--- trunk/src/mainboard/wyse/s50/romstage.c	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/mainboard/wyse/s50/romstage.c	Wed Oct 13 08:23:02 2010	(r5948)
@@ -134,9 +134,6 @@
 
 	cs5536_early_setup();
 	
-	/* disable the power button */
-	outl(0x00, PMS_IO_BASE + 0x40);
-
 	/* cs5536_disable_internal_uart	 disable them. Set them up now... */
 	cs5536_setup_onchipuart(1);
 

Modified: trunk/src/southbridge/amd/cs5536/cs5536_early_setup.c
==============================================================================
--- trunk/src/southbridge/amd/cs5536/cs5536_early_setup.c	Wed Oct 13 07:16:48 2010	(r5947)
+++ trunk/src/southbridge/amd/cs5536/cs5536_early_setup.c	Wed Oct 13 08:23:02 2010	(r5948)
@@ -92,8 +92,9 @@
 
 static void cs5536_setup_power_button(void)
 {
-	/*      Power Button Setup */
+#if CONFIG_ENABLE_POWER_BUTTON
 	outl(0x40020000, PMS_IO_BASE + 0x40);
+#endif
 
 	/* setup WORK_AUX/GPIO24, it is the external signal for 5536
 	 * vsb_work_aux controls all voltage rails except Vstandby & Vmem.




More information about the coreboot mailing list