Send commitlog mailing list submissions to
        commitlog@lists.openmoko.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:

   1. Openmoko's OpenEmbedded repository. This is used to build the
      Openmoko distribution: Changes to 'org.openmoko.dev'
      ([EMAIL PROTECTED])
   2. r4726 - developers/werner/wlan-spi/patches-tracking
      ([EMAIL PROTECTED])
--- Begin Message ---
 .../epdf/fix-plugin-path-check_after_r36364.patch  |   24 ++++++++++++++++++++
 packages/efl1/epdf_svn.bb                          |    7 +++--
 2 files changed, 28 insertions(+), 3 deletions(-)

New commits:
commit 6e503946843de976fb884d539934bf1573e1ebf2
Author: Julian_chu <[EMAIL PROTECTED]>
Date:   Mon Oct 20 18:15:43 2008 +0800

    [epdf] Add a new patch for epdf.
    
    epdf removed configure.in and add configure.ac in rev 36364.
    Add a new patch which was applied after rev 36364.




--- End Message ---
--- Begin Message ---
Author: werner
Date: 2008-10-20 16:52:57 +0200 (Mon, 20 Oct 2008)
New Revision: 4726

Added:
   developers/werner/wlan-spi/patches-tracking/s3c-mmc-hdrmig-fix.patch
   developers/werner/wlan-spi/patches-tracking/s3c-mmc-sdio-int.patch
Modified:
   developers/werner/wlan-spi/patches-tracking/hif-linux-sdio.patch
   developers/werner/wlan-spi/patches-tracking/series
Log:
Moving towards the use of SDIO interrupts instead of polling.

- s3c-mmc-sdio-int.patch: Christer Weinigel's SDIO interrupt changes (doesn't
  work yet)
- s3c-mmc-hdrmig-fix.patch: build fixes for recent header migration
- hif-linux-sdio.patch: removed bus width change, which is done in the stack
- series: added s3c-mmc-sdio-int.patch and s3c-mmc-hdrmig-fix.patch



Modified: developers/werner/wlan-spi/patches-tracking/hif-linux-sdio.patch
===================================================================
--- developers/werner/wlan-spi/patches-tracking/hif-linux-sdio.patch    
2008-10-20 08:21:08 UTC (rev 4725)
+++ developers/werner/wlan-spi/patches-tracking/hif-linux-sdio.patch    
2008-10-20 14:52:57 UTC (rev 4726)
@@ -25,8 +25,8 @@
 Index: ktrack/drivers/ar6000/hif/hif2.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ktrack/drivers/ar6000/hif/hif2.c   2008-10-15 22:32:07.000000000 -0200
-@@ -0,0 +1,633 @@
++++ ktrack/drivers/ar6000/hif/hif2.c   2008-10-17 04:26:14.000000000 -0200
+@@ -0,0 +1,625 @@
 +/*
 + * hif2.c - HIF layer re-implementation for the Linux SDIO stack
 + *
@@ -555,15 +555,7 @@
 +              dev_err(dev, "sdio_claim_irq returns %d\n", ret);
 +              /* @@@ cleanup */
 +      }
-+#if 0 /* only for hw SDIO */
-+      sdio_f0_writeb(func, SDIO_BUS_CD_DISABLE | SDIO_BUS_WIDTH_4BIT,
-+          SDIO_CCCR_IF, &ret);
-+      if (ret) {
-+              dev_err(dev, "sdio_f0_writeb(SDIO_CCCR_IF) returns %d\n",
-+                  ret);
-+              /* @@@ cleanup */
-+      }
-+#endif
++      /* Set SDIO_BUS_CD_DISABLE in SDIO_CCCR_IF ? */
 +#if 0
 +      sdio_f0_writeb(func, SDIO_CCCR_CAP_E4MI, SDIO_CCCR_CAPS, &ret);
 +      if (ret) {

Added: developers/werner/wlan-spi/patches-tracking/s3c-mmc-hdrmig-fix.patch
===================================================================
--- developers/werner/wlan-spi/patches-tracking/s3c-mmc-hdrmig-fix.patch        
                        (rev 0)
+++ developers/werner/wlan-spi/patches-tracking/s3c-mmc-hdrmig-fix.patch        
2008-10-20 14:52:57 UTC (rev 4726)
@@ -0,0 +1,18 @@
+Build fix after header migration. Drop when we catch it from upstream.
+
+Index: ktrack/drivers/mmc/host/s3cmci.c
+===================================================================
+--- ktrack.orig/drivers/mmc/host/s3cmci.c      2008-10-17 05:58:11.000000000 
-0200
++++ ktrack/drivers/mmc/host/s3cmci.c   2008-10-17 05:59:45.000000000 -0200
+@@ -28,9 +28,9 @@
+ #include <asm/dma-mapping.h>
+ 
+ #include <asm/io.h>
+-#include <asm/arch/regs-sdi.h>
++#include <asm/arch-s3c2410/regs-sdi.h>
+ #include <mach/regs-gpio.h>
+-#include <asm/arch/mci.h>
++#include <asm/arch-s3c2410/mci.h>
+ #include <mach/dma.h>
+ 
+ #include "s3cmci.h"

Added: developers/werner/wlan-spi/patches-tracking/s3c-mmc-sdio-int.patch
===================================================================
--- developers/werner/wlan-spi/patches-tracking/s3c-mmc-sdio-int.patch          
                (rev 0)
+++ developers/werner/wlan-spi/patches-tracking/s3c-mmc-sdio-int.patch  
2008-10-20 14:52:57 UTC (rev 4726)
@@ -0,0 +1,189 @@
+http://thread.gmane.org/gmane.linux.ports.arm.kernel/46380
+
+Christer Weinigel wrote:
+> Now I just have to make the SDIO interrupt work and preferably get
+> DMA working so that I can reduce the CPU load a bit.
+
+Ok, this makes the SDIO interrupt work.  The existing driver disables
+interrupts when not doing anything because it had problems with spurious
+  interrupts even when the interrupt mask was clear.  So I've added some
+hacks to always keep the interrupts on.  This needs doing better, so
+I've not signed off on this, and the patch is whitespace-damaged just so
+that nobody tries to apply it anyway (good excuse using the wrong
+mailer, isn't it).
+
+But do you think the interrupt support looks sane otherwise?
+
+    /Christer
+
+Index: ktrack/drivers/mmc/host/s3cmci.c
+===================================================================
+--- ktrack.orig/drivers/mmc/host/s3cmci.c      2008-10-17 05:32:34.000000000 
-0200
++++ ktrack/drivers/mmc/host/s3cmci.c   2008-10-17 05:46:43.000000000 -0200
+@@ -195,7 +195,11 @@
+ 
+ static inline void clear_imask(struct s3cmci_host *host)
+ {
+-      writel(0, host->base + host->sdiimsk);
++      u32 newmask;
++
++      newmask = readl(host->base + host->sdiimsk);
++      newmask &= S3C2410_SDIIMSK_SDIOIRQ;
++      writel(newmask, host->base + host->sdiimsk);
+ }
+ 
+ static inline int get_data_buffer(struct s3cmci_host *host,
+@@ -347,6 +351,7 @@
+       struct s3cmci_host *host = (struct s3cmci_host *) data;
+ 
+       disable_irq(host->irq);
++      host->irq_disabled++;
+ 
+       if (host->pio_active == XFER_WRITE)
+               do_pio_write(host);
+@@ -367,8 +372,12 @@
+               }
+ 
+               finalize_request(host);
+-      } else
++      }
++
++      if (host->irq_disabled) {
+               enable_irq(host->irq);
++              host->irq_disabled--;
++      }
+ }
+ 
+ /*
+@@ -405,6 +414,7 @@
+       u32 mci_csta, mci_dsta, mci_fsta, mci_dcnt, mci_imsk;
+       u32 mci_cclear, mci_dclear;
+       unsigned long iflags;
++      int cardint = 0;
+ 
+       spin_lock_irqsave(&host->complete_lock, iflags);
+ 
+@@ -416,6 +426,13 @@
+       mci_cclear = 0;
+       mci_dclear = 0;
+ 
++      if (mci_dsta & S3C2410_SDIDSTA_SDIOIRQDETECT &&
++          mci_imsk & S3C2410_SDIIMSK_SDIOIRQ) {
++              cardint = 1;
++              mci_dclear = S3C2410_SDIDSTA_SDIOIRQDETECT;
++              goto clear_status_bits;
++      }
++
+       if ((host->complete_what == COMPLETION_NONE) ||
+           (host->complete_what == COMPLETION_FINALIZE)) {
+               host->status = "nothing to complete";
+@@ -585,6 +602,11 @@
+           mci_csta, mci_dsta, mci_fsta, mci_dcnt, host->status);
+ 
+       spin_unlock_irqrestore(&host->complete_lock, iflags);
++
++      /* We have to delay this as it calls back into the driver. */
++      if (cardint)
++              mmc_signal_sdio_irq(host->mmc);
++
+       return IRQ_HANDLED;
+ }
+ 
+@@ -653,7 +675,7 @@
+ fail_request:
+       host->mrq->data->error = -EINVAL;
+       host->complete_what = COMPLETION_FINALIZE;
+-      writel(0, host->base + host->sdiimsk);
++      clear_imask(host);
+       goto out;
+ 
+ }
+@@ -698,7 +720,7 @@
+       writel(0, host->base + S3C2410_SDICMDARG);
+       writel(S3C2410_SDIDCON_STOP, host->base + S3C2410_SDIDCON);
+       writel(0, host->base + S3C2410_SDICMDCON);
+-      writel(0, host->base + host->sdiimsk);
++      clear_imask(host);
+ 
+       if (cmd->data && cmd->error)
+               cmd->data->error = cmd->error;
+@@ -1010,7 +1032,10 @@
+       s3cmci_send_command(host, cmd);
+ 
+       /* Enable Interrupt */
+-      enable_irq(host->irq);
++      if (host->irq_disabled) {
++              enable_irq(host->irq);
++              host->irq_disabled--;
++      }
+ }
+ 
+ static int s3cmci_card_present(struct mmc_host *mmc)
+@@ -1103,9 +1128,9 @@
+ 
+       /* Set CLOCK_ENABLE */
+       if (ios->clock)
+-              mci_con |= S3C2410_SDICON_CLOCKTYPE;
++              mci_con |= S3C2410_SDICON_CLOCKTYPE | S3C2410_SDICON_SDIOIRQ;
+       else
+-              mci_con &= ~S3C2410_SDICON_CLOCKTYPE;
++              mci_con &= ~(S3C2410_SDICON_CLOCKTYPE | S3C2410_SDICON_SDIOIRQ);
+ 
+       writel(mci_con, host->base + S3C2410_SDICON);
+ 
+@@ -1145,11 +1170,27 @@
+       return ret;
+ }
+ 
++static void s3cmci_enable_sdio_irq(struct mmc_host *mmc, int enable)
++{
++      struct s3cmci_host *host = mmc_priv(mmc);
++      unsigned long flags;
++
++      spin_lock_irqsave(&host->complete_lock, flags);
++
++      if (enable)
++              enable_imask(host, S3C2410_SDIIMSK_SDIOIRQ);
++      else
++              disable_imask(host, S3C2410_SDIIMSK_SDIOIRQ);
++
++      spin_unlock_irqrestore(&host->complete_lock, flags);
++}
++
+ static struct mmc_host_ops s3cmci_ops = {
+       .request        = s3cmci_request,
+       .set_ios        = s3cmci_set_ios,
+       .get_ro         = s3cmci_get_ro,
+       .get_cd         = s3cmci_card_present,
++      .enable_sdio_irq = s3cmci_enable_sdio_irq,
+ };
+ 
+ static struct s3c24xx_mci_pdata s3cmci_def_pdata = {
+@@ -1242,6 +1283,7 @@
+        * ensure we don't lock the system with un-serviceable requests. */
+ 
+       disable_irq(host->irq);
++      host->irq_disabled++;
+ 
+       host->irq_cd = s3c2410_gpio_getirq(host->pdata->gpio_detect);
+ 
+@@ -1287,7 +1329,7 @@
+ 
+       mmc->ops        = &s3cmci_ops;
+       mmc->ocr_avail  = MMC_VDD_32_33 | MMC_VDD_33_34;
+-      mmc->caps       = MMC_CAP_4_BIT_DATA;
++      mmc->caps       = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ;
+       mmc->f_min      = host->clk_rate / (host->clk_div * 256);
+       mmc->f_max      = host->clk_rate / host->clk_div;
+ 
+Index: ktrack/drivers/mmc/host/s3cmci.h
+===================================================================
+--- ktrack.orig/drivers/mmc/host/s3cmci.h      2008-10-17 05:46:53.000000000 
-0200
++++ ktrack/drivers/mmc/host/s3cmci.h   2008-10-17 05:47:06.000000000 -0200
+@@ -67,4 +67,6 @@
+ 
+       unsigned int            ccnt, dcnt;
+       struct tasklet_struct   pio_tasklet;
++
++      int                     irq_disabled;
+ };

Modified: developers/werner/wlan-spi/patches-tracking/series
===================================================================
--- developers/werner/wlan-spi/patches-tracking/series  2008-10-20 08:21:08 UTC 
(rev 4725)
+++ developers/werner/wlan-spi/patches-tracking/series  2008-10-20 14:52:57 UTC 
(rev 4726)
@@ -1,5 +1,5 @@
 #
-# This patch stack if for the Openmoko stable-tracking branch. Before applying
+# This patch stack is for the Openmoko stable-tracking branch. Before applying
 # the patches, you need to remove the Atheros SDIO stack as follows:
 #
 # cd drivers
@@ -24,3 +24,5 @@
 #hack-dont-poll-irq.patch 
 #hif-direct-interrupt.patch
 #hif-can-do-async.patch
+s3c-mmc-hdrmig-fix.patch
+s3c-mmc-sdio-int.patch




--- End Message ---
_______________________________________________
commitlog mailing list
commitlog@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to