Lenovo H8: add h8_ultrabay_device_present()
authorSven Schnelle <svens@stackframe.org>
Wed, 27 Apr 2011 19:47:28 +0000 (19:47 +0000)
committerSven Schnelle <svens@stackframe.org>
Wed, 27 Apr 2011 19:47:28 +0000 (19:47 +0000)
returns 1 if a CDROM/HDD device is plugging in the
ultrabay. Return 0 if there's a battery or superio
extensions plugged in.

Signed-off-by: Sven Schnelle <svens@stackframe.org>
Acked-by: Peter Stuge <peter@stuge.se>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6545 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/ec/lenovo/h8/h8.c
src/ec/lenovo/h8/h8.h

index 6a595257f1c0030bdb0b0cf8bb9866c57eaeca7b..e2e5f998be818c1959de9e523718817a062bece5 100644 (file)
@@ -87,6 +87,11 @@ void h8_disable_event(int event)
 
 }
 
+int h8_ultrabay_device_present(void)
+{
+       return ec_read(H8_STATUS1) & 0x5 ? 0 : 1;
+}
+
 static void h8_enable(device_t dev)
 {
        struct ec_lenovo_h8_config *conf = dev->chip_info;
index d263313fadc5952e0f715f386228d05b1e89e296..b5d8f017bf7e0108e3a0ba1228502d3d61b45fb7 100644 (file)
@@ -25,6 +25,7 @@ void h8_wlan_enable(int on);
 void h8_set_audio_mute(int on);
 void h8_enable_event(int event);
 void h8_disable_event(int event);
+int h8_ultrabay_device_present(void);
 
 /* EC registers */
 #define H8_CONFIG0 0x00
@@ -102,6 +103,10 @@ void h8_disable_event(int event);
 
 #define H8_EVENT_FN_PRESS      0x39
 
+#define H8_STATUS0             0x46
+#define H8_STATUS1             0x47
+#define H8_STATUS2             0x48
+
 #define H8_EVENT_BAT0          0x4a
 #define H8_EVENT_BAT0_STATE    0x4b