aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ec/lenovo/h8/acpi/ec.asl8
-rw-r--r--src/ec/lenovo/h8/h8.c9
-rw-r--r--src/ec/lenovo/h8/h8.h1
3 files changed, 18 insertions, 0 deletions
diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl
index 0bcf44159c..3ba4aa9819 100644
--- a/src/ec/lenovo/h8/acpi/ec.asl
+++ b/src/ec/lenovo/h8/acpi/ec.asl
@@ -40,6 +40,8 @@ Device(EC)
Offset (0x3B),
, 1,
KBLT, 1, /* Keyboard Light */
+ , 2,
+ USPW, 1, /* USB Power enable */
Offset (0x4e),
WAKE, 16,
Offset (0x78),
@@ -73,6 +75,12 @@ Device(EC)
Store(Arg0, AMUT)
}
+ Method (USBP, 1, NotSerialized)
+ {
+ Store(Arg0, USPW)
+ }
+
+
/* Sleep Button pressed */
Method(_Q13, 0, NotSerialized)
{
diff --git a/src/ec/lenovo/h8/h8.c b/src/ec/lenovo/h8/h8.c
index ef308b1bac..2c25d29141 100644
--- a/src/ec/lenovo/h8/h8.c
+++ b/src/ec/lenovo/h8/h8.c
@@ -88,6 +88,14 @@ void h8_disable_event(int event)
}
+void h8_usb_power_enable(int onoff)
+{
+ if (onoff)
+ ec_set_bit(0x3b, 4);
+ else
+ ec_clr_bit(0x3b, 4);
+}
+
int h8_ultrabay_device_present(void)
{
return ec_read(H8_STATUS1) & 0x5 ? 0 : 1;
@@ -129,6 +137,7 @@ static void h8_enable(device_t dev)
ec_write(H8_FAN_CONTROL, H8_FAN_CONTROL_AUTO);
h8_wlan_enable(conf->wlan_enable);
h8_trackpoint_enable(conf->trackpoint_enable);
+ h8_usb_power_enable(1);
if (!get_option(&val, "volume"))
ec_write(H8_VOLUME_CONTROL, val);
diff --git a/src/ec/lenovo/h8/h8.h b/src/ec/lenovo/h8/h8.h
index c87ace43c9..717c0ce97c 100644
--- a/src/ec/lenovo/h8/h8.h
+++ b/src/ec/lenovo/h8/h8.h
@@ -23,6 +23,7 @@
void h8_trackpoint_enable(int on);
void h8_wlan_enable(int on);
void h8_set_audio_mute(int on);
+void h8_usb_power_enable(int on);
void h8_enable_event(int event);
void h8_disable_event(int event);
int h8_ultrabay_device_present(void);