From 50c1e1138cb94f6aca0f8555777edbcefe0324e2 Mon Sep 17 00:00:00 2001
From: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Date: Thu, 7 Dec 2006 18:42:17 +0300
Subject: [PATCH] ACPI: ec: Drop udelay() from poll mode. Loop by reading
 status field instead.

Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/ec.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 722acafdf32e..8ef74e7b3b91 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -70,8 +70,6 @@ enum {
 
 #define ACPI_EC_DELAY		500	/* Wait 500ms max. during EC ops */
 #define ACPI_EC_UDELAY_GLK	1000	/* Wait 1ms max. to get global lock */
-#define ACPI_EC_UDELAY         100	/* Poll @ 100us increments */
-#define ACPI_EC_UDELAY_COUNT   1000	/* Wait 100ms max. during EC ops */
 
 enum {
 	EC_INTR = 1,	/* Output buffer full */
@@ -159,11 +157,10 @@ static int acpi_ec_check_status(struct acpi_ec *ec, u8 event)
 static int acpi_ec_wait(struct acpi_ec *ec, u8 event)
 {
 	if (acpi_ec_mode == EC_POLL) {
-		int i;
-		for (i = 0; i < ACPI_EC_UDELAY_COUNT; ++i) {
+		unsigned long delay = jiffies + msecs_to_jiffies(ACPI_EC_DELAY);
+		while (time_before(jiffies, delay)) {
 			if (acpi_ec_check_status(ec, event))
 				return 0;
-			udelay(ACPI_EC_UDELAY);
 		}
 	} else {
 		if (wait_event_timeout(ec->wait,
-- 
GitLab