diff options
author | Seungwon Jeon <tgih.jun@samsung.com> | 2012-09-19 01:58:31 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-10-03 10:05:25 -0400 |
commit | 897b69e72054a39c1c1d99c8f334ffed6dc99ac4 (patch) | |
tree | 0be3853d016576e90f40325cda3e08607a70b7aa | |
parent | f6ad0a481342223b2e7ae9f55b154e14f1391ada (diff) |
mmc: Revert "mmc: dw_mmc: Add check for IDMAC configuration"
This reverts commit 94c6cee91 (Add check for IDMAC configuration).
Synopsys says that only if internal dmac is not present, optional
external dma interface is present. When internal dmac is present,
'0' value in DMA_INTERFACE of HCON is reasonable. DMA_INTERFACE
indicates external dma interface. And idmac initialization is
prohibited now.
The commit should be reverted since: the check for IDMAC is not
reliable; falling back to PIO would provide awful performance; we
wouldn't expect to see instances of this block without DMA support.
Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
Acked-by: Will Newton <will.newton@imgtec.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
-rw-r--r-- | drivers/mmc/host/dw_mmc.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 9f8e487bfa97..a23af77de4ce 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c | |||
@@ -410,23 +410,11 @@ static void dw_mci_idmac_start_dma(struct dw_mci *host, unsigned int sg_len) | |||
410 | static int dw_mci_idmac_init(struct dw_mci *host) | 410 | static int dw_mci_idmac_init(struct dw_mci *host) |
411 | { | 411 | { |
412 | struct idmac_desc *p; | 412 | struct idmac_desc *p; |
413 | int i, dma_support; | 413 | int i; |
414 | 414 | ||
415 | /* Number of descriptors in the ring buffer */ | 415 | /* Number of descriptors in the ring buffer */ |
416 | host->ring_size = PAGE_SIZE / sizeof(struct idmac_desc); | 416 | host->ring_size = PAGE_SIZE / sizeof(struct idmac_desc); |
417 | 417 | ||
418 | /* Check if Hardware Configuration Register has support for DMA */ | ||
419 | dma_support = (mci_readl(host, HCON) >> 16) & 0x3; | ||
420 | |||
421 | if (!dma_support || dma_support > 2) { | ||
422 | dev_err(host->dev, | ||
423 | "Host Controller does not support IDMA Tx.\n"); | ||
424 | host->dma_ops = NULL; | ||
425 | return -ENODEV; | ||
426 | } | ||
427 | |||
428 | dev_info(host->dev, "Using internal DMA controller.\n"); | ||
429 | |||
430 | /* Forward link the descriptor list */ | 418 | /* Forward link the descriptor list */ |
431 | for (i = 0, p = host->sg_cpu; i < host->ring_size - 1; i++, p++) | 419 | for (i = 0, p = host->sg_cpu; i < host->ring_size - 1; i++, p++) |
432 | p->des3 = host->sg_dma + (sizeof(struct idmac_desc) * (i + 1)); | 420 | p->des3 = host->sg_dma + (sizeof(struct idmac_desc) * (i + 1)); |
@@ -1985,6 +1973,7 @@ static void dw_mci_init_dma(struct dw_mci *host) | |||
1985 | /* Determine which DMA interface to use */ | 1973 | /* Determine which DMA interface to use */ |
1986 | #ifdef CONFIG_MMC_DW_IDMAC | 1974 | #ifdef CONFIG_MMC_DW_IDMAC |
1987 | host->dma_ops = &dw_mci_idmac_ops; | 1975 | host->dma_ops = &dw_mci_idmac_ops; |
1976 | dev_info(&host->dev, "Using internal DMA controller.\n"); | ||
1988 | #endif | 1977 | #endif |
1989 | 1978 | ||
1990 | if (!host->dma_ops) | 1979 | if (!host->dma_ops) |