Revert "ec/lenovo/h8: don't load configuration when booting from s3"

This reverts commit 83df672d2c.

It's based on the assumption that the H8 keeps its configuration
during a suspend/resume cycle. User reports indicate that this might
not be true.

Caching the settings in a cbtable entry might be a better approach.

Change-Id: Ic4ba862ee7068ffe214c2aeaadecb4390a0e0529
Reviewed-on: https://review.coreboot.org/17411
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
Reviewed-by: Alexander Couzens <lynxis@fe80.eu>
This commit is contained in:
Nico Huber 2016-11-14 00:49:29 +02:00
parent 0530b29921
commit 6444b52ce0
1 changed files with 52 additions and 60 deletions

View File

@ -202,46 +202,27 @@ struct device_operations h8_dev_ops = {
.init = h8_init, .init = h8_init,
}; };
/* configure default values or load value from nvram */ static void h8_enable(struct device *dev)
static void h8_configure(struct ec_lenovo_h8_config *conf)
{ {
struct ec_lenovo_h8_config *conf = dev->chip_info;
u8 val; u8 val;
u8 beepmask0, beepmask1; u8 beepmask0, beepmask1, config1;
if (get_option(&val, "wlan") != CB_SUCCESS) dev->ops = &h8_dev_ops;
val = 1;
h8_wlan_enable(val);
if (get_option(&val, "bluetooth") != CB_SUCCESS) h8_log_ec_version();
val = 1;
h8_bluetooth_enable(val);
if (get_option(&val, "wwan") != CB_SUCCESS) ec_write(H8_CONFIG0, conf->config0);
val = 1; config1 = conf->config1;
h8_wwan_enable(val);
if (conf->has_uwb) { if (conf->has_keyboard_backlight) {
if (get_option(&val, "uwb") != CB_SUCCESS) if (get_option(&val, "backlight") != CB_SUCCESS)
val = 1; val = 0; /* Both backlights. */
config1 = (config1 & 0xf3) | ((val & 0x3) << 2);
h8_uwb_enable(val);
} }
ec_write(H8_CONFIG1, config1);
if (get_option(&val, "fn_ctrl_swap") != CB_SUCCESS) ec_write(H8_CONFIG2, conf->config2);
val = 0; ec_write(H8_CONFIG3, conf->config3);
h8_fn_ctrl_swap(val);
if (get_option(&val, "sticky_fn") != CB_SUCCESS)
val = 0;
h8_sticky_fn(val);
if (get_option(&val, "first_battery") != CB_SUCCESS)
val = PRIMARY_BATTERY;
h8_charge_priority(val);
/* configure sound */
if (get_option(&val, "volume") == CB_SUCCESS)
ec_write(H8_VOLUME_CONTROL, val);
beepmask0 = conf->beepmask0; beepmask0 = conf->beepmask0;
beepmask1 = conf->beepmask1; beepmask1 = conf->beepmask1;
@ -261,35 +242,9 @@ static void h8_configure(struct ec_lenovo_h8_config *conf)
else else
beepmask0 &= ~2; beepmask0 &= ~2;
} }
ec_write(H8_SOUND_ENABLE0, beepmask0); ec_write(H8_SOUND_ENABLE0, beepmask0);
ec_write(H8_SOUND_ENABLE1, beepmask1); ec_write(H8_SOUND_ENABLE1, beepmask1);
h8_set_audio_mute(0);
}
static void h8_enable(struct device *dev)
{
struct ec_lenovo_h8_config *conf = dev->chip_info;
u8 val;
u8 config1;
dev->ops = &h8_dev_ops;
h8_log_ec_version();
ec_write(H8_CONFIG0, conf->config0);
config1 = conf->config1;
if (conf->has_keyboard_backlight) {
if (get_option(&val, "backlight") != CB_SUCCESS)
val = 0; /* Both backlights. */
config1 = (config1 & 0xf3) | ((val & 0x3) << 2);
}
ec_write(H8_CONFIG1, config1);
ec_write(H8_CONFIG2, conf->config2);
ec_write(H8_CONFIG3, conf->config3);
if (!acpi_is_wakeup_s3())
h8_configure(conf);
/* silence sounds in queue */ /* silence sounds in queue */
ec_write(H8_SOUND_REPEAT, 0x00); ec_write(H8_SOUND_REPEAT, 0x00);
@ -314,9 +269,46 @@ static void h8_enable(struct device *dev)
ec_write(H8_FAN_CONTROL, H8_FAN_CONTROL_AUTO); ec_write(H8_FAN_CONTROL, H8_FAN_CONTROL_AUTO);
if (get_option(&val, "wlan") != CB_SUCCESS)
val = 1;
h8_wlan_enable(val);
h8_trackpoint_enable(1); h8_trackpoint_enable(1);
h8_usb_power_enable(1); h8_usb_power_enable(1);
if (get_option(&val, "volume") == CB_SUCCESS && !acpi_is_wakeup_s3())
ec_write(H8_VOLUME_CONTROL, val);
if (get_option(&val, "bluetooth") != CB_SUCCESS)
val = 1;
h8_bluetooth_enable(val);
if (get_option(&val, "wwan") != CB_SUCCESS)
val = 1;
h8_wwan_enable(val);
if (conf->has_uwb) {
if (get_option(&val, "uwb") != CB_SUCCESS)
val = 1;
h8_uwb_enable(val);
}
if (get_option(&val, "fn_ctrl_swap") != CB_SUCCESS)
val = 0;
h8_fn_ctrl_swap(val);
if (get_option(&val, "sticky_fn") != CB_SUCCESS)
val = 0;
h8_sticky_fn(val);
if (get_option(&val, "first_battery") != CB_SUCCESS)
val = PRIMARY_BATTERY;
h8_charge_priority(val);
h8_set_audio_mute(0);
#if !IS_ENABLED(CONFIG_H8_DOCK_EARLY_INIT) #if !IS_ENABLED(CONFIG_H8_DOCK_EARLY_INIT)
h8_mainboard_init_dock(); h8_mainboard_init_dock();
#endif #endif