Vladimir Serbinenko (phcoder@gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4661
-gerrit
commit edbf177df37f6fd619bed3fe089602e5c6e0a2d0 Author: Vladimir Serbinenko phcoder@gmail.com Date: Sat Jan 11 10:55:31 2014 +0100
ec/lenovo/h8: Implement locking Fn option.
Useful for accessibility.
Locking modifier (locking Fn) is a behaviour of modifier key when you don't have to hold it pressed to achieve the result. E.g. with normal Fn brightness up is: <Press Fn> <Press Home> <Despress Home> <Depress Fn> With locking Fn you can do: <Press Fn> <Depress Fn> <Press Home> <Despress Home>
Change-Id: I4da5adcea02428d936023891de08684cae77c44e Signed-off-by: Vladimir Serbinenko phcoder@gmail.com --- 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 | 1 + src/mainboard/lenovo/x60/cmos.default | 1 + src/mainboard/lenovo/x60/cmos.layout | 1 + 6 files changed, 17 insertions(+)
diff --git a/src/ec/lenovo/h8/h8.c b/src/ec/lenovo/h8/h8.c index 409fb05..0e65a0e 100644 --- a/src/ec/lenovo/h8/h8.c +++ b/src/ec/lenovo/h8/h8.c @@ -70,6 +70,14 @@ static void h8_fn_ctrl_swap(int on) ec_clr_bit(0xce, 4); }
+static void h8_fn_locking(int on) +{ + if (on) + ec_set_bit(0x0, 3); + else + ec_clr_bit(0x0, 3); +} + static void h8_log_ec_version(void) { char ecfw[17]; @@ -202,6 +210,10 @@ static void h8_enable(device_t dev) val = 0; h8_fn_ctrl_swap(val);
+ if (get_option(&val, "locking_fn") != CB_SUCCESS) + val = 0; + h8_fn_locking(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 10f75c0..72172ea 100644 --- a/src/mainboard/lenovo/t60/cmos.layout +++ b/src/mainboard/lenovo/t60/cmos.layout @@ -113,6 +113,7 @@ entries 1064 8 h 0 volume 1072 1 e 9 first_battery 1074 1 e 1 fn_ctrl_swap +1075 1 e 1 locking_fn # -----------------------------------------------------------------
enumerations diff --git a/src/mainboard/lenovo/x201/cmos.default b/src/mainboard/lenovo/x201/cmos.default index ae57b97..43b44d8 100644 --- a/src/mainboard/lenovo/x201/cmos.default +++ b/src/mainboard/lenovo/x201/cmos.default @@ -10,3 +10,4 @@ bluetooth=Enable wwan=Enable touchpad=Enable fn_ctrl_swap=Disable +locking_fn=Disable diff --git a/src/mainboard/lenovo/x201/cmos.layout b/src/mainboard/lenovo/x201/cmos.layout index f91fb51..035c1b7 100644 --- a/src/mainboard/lenovo/x201/cmos.layout +++ b/src/mainboard/lenovo/x201/cmos.layout @@ -91,6 +91,7 @@ entries 413 1 e 1 wwan 414 1 e 1 touchpad 417 1 e 1 fn_ctrl_swap +418 1 e 1 locking_fn #419 565 r 0 unused
# coreboot config options: check sums diff --git a/src/mainboard/lenovo/x60/cmos.default b/src/mainboard/lenovo/x60/cmos.default index a2620a9..3e0e094 100644 --- a/src/mainboard/lenovo/x60/cmos.default +++ b/src/mainboard/lenovo/x60/cmos.default @@ -13,3 +13,4 @@ tft_brightness=0xff first_battery=Primary bluetooth=Enable fn_ctrl_swap=Disable +locking_fn=Disable diff --git a/src/mainboard/lenovo/x60/cmos.layout b/src/mainboard/lenovo/x60/cmos.layout index 9482072..8475fef 100644 --- a/src/mainboard/lenovo/x60/cmos.layout +++ b/src/mainboard/lenovo/x60/cmos.layout @@ -113,6 +113,7 @@ entries 1081 1 e 1 bluetooth 1082 1 e 1 wwan 1085 1 e 1 fn_ctrl_swap +1086 1 e 1 locking_fn # -----------------------------------------------------------------
enumerations