diff for duplicates of <4AC09146.4000608@visionsystems.de> diff --git a/a/1.txt b/N1/1.txt index 3fe1e92..c90ad37 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -56,257 +56,3 @@ As to 2.6.30-at91-exp-0033-at91-atmel-mci-inclusion-of-sd-mmc-driver-in-at91sa.p DW_DMA_SLAVE_WIDTH_32BIT to AT_DMA_SLAVE_WIDTH_32BIT I couldn't apply 2.6.30-at91-exp-0032-mmc-atmel-mci-New-MCI2-module-support-in-atmel-mci.patch with quilt at once, so I had to make it manually. Here is applicable version: - ->From db778d85fe91649735f0fb23fa1088fee745f0ec Mon Sep 17 00:00:00 2001 -From: Nicolas Ferre <nicolas.ferre@atmel.com> -Date: Fri, 21 Aug 2009 18:23:30 +0200 -Subject: [PATCH 32/47] mmc: atmel-mci: New MCI2 module support in atmel-mci driver - -This new revision of the IP adds some improvements to the MCI already present -in several Atmel SOC. -Some new registers are added and a particular way of handling DMA interaction -lead to a new sequence in function call which is backward compatible: On MCI2, -we must set the DMAEN bit to enable the DMA handshaking interface. This must -happen before the data transfer command is sent. - -A new function is able to differentiate MCI2 code and is based on knowledge of -processor id (cpu_is_xxx()). - -Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com> -Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com> ---- - drivers/mmc/host/atmel-mci.c | 85 +++++++++++++++++++++++++++++++++++++----- - 1 files changed, 75 insertions(+), 10 deletions(-) - -Index: linus2/drivers/mmc/host/atmel-mci.c -=================================================================== ---- linus2.orig/drivers/mmc/host/atmel-mci.c -+++ linus2/drivers/mmc/host/atmel-mci.c -@@ -92,6 +92,7 @@ struct atmel_mci_dma { - * @need_clock_update: Update the clock rate before the next request. - * @need_reset: Reset controller before next request. - * @mode_reg: Value of the MR register. -+ * @cfg_reg: Value of the CFG register. - * @bus_hz: The rate of @mck in Hz. This forms the basis for MMC bus - * rate and timeout calculations. - * @mapbase: Physical address of the MMIO registers. -@@ -155,6 +156,7 @@ struct atmel_mci { - bool need_clock_update; - bool need_reset; - u32 mode_reg; -+ u32 cfg_reg; - unsigned long bus_hz; - unsigned long mapbase; - struct clk *mck; -@@ -223,6 +225,19 @@ static bool mci_has_rwproof(void) - } - - /* -+ * The new MCI2 module isn't 100% compatible with the old MCI module, -+ * and it has a few nice features which we want to use... -+ */ -+static inline bool atmci_is_mci2(void) -+{ -+ if (cpu_is_at91sam9g45()) -+ return true; -+ -+ return false; -+} -+ -+ -+/* - * The debugfs stuff below is mostly optimized away when - * CONFIG_DEBUG_FS is not set. - */ -@@ -357,12 +372,33 @@ static int atmci_regs_show(struct seq_fi - buf[MCI_BLKR / 4], - buf[MCI_BLKR / 4] & 0xffff, - (buf[MCI_BLKR / 4] >> 16) & 0xffff); -+ if (atmci_is_mci2()) -+ seq_printf(s, "CSTOR:\t0x%08x\n", buf[MCI_CSTOR / 4]); - - /* Don't read RSPR and RDR; it will consume the data there */ - - atmci_show_status_reg(s, "SR", buf[MCI_SR / 4]); - atmci_show_status_reg(s, "IMR", buf[MCI_IMR / 4]); - -+ if (atmci_is_mci2()) { -+ u32 val; -+ -+ val = buf[MCI_DMA / 4]; -+ seq_printf(s, "DMA:\t0x%08x OFFSET=%u CHKSIZE=%u%s\n", -+ val, val & 3, -+ ((val >> 4) & 3) ? -+ 1 << (((val >> 4) & 3) + 1) : 1, -+ val & MCI_DMAEN ? " DMAEN" : ""); -+ -+ val = buf[MCI_CFG / 4]; -+ seq_printf(s, "CFG:\t0x%08x%s%s%s%s\n", -+ val, -+ val & MCI_CFG_FIFOMODE_1DATA ? " FIFOMODE_ONE_DATA" : "", -+ val & MCI_CFG_FERRCTRL_COR ? " FERRCTRL_CLEAR_ON_READ" : "", -+ val & MCI_CFG_HSMODE ? " HSMODE" : "", -+ val & MCI_CFG_LSYNC ? " LSYNC" : ""); -+ } -+ - kfree(buf); - - return 0; -@@ -557,6 +593,10 @@ static void atmci_dma_complete(void *arg - - dev_vdbg(&host->pdev->dev, "DMA complete\n"); - -+ if (atmci_is_mci2()) -+ /* Disable DMA hardware handshaking on MCI */ -+ mci_writel(host, DMA, mci_readl(host, DMA) & ~MCI_DMAEN); -+ - atmci_dma_cleanup(host); - - /* -@@ -592,7 +632,7 @@ static void atmci_dma_complete(void *arg - } - - static int --atmci_submit_data_dma(struct atmel_mci *host, struct mmc_data *data) -+atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data) - { - struct dma_chan *chan; - struct dma_async_tx_descriptor *desc; -@@ -624,6 +664,9 @@ atmci_submit_data_dma(struct atmel_mci * - if (!chan) - return -ENODEV; - -+ if (atmci_is_mci2()) -+ mci_writel(host, DMA, MCI_DMA_CHKSIZE(3) | MCI_DMAEN); -+ - if (data->flags & MMC_DATA_READ) - direction = DMA_FROM_DEVICE; - else -@@ -641,10 +684,6 @@ atmci_submit_data_dma(struct atmel_mci * - host->dma.data_desc = desc; - desc->callback = atmci_dma_complete; - desc->callback_param = host; -- desc->tx_submit(desc); -- -- /* Go! */ -- chan->device->device_issue_pending(chan); - - return 0; - unmap_exit: -@@ -652,13 +691,27 @@ unmap_exit: - return -ENOMEM; - } - -+static void atmci_submit_data(struct atmel_mci *host) -+{ -+ struct dma_chan *chan = host->data_chan; -+ struct dma_async_tx_descriptor *desc = host->dma.data_desc; -+ -+ if (chan) { -+ desc->tx_submit(desc); -+ chan->device->device_issue_pending(chan); -+ } -+} -+ - #else /* CONFIG_MMC_ATMELMCI_DMA */ - --static int atmci_submit_data_dma(struct atmel_mci *host, struct mmc_data *data) -+static int atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data) - { - return -ENOSYS; - } - -+static void atmci_submit_data(struct atmel_mci *host) {} -+ -+ - static void atmci_stop_dma(struct atmel_mci *host) - { - /* Data transfer was stopped by the interrupt handler */ -@@ -672,7 +725,7 @@ static void atmci_stop_dma(struct atmel_ - * Returns a mask of interrupt flags to be enabled after the whole - * request has been prepared. - */ --static u32 atmci_submit_data(struct atmel_mci *host, struct mmc_data *data) -+static u32 atmci_prepare_data(struct atmel_mci *host, struct mmc_data *data) - { - u32 iflags; - -@@ -683,7 +736,7 @@ static u32 atmci_submit_data(struct atme - host->data = data; - - iflags = ATMCI_DATA_ERROR_FLAGS; -- if (atmci_submit_data_dma(host, data)) { -+ if (atmci_prepare_data_dma(host, data)) { - host->data_chan = NULL; - - /* -@@ -729,6 +782,8 @@ static void atmci_start_request(struct a - mci_writel(host, CR, MCI_CR_SWRST); - mci_writel(host, CR, MCI_CR_MCIEN); - mci_writel(host, MR, host->mode_reg); -+ if (atmci_is_mci2()) -+ mci_writel(host, CFG, host->cfg_reg); - host->need_reset = false; - } - mci_writel(host, SDCR, slot->sdc_reg); -@@ -744,6 +799,7 @@ static void atmci_start_request(struct a - while (!(mci_readl(host, SR) & MCI_CMDRDY)) - cpu_relax(); - } -+ iflags = 0; - data = mrq->data; - if (data) { - atmci_set_timeout(host, slot, data); -@@ -753,15 +809,17 @@ static void atmci_start_request(struct a - | MCI_BLKLEN(data->blksz)); - dev_vdbg(&slot->mmc->class_dev, "BLKR=0x%08x\n", - MCI_BCNT(data->blocks) | MCI_BLKLEN(data->blksz)); -+ -+ iflags |= atmci_prepare_data(host, data); - } - -- iflags = MCI_CMDRDY; -+ iflags |= MCI_CMDRDY; - cmd = mrq->cmd; - cmdflags = atmci_prepare_command(slot->mmc, cmd); - atmci_start_command(host, cmd, cmdflags); - - if (data) -- iflags |= atmci_submit_data(host, data); -+ atmci_submit_data(host); - - if (mrq->stop) { - host->stop_cmdr = atmci_prepare_command(slot->mmc, mrq->stop); -@@ -857,6 +915,8 @@ static void atmci_set_ios(struct mmc_hos - clk_enable(host->mck); - mci_writel(host, CR, MCI_CR_SWRST); - mci_writel(host, CR, MCI_CR_MCIEN); -+ if (atmci_is_mci2()) -+ mci_writel(host, CFG, host->cfg_reg); - } - - /* -@@ -1095,6 +1155,8 @@ static void atmci_detect_change(unsigned - mci_writel(host, CR, MCI_CR_SWRST); - mci_writel(host, CR, MCI_CR_MCIEN); - mci_writel(host, MR, host->mode_reg); -+ if (atmci_is_mci2()) -+ mci_writel(host, CFG, host->cfg_reg); - - host->data = NULL; - host->cmd = NULL; -@@ -1644,6 +1706,10 @@ static void atmci_configure_dma(struct a - } - if (!host->dma.chan) - dev_notice(&host->pdev->dev, "DMA not available, using PIO\n"); -+ else -+ dev_info(&host->pdev->dev, -+ "Using %s for DMA transfers\n", -+ dma_chan_name(host->dma.chan)); - } - #else - static void atmci_configure_dma(struct atmel_mci *host) {} - - -Best regards, -Yegor Yefremov diff --git a/a/content_digest b/N1/content_digest index 9317787..3c95053 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,11 +1,9 @@ "ref\04ABCBD32.7080408@visionsystems.de\0" "ref\04ABCE36F.1000205@atmel.com\0" - "From\0Yegor Yefremov <yegor_sub1@visionsystems.de>\0" - "Subject\0Re: [at91sam9g45] DMA driver for AC97 and MCI\0" + "From\0yegor_sub1@visionsystems.de (Yegor Yefremov)\0" + "Subject\0[at91sam9g45] DMA driver for AC97 and MCI\0" "Date\0Mon, 28 Sep 2009 12:34:46 +0200\0" - "To\0Nicolas Ferre <nicolas.ferre@atmel.com>\0" - "Cc\0linux-mmc@vger.kernel.org" - " linux-arm-kernel@lists.infradead.org\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" ">> I try to get sound and SD card working on at91sam9g45-ekes development\n" @@ -65,260 +63,6 @@ "As to 2.6.30-at91-exp-0033-at91-atmel-mci-inclusion-of-sd-mmc-driver-in-at91sa.patch I've only changed\n" "DW_DMA_SLAVE_WIDTH_32BIT to AT_DMA_SLAVE_WIDTH_32BIT\n" "\n" - "I couldn't apply 2.6.30-at91-exp-0032-mmc-atmel-mci-New-MCI2-module-support-in-atmel-mci.patch with quilt at once, so I had to make it manually. Here is applicable version:\n" - "\n" - ">From db778d85fe91649735f0fb23fa1088fee745f0ec Mon Sep 17 00:00:00 2001\n" - "From: Nicolas Ferre <nicolas.ferre@atmel.com>\n" - "Date: Fri, 21 Aug 2009 18:23:30 +0200\n" - "Subject: [PATCH 32/47] mmc: atmel-mci: New MCI2 module support in atmel-mci driver\n" - "\n" - "This new revision of the IP adds some improvements to the MCI already present\n" - "in several Atmel SOC.\n" - "Some new registers are added and a particular way of handling DMA interaction\n" - "lead to a new sequence in function call which is backward compatible: On MCI2,\n" - "we must set the DMAEN bit to enable the DMA handshaking interface. This must\n" - "happen before the data transfer command is sent.\n" - "\n" - "A new function is able to differentiate MCI2 code and is based on knowledge of\n" - "processor id (cpu_is_xxx()).\n" - "\n" - "Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>\n" - "Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>\n" - "---\n" - " drivers/mmc/host/atmel-mci.c | 85 +++++++++++++++++++++++++++++++++++++-----\n" - " 1 files changed, 75 insertions(+), 10 deletions(-)\n" - "\n" - "Index: linus2/drivers/mmc/host/atmel-mci.c\n" - "===================================================================\n" - "--- linus2.orig/drivers/mmc/host/atmel-mci.c\n" - "+++ linus2/drivers/mmc/host/atmel-mci.c\n" - "@@ -92,6 +92,7 @@ struct atmel_mci_dma {\n" - " * @need_clock_update: Update the clock rate before the next request.\n" - " * @need_reset: Reset controller before next request.\n" - " * @mode_reg: Value of the MR register.\n" - "+ * @cfg_reg: Value of the CFG register.\n" - " * @bus_hz: The rate of @mck in Hz. This forms the basis for MMC bus\n" - " *\trate and timeout calculations.\n" - " * @mapbase: Physical address of the MMIO registers.\n" - "@@ -155,6 +156,7 @@ struct atmel_mci {\n" - " \tbool\t\t\tneed_clock_update;\n" - " \tbool\t\t\tneed_reset;\n" - " \tu32\t\t\tmode_reg;\n" - "+\tu32\t\t\tcfg_reg;\n" - " \tunsigned long\t\tbus_hz;\n" - " \tunsigned long\t\tmapbase;\n" - " \tstruct clk\t\t*mck;\n" - "@@ -223,6 +225,19 @@ static bool mci_has_rwproof(void)\n" - " }\n" - " \n" - " /*\n" - "+ * The new MCI2 module isn't 100% compatible with the old MCI module,\n" - "+ * and it has a few nice features which we want to use...\n" - "+ */\n" - "+static inline bool atmci_is_mci2(void)\n" - "+{\n" - "+\tif (cpu_is_at91sam9g45())\n" - "+\t\treturn true;\n" - "+\n" - "+\treturn false;\n" - "+}\n" - "+\n" - "+\n" - "+/*\n" - " * The debugfs stuff below is mostly optimized away when\n" - " * CONFIG_DEBUG_FS is not set.\n" - " */\n" - "@@ -357,12 +372,33 @@ static int atmci_regs_show(struct seq_fi\n" - " \t\t\tbuf[MCI_BLKR / 4],\n" - " \t\t\tbuf[MCI_BLKR / 4] & 0xffff,\n" - " \t\t\t(buf[MCI_BLKR / 4] >> 16) & 0xffff);\n" - "+\tif (atmci_is_mci2())\n" - "+\t\tseq_printf(s, \"CSTOR:\\t0x%08x\\n\", buf[MCI_CSTOR / 4]);\n" - " \n" - " \t/* Don't read RSPR and RDR; it will consume the data there */\n" - " \n" - " \tatmci_show_status_reg(s, \"SR\", buf[MCI_SR / 4]);\n" - " \tatmci_show_status_reg(s, \"IMR\", buf[MCI_IMR / 4]);\n" - " \n" - "+\tif (atmci_is_mci2()) {\n" - "+\t\tu32 val;\n" - "+\n" - "+\t\tval = buf[MCI_DMA / 4];\n" - "+\t\tseq_printf(s, \"DMA:\\t0x%08x OFFSET=%u CHKSIZE=%u%s\\n\",\n" - "+\t\t\t\tval, val & 3,\n" - "+\t\t\t\t((val >> 4) & 3) ?\n" - "+\t\t\t\t\t1 << (((val >> 4) & 3) + 1) : 1,\n" - "+\t\t\t\tval & MCI_DMAEN ? \" DMAEN\" : \"\");\n" - "+\n" - "+\t\tval = buf[MCI_CFG / 4];\n" - "+\t\tseq_printf(s, \"CFG:\\t0x%08x%s%s%s%s\\n\",\n" - "+\t\t\t\tval,\n" - "+\t\t\t\tval & MCI_CFG_FIFOMODE_1DATA ? \" FIFOMODE_ONE_DATA\" : \"\",\n" - "+\t\t\t\tval & MCI_CFG_FERRCTRL_COR ? \" FERRCTRL_CLEAR_ON_READ\" : \"\",\n" - "+\t\t\t\tval & MCI_CFG_HSMODE ? \" HSMODE\" : \"\",\n" - "+\t\t\t\tval & MCI_CFG_LSYNC ? \" LSYNC\" : \"\");\n" - "+\t}\n" - "+\n" - " \tkfree(buf);\n" - " \n" - " \treturn 0;\n" - "@@ -557,6 +593,10 @@ static void atmci_dma_complete(void *arg\n" - " \n" - " \tdev_vdbg(&host->pdev->dev, \"DMA complete\\n\");\n" - " \n" - "+\tif (atmci_is_mci2())\n" - "+\t\t/* Disable DMA hardware handshaking on MCI */\n" - "+\t\tmci_writel(host, DMA, mci_readl(host, DMA) & ~MCI_DMAEN);\n" - "+\n" - " \tatmci_dma_cleanup(host);\n" - " \n" - " \t/*\n" - "@@ -592,7 +632,7 @@ static void atmci_dma_complete(void *arg\n" - " }\n" - " \n" - " static int\n" - "-atmci_submit_data_dma(struct atmel_mci *host, struct mmc_data *data)\n" - "+atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data)\n" - " {\n" - " \tstruct dma_chan\t\t\t*chan;\n" - " \tstruct dma_async_tx_descriptor\t*desc;\n" - "@@ -624,6 +664,9 @@ atmci_submit_data_dma(struct atmel_mci *\n" - " \tif (!chan)\n" - " \t\treturn -ENODEV;\n" - " \n" - "+\tif (atmci_is_mci2())\n" - "+\t\tmci_writel(host, DMA, MCI_DMA_CHKSIZE(3) | MCI_DMAEN);\n" - "+\n" - " \tif (data->flags & MMC_DATA_READ)\n" - " \t\tdirection = DMA_FROM_DEVICE;\n" - " \telse\n" - "@@ -641,10 +684,6 @@ atmci_submit_data_dma(struct atmel_mci *\n" - " \thost->dma.data_desc = desc;\n" - " \tdesc->callback = atmci_dma_complete;\n" - " \tdesc->callback_param = host;\n" - "-\tdesc->tx_submit(desc);\n" - "-\n" - "-\t/* Go! */\n" - "-\tchan->device->device_issue_pending(chan);\n" - " \n" - " \treturn 0;\n" - " unmap_exit:\n" - "@@ -652,13 +691,27 @@ unmap_exit:\n" - " \treturn -ENOMEM;\n" - " }\n" - " \n" - "+static void atmci_submit_data(struct atmel_mci *host)\n" - "+{\n" - "+\tstruct dma_chan\t\t\t*chan = host->data_chan;\n" - "+\tstruct dma_async_tx_descriptor\t*desc = host->dma.data_desc;\n" - "+\n" - "+\tif (chan) {\n" - "+\t\tdesc->tx_submit(desc);\n" - "+\t\tchan->device->device_issue_pending(chan);\n" - "+\t}\n" - "+}\n" - "+\n" - " #else /* CONFIG_MMC_ATMELMCI_DMA */\n" - " \n" - "-static int atmci_submit_data_dma(struct atmel_mci *host, struct mmc_data *data)\n" - "+static int atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data)\n" - " {\n" - " \treturn -ENOSYS;\n" - " }\n" - " \n" - "+static void atmci_submit_data(struct atmel_mci *host) {}\n" - "+\n" - "+\n" - " static void atmci_stop_dma(struct atmel_mci *host)\n" - " {\n" - " \t/* Data transfer was stopped by the interrupt handler */\n" - "@@ -672,7 +725,7 @@ static void atmci_stop_dma(struct atmel_\n" - " * Returns a mask of interrupt flags to be enabled after the whole\n" - " * request has been prepared.\n" - " */\n" - "-static u32 atmci_submit_data(struct atmel_mci *host, struct mmc_data *data)\n" - "+static u32 atmci_prepare_data(struct atmel_mci *host, struct mmc_data *data)\n" - " {\n" - " \tu32 iflags;\n" - " \n" - "@@ -683,7 +736,7 @@ static u32 atmci_submit_data(struct atme\n" - " \thost->data = data;\n" - " \n" - " \tiflags = ATMCI_DATA_ERROR_FLAGS;\n" - "-\tif (atmci_submit_data_dma(host, data)) {\n" - "+\tif (atmci_prepare_data_dma(host, data)) {\n" - " \t\thost->data_chan = NULL;\n" - " \n" - " \t\t/*\n" - "@@ -729,6 +782,8 @@ static void atmci_start_request(struct a\n" - " \t\tmci_writel(host, CR, MCI_CR_SWRST);\n" - " \t\tmci_writel(host, CR, MCI_CR_MCIEN);\n" - " \t\tmci_writel(host, MR, host->mode_reg);\n" - "+\t\tif (atmci_is_mci2())\n" - "+\t\t\tmci_writel(host, CFG, host->cfg_reg);\n" - " \t\thost->need_reset = false;\n" - " \t}\n" - " \tmci_writel(host, SDCR, slot->sdc_reg);\n" - "@@ -744,6 +799,7 @@ static void atmci_start_request(struct a\n" - " \t\twhile (!(mci_readl(host, SR) & MCI_CMDRDY))\n" - " \t\t\tcpu_relax();\n" - " \t}\n" - "+\tiflags = 0;\n" - " \tdata = mrq->data;\n" - " \tif (data) {\n" - " \t\tatmci_set_timeout(host, slot, data);\n" - "@@ -753,15 +809,17 @@ static void atmci_start_request(struct a\n" - " \t\t\t\t| MCI_BLKLEN(data->blksz));\n" - " \t\tdev_vdbg(&slot->mmc->class_dev, \"BLKR=0x%08x\\n\",\n" - " \t\t\tMCI_BCNT(data->blocks) | MCI_BLKLEN(data->blksz));\n" - "+\n" - "+\t\tiflags |= atmci_prepare_data(host, data);\n" - " \t}\n" - " \n" - "-\tiflags = MCI_CMDRDY;\n" - "+\tiflags |= MCI_CMDRDY;\n" - " \tcmd = mrq->cmd;\n" - " \tcmdflags = atmci_prepare_command(slot->mmc, cmd);\n" - " \tatmci_start_command(host, cmd, cmdflags);\n" - " \n" - " \tif (data)\n" - "-\t\tiflags |= atmci_submit_data(host, data);\n" - "+\t\tatmci_submit_data(host);\n" - " \n" - " \tif (mrq->stop) {\n" - " \t\thost->stop_cmdr = atmci_prepare_command(slot->mmc, mrq->stop);\n" - "@@ -857,6 +915,8 @@ static void atmci_set_ios(struct mmc_hos\n" - " \t\t\tclk_enable(host->mck);\n" - " \t\t\tmci_writel(host, CR, MCI_CR_SWRST);\n" - " \t\t\tmci_writel(host, CR, MCI_CR_MCIEN);\n" - "+\t\t\tif (atmci_is_mci2())\n" - "+\t\t\t\tmci_writel(host, CFG, host->cfg_reg);\n" - " \t\t}\n" - " \n" - " \t\t/*\n" - "@@ -1095,6 +1155,8 @@ static void atmci_detect_change(unsigned\n" - " \t\t\t\tmci_writel(host, CR, MCI_CR_SWRST);\n" - " \t\t\t\tmci_writel(host, CR, MCI_CR_MCIEN);\n" - " \t\t\t\tmci_writel(host, MR, host->mode_reg);\n" - "+\t\t\t\tif (atmci_is_mci2())\n" - "+\t\t\t\t\tmci_writel(host, CFG, host->cfg_reg);\n" - " \n" - " \t\t\t\thost->data = NULL;\n" - " \t\t\t\thost->cmd = NULL;\n" - "@@ -1644,6 +1706,10 @@ static void atmci_configure_dma(struct a\n" - " \t}\n" - " \tif (!host->dma.chan)\n" - " \t\tdev_notice(&host->pdev->dev, \"DMA not available, using PIO\\n\");\n" - "+\telse\n" - "+\t\tdev_info(&host->pdev->dev,\n" - "+\t\t\t\t\t\"Using %s for DMA transfers\\n\",\n" - "+\t\t\t\t\tdma_chan_name(host->dma.chan));\n" - " }\n" - " #else\n" - " static void atmci_configure_dma(struct atmel_mci *host) {}\n" - "\n" - "\n" - "Best regards,\n" - Yegor Yefremov + I couldn't apply 2.6.30-at91-exp-0032-mmc-atmel-mci-New-MCI2-module-support-in-atmel-mci.patch with quilt at once, so I had to make it manually. Here is applicable version: -8b4ab2df677a16587d0ed4cfabb9ca05040a20af6e48aedf58cb77c58495d1b1 +292e6f287dbf9c2ca8e0b817218910515fc9b217b3bc744e82f10456277a0f58
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.