From 86e1aea3e6ff0610ab832d923b530b3c5a768c71 Mon Sep 17 00:00:00 2001 From: Sven Schnelle Date: Thu, 16 Jun 2011 16:43:04 +0200 Subject: [PATCH] Lenovo H8 EC: add usb_power_enable() Can be used to disable/enable Power output on USB ports. Change-Id: I5eb52b33c9e3359b0e5874bda2c0c8d75c196bc2 Signed-off-by: Sven Schnelle Reviewed-on: http://review.coreboot.org/37 Tested-by: build bot (Jenkins) --- src/ec/lenovo/h8/acpi/ec.asl | 8 ++++++++ src/ec/lenovo/h8/h8.c | 9 +++++++++ src/ec/lenovo/h8/h8.h | 1 + 3 files changed, 18 insertions(+) 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);