Skip to contentSkip to conversation

mmc: atmel-mci: AP700x PDC is not connected to MCI

PATCH Superseded Hein Tibosch 3 participants 3 messages Aug 30, 2012 – Sep 19, 2012

Subsystems (3)

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 2/2 mmc: atmel-mci: AP700x PDC is not connected to MCI

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

---
 drivers/mmc/host/atmel-mci-regs.h |    7 +++++++
 drivers/mmc/host/atmel-mci.c      |    2 +-
 2 files changed, 8 insertions(+), 1 deletions(-)
drivers/mmc/host/atmel-mci-regs.h +7 -0
index ab56f7d..c97001e 100644
@@ -140,6 +140,13 @@
 #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.
drivers/mmc/host/atmel-mci.c +1 -1
index a6a5593..b8de891 100644
@@ -2208,7 +2208,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;
Signature · 1 line
1.7.8.0
#1 lore raw

PATCH v2 2/2 mmc: atmel-mci: AP700x PDC is not connected to MCI

Hi,

Quoted 40 lines · Hein Tibosch

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

---
 drivers/mmc/host/atmel-mci-regs.h |    7 +++++++
 drivers/mmc/host/atmel-mci.c      |    2 +-
 2 files changed, 8 insertions(+), 1 deletions(-)
drivers/mmc/host/atmel-mci-regs.h +7 -0
index ab56f7d..c97001e 100644
@@ -140,6 +140,13 @@
 #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.
drivers/mmc/host/atmel-mci.c +0 -0
index a6a5593..b8de891 100644

drivers/mmc/host/atmel-mci.c static void __init atmci_get_cap(struct atmel_mci *host) · line 2214

Quoted 8 lines
drivers/mmc/host/atmel-mci.c +1 -1
@@ -2208,7 +2208,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;

Thanks, pushed to mmc-next for 3.7.

I changed the commit message text to reflect my understanding of what the patch does better, from:
This patch makes the use of PDC depend on CONFIG_AVR32.
to:
This patch makes the use of PDC depend on !CONFIG_AVR32.

(Ludovic, perhaps you could give an ACK for this patch?)

- Chris.

Signature · 2 lines
Chris Ball   <[email protected]>   <http://printf.net/>
One Laptop Per Child
#2 lore raw

PATCH v2 2/2 mmc: atmel-mci: AP700x PDC is not connected to MCI

Hi Chris,

Le 09/19/2012 07:21 AM, Chris Ball a ?crit :

Quoted 54 lines

Hi,

Quoted 40 lines · Hein Tibosch

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

---
  drivers/mmc/host/atmel-mci-regs.h |    7 +++++++
  drivers/mmc/host/atmel-mci.c      |    2 +-
  2 files changed, 8 insertions(+), 1 deletions(-)
drivers/mmc/host/atmel-mci-regs.h +7 -0
index ab56f7d..c97001e 100644
@@ -140,6 +140,13 @@
  #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.
drivers/mmc/host/atmel-mci.c +0 -0
index a6a5593..b8de891 100644

drivers/mmc/host/atmel-mci.c static void __init atmci_get_cap(struct atmel_mci *host) · line 2214

Quoted 8 lines
drivers/mmc/host/atmel-mci.c +1 -1
@@ -2208,7 +2208,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;

Thanks, pushed to mmc-next for 3.7.

Quoted 6 lines

I changed the commit message text to reflect my understanding of what the patch does better, from:
This patch makes the use of PDC depend on CONFIG_AVR32.
to:
This patch makes the use of PDC depend on !CONFIG_AVR32.

You're right.

Quoted 2 lines

(Ludovic, perhaps you could give an ACK for this patch?)

It was given for the first version but not reported in the second version. So yes you can add

Thanks

Ludovic

Quoted 2 lines

- Chris.