From 39fd545bb198f6e17e7e8f730535e3976088cd9f Mon Sep 17 00:00:00 2001
From: Alan Olsen <alan.r.olsen@intel.com>
Date: Fri, 26 Mar 2010 11:59:00 -0700
Subject: [PATCH] GPE fix for sensors

Patch-mainline: 2.6.35?

Signed-off-by: Alan Olsen <alan.r.olsen@intel.com>
---
 drivers/hwmon/emc1403.c |   53 ++++++++--------------------------------------
 1 files changed, 10 insertions(+), 43 deletions(-)

diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c
index 75e3b15..c94d933 100644
--- a/drivers/hwmon/emc1403.c
+++ b/drivers/hwmon/emc1403.c
@@ -33,7 +33,6 @@
 #include <linux/delay.h>
 #include <linux/mutex.h>
 #include <linux/sysfs.h>
-#include <linux/gpe.h>
 #include <linux/intel_mid.h>
 
 
@@ -624,48 +623,16 @@ static int  emc1403_probe(struct i2c_client *new_client,
 	data->therm_irq = t_irq & ~IRQ_TYPE_MASK;
 	data->alert_irq = a_irq & ~IRQ_TYPE_MASK;
 	/* interpret irq field */
-	if (data->therm_irq == 0x113) {
-		if (t_irq & IRQ_TYPE_MASK) {
-			/* irq -> GPE_ID */
-			res = request_gpe(data->therm_irq,
-				(gpio_function_t)therm_interrupt_handler,
-				 data, DETECT_LEVEL_LOW);
-			if (res)
-				dev_crit(&new_client->dev, "%s(): cannot \
-					register therm gpe  \n", __func__);
-			} else {
-				res = request_irq(data->therm_irq,
-					therm_interrupt_handler,
-					DETECT_LEVEL_LOW, "emc1403", data);
-				if (res)
-					dev_crit(&new_client->dev, "%s(): \
-					cannot get therm IRQ\n", __func__);
-			}
-		} else {
-			printk(KERN_WARNING"emc1403: IRQ mismatch  \
-						sent for therm registration");
-		}
-		if (data->alert_irq == 0x114) {
-			if (a_irq & IRQ_TYPE_MASK) {
-				/* irq -> GPE_ID */
-				res = request_gpe(data->alert_irq,
-				(gpio_function_t)alert_interrupt_handler,
-				 data, DETECT_LEVEL_LOW);
-				if (res)
-					dev_crit(&new_client->dev, "%s(): \
-				cannot register alert gpe \n", __func__);
-			} else {
-				res = request_irq(data->alert_irq,
-				alert_interrupt_handler, DETECT_LEVEL_LOW,
-				"emc1403", data);
-			if (res)
-				dev_crit(&new_client->dev, "%s():  cannot \
+	res = request_irq(data->therm_irq, therm_interrupt_handler,
+				IRQ_TYPE_EDGE_FALLING, "emc1403_therm", data);
+	if (res)
+		dev_crit(&new_client->dev, "%s(): \
+				cannot get therm IRQ\n", __func__);
+	res = request_irq(data->alert_irq, alert_interrupt_handler,
+				IRQ_TYPE_EDGE_FALLING, "emc1403_alert", data);
+	if (res)
+		dev_crit(&new_client->dev, "%s():  cannot \
 					get alert IRQ\n", __func__);
-			}
-		} else {
-			printk(KERN_WARNING"emc1403: IRQ mismatch \
-						sent for alert registration");
-		}
 #endif
 	emc1403_set_default_config(new_client);
 	dev_info(&new_client->dev, "%s EMC1403 Thermal chip found \n",
-- 
1.6.0.6

