diff options
Diffstat (limited to 'target/linux/brcm2708/patches-3.10/0021-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch')
-rw-r--r-- | target/linux/brcm2708/patches-3.10/0021-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-3.10/0021-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch b/target/linux/brcm2708/patches-3.10/0021-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch new file mode 100644 index 0000000000..ad7103ef71 --- /dev/null +++ b/target/linux/brcm2708/patches-3.10/0021-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch @@ -0,0 +1,49 @@ +From 3e9891e91d7dda096ab1cc2518830938ad69880d Mon Sep 17 00:00:00 2001 +From: popcornmix <popcornmix@gmail.com> +Date: Sun, 12 May 2013 12:25:52 +0100 +Subject: [PATCH 021/174] sdhci-bcm2708: use extension FIFO to buffer DMA + transfers + +The additional FIFO might speed up transfers in some cases. +--- + drivers/mmc/host/sdhci-bcm2708.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/drivers/mmc/host/sdhci-bcm2708.c ++++ b/drivers/mmc/host/sdhci-bcm2708.c +@@ -74,6 +74,9 @@ + /* Mhz clock that the EMMC core is running at. Should match the platform clockman settings */ + #define BCM2708_EMMC_CLOCK_FREQ 50000000 + ++#define REG_EXRDFIFO_EN 0x80 ++#define REG_EXRDFIFO_CFG 0x84 ++ + /*****************************************************************************\ + * * + * Debug * +@@ -957,10 +960,12 @@ static ssize_t attr_dma_store(struct dev + int on = simple_strtol(buf, NULL, 0); + if (on) { + host->flags |= SDHCI_USE_PLATDMA; ++ sdhci_bcm2708_writel(host, 1, REG_EXRDFIFO_EN); + printk(KERN_INFO "%s: DMA enabled\n", + mmc_hostname(host->mmc)); + } else { + host->flags &= ~(SDHCI_USE_PLATDMA | SDHCI_REQ_USE_DMA); ++ sdhci_bcm2708_writel(host, 0, REG_EXRDFIFO_EN); + printk(KERN_INFO "%s: DMA disabled\n", + mmc_hostname(host->mmc)); + } +@@ -1272,6 +1277,12 @@ static int sdhci_bcm2708_probe(struct pl + ret = device_create_file(&pdev->dev, &dev_attr_dma_wait); + ret = device_create_file(&pdev->dev, &dev_attr_status); + ++#ifdef CONFIG_MMC_SDHCI_BCM2708_DMA ++ /* enable extension fifo for paced DMA transfers */ ++ sdhci_bcm2708_writel(host, 1, REG_EXRDFIFO_EN); ++ sdhci_bcm2708_writel(host, 4, REG_EXRDFIFO_CFG); ++#endif ++ + printk(KERN_INFO "%s: BCM2708 SDHC host at 0x%08llx DMA %d IRQ %d\n", + mmc_hostname(host->mmc), (unsigned long long)iomem->start, + host_priv->dma_chan, host_priv->dma_irq); |