r2189 - trunk/src/target/kernel/patches
laforge at sita.openmoko.org
laforge at sita.openmoko.org
Thu Jun 7 16:45:00 CEST 2007
Author: laforge
Date: 2007-06-07 16:44:59 +0200 (Thu, 07 Jun 2007)
New Revision: 2189
Removed:
trunk/src/target/kernel/patches/2.6.17-arm-usb_gadget-ether-link.patch
trunk/src/target/kernel/patches/gta01-asoc-rxmixer.patch
trunk/src/target/kernel/patches/mmc-fixdebugp.patch
trunk/src/target/kernel/patches/mmc-fixdmalockup.patch
trunk/src/target/kernel/patches/mmc-get_ro.patch
trunk/src/target/kernel/patches/mmc-sdipre_limit.patch
trunk/src/target/kernel/patches/mmc.patch
trunk/src/target/kernel/patches/ts-debug.patch
Log:
remove old unused patches
Deleted: trunk/src/target/kernel/patches/2.6.17-arm-usb_gadget-ether-link.patch
===================================================================
--- trunk/src/target/kernel/patches/2.6.17-arm-usb_gadget-ether-link.patch 2007-06-07 11:21:36 UTC (rev 2188)
+++ trunk/src/target/kernel/patches/2.6.17-arm-usb_gadget-ether-link.patch 2007-06-07 14:44:59 UTC (rev 2189)
@@ -1,23 +0,0 @@
-diff --exclude patches --exclude .pc -Nru linux-2.6.17.7-fic1/drivers/usb/gadget/ether.c linux-2.6.17.7-new/drivers/usb/gadget/ether.c
---- linux-2.6.17.7-fic1/drivers/usb/gadget/ether.c 2006-07-25 05:36:01.000000000 +0200
-+++ linux-2.6.17.7-new/drivers/usb/gadget/ether.c 2006-10-27 16:12:27.000000000 +0200
-@@ -2132,7 +2132,7 @@
- }
-
-
--static void __exit
-+static void
- eth_unbind (struct usb_gadget *gadget)
- {
- struct eth_dev *dev = get_gadget_data (gadget);
-@@ -2190,7 +2190,8 @@
- return 1;
- }
-
--static int __init
-+//static int __init
-+static int
- eth_bind (struct usb_gadget *gadget)
- {
- struct eth_dev *dev;
-
Deleted: trunk/src/target/kernel/patches/gta01-asoc-rxmixer.patch
===================================================================
--- trunk/src/target/kernel/patches/gta01-asoc-rxmixer.patch 2007-06-07 11:21:36 UTC (rev 2188)
+++ trunk/src/target/kernel/patches/gta01-asoc-rxmixer.patch 2007-06-07 14:44:59 UTC (rev 2189)
@@ -1,16 +0,0 @@
-Index: linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8753.c
-===================================================================
---- linux-2.6.17.14-fic4.test.orig/sound/soc/codecs/wm8753.c 2007-02-08 00:42:47.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/sound/soc/codecs/wm8753.c 2007-02-08 00:57:59.000000000 +0100
-@@ -496,9 +496,9 @@
- &wm8753_line_right_controls),
- SND_SOC_DAPM_MUX("Line Mono Mux", SND_SOC_NOPM, 0, 0,
- &wm8753_line_mono_controls),
--SND_SOC_DAPM_MUX("Line Mixer", SND_SOC_NOPM, 0, 0,
-+SND_SOC_DAPM_MUX("Line Mixer", WM8753_PWR2, 0, 0,
- &wm8753_line_mux_mix_controls),
--SND_SOC_DAPM_MUX("Rx Mixer", SND_SOC_NOPM, 0, 0,
-+SND_SOC_DAPM_MUX("Rx Mixer", WM8753_PWR2, 1, 0,
- &wm8753_rx_mux_mix_controls),
- SND_SOC_DAPM_PGA("Mic 1 Volume", WM8753_PWR2, 8, 0, NULL, 0),
- SND_SOC_DAPM_PGA("Mic 2 Volume", WM8753_PWR2, 7, 0, NULL, 0),
Deleted: trunk/src/target/kernel/patches/mmc-fixdebugp.patch
===================================================================
--- trunk/src/target/kernel/patches/mmc-fixdebugp.patch 2007-06-07 11:21:36 UTC (rev 2188)
+++ trunk/src/target/kernel/patches/mmc-fixdebugp.patch 2007-06-07 14:44:59 UTC (rev 2189)
@@ -1,15 +0,0 @@
-Index: linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c
-===================================================================
---- linux-2.6.17.7-new.orig/drivers/mmc/s3c2410mci.c 2006-08-07 09:37:38.000000000 +0200
-+++ linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c 2006-08-07 09:38:15.000000000 +0200
-@@ -300,8 +300,8 @@
- u32 sdi_bsize, sdi_dcon, sdi_imsk;
- int dma_len = 0;
-
-- DBG(KERN_DEBUG PFX "request: [CMD] opcode:0x%02x arg:0x%08x flags:%x retries:%u\n",
-- mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags, mrq->cmd->retries);
-+ DBG(PFX "request: [CMD] opcode:0x%02x arg:0x%08x flags:%x retries:%u\n",
-+ mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags, mrq->cmd->retries);
- DBG(PFX "request : %s mode\n",mmc->mode == MMC_MODE_MMC ? "mmc" : "sd");
-
-
Deleted: trunk/src/target/kernel/patches/mmc-fixdmalockup.patch
===================================================================
--- trunk/src/target/kernel/patches/mmc-fixdmalockup.patch 2007-06-07 11:21:36 UTC (rev 2188)
+++ trunk/src/target/kernel/patches/mmc-fixdmalockup.patch 2007-06-07 14:44:59 UTC (rev 2189)
@@ -1,13 +0,0 @@
-diff -Nru --exclude-from=/sunbeam/home/laforge/scripts/dontdiff linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c
---- linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c 2006-08-07 09:25:32.000000000 +0200
-+++ linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c 2006-08-07 00:55:23.000000000 +0200
-@@ -206,6 +206,8 @@
- host->complete_what = COMPLETION_NONE;
- complete(&host->complete_request);
- writel(0, host->base + S3C2410_SDIIMSK);
-+ if (host->mrq->data && host->mrq->data->error != MMC_ERR_NONE)
-+ complete(&host->complete_dma);
- spin_unlock_irqrestore( &host->complete_lock, iflags);
- DBG(PFX "IRQ transfer closed.\n");
- return IRQ_HANDLED;
-
Deleted: trunk/src/target/kernel/patches/mmc-get_ro.patch
===================================================================
--- trunk/src/target/kernel/patches/mmc-get_ro.patch 2007-06-07 11:21:36 UTC (rev 2188)
+++ trunk/src/target/kernel/patches/mmc-get_ro.patch 2007-06-07 14:44:59 UTC (rev 2189)
@@ -1,33 +0,0 @@
-diff -Nru --exclude-from=/sunbeam/home/laforge/scripts/dontdiff linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c
---- linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c 2006-08-07 09:25:32.000000000 +0200
-+++ linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c 2006-08-07 00:55:23.000000000 +0200
-@@ -515,9 +518,19 @@
-
- }
-
-+static int s3c2410sdi_get_ro(struct mmc_host *mmc)
-+{
-+ struct s3c2410sdi_host *host = mmc_priv(mmc);
-+ if (s3c2410_gpio_getpin(host->pdata->gpio_wprotect) != 0)
-+ return 1;
-+ else
-+ return 0;
-+}
-+
- static struct mmc_host_ops s3c2410sdi_ops = {
- .request = s3c2410sdi_request,
- .set_ios = s3c2410sdi_set_ios,
-+ .get_ro = s3c2410sdi_get_ro,
- };
-
- static void s3c2410_mmc_def_setpower(unsigned int to)
-@@ -565,6 +578,8 @@
-
- host->irq_cd = s3c2410_gpio_getirq(pdata->gpio_detect);
- s3c2410_gpio_cfgpin(pdata->gpio_detect, S3C2410_GPIO_IRQ);
-+ if (pdata->gpio_wprotect)
-+ s3c2410_gpio_cfgpin(pdata->gpio_wprotect, S3C2410_GPIO_INPUT);
-
- host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!host->mem) {
-
Deleted: trunk/src/target/kernel/patches/mmc-sdipre_limit.patch
===================================================================
--- trunk/src/target/kernel/patches/mmc-sdipre_limit.patch 2007-06-07 11:21:36 UTC (rev 2188)
+++ trunk/src/target/kernel/patches/mmc-sdipre_limit.patch 2007-06-07 14:44:59 UTC (rev 2189)
@@ -1,12 +0,0 @@
-diff -Nru --exclude-from=/sunbeam/home/laforge/scripts/dontdiff linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c
---- linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c 2006-08-07 09:25:32.000000000 +0200
-+++ linux-2.6.17.7-qt/drivers/mmc/s3c2410mci.c 2006-08-07 00:55:23.000000000 +0200
-@@ -503,6 +505,7 @@
- }
-
- if(sdi_psc > 255) sdi_psc = 255;
-+ if (sdi_psc < 8) sdi_psc = 8;
- writel(sdi_psc, host->base + S3C2410_SDIPRE);
-
- /* Set CLOCK_ENABLE */
-
Deleted: trunk/src/target/kernel/patches/mmc.patch
===================================================================
--- trunk/src/target/kernel/patches/mmc.patch 2007-06-07 11:21:36 UTC (rev 2188)
+++ trunk/src/target/kernel/patches/mmc.patch 2007-06-07 14:44:59 UTC (rev 2189)
@@ -1,996 +0,0 @@
-Index: linux-2.6.17.7-new/drivers/mmc/Kconfig
-===================================================================
---- linux-2.6.17.7-new.orig/drivers/mmc/Kconfig 2006-08-07 09:32:34.000000000 +0200
-+++ linux-2.6.17.7-new/drivers/mmc/Kconfig 2006-08-07 09:33:51.000000000 +0200
-@@ -82,6 +82,15 @@
-
- If unsure, say N.
-
-+config MMC_S3C2410
-+ tristate "Samsung S3C2410 Multimedia Card Interface support"
-+ depends on ARCH_S3C2410 && MMC
-+ help
-+ This selects the Samsung S3C2410 Multimedia Card Interface
-+ support.
-+
-+ If unsure, say N.
-+
- config MMC_AU1X
- tristate "Alchemy AU1XX0 MMC Card Interface support"
- depends on MMC && SOC_AU1200
-Index: linux-2.6.17.7-new/drivers/mmc/Makefile
-===================================================================
---- linux-2.6.17.7-new.orig/drivers/mmc/Makefile 2006-08-07 09:32:34.000000000 +0200
-+++ linux-2.6.17.7-new/drivers/mmc/Makefile 2006-08-07 09:33:51.000000000 +0200
-@@ -20,6 +20,7 @@
- obj-$(CONFIG_MMC_IMX) += imxmmc.o
- obj-$(CONFIG_MMC_SDHCI) += sdhci.o
- obj-$(CONFIG_MMC_WBSD) += wbsd.o
-+obj-$(CONFIG_MMC_S3C2410) += s3c2410mci.o
- obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
- obj-$(CONFIG_MMC_OMAP) += omap.o
- obj-$(CONFIG_MMC_AT91RM9200) += at91_mci.o
-Index: linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.7-new/drivers/mmc/s3c2410mci.c 2006-08-07 09:33:51.000000000 +0200
-@@ -0,0 +1,781 @@
-+/*
-+ * linux/drivers/mmc/s3c2410mci.h - Samsung S3C2410 SDI Interface driver
-+ *
-+ * Copyright (C) 2004 Thomas Kleffel, All Rights Reserved.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/ioport.h>
-+#include <linux/platform_device.h>
-+#include <linux/interrupt.h>
-+#include <linux/blkdev.h>
-+#include <linux/delay.h>
-+#include <linux/err.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/mmc/host.h>
-+#include <linux/mmc/protocol.h>
-+#include <linux/clk.h>
-+
-+#include <asm/dma.h>
-+#include <asm/dma-mapping.h>
-+#include <asm/arch/dma.h>
-+
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/mach/mmc.h>
-+
-+#include <asm/arch/regs-sdi.h>
-+#include <asm/arch/regs-gpio.h>
-+#include <asm/arch/mmc.h>
-+
-+#ifdef CONFIG_MMC_DEBUG
-+#define DBG(x...) printk(KERN_INFO x)
-+#else
-+#define DBG(x...) do { } while (0)
-+#endif
-+
-+#include "s3c2410mci.h"
-+
-+#define DRIVER_NAME "mmci-s3c2410"
-+#define PFX DRIVER_NAME ": "
-+
-+#define RESSIZE(ressource) (((ressource)->end - (ressource)->start)+1)
-+
-+static struct s3c2410_dma_client s3c2410sdi_dma_client = {
-+ .name = "s3c2410-sdi",
-+};
-+
-+/*
-+ * ISR for SDI Interface IRQ
-+ * Communication between driver and ISR works as follows:
-+ * host->mrq points to current request
-+ * host->complete_what tells the ISR when the request is considered done
-+ * COMPLETION_CMDSENT when the command was sent
-+ * COMPLETION_RSPFIN when a response was received
-+ * COMPLETION_XFERFINISH when the data transfer is finished
-+ * COMPLETION_XFERFINISH_RSPFIN both of the above.
-+ * host->complete_request is the completion-object the driver waits for
-+ *
-+ * 1) Driver sets up host->mrq and host->complete_what
-+ * 2) Driver prepares the transfer
-+ * 3) Driver enables interrupts
-+ * 4) Driver starts transfer
-+ * 5) Driver waits for host->complete_rquest
-+ * 6) ISR checks for request status (errors and success)
-+ * 6) ISR sets host->mrq->cmd->error and host->mrq->data->error
-+ * 7) ISR completes host->complete_request
-+ * 8) ISR disables interrupts
-+ * 9) Driver wakes up and takes care of the request
-+*/
-+
-+static irqreturn_t s3c2410sdi_irq(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ struct s3c2410sdi_host *host;
-+ u32 sdi_csta, sdi_dsta, sdi_dcnt;
-+ u32 sdi_cclear, sdi_dclear;
-+ unsigned long iflags;
-+
-+ host = (struct s3c2410sdi_host *)dev_id;
-+
-+ /* Check for things not supposed to happen */
-+ if(!host) return IRQ_HANDLED;
-+
-+ sdi_csta = readl(host->base + S3C2410_SDICMDSTAT);
-+ sdi_dsta = readl(host->base + S3C2410_SDIDSTA);
-+ sdi_dcnt = readl(host->base + S3C2410_SDIDCNT);
-+
-+ DBG(PFX "IRQ csta=0x%08x dsta=0x%08x dcnt:0x%08x\n", sdi_csta, sdi_dsta, sdi_dcnt);
-+
-+ spin_lock_irqsave( &host->complete_lock, iflags);
-+
-+ if( host->complete_what==COMPLETION_NONE ) {
-+ goto clear_imask;
-+ }
-+
-+ if(!host->mrq) {
-+ goto clear_imask;
-+ }
-+
-+
-+ sdi_csta = readl(host->base + S3C2410_SDICMDSTAT);
-+ sdi_dsta = readl(host->base + S3C2410_SDIDSTA);
-+ sdi_dcnt = readl(host->base + S3C2410_SDIDCNT);
-+ sdi_cclear = 0;
-+ sdi_dclear = 0;
-+
-+
-+ if(sdi_csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
-+ host->mrq->cmd->error = MMC_ERR_TIMEOUT;
-+ goto transfer_closed;
-+ }
-+
-+ if(sdi_csta & S3C2410_SDICMDSTAT_CMDSENT) {
-+ if(host->complete_what == COMPLETION_CMDSENT) {
-+ host->mrq->cmd->error = MMC_ERR_NONE;
-+ goto transfer_closed;
-+ }
-+
-+ sdi_cclear |= S3C2410_SDICMDSTAT_CMDSENT;
-+ }
-+
-+ if(sdi_csta & S3C2410_SDICMDSTAT_CRCFAIL) {
-+ if (host->mrq->cmd->flags & MMC_RSP_136) {
-+ DBG(PFX "s3c2410 fixup : ignore CRC fail with long rsp\n");
-+ }
-+ else {
-+ DBG(PFX "COMMAND CRC FAILED %x\n", sdi_csta);
-+ if(host->mrq->cmd->flags & MMC_RSP_CRC) {
-+ host->mrq->cmd->error = MMC_ERR_BADCRC;
-+ goto transfer_closed;
-+ }
-+ }
-+ sdi_cclear |= S3C2410_SDICMDSTAT_CRCFAIL;
-+ }
-+
-+ if(sdi_csta & S3C2410_SDICMDSTAT_RSPFIN) {
-+ if(host->complete_what == COMPLETION_RSPFIN) {
-+ host->mrq->cmd->error = MMC_ERR_NONE;
-+ goto transfer_closed;
-+ }
-+
-+ if(host->complete_what == COMPLETION_XFERFINISH_RSPFIN) {
-+ host->mrq->cmd->error = MMC_ERR_NONE;
-+ host->complete_what = COMPLETION_XFERFINISH;
-+ }
-+
-+ sdi_cclear |= S3C2410_SDICMDSTAT_RSPFIN;
-+ }
-+
-+ if(sdi_dsta & S3C2410_SDIDSTA_FIFOFAIL) {
-+ host->mrq->cmd->error = MMC_ERR_NONE;
-+ host->mrq->data->error = MMC_ERR_FIFO;
-+ goto transfer_closed;
-+ }
-+
-+ if(sdi_dsta & S3C2410_SDIDSTA_RXCRCFAIL) {
-+ host->mrq->cmd->error = MMC_ERR_NONE;
-+ host->mrq->data->error = MMC_ERR_BADCRC;
-+ goto transfer_closed;
-+ }
-+
-+ if(sdi_dsta & S3C2410_SDIDSTA_CRCFAIL) {
-+ DBG(PFX "DATA CRC FAILED %u\n", sdi_csta);
-+ host->mrq->cmd->error = MMC_ERR_NONE;
-+ host->mrq->data->error = MMC_ERR_BADCRC;
-+ goto transfer_closed;
-+ }
-+
-+ if(sdi_dsta & S3C2410_SDIDSTA_DATATIMEOUT) {
-+ host->mrq->cmd->error = MMC_ERR_NONE;
-+ host->mrq->data->error = MMC_ERR_TIMEOUT;
-+ goto transfer_closed;
-+ }
-+
-+ if(sdi_dsta & S3C2410_SDIDSTA_XFERFINISH) {
-+ if(host->complete_what == COMPLETION_XFERFINISH) {
-+ host->mrq->cmd->error = MMC_ERR_NONE;
-+ host->mrq->data->error = MMC_ERR_NONE;
-+ goto transfer_closed;
-+ }
-+
-+ if(host->complete_what == COMPLETION_XFERFINISH_RSPFIN) {
-+ host->mrq->data->error = MMC_ERR_NONE;
-+ host->complete_what = COMPLETION_RSPFIN;
-+ }
-+
-+ sdi_dclear |= S3C2410_SDIDSTA_XFERFINISH;
-+ }
-+
-+ writel(sdi_cclear, host->base + S3C2410_SDICMDSTAT);
-+ writel(sdi_dclear, host->base + S3C2410_SDIDSTA);
-+
-+ spin_unlock_irqrestore( &host->complete_lock, iflags);
-+ DBG(PFX "IRQ still waiting.\n");
-+ return IRQ_HANDLED;
-+
-+
-+transfer_closed:
-+ writel(sdi_cclear, host->base + S3C2410_SDICMDSTAT);
-+ writel(sdi_dclear, host->base + S3C2410_SDIDSTA);
-+ host->complete_what = COMPLETION_NONE;
-+ complete(&host->complete_request);
-+ writel(0, host->base + S3C2410_SDIIMSK);
-+ spin_unlock_irqrestore( &host->complete_lock, iflags);
-+ DBG(PFX "IRQ transfer closed.\n");
-+ return IRQ_HANDLED;
-+
-+clear_imask:
-+ writel(0, host->base + S3C2410_SDIIMSK);
-+ spin_unlock_irqrestore( &host->complete_lock, iflags);
-+ DBG(PFX "IRQ clear imask.\n");
-+ return IRQ_HANDLED;
-+
-+}
-+
-+
-+/*
-+ * ISR for the CardDetect Pin
-+*/
-+
-+static irqreturn_t s3c2410sdi_irq_cd(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ struct s3c2410sdi_host *host = (struct s3c2410sdi_host *)dev_id;
-+ mmc_detect_change(host->mmc, S3C2410SDI_CDLATENCY);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+
-+
-+static void s3c2410sdi_dma_done_callback(s3c2410_dma_chan_t *dma_ch, void *buf_id,
-+ int size, s3c2410_dma_buffresult_t result)
-+{ unsigned long iflags;
-+ u32 sdi_csta, sdi_dsta,sdi_dcnt;
-+ struct s3c2410sdi_host *host = (struct s3c2410sdi_host *)buf_id;
-+
-+ sdi_csta = readl(host->base + S3C2410_SDICMDSTAT);
-+ sdi_dsta = readl(host->base + S3C2410_SDIDSTA);
-+ sdi_dcnt = readl(host->base + S3C2410_SDIDCNT);
-+
-+ DBG(PFX "DMAD csta=0x%08x dsta=0x%08x dcnt:0x%08x result:0x%08x\n", sdi_csta, sdi_dsta, sdi_dcnt, result);
-+
-+ spin_lock_irqsave( &host->complete_lock, iflags);
-+
-+ if(!host->mrq) goto out;
-+ if(!host->mrq->data) goto out;
-+
-+
-+ sdi_csta = readl(host->base + S3C2410_SDICMDSTAT);
-+ sdi_dsta = readl(host->base + S3C2410_SDIDSTA);
-+ sdi_dcnt = readl(host->base + S3C2410_SDIDCNT);
-+
-+ if( result!=S3C2410_RES_OK ) {
-+ goto fail_request;
-+ }
-+
-+
-+ if(host->mrq->data->flags & MMC_DATA_READ) {
-+ if( sdi_dcnt>0 ) {
-+ goto fail_request;
-+ }
-+ }
-+
-+out:
-+ complete(&host->complete_dma);
-+ spin_unlock_irqrestore( &host->complete_lock, iflags);
-+ return;
-+
-+
-+fail_request:
-+ host->mrq->data->error = MMC_ERR_FAILED;
-+ host->complete_what = COMPLETION_NONE;
-+ complete(&host->complete_request);
-+ writel(0, host->base + S3C2410_SDIIMSK);
-+ goto out;
-+
-+}
-+
-+
-+static void s3c2410sdi_dma_setup(struct s3c2410sdi_host *host, s3c2410_dmasrc_t source) {
-+
-+ s3c2410_dma_devconfig(host->dma, source, 3, host->mem->start + S3C2410_SDIDATA);
-+ s3c2410_dma_config(host->dma, 4, (1<<23) | (2<<24));
-+ s3c2410_dma_set_buffdone_fn(host->dma, s3c2410sdi_dma_done_callback);
-+ s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART);
-+}
-+
-+static void s3c2410sdi_request(struct mmc_host *mmc, struct mmc_request *mrq) {
-+ struct s3c2410sdi_host *host = mmc_priv(mmc);
-+ struct device *dev = mmc_dev(host->mmc);
-+ struct platform_device *pdev = to_platform_device(dev);
-+ u32 sdi_carg, sdi_ccon, sdi_timer;
-+ u32 sdi_bsize, sdi_dcon, sdi_imsk;
-+ int dma_len = 0;
-+
-+ DBG(KERN_DEBUG PFX "request: [CMD] opcode:0x%02x arg:0x%08x flags:%x retries:%u\n",
-+ mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags, mrq->cmd->retries);
-+ DBG(PFX "request : %s mode\n",mmc->mode == MMC_MODE_MMC ? "mmc" : "sd");
-+
-+
-+ sdi_ccon = mrq->cmd->opcode & S3C2410_SDICMDCON_INDEX;
-+ sdi_ccon|= S3C2410_SDICMDCON_SENDERHOST;
-+ sdi_ccon|= S3C2410_SDICMDCON_CMDSTART;
-+
-+ sdi_carg = mrq->cmd->arg;
-+
-+ sdi_timer= 0xFFFF;
-+
-+ sdi_bsize= 0;
-+ sdi_dcon = 0;
-+ sdi_imsk = 0;
-+
-+ /* enable interrupts for transmission errors */
-+ sdi_imsk |= S3C2410_SDIIMSK_RESPONSEND;
-+ sdi_imsk |= S3C2410_SDIIMSK_CRCSTATUS;
-+
-+ host->complete_what = COMPLETION_CMDSENT;
-+
-+ if (mrq->cmd->flags & MMC_RSP_PRESENT) {
-+ host->complete_what = COMPLETION_RSPFIN;
-+
-+ sdi_ccon |= S3C2410_SDICMDCON_WAITRSP;
-+ sdi_imsk |= S3C2410_SDIIMSK_CMDTIMEOUT;
-+
-+ } else {
-+ /* We need the CMDSENT-Interrupt only if we want are not waiting
-+ * for a response
-+ */
-+ sdi_imsk |= S3C2410_SDIIMSK_CMDSENT;
-+ }
-+
-+ if(mrq->cmd->flags & MMC_RSP_136) {
-+ sdi_ccon|= S3C2410_SDICMDCON_LONGRSP;
-+ }
-+
-+ if(mrq->cmd->flags & MMC_RSP_CRC) {
-+ sdi_imsk |= S3C2410_SDIIMSK_RESPONSECRC;
-+ }
-+
-+
-+ if (mrq->data) {
-+ host->complete_what = COMPLETION_XFERFINISH_RSPFIN;
-+
-+ sdi_bsize = (1 << mrq->data->blksz_bits);
-+ host->size = mrq->data->blocks << mrq->data->blksz_bits;
-+
-+ sdi_dcon = (mrq->data->blocks & S3C2410_SDIDCON_BLKNUM_MASK);
-+ sdi_dcon |= S3C2410_SDIDCON_DMAEN;
-+
-+ sdi_imsk |= S3C2410_SDIIMSK_FIFOFAIL;
-+ sdi_imsk |= S3C2410_SDIIMSK_DATACRC;
-+ sdi_imsk |= S3C2410_SDIIMSK_DATATIMEOUT;
-+ sdi_imsk |= S3C2410_SDIIMSK_DATAFINISH;
-+ sdi_imsk |= 0xFFFFFFE0;
-+
-+ DBG(PFX "request: [DAT] bsize:%u blocks:%u bytes:%u\n",
-+ sdi_bsize, mrq->data->blocks, mrq->data->blocks * sdi_bsize);
-+
-+ if (host->bus_width == MMC_BUS_WIDTH_4) {
-+ sdi_dcon |= S3C2410_SDIDCON_WIDEBUS;
-+ }
-+
-+ if(!(mrq->data->flags & MMC_DATA_STREAM)) {
-+ sdi_dcon |= S3C2410_SDIDCON_BLOCKMODE;
-+ }
-+
-+ if(mrq->data->flags & MMC_DATA_WRITE) {
-+ sdi_dcon |= S3C2410_SDIDCON_TXAFTERRESP;
-+ sdi_dcon |= S3C2410_SDIDCON_XFER_TXSTART;
-+ }
-+
-+ if(mrq->data->flags & MMC_DATA_READ) {
-+ sdi_dcon |= S3C2410_SDIDCON_RXAFTERCMD;
-+ sdi_dcon |= S3C2410_SDIDCON_XFER_RXSTART;
-+ }
-+
-+ s3c2410sdi_dma_setup(host, mrq->data->flags & MMC_DATA_WRITE ? S3C2410_DMASRC_MEM : S3C2410_DMASRC_HW);
-+
-+ /* see DMA-API.txt */
-+ dma_len = dma_map_sg(&pdev->dev, mrq->data->sg, \
-+ mrq->data->sg_len, \
-+ mrq->data->flags & MMC_DATA_READ ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
-+
-+ /* start DMA */
-+ s3c2410_dma_enqueue(host->dma, (void *) host,
-+ sg_dma_address(&mrq->data->sg[0]),
-+ (mrq->data->blocks << mrq->data->blksz_bits) );
-+ }
-+
-+ host->mrq = mrq;
-+
-+ init_completion(&host->complete_request);
-+ init_completion(&host->complete_dma);
-+
-+ /* Clear command and data status registers */
-+ writel(0xFFFFFFFF, host->base + S3C2410_SDICMDSTAT);
-+ writel(0xFFFFFFFF, host->base + S3C2410_SDIDSTA);
-+
-+ /* Setup SDI controller */
-+ writel(sdi_bsize,host->base + S3C2410_SDIBSIZE);
-+ writel(sdi_timer,host->base + S3C2410_SDITIMER);
-+ writel(sdi_imsk,host->base + S3C2410_SDIIMSK);
-+
-+ /* Setup SDI command argument and data control */
-+ writel(sdi_carg, host->base + S3C2410_SDICMDARG);
-+ writel(sdi_dcon, host->base + S3C2410_SDIDCON);
-+
-+ /* This initiates transfer */
-+ writel(sdi_ccon, host->base + S3C2410_SDICMDCON);
-+
-+ /* Wait for transfer to complete */
-+ wait_for_completion(&host->complete_request);
-+ DBG(PFX "[CMD] request complete.\n");
-+ if(mrq->data) {
-+ wait_for_completion(&host->complete_dma);
-+ DBG(PFX "[DAT] DMA complete.\n");
-+ }
-+
-+ /* Cleanup controller */
-+ writel(0, host->base + S3C2410_SDICMDARG);
-+ writel(0, host->base + S3C2410_SDIDCON);
-+ writel(0, host->base + S3C2410_SDICMDCON);
-+ writel(0, host->base + S3C2410_SDIIMSK);
-+
-+ /* Read response */
-+ mrq->cmd->resp[0] = readl(host->base + S3C2410_SDIRSP0);
-+ mrq->cmd->resp[1] = readl(host->base + S3C2410_SDIRSP1);
-+ mrq->cmd->resp[2] = readl(host->base + S3C2410_SDIRSP2);
-+ mrq->cmd->resp[3] = readl(host->base + S3C2410_SDIRSP3);
-+
-+ host->mrq = NULL;
-+
-+ DBG(PFX "request done.\n");
-+
-+ /* If we have no data transfer we are finished here */
-+ if (!mrq->data) goto request_done;
-+
-+ dma_unmap_sg(&pdev->dev, mrq->data->sg, dma_len, \
-+ mrq->data->flags & MMC_DATA_READ ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
-+
-+ /* Calulate the amout of bytes transfer, but only if there was
-+ * no error
-+ */
-+ if(mrq->data->error == MMC_ERR_NONE) {
-+ mrq->data->bytes_xfered = (mrq->data->blocks << mrq->data->blksz_bits);
-+ } else {
-+ mrq->data->bytes_xfered = 0;
-+ }
-+
-+ /* If we had an error while transfering data we flush the
-+ * DMA channel to clear out any garbage
-+ */
-+ if(mrq->data->error != MMC_ERR_NONE) {
-+ s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH);
-+ DBG(PFX "flushing DMA.\n");
-+ }
-+
-+ if(mrq->data->stop) mmc_wait_for_cmd(mmc, mrq->data->stop, 3);
-+
-+request_done:
-+
-+ mrq->done(mrq);
-+}
-+
-+static void s3c2410sdi_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) {
-+ struct s3c2410sdi_host *host = mmc_priv(mmc);
-+ u32 sdi_psc, sdi_con;
-+
-+ /* Set power */
-+ sdi_con = readl(host->base + S3C2410_SDICON);
-+ switch(ios->power_mode) {
-+ case MMC_POWER_ON:
-+ case MMC_POWER_UP:
-+ DBG(PFX "power on\n");
-+ s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_SDCLK);
-+ s3c2410_gpio_cfgpin(S3C2410_GPE6, S3C2410_GPE6_SDCMD);
-+ s3c2410_gpio_cfgpin(S3C2410_GPE7, S3C2410_GPE7_SDDAT0);
-+ s3c2410_gpio_cfgpin(S3C2410_GPE8, S3C2410_GPE8_SDDAT1);
-+ s3c2410_gpio_cfgpin(S3C2410_GPE9, S3C2410_GPE9_SDDAT2);
-+ s3c2410_gpio_cfgpin(S3C2410_GPE10, S3C2410_GPE10_SDDAT3);
-+
-+ if (host->pdata->set_power)
-+ (host->pdata->set_power)(1);
-+
-+ sdi_con|= S3C2410_SDICON_FIFORESET;
-+ break;
-+
-+ case MMC_POWER_OFF:
-+ default:
-+ if (host->pdata->set_power)
-+ (host->pdata->set_power)(0);
-+ break;
-+ }
-+
-+ /* Set clock */
-+ for(sdi_psc=0;sdi_psc<255;sdi_psc++) {
-+ if( (clk_get_rate(host->clk) / (2*(sdi_psc+1))) <= ios->clock) break;
-+ }
-+
-+ if(sdi_psc > 255) sdi_psc = 255;
-+ writel(sdi_psc, host->base + S3C2410_SDIPRE);
-+
-+ /* Set CLOCK_ENABLE */
-+ if(ios->clock) sdi_con |= S3C2410_SDICON_CLOCKTYPE;
-+ else sdi_con &=~S3C2410_SDICON_CLOCKTYPE;
-+
-+ writel(sdi_con, host->base + S3C2410_SDICON);
-+
-+ host->bus_width = ios->bus_width;
-+
-+}
-+
-+static struct mmc_host_ops s3c2410sdi_ops = {
-+ .request = s3c2410sdi_request,
-+ .set_ios = s3c2410sdi_set_ios,
-+};
-+
-+static void s3c2410_mmc_def_setpower(unsigned int to)
-+{
-+ s3c2410_gpio_cfgpin(S3C2410_GPA17, S3C2410_GPIO_OUTPUT);
-+ s3c2410_gpio_setpin(S3C2410_GPA17, to);
-+}
-+
-+static struct s3c24xx_mmc_platdata s3c2410_mmc_defplat = {
-+ .gpio_detect = S3C2410_GPF2,
-+ .set_power = s3c2410_mmc_def_setpower,
-+ .f_max = 3000000,
-+ .ocr_avail = MMC_VDD_32_33,
-+};
-+
-+static int s3c2410sdi_probe(struct platform_device *pdev)
-+{
-+ struct mmc_host *mmc;
-+ s3c24xx_mmc_pdata_t *pdata;
-+ struct s3c2410sdi_host *host;
-+
-+
-+ int ret;
-+
-+ mmc = mmc_alloc_host(sizeof(struct s3c2410sdi_host), &pdev->dev);
-+ if (!mmc) {
-+ ret = -ENOMEM;
-+ goto probe_out;
-+ }
-+
-+ host = mmc_priv(mmc);
-+
-+ spin_lock_init( &host->complete_lock );
-+ host->complete_what = COMPLETION_NONE;
-+ host->mmc = mmc;
-+ host->dma = S3C2410SDI_DMA;
-+
-+ pdata = pdev->dev.platform_data;
-+ if (!pdata) {
-+ pdev->dev.platform_data = &s3c2410_mmc_defplat;
-+ pdata = &s3c2410_mmc_defplat;
-+ }
-+
-+ host->pdata = pdata;
-+
-+ host->irq_cd = s3c2410_gpio_getirq(pdata->gpio_detect);
-+ s3c2410_gpio_cfgpin(pdata->gpio_detect, S3C2410_GPIO_IRQ);
-+
-+ host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!host->mem) {
-+ printk(KERN_ERR PFX "failed to get io memory region resouce.\n");
-+ ret = -ENOENT;
-+ goto probe_free_host;
-+ }
-+
-+ host->mem = request_mem_region(host->mem->start,
-+ RESSIZE(host->mem), pdev->name);
-+
-+ if (!host->mem) {
-+ printk(KERN_ERR PFX "failed to request io memory region.\n");
-+ ret = -ENOENT;
-+ goto probe_free_host;
-+ }
-+
-+ host->base = ioremap(host->mem->start, RESSIZE(host->mem));
-+ if (host->base == 0) {
-+ printk(KERN_ERR PFX "failed to ioremap() io memory region.\n");
-+ ret = -EINVAL;
-+ goto probe_free_mem_region;
-+ }
-+
-+ host->irq = platform_get_irq(pdev, 0);
-+ if (host->irq == 0) {
-+ printk(KERN_ERR PFX "failed to get interrupt resouce.\n");
-+ ret = -EINVAL;
-+ goto probe_iounmap;
-+ }
-+
-+ if(request_irq(host->irq, s3c2410sdi_irq, 0, DRIVER_NAME, host)) {
-+ printk(KERN_ERR PFX "failed to request sdi interrupt.\n");
-+ ret = -ENOENT;
-+ goto probe_iounmap;
-+ }
-+
-+ set_irq_type(host->irq_cd, IRQT_BOTHEDGE);
-+ if(request_irq(host->irq_cd, s3c2410sdi_irq_cd, 0, DRIVER_NAME, host)) {
-+ printk(KERN_ERR PFX "failed to request card detect interrupt.\n" );
-+ ret = -ENOENT;
-+ goto probe_free_irq;
-+ }
-+
-+ if(s3c2410_dma_request(S3C2410SDI_DMA, &s3c2410sdi_dma_client, NULL)) {
-+ printk(KERN_ERR PFX "unable to get DMA channel.\n" );
-+ ret = -EBUSY;
-+ goto probe_free_irq_cd;
-+ }
-+
-+ host->clk = clk_get(&pdev->dev, "sdi");
-+ if (IS_ERR(host->clk)) {
-+ printk(KERN_ERR PFX "failed to find clock source.\n");
-+ ret = PTR_ERR(host->clk);
-+ host->clk = NULL;
-+ goto probe_free_host;
-+ }
-+
-+ if((ret = clk_enable(host->clk))) {
-+ printk(KERN_ERR PFX "failed to enable clock source.\n");
-+ goto clk_unuse;
-+ }
-+
-+
-+ mmc->ops = &s3c2410sdi_ops;
-+ mmc->ocr_avail = pdata->ocr_avail;
-+ mmc->f_min = clk_get_rate(host->clk) / 512;
-+ mmc->f_max = clk_get_rate(host->clk) / 2;
-+ mmc->caps = MMC_CAP_4_BIT_DATA;
-+
-+ if(pdata->f_max && (mmc->f_max>pdata->f_max))
-+ mmc->f_max = pdata->f_max;
-+
-+ /*
-+ * Since we only have a 16-bit data length register, we must
-+ * ensure that we don't exceed 2^16-1 bytes in a single request.
-+ * Choose 64 (512-byte) sectors as the limit.
-+ */
-+ mmc->max_sectors = 64;
-+
-+ /*
-+ * Set the maximum segment size. Since we aren't doing DMA
-+ * (yet) we are only limited by the data length register.
-+ */
-+
-+ mmc->max_seg_size = mmc->max_sectors << 9;
-+ printk(KERN_INFO PFX "probe: mapped sdi_base=%p irq=%u irq_cd=%u \n",
-+ host->base, host->irq, host->irq_cd);
-+
-+ if((ret = mmc_add_host(mmc))) {
-+ printk(KERN_ERR PFX "failed to add mmc host.\n");
-+ goto clk_disable;
-+ }
-+
-+ platform_set_drvdata(pdev, mmc);
-+
-+ mmc_detect_change(mmc, 0);
-+
-+ printk(KERN_INFO PFX "initialisation done.\n");
-+ return 0;
-+
-+ clk_disable:
-+ clk_disable(host->clk);
-+
-+ clk_unuse:
-+ clk_put(host->clk);
-+
-+ probe_free_irq_cd:
-+ free_irq(host->irq_cd, host);
-+
-+ probe_free_irq:
-+ free_irq(host->irq, host);
-+
-+ probe_iounmap:
-+ iounmap(host->base);
-+
-+ probe_free_mem_region:
-+ release_mem_region(host->mem->start, RESSIZE(host->mem));
-+
-+ probe_free_host:
-+ mmc_free_host(mmc);
-+ probe_out:
-+ return ret;
-+}
-+
-+static int s3c2410sdi_remove(struct platform_device *pdev)
-+{
-+ struct mmc_host *mmc = platform_get_drvdata(pdev);
-+ struct s3c2410sdi_host *host = mmc_priv(mmc);
-+
-+ mmc_remove_host(mmc);
-+ clk_disable(host->clk);
-+ clk_put(host->clk);
-+ free_irq(host->irq_cd, host);
-+ free_irq(host->irq, host);
-+ iounmap(host->base);
-+ release_mem_region(host->mem->start, RESSIZE(host->mem));
-+ mmc_free_host(mmc);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int s3c2410mci_suspend(struct platform_device *dev, pm_message_t state)
-+{
-+ struct mmc_host *mmc = platform_get_drvdata(dev);
-+ struct s3c2410sdi_host *host;
-+ int ret = 0;
-+
-+ if (mmc) {
-+ host = mmc_priv(mmc);
-+
-+ ret = mmc_suspend_host(mmc, state);
-+
-+ clk_disable(host->clk);
-+
-+ disable_irq(host->irq_cd);
-+ disable_irq(host->irq);
-+ }
-+
-+ return ret;
-+}
-+
-+static int s3c2410mci_resume(struct platform_device *dev)
-+{
-+ struct mmc_host *mmc = platform_get_drvdata(dev);
-+ struct s3c2410sdi_host *host;
-+ int ret = 0;
-+
-+ if (mmc) {
-+ host = mmc_priv(mmc);
-+
-+ enable_irq(host->irq_cd);
-+ enable_irq(host->irq);
-+
-+ clk_enable(host->clk);
-+
-+ ret = mmc_resume_host(mmc);
-+ }
-+
-+ return ret;
-+}
-+#else
-+#define s3c2410mci_suspend NULL
-+#define s3c2410mci_resume NULL
-+#endif
-+
-+static struct platform_driver s3c2410sdi_driver =
-+{
-+ .driver = {
-+ .name = "s3c2410-sdi",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = s3c2410sdi_probe,
-+ .remove = s3c2410sdi_remove,
-+ .suspend = s3c2410mci_suspend,
-+ .resume = s3c2410mci_resume,
-+};
-+
-+static int __init s3c2410sdi_init(void)
-+{
-+ return platform_driver_register(&s3c2410sdi_driver);
-+}
-+
-+static void __exit s3c2410sdi_exit(void)
-+{
-+ platform_driver_unregister(&s3c2410sdi_driver);
-+}
-+
-+module_init(s3c2410sdi_init);
-+module_exit(s3c2410sdi_exit);
-+
-+MODULE_DESCRIPTION("Samsung S3C2410 Multimedia Card Interface driver");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6.17.7-new/drivers/mmc/s3c2410mci.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.7-new/drivers/mmc/s3c2410mci.h 2006-08-07 09:33:51.000000000 +0200
-@@ -0,0 +1,55 @@
-+/*
-+ * linux/drivers/mmc/s3c2410mci.h - Samsung S3C2410 SDI Interface driver
-+ *
-+ * Copyright (C) 2004 Thomas Kleffel, All Rights Reserved.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+struct clk;
-+
-+#define S3C2410SDI_DMA 0
-+
-+#define S3C2410SDI_CDLATENCY 50
-+
-+enum s3c2410sdi_waitfor {
-+ COMPLETION_NONE,
-+ COMPLETION_CMDSENT,
-+ COMPLETION_RSPFIN,
-+ COMPLETION_XFERFINISH,
-+ COMPLETION_XFERFINISH_RSPFIN,
-+};
-+
-+typedef struct s3c24xx_mmc_platdata s3c24xx_mmc_pdata_t;
-+
-+struct s3c2410sdi_host {
-+ struct mmc_host *mmc;
-+ s3c24xx_mmc_pdata_t *pdata;
-+
-+ struct resource *mem;
-+ struct clk *clk;
-+ void __iomem *base;
-+ int irq;
-+ int irq_cd;
-+ int dma;
-+
-+ struct scatterlist* cur_sg; /* Current SG entry */
-+ unsigned int num_sg; /* Number of entries left */
-+ void* mapped_sg; /* vaddr of mapped sg */
-+
-+ unsigned int offset; /* Offset into current entry */
-+ unsigned int remain; /* Data left in curren entry */
-+
-+ int size; /* Total size of transfer */
-+
-+ struct mmc_request *mrq;
-+
-+ unsigned char bus_width; /* Current bus width */
-+
-+ spinlock_t complete_lock;
-+ struct completion complete_request;
-+ struct completion complete_dma;
-+ enum s3c2410sdi_waitfor complete_what;
-+};
-Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/mmc.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/mmc.h 2006-08-07 09:33:51.000000000 +0200
-@@ -0,0 +1,32 @@
-+/* linux/include/asm-arm/arch-s3c2410/mmc.h
-+ *
-+ * (c) 2004-2005 Simtec Electronics
-+ * http://www.simtec.co.uk/products/SWLINUX/
-+ * Ben Dooks <ben at simtec.co.uk>
-+ *
-+ * S3C24XX - MMC/SD platform data
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * Changelog:
-+ * 26-Oct-2005 BJD Created file
-+*/
-+
-+#ifndef __ASM_ARCH_MMC_H
-+#define __ASM_ARCH_MMC_H __FILE__
-+
-+struct s3c24xx_mmc_platdata {
-+ unsigned int gpio_detect;
-+ unsigned int gpio_wprotect;
-+ unsigned int detect_polarity;
-+ unsigned int wprotect_polarity;
-+
-+ unsigned long f_max;
-+ unsigned long ocr_avail;
-+
-+ void (*set_power)(unsigned int to);
-+};
-+
-+#endif /* __ASM_ARCH_MMC_H */
-Index: linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-sdi.h
-===================================================================
---- linux-2.6.17.7-new.orig/include/asm-arm/arch-s3c2410/regs-sdi.h 2006-08-07 09:32:34.000000000 +0200
-+++ linux-2.6.17.7-new/include/asm-arm/arch-s3c2410/regs-sdi.h 2006-08-07 09:33:51.000000000 +0200
-@@ -47,7 +47,8 @@
- #define S3C2410_SDICMDCON_LONGRSP (1<<10)
- #define S3C2410_SDICMDCON_WAITRSP (1<<9)
- #define S3C2410_SDICMDCON_CMDSTART (1<<8)
--#define S3C2410_SDICMDCON_INDEX (0xff)
-+#define S3C2410_SDICMDCON_SENDERHOST (1<<6)
-+#define S3C2410_SDICMDCON_INDEX (0x3f)
-
- #define S3C2410_SDICMDSTAT_CRCFAIL (1<<12)
- #define S3C2410_SDICMDSTAT_CMDSENT (1<<11)
-@@ -73,6 +74,7 @@
- #define S3C2410_SDIDCON_XFER_RXSTART (2<<12)
- #define S3C2410_SDIDCON_XFER_TXSTART (3<<12)
-
-+#define S3C2410_SDIDCON_BLKNUM_MASK (0xFFF)
- #define S3C2410_SDIDCNT_BLKNUM_SHIFT (12)
-
- #define S3C2410_SDIDSTA_RDYWAITREQ (1<<10)
-@@ -115,4 +117,14 @@
- #define S3C2410_SDIIMSK_RXFIFOFULL (1<<1)
- #define S3C2410_SDIIMSK_RXFIFOHALF (1<<0)
-
-+#define S3C2410_SDICMDCON_ABORT (1<<12)
-+#define S3C2410_SDICMDCON_WITHDATA (1<<11)
-+#define S3C2410_SDICMDCON_LONGRSP (1<<10)
-+#define S3C2410_SDICMDCON_WAITRSP (1<<9)
-+#define S3C2410_SDICMDCON_CMDSTART (1<<8)
-+#define S3C2410_SDICMDCON_SENDERHOST (1<<6)
-+
-+#define S3C2410_SDIDCON_BLKNUM_MASK (0xFFF)
-+#define S3C2410_SDIDCNT_BLKNUM_SHIFT (12)
-+
- #endif /* __ASM_ARM_REGS_SDI */
-Index: linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c
-===================================================================
---- linux-2.6.17.7-new.orig/arch/arm/mach-s3c2410/mach-qt2410.c 2006-08-07 09:33:27.000000000 +0200
-+++ linux-2.6.17.7-new/arch/arm/mach-s3c2410/mach-qt2410.c 2006-08-07 09:34:20.000000000 +0200
-@@ -29,6 +29,7 @@
- #include <linux/timer.h>
- #include <linux/init.h>
- #include <linux/platform_device.h>
-+#include <linux/mmc/protocol.h>
-
- #include <linux/mtd/mtd.h>
- #include <linux/mtd/nand.h>
-@@ -45,7 +46,9 @@
- #include <asm/mach-types.h>
-
- #include <asm/arch/regs-serial.h>
-+#include <asm/arch/regs-gpio.h>
- #include <asm/arch/fb.h>
-+#include <asm/arch/mmc.h>
- #include <asm/arch/nand.h>
-
- #include "devs.h"
-@@ -236,6 +239,13 @@
- .sets = qt2410_nand_sets,
- };
-
-+static struct s3c24xx_mmc_platdata qt2410_mmc_cfg = {
-+ .gpio_detect = S3C2410_GPG10,
-+ .gpio_wprotect = S3C2410_GPH8,
-+ .set_power = NULL,
-+ .ocr_avail = MMC_VDD_32_33,
-+};
-+
- static void __init qt2410_map_io(void)
- {
- s3c24xx_init_io(qt2410_iodesc, ARRAY_SIZE(qt2410_iodesc));
-@@ -259,6 +269,7 @@
- s3c2410_gpio_setpin(S3C2410_GPF7, 1);
-
- s3c_device_nand.dev.platform_data = &qt2410_nand_info;
-+ s3c_device_sdi.dev.platform_data = &qt2410_mmc_cfg;
- s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
-
- s3c2410_pm_init();
Deleted: trunk/src/target/kernel/patches/ts-debug.patch
===================================================================
--- trunk/src/target/kernel/patches/ts-debug.patch 2007-06-07 11:21:36 UTC (rev 2188)
+++ trunk/src/target/kernel/patches/ts-debug.patch 2007-06-07 14:44:59 UTC (rev 2189)
@@ -1,14 +0,0 @@
-Index: linux-2.6.17.14-fic4.test/drivers/input/touchscreen/s3c2410_ts.c
-===================================================================
---- linux-2.6.17.14-fic4.test.orig/drivers/input/touchscreen/s3c2410_ts.c 2007-01-15 01:07:12.000000000 +0100
-+++ linux-2.6.17.14-fic4.test/drivers/input/touchscreen/s3c2410_ts.c 2007-01-15 01:07:44.000000000 +0100
-@@ -190,7 +190,8 @@
- writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
- writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
- } else {
-- mod_timer(&touch_timer, jiffies+1);
-+ //mod_timer(&touch_timer, jiffies+1);
-+ mod_timer(&touch_timer, jiffies+(HZ/2));
- writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
- }
-
More information about the commitlog
mailing list