summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/lenovo/x201/smi.h22
-rw-r--r--src/mainboard/lenovo/x201/smihandler.c39
2 files changed, 9 insertions, 52 deletions
diff --git a/src/mainboard/lenovo/x201/smi.h b/src/mainboard/lenovo/x201/smi.h
deleted file mode 100644
index 4e99db9520..0000000000
--- a/src/mainboard/lenovo/x201/smi.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2011 Sven Schnelle <svens@stackframe.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#ifndef MAINBOARD_LENOVO_X60_SMI_H
-#define MAINBOARD_LENOVO_X60_SMI_H
-
-#define SMI_DOCK_CONNECT 0x01
-#define SMI_DOCK_DISCONNECT 0x02
-
-#endif
diff --git a/src/mainboard/lenovo/x201/smihandler.c b/src/mainboard/lenovo/x201/smihandler.c
index c9c52abc1d..4ba10b47cd 100644
--- a/src/mainboard/lenovo/x201/smihandler.c
+++ b/src/mainboard/lenovo/x201/smihandler.c
@@ -24,38 +24,10 @@
#include <ec/lenovo/h8/h8.h>
#include <delay.h>
#include "dock.h"
-#include "smi.h"
#define GPE_EC_SCI 1
#define GPE_EC_WAKE 13
-int mainboard_io_trap_handler(int smif)
-{
- switch (smif) {
- case SMI_DOCK_CONNECT:
- ec_clr_bit(0x03, 2);
- udelay(250000);
- dock_connect();
- ec_set_bit(0x03, 2);
- /* set dock LED to indicate status */
- ec_write(0x0c, 0x09);
- ec_write(0x0c, 0x88);
- break;
-
- case SMI_DOCK_DISCONNECT:
- ec_clr_bit(0x03, 2);
- dock_disconnect();
- break;
-
- default:
- return 0;
- }
-
- /* On success, the IO Trap Handler returns 1
- * On failure, the IO Trap Handler returns a value != 1 */
- return 1;
-}
-
static void mainboard_smi_handle_ec_sci(void)
{
u8 status = inb(EC_SC);
@@ -74,12 +46,19 @@ static void mainboard_smi_handle_ec_sci(void)
/* Power loss */
case 0x50:
/* Undock Key */
- mainboard_io_trap_handler(SMI_DOCK_DISCONNECT);
+ ec_clr_bit(0x03, 2);
+ dock_disconnect();
break;
case 0x37:
case 0x58:
/* Dock Event */
- mainboard_io_trap_handler(SMI_DOCK_CONNECT);
+ ec_clr_bit(0x03, 2);
+ udelay(250000);
+ dock_connect();
+ ec_set_bit(0x03, 2);
+ /* set dock LED to indicate status */
+ ec_write(0x0c, 0x09);
+ ec_write(0x0c, 0x88);
break;
default:
break;