mmc: atmel-mci: AP700x PDC is not connected to MCI
authorHein_Tibosch <hein_tibosch@yahoo.es>
Thu, 30 Aug 2012 16:34:27 +0000 (16:34 +0000)
committerChris Ball <cjb@laptop.org>
Wed, 3 Oct 2012 14:05:23 +0000 (10:05 -0400)
Earlier, atmel-mci was adapted to make use of the peripheral DMA
controller (PDC), in case normal DMA wouldn't work.
( http://comments.gmane.org/gmane.linux.kernel.mmc/9403 )

This works OK on ARM platforms (AT91), but it broke the driver
for AVR32, the AP700x.  Although the MCI has PDC support, the
connection is not done for AVR chips.

This patch makes the use of PDC depend on !CONFIG_AVR32.

Signed-off-by: Hein Tibosch <hein_tibosch@yahoo.es>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/atmel-mci-regs.h
drivers/mmc/host/atmel-mci.c

index ab56f7db53150e907c406daff62be29fd5686cec..c97001e15227aba5b337c5cb07da0a799969d6dd 100644 (file)
 #define atmci_writel(port,reg,value)                   \
        __raw_writel((value), (port)->regs + reg)
 
+/* On AVR chips the Peripheral DMA Controller is not connected to MCI. */
+#ifdef CONFIG_AVR32
+#      define ATMCI_PDC_CONNECTED      0
+#else
+#      define ATMCI_PDC_CONNECTED      1
+#endif
+
 /*
  * Fix sconfig's burst size according to atmel MCI. We need to convert them as:
  * 1 -> 0, 4 -> 1, 8 -> 2, 16 -> 3.
index 6823d963376eecbfc38e81976d9220d7db880558..312c8fd6e6d53478e2ce61c915e222c28fa24917 100644 (file)
@@ -2290,7 +2290,7 @@ static void __init atmci_get_cap(struct atmel_mci *host)
                        "version: 0x%x\n", version);
 
        host->caps.has_dma_conf_reg = 0;
-       host->caps.has_pdc = 1;
+       host->caps.has_pdc = ATMCI_PDC_CONNECTED;
        host->caps.has_cfg_reg = 0;
        host->caps.has_cstor_reg = 0;
        host->caps.has_highspeed = 0;