From fc7090b249ddfc7d5332ca8bee0f322607643960 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Sat, 11 Jan 2014 10:29:14 +0100 Subject: [PATCH] ec/lenovo/h8: Add an option to swap ctrl and fn. Tested on my X201 and X230. Change-Id: I3c7ec65681157d15c6e87eea64779a08e03ae5a8 Signed-off-by: Vladimir Serbinenko Reviewed-on: http://review.coreboot.org/4660 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi --- src/ec/lenovo/h8/h8.c | 12 ++++++++++++ src/mainboard/lenovo/t60/cmos.layout | 1 + src/mainboard/lenovo/x201/cmos.default | 1 + src/mainboard/lenovo/x201/cmos.layout | 3 ++- src/mainboard/lenovo/x60/cmos.default | 1 + src/mainboard/lenovo/x60/cmos.layout | 1 + 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ec/lenovo/h8/h8.c b/src/ec/lenovo/h8/h8.c index 8dfec0614c..e44a2781f5 100644 --- a/src/ec/lenovo/h8/h8.c +++ b/src/ec/lenovo/h8/h8.c @@ -62,6 +62,14 @@ static void h8_wwan_enable(int on) ec_clr_bit(0x3a, 6); } +static void h8_fn_ctrl_swap(int on) +{ + if (on) + ec_set_bit(0xce, 4); + else + ec_clr_bit(0xce, 4); +} + static void h8_log_ec_version(void) { char ecfw[17]; @@ -190,6 +198,10 @@ static void h8_enable(device_t dev) h8_wwan_enable(val); + if (get_option(&val, "fn_ctrl_swap") != CB_SUCCESS) + val = 0; + h8_fn_ctrl_swap(val); + if (get_option(&val, "first_battery") != CB_SUCCESS) val = 1; diff --git a/src/mainboard/lenovo/t60/cmos.layout b/src/mainboard/lenovo/t60/cmos.layout index a179752960..10f75c03a7 100644 --- a/src/mainboard/lenovo/t60/cmos.layout +++ b/src/mainboard/lenovo/t60/cmos.layout @@ -112,6 +112,7 @@ entries 1062 1 e 1 wwan 1064 8 h 0 volume 1072 1 e 9 first_battery +1074 1 e 1 fn_ctrl_swap # ----------------------------------------------------------------- enumerations diff --git a/src/mainboard/lenovo/x201/cmos.default b/src/mainboard/lenovo/x201/cmos.default index 4577e70cca..ae57b97b88 100644 --- a/src/mainboard/lenovo/x201/cmos.default +++ b/src/mainboard/lenovo/x201/cmos.default @@ -9,3 +9,4 @@ first_battery=Primary bluetooth=Enable wwan=Enable touchpad=Enable +fn_ctrl_swap=Disable diff --git a/src/mainboard/lenovo/x201/cmos.layout b/src/mainboard/lenovo/x201/cmos.layout index 39591783e3..f91fb5190b 100644 --- a/src/mainboard/lenovo/x201/cmos.layout +++ b/src/mainboard/lenovo/x201/cmos.layout @@ -90,7 +90,8 @@ entries 412 1 e 1 bluetooth 413 1 e 1 wwan 414 1 e 1 touchpad -#415 569 r 0 unused +417 1 e 1 fn_ctrl_swap +#419 565 r 0 unused # coreboot config options: check sums 984 16 h 0 check_sum diff --git a/src/mainboard/lenovo/x60/cmos.default b/src/mainboard/lenovo/x60/cmos.default index 5d82ff0078..a2620a94eb 100644 --- a/src/mainboard/lenovo/x60/cmos.default +++ b/src/mainboard/lenovo/x60/cmos.default @@ -12,3 +12,4 @@ volume=0x3 tft_brightness=0xff first_battery=Primary bluetooth=Enable +fn_ctrl_swap=Disable diff --git a/src/mainboard/lenovo/x60/cmos.layout b/src/mainboard/lenovo/x60/cmos.layout index 45bb95abab..9482072744 100644 --- a/src/mainboard/lenovo/x60/cmos.layout +++ b/src/mainboard/lenovo/x60/cmos.layout @@ -112,6 +112,7 @@ entries 1080 1 e 9 first_battery 1081 1 e 1 bluetooth 1082 1 e 1 wwan +1085 1 e 1 fn_ctrl_swap # ----------------------------------------------------------------- enumerations