Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=df456f479aa6fdc812df51627c6f2c21d8a1aed8
Commit:     df456f479aa6fdc812df51627c6f2c21d8a1aed8
Parent:     fe2dc44eac1223a0e92859242f58fd2a58a6f8fa
Author:     Bridge Wu <[EMAIL PROTECTED]>
AuthorDate: Tue Sep 25 19:09:19 2007 +0200
Committer:  Pierre Ossman <[EMAIL PROTECTED]>
CommitDate: Tue Sep 25 19:11:39 2007 +0200

    mmc: pxamci: set proper buswidth capabilities according to PXA flavor
    
    From PXA27x, it is possible to do 4-bit data transfers.
    
    Signed-off-by: Bridge Wu <[EMAIL PROTECTED]>
    Signed-off-by: Nicolas Pitre <[EMAIL PROTECTED]>
    Signed-off-by: Pierre Ossman <[EMAIL PROTECTED]>
---
 drivers/mmc/host/pxamci.c |   10 +++++++++-
 drivers/mmc/host/pxamci.h |    1 +
 2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
index 67acc6a..6549f54 100644
--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -284,7 +284,7 @@ static int pxamci_data_done(struct pxamci_host *host, 
unsigned int stat)
        host->data = NULL;
        if (host->mrq->stop) {
                pxamci_stop_clock(host);
-               pxamci_start_cmd(host, host->mrq->stop, 0);
+               pxamci_start_cmd(host, host->mrq->stop, host->cmdat);
        } else {
                pxamci_finish_request(host, host->mrq);
        }
@@ -382,6 +382,11 @@ static void pxamci_set_ios(struct mmc_host *mmc, struct 
mmc_ios *ios)
                        host->cmdat |= CMDAT_INIT;
        }
 
+       if (ios->bus_width == MMC_BUS_WIDTH_4)
+               host->cmdat |= CMDAT_SD_4DAT;
+       else
+               host->cmdat &= ~CMDAT_SD_4DAT;
+
        pr_debug("PXAMCI: clkrt = %x cmdat = %x\n",
                 host->clkrt, host->cmdat);
 }
@@ -460,6 +465,9 @@ static int pxamci_probe(struct platform_device *pdev)
        mmc->ocr_avail = host->pdata ?
                         host->pdata->ocr_mask :
                         MMC_VDD_32_33|MMC_VDD_33_34;
+       mmc->caps = 0;
+       if (!cpu_is_pxa21x() && !cpu_is_pxa25x())
+               mmc->caps |= MMC_CAP_4_BIT_DATA;
 
        host->sg_cpu = dma_alloc_coherent(&pdev->dev, PAGE_SIZE, &host->sg_dma, 
GFP_KERNEL);
        if (!host->sg_cpu) {
diff --git a/drivers/mmc/host/pxamci.h b/drivers/mmc/host/pxamci.h
index df17c28..5655be8 100644
--- a/drivers/mmc/host/pxamci.h
+++ b/drivers/mmc/host/pxamci.h
@@ -25,6 +25,7 @@
 #define SPI_EN                 (1 << 0)
 
 #define MMC_CMDAT      0x0010
+#define CMDAT_SD_4DAT          (1 << 8)
 #define CMDAT_DMAEN            (1 << 7)
 #define CMDAT_INIT             (1 << 6)
 #define CMDAT_BUSY             (1 << 5)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to