summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAngel Pons <th3fanbus@gmail.com>2021-12-18 13:26:09 +0100
committerAngel Pons <th3fanbus@gmail.com>2021-12-20 12:18:14 +0000
commit4b9ac2c9933617545a7a6d9f14bc8e822902f9c1 (patch)
tree3df6bd22abf74e50baa20c8716e65d54586eb1b4 /src
parenta2c10a25391a739186caa43799657a4bf8959c3b (diff)
mb/starlabs/labtop: Add enum for `power_profile`
Introduce and use an enum for the `power_profile` CMOS option. Add a helper function that converts CMOS values into enum values. Using an enum allows GCC to warn about switch statements using enum types for their control expressions not handling all possible enum values, and also improves readability. Change-Id: I47a453ea12d164d26908a9944a89a481757e753c Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/60212 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Sean Rhodes <admin@starlabs.systems> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/starlabs/labtop/include/variants.h9
-rw-r--r--src/mainboard/starlabs/labtop/mainboard.c6
-rw-r--r--src/mainboard/starlabs/labtop/variants/tgl/devtree.c20
3 files changed, 25 insertions, 10 deletions
diff --git a/src/mainboard/starlabs/labtop/include/variants.h b/src/mainboard/starlabs/labtop/include/variants.h
index c95d15bd72..0dd41c062c 100644
--- a/src/mainboard/starlabs/labtop/include/variants.h
+++ b/src/mainboard/starlabs/labtop/include/variants.h
@@ -5,6 +5,15 @@
#include <soc/gpio.h>
+enum cmos_power_profile {
+ PP_POWER_SAVER = 0,
+ PP_BALANCED = 1,
+ PP_PERFORMANCE = 2,
+};
+#define NUM_POWER_PROFILES 3
+
+enum cmos_power_profile get_power_profile(enum cmos_power_profile fallback);
+
/*
* The next set of functions return the gpio table and fill in the number of
* entries for each table.
diff --git a/src/mainboard/starlabs/labtop/mainboard.c b/src/mainboard/starlabs/labtop/mainboard.c
index 60e65ee8c4..d394f2579d 100644
--- a/src/mainboard/starlabs/labtop/mainboard.c
+++ b/src/mainboard/starlabs/labtop/mainboard.c
@@ -5,6 +5,12 @@
#include <option.h>
#include <variants.h>
+enum cmos_power_profile get_power_profile(enum cmos_power_profile fallback)
+{
+ const unsigned int power_profile = get_uint_option("power_profile", fallback);
+ return power_profile < NUM_POWER_PROFILES ? power_profile : fallback;
+}
+
static void init_mainboard(void *chip_info)
{
const struct pad_config *pads;
diff --git a/src/mainboard/starlabs/labtop/variants/tgl/devtree.c b/src/mainboard/starlabs/labtop/variants/tgl/devtree.c
index 42a5aff366..09d26e8ecc 100644
--- a/src/mainboard/starlabs/labtop/variants/tgl/devtree.c
+++ b/src/mainboard/starlabs/labtop/variants/tgl/devtree.c
@@ -24,26 +24,26 @@ void devtree_update(void)
/* Update PL1 & PL2 based on CMOS settings */
- switch (get_uint_option("power_profile", 0)) {
- case 1:
+ switch (get_power_profile(PP_POWER_SAVER)) {
+ case PP_POWER_SAVER:
+ disable_turbo();
+ soc_conf_2core->tdp_pl1_override = 15;
+ soc_conf_4core->tdp_pl1_override = 15;
+ soc_conf_2core->tdp_pl2_override = 15;
+ soc_conf_4core->tdp_pl2_override = 15;
+ break;
+ case PP_BALANCED:
soc_conf_2core->tdp_pl1_override = 15;
soc_conf_4core->tdp_pl1_override = 15;
soc_conf_2core->tdp_pl2_override = 25;
soc_conf_4core->tdp_pl2_override = 25;
break;
- case 2:
+ case PP_PERFORMANCE:
soc_conf_2core->tdp_pl1_override = 28;
soc_conf_4core->tdp_pl1_override = 28;
soc_conf_2core->tdp_pl2_override = 40;
soc_conf_4core->tdp_pl2_override = 40;
break;
- default:
- disable_turbo();
- soc_conf_2core->tdp_pl1_override = 15;
- soc_conf_4core->tdp_pl1_override = 15;
- soc_conf_2core->tdp_pl2_override = 15;
- soc_conf_4core->tdp_pl2_override = 15;
- break;
}
/* Enable/Disable Wireless based on CMOS settings */