diff --git a/src/ec/lenovo/h8/chip.h b/src/ec/lenovo/h8/chip.h index 58313d4a2a..947a7a0779 100644 --- a/src/ec/lenovo/h8/chip.h +++ b/src/ec/lenovo/h8/chip.h @@ -48,5 +48,6 @@ struct ec_lenovo_h8_config { u8 eventf_enable; u8 trackpoint_enable; + u8 has_power_management_beeps; }; #endif diff --git a/src/ec/lenovo/h8/h8.c b/src/ec/lenovo/h8/h8.c index c67b3b3872..9c85da79db 100644 --- a/src/ec/lenovo/h8/h8.c +++ b/src/ec/lenovo/h8/h8.c @@ -160,6 +160,7 @@ static void h8_enable(device_t dev) { struct ec_lenovo_h8_config *conf = dev->chip_info; u8 val, tmp; + u8 beepmask0, beepmask1; h8_log_ec_version(); @@ -168,8 +169,18 @@ static void h8_enable(device_t dev) ec_write(H8_CONFIG2, conf->config2); ec_write(H8_CONFIG3, conf->config3); - ec_write(H8_SOUND_ENABLE0, conf->beepmask0); - ec_write(H8_SOUND_ENABLE1, conf->beepmask1); + beepmask0 = conf->beepmask0; + beepmask1 = conf->beepmask1; + + if (conf->has_power_management_beeps + && get_option(&val, "power_management_beeps") == CB_SUCCESS + && val == 0) { + beepmask0 = 0x00; + beepmask1 = 0x00; + } + ec_write(H8_SOUND_ENABLE0, beepmask0); + ec_write(H8_SOUND_ENABLE1, beepmask1); + ec_write(H8_SOUND_REPEAT, 0x00); ec_write(0x10, conf->event0_enable); diff --git a/src/mainboard/lenovo/t60/cmos.layout b/src/mainboard/lenovo/t60/cmos.layout index abd98d2ae7..fc8b39514c 100644 --- a/src/mainboard/lenovo/t60/cmos.layout +++ b/src/mainboard/lenovo/t60/cmos.layout @@ -114,6 +114,7 @@ entries 1072 1 e 9 first_battery 1074 1 e 1 fn_ctrl_swap 1075 1 e 1 sticky_fn +1076 1 e 1 power_management_beeps # ----------------------------------------------------------------- enumerations diff --git a/src/mainboard/lenovo/t60/devicetree.cb b/src/mainboard/lenovo/t60/devicetree.cb index 57b9df4531..bb4801d2aa 100644 --- a/src/mainboard/lenovo/t60/devicetree.cb +++ b/src/mainboard/lenovo/t60/devicetree.cb @@ -128,6 +128,7 @@ chip northbridge/intel/i945 register "beepmask0" = "0xfe" register "beepmask1" = "0x96" + register "has_power_management_beeps" = "1" register "event2_enable" = "0xff" register "event3_enable" = "0xff" diff --git a/src/mainboard/lenovo/x201/cmos.default b/src/mainboard/lenovo/x201/cmos.default index a8576d859e..be59c220f9 100644 --- a/src/mainboard/lenovo/x201/cmos.default +++ b/src/mainboard/lenovo/x201/cmos.default @@ -11,4 +11,5 @@ wwan=Enable touchpad=Enable fn_ctrl_swap=Disable sticky_fn=Disable +power_management_beeps=Enable sata_mode=AHCI diff --git a/src/mainboard/lenovo/x201/cmos.layout b/src/mainboard/lenovo/x201/cmos.layout index 984d903e8b..e434112c5a 100644 --- a/src/mainboard/lenovo/x201/cmos.layout +++ b/src/mainboard/lenovo/x201/cmos.layout @@ -92,6 +92,7 @@ entries 414 1 e 1 touchpad 417 1 e 1 fn_ctrl_swap 418 1 e 1 sticky_fn +419 1 e 1 power_management_beeps 421 1 e 9 sata_mode #422 562 r 0 unused diff --git a/src/mainboard/lenovo/x201/devicetree.cb b/src/mainboard/lenovo/x201/devicetree.cb index 83595e19b4..2f050604d4 100644 --- a/src/mainboard/lenovo/x201/devicetree.cb +++ b/src/mainboard/lenovo/x201/devicetree.cb @@ -58,6 +58,7 @@ chip northbridge/intel/nehalem register "beepmask0" = "0xfe" register "beepmask1" = "0x96" + register "has_power_management_beeps" = "1" register "event2_enable" = "0xff" register "event3_enable" = "0xff" diff --git a/src/mainboard/lenovo/x60/cmos.default b/src/mainboard/lenovo/x60/cmos.default index eed5fa826d..883bfd44f8 100644 --- a/src/mainboard/lenovo/x60/cmos.default +++ b/src/mainboard/lenovo/x60/cmos.default @@ -14,3 +14,4 @@ first_battery=Primary bluetooth=Enable fn_ctrl_swap=Disable sticky_fn=Disable +power_management_beeps=Enable diff --git a/src/mainboard/lenovo/x60/cmos.layout b/src/mainboard/lenovo/x60/cmos.layout index 738863e3d9..a2b45bd4c3 100644 --- a/src/mainboard/lenovo/x60/cmos.layout +++ b/src/mainboard/lenovo/x60/cmos.layout @@ -114,6 +114,7 @@ entries 1082 1 e 1 wwan 1085 1 e 1 fn_ctrl_swap 1086 1 e 1 sticky_fn +1087 1 e 1 power_management_beeps # ----------------------------------------------------------------- enumerations diff --git a/src/mainboard/lenovo/x60/devicetree.cb b/src/mainboard/lenovo/x60/devicetree.cb index d6e09bfe01..4b20b76640 100644 --- a/src/mainboard/lenovo/x60/devicetree.cb +++ b/src/mainboard/lenovo/x60/devicetree.cb @@ -106,6 +106,7 @@ chip northbridge/intel/i945 register "beepmask0" = "0xfe" register "beepmask1" = "0x96" + register "has_power_management_beeps" = "1" register "event2_enable" = "0xff" register "event3_enable" = "0xff"