[coreboot-gerrit] Patch set updated for coreboot: 8ee9209 Radio and dock support in EC on X60 and X201

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Wed Jun 5 23:15:56 CEST 2013


Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3377

-gerrit

commit 8ee920943a092b23bb1a4ffa56b62bc408fef598
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Wed Jun 5 22:43:44 2013 +0200

    Radio and dock support in EC on X60 and X201
    
    Enable UMTS on Lenovo X60 and X201.
    Enable radios if no options are available.
    Enable dock on Lenovo X201.
    
    Based on my X201 branch.
    
    Change-Id: I6e8d3bbd6a6b1a8e59473dd5cc8125a1583d75df
    Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
 src/ec/lenovo/h8/h8.c | 45 +++++++++++++++++++++++++++++++++++----------
 1 file changed, 35 insertions(+), 10 deletions(-)

diff --git a/src/ec/lenovo/h8/h8.c b/src/ec/lenovo/h8/h8.c
index 9ffdfc1..5e859aa 100644
--- a/src/ec/lenovo/h8/h8.c
+++ b/src/ec/lenovo/h8/h8.c
@@ -27,6 +27,10 @@
 #include "chip.h"
 #include <pc80/mc146818rtc.h>
 
+#ifdef CONFIG_BOARD_LENOVO_X201
+#include "mainboard/lenovo/x201/dock.h"
+#endif
+
 static void h8_bluetooth_enable(int on)
 {
 	if (on)
@@ -37,8 +41,7 @@ static void h8_bluetooth_enable(int on)
 
 void h8_trackpoint_enable(int on)
 {
-	ec_write(H8_TRACKPOINT_CTRL,
-		 on ? H8_TRACKPOINT_ON : H8_TRACKPOINT_OFF);
+	ec_write(H8_TRACKPOINT_CTRL, on ? H8_TRACKPOINT_ON : H8_TRACKPOINT_OFF);
 
 }
 
@@ -50,6 +53,14 @@ void h8_wlan_enable(int on)
 		ec_clr_bit(0x3a, 5);
 }
 
+static void h8_3g_enable(int on)
+{
+	if (on)
+		ec_set_bit(0x3a, 6);
+	else
+		ec_clr_bit(0x3a, 6);
+}
+
 static void h8_log_ec_version(void)
 {
 	unsigned char ecfw[9], c;
@@ -150,17 +161,31 @@ static void h8_enable(device_t dev)
 	if (!get_option(&val, "volume"))
 		ec_write(H8_VOLUME_CONTROL, val);
 
+	if (get_option(&val, "bluetooth"))
+		val = 1;
+	h8_bluetooth_enable(val);
 
-	if (!get_option(&val, "bluetooth"))
-		h8_bluetooth_enable(val);
+	if (get_option(&val, "umts"))
+		val = 1;
 
-	if (!get_option(&val, "first_battery")) {
-		tmp = ec_read(H8_CONFIG3);
-		tmp &= ~(1 << 4);
-		tmp |= (val & 1)<< 4;
-		ec_write(H8_CONFIG3, tmp);
-	}
+	h8_3g_enable(val);
+
+	if (get_option(&val, "first_battery"))
+		val = 1;
+
+	tmp = ec_read(H8_CONFIG3);
+	tmp &= ~(1 << 4);
+	tmp |= (val & 1) << 4;
+	ec_write(H8_CONFIG3, tmp);
 	h8_set_audio_mute(0);
+
+#ifdef CONFIG_BOARD_LENOVO_X201
+	if (dock_present()) {
+		printk(BIOS_DEBUG, "dock is connected\n");
+		dock_connect();
+	} else
+		printk(BIOS_DEBUG, "dock is not connected\n");
+#endif
 }
 
 struct chip_operations ec_lenovo_h8_ops = {



More information about the coreboot-gerrit mailing list