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