r4827 - developers/werner/wlan-spi/patches-tracking
werner at docs.openmoko.org
werner at docs.openmoko.org
Thu Nov 27 00:36:25 CET 2008
Author: werner
Date: 2008-11-27 00:36:24 +0100 (Thu, 27 Nov 2008)
New Revision: 4827
Modified:
developers/werner/wlan-spi/patches-tracking/experiment-s3cmci-suspend-softly.patch
Log:
Surprise, readl is not good at setting registers.
Also disable interrupts during surgery.
Modified: developers/werner/wlan-spi/patches-tracking/experiment-s3cmci-suspend-softly.patch
===================================================================
--- developers/werner/wlan-spi/patches-tracking/experiment-s3cmci-suspend-softly.patch 2008-11-26 22:09:55 UTC (rev 4826)
+++ developers/werner/wlan-spi/patches-tracking/experiment-s3cmci-suspend-softly.patch 2008-11-26 23:36:24 UTC (rev 4827)
@@ -1,7 +1,7 @@
Index: ktrack/drivers/mmc/core/core.c
===================================================================
---- ktrack.orig/drivers/mmc/core/core.c 2008-11-24 22:52:14.000000000 -0200
-+++ ktrack/drivers/mmc/core/core.c 2008-11-24 22:53:53.000000000 -0200
+--- ktrack.orig/drivers/mmc/core/core.c 2008-11-25 12:02:47.000000000 -0200
++++ ktrack/drivers/mmc/core/core.c 2008-11-26 21:07:15.000000000 -0200
@@ -57,11 +57,13 @@
/*
* Internal function. Flush all scheduled work from the MMC work queue.
@@ -19,9 +19,9 @@
* @host: MMC host which completed request
Index: ktrack/drivers/mmc/host/s3cmci.c
===================================================================
---- ktrack.orig/drivers/mmc/host/s3cmci.c 2008-11-24 22:26:54.000000000 -0200
-+++ ktrack/drivers/mmc/host/s3cmci.c 2008-11-24 23:40:18.000000000 -0200
-@@ -1518,18 +1518,61 @@
+--- ktrack.orig/drivers/mmc/host/s3cmci.c 2008-11-26 20:04:23.000000000 -0200
++++ ktrack/drivers/mmc/host/s3cmci.c 2008-11-26 21:27:15.000000000 -0200
+@@ -1518,18 +1518,71 @@
#ifdef CONFIG_PM
@@ -32,31 +32,41 @@
+static int save_regs(struct mmc_host *mmc)
+{
+ struct s3cmci_host *host = mmc_priv(mmc);
++ unsigned long flags;
+ unsigned from;
+ u32 *to = host->saved;
+
+ mmc_flush_scheduled_work();
++
++ local_irq_save(flags);
+ for (from = S3C2410_SDICON; from != S3C2410_SDIIMSK+4; from += 4)
+ if (from != host->sdidata)
+ *to++ = readl(host->base + from);
+ BUG_ON(to-host->saved != ARRAY_SIZE(host->saved));
++ local_irq_restore(flags);
++
+ return 0;
+}
+
+/*
+ * @@@ This is what s3c24xx_hcd.c does, but I don't trust it one bit ...
++ * - clearn SDICMDCON
+ */
+
+static int restore_regs(struct mmc_host *mmc)
+{
+ struct s3cmci_host *host = mmc_priv(mmc);
++ unsigned long flags;
+ unsigned to;
+ u32 *from = host->saved;
+
++ local_irq_save(flags);
+ for (to = S3C2410_SDICON; to != S3C2410_SDIIMSK+4; to += 4)
+ if (to != host->sdidata)
-+ *from++ = readl(host->base + to);
++ writel(*from++, host->base + to);
+ BUG_ON(from-host->saved != ARRAY_SIZE(host->saved));
++ local_irq_restore(flags);
++
+ return 0;
+}
+
@@ -85,8 +95,8 @@
#else /* CONFIG_PM */
Index: ktrack/drivers/mmc/host/s3cmci.h
===================================================================
---- ktrack.orig/drivers/mmc/host/s3cmci.h 2008-11-24 22:41:54.000000000 -0200
-+++ ktrack/drivers/mmc/host/s3cmci.h 2008-11-24 23:37:06.000000000 -0200
+--- ktrack.orig/drivers/mmc/host/s3cmci.h 2008-11-25 12:02:47.000000000 -0200
++++ ktrack/drivers/mmc/host/s3cmci.h 2008-11-26 20:06:06.000000000 -0200
@@ -8,6 +8,9 @@
* published by the Free Software Foundation.
*/
More information about the commitlog
mailing list