From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?q?Eric=20B=C3=A9nard?= Subject: [PATCH] mxcmmc: add card detect through DAT3 possibility Date: Thu, 27 May 2010 19:54:44 +0200 Message-ID: <1274982884-13205-1-git-send-email-eric@eukrea.com> References: <1274287568-30253-9-git-send-email-eric@eukrea.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1274287568-30253-9-git-send-email-eric@eukrea.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org Cc: linux-mmc@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: linux-mmc@vger.kernel.org U2lnbmVkLW9mZi1ieTogRXJpYyBCw6luYXJkIDxlcmljQGV1a3JlYS5jb20+ClRvOiBzLmhhdWVy QHBlbmd1dHJvbml4LmRlCkNjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK Q2M6IGxpbnV4LW1tY0B2Z2VyLmtlcm5lbC5vcmcKLS0tCiBhcmNoL2FybS9wbGF0LW14Yy9pbmNs dWRlL21hY2gvbW1jLmggfCAgICAzICsrKwogZHJpdmVycy9tbWMvaG9zdC9teGNtbWMuYyAgICAg ICAgICAgIHwgICAxNiArKysrKysrKysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1teGMv aW5jbHVkZS9tYWNoL21tYy5oIGIvYXJjaC9hcm0vcGxhdC1teGMvaW5jbHVkZS9tYWNoL21tYy5o CmluZGV4IGRlMjEyOGQuLjI5MTE1ZjQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtbXhjL2lu Y2x1ZGUvbWFjaC9tbWMuaAorKysgYi9hcmNoL2FybS9wbGF0LW14Yy9pbmNsdWRlL21hY2gvbW1j LmgKQEAgLTMxLDYgKzMxLDkgQEAgc3RydWN0IGlteG1tY19wbGF0Zm9ybV9kYXRhIHsKIAogCS8q IGFkanVzdCBzbG90IHZvbHRhZ2UgKi8KIAl2b2lkICgqc2V0cG93ZXIpKHN0cnVjdCBkZXZpY2Ug KiwgdW5zaWduZWQgaW50IHZkZCk7CisKKwkvKiBlbmFibGUgY2FyZCBkZXRlY3QgdXNpbmcgREFU MyAqLworCWludCBkYXQzX2NhcmRfZGV0ZWN0OwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9k cml2ZXJzL21tYy9ob3N0L214Y21tYy5jIGIvZHJpdmVycy9tbWMvaG9zdC9teGNtbWMuYwppbmRl eCBlYzE4ZTNiLi43NGM4N2UwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L214Y21tYy5j CisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvbXhjbW1jLmMKQEAgLTExOSw2ICsxMTksNyBAQCBzdHJ1 Y3QgbXhjbWNpX2hvc3QgewogCWludAkJCWRldGVjdF9pcnE7CiAJaW50CQkJZG1hOwogCWludAkJ CWRvX2RtYTsKKwlpbnQJCQlkZWZhdWx0X2lycV9tYXNrOwogCWludAkJCXVzZV9zZGlvOwogCXVu c2lnbmVkIGludAkJcG93ZXJfbW9kZTsKIAlzdHJ1Y3QgaW14bW1jX3BsYXRmb3JtX2RhdGEgKnBk YXRhOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHN0YXRpYyBpbnQgbXhjbWNpX3NldHVwX2RhdGEoc3Ry dWN0IG14Y21jaV9ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX2RhdGEgKmRhdGEpCiBzdGF0aWMgaW50 IG14Y21jaV9zdGFydF9jbWQoc3RydWN0IG14Y21jaV9ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX2Nv bW1hbmQgKmNtZCwKIAkJdW5zaWduZWQgaW50IGNtZGF0KQogewotCXUzMiBpbnRfY250cjsKKwl1 MzIgaW50X2NudHIgPSBob3N0LT5kZWZhdWx0X2lycV9tYXNrOwogCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CiAKIAlXQVJOX09OKGhvc3QtPmNtZCAhPSBOVUxMKTsKQEAgLTI3NSw3ICsyNzYsNyBAQCBz dGF0aWMgaW50IG14Y21jaV9zdGFydF9jbWQoc3RydWN0IG14Y21jaV9ob3N0ICpob3N0LCBzdHJ1 Y3QgbW1jX2NvbW1hbmQgKmNtZCwKIHN0YXRpYyB2b2lkIG14Y21jaV9maW5pc2hfcmVxdWVzdChz dHJ1Y3QgbXhjbWNpX2hvc3QgKmhvc3QsCiAJCXN0cnVjdCBtbWNfcmVxdWVzdCAqcmVxKQogewot CXUzMiBpbnRfY250ciA9IDA7CisJdTMyIGludF9jbnRyID0gaG9zdC0+ZGVmYXVsdF9pcnFfbWFz azsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmhvc3QtPmxv Y2ssIGZsYWdzKTsKQEAgLTU4NSw2ICs1ODYsOSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgbXhjbWNp X2lycShpbnQgaXJxLCB2b2lkICpkZXZpZCkKIAkJICAoc3RhdCAmIChTVEFUVVNfREFUQV9UUkFO U19ET05FIHwgU1RBVFVTX1dSSVRFX09QX0RPTkUpKSkKIAkJbXhjbWNpX2RhdGFfZG9uZShob3N0 LCBzdGF0KTsKICNlbmRpZgorCWlmIChob3N0LT5kZWZhdWx0X2lycV9tYXNrICYmCisJCSAgKHN0 YXQgJiAoU1RBVFVTX0NBUkRfSU5TRVJUSU9OIHwgU1RBVFVTX0NBUkRfUkVNT1ZBTCkpKQorCQlt bWNfZGV0ZWN0X2NoYW5nZShob3N0LT5tbWMsIG1zZWNzX3RvX2ppZmZpZXMoMjAwKSk7CiAJcmV0 dXJuIElSUV9IQU5ETEVEOwogfQogCkBAIC04MDksNiArODEzLDEyIEBAIHN0YXRpYyBpbnQgbXhj bWNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJZWxzZQogCQltbWMtPm9j cl9hdmFpbCA9IE1NQ19WRERfMzJfMzMgfCBNTUNfVkREXzMzXzM0OwogCisJaWYgKGhvc3QtPnBk YXRhICYmIGhvc3QtPnBkYXRhLT5kYXQzX2NhcmRfZGV0ZWN0KQorCQlob3N0LT5kZWZhdWx0X2ly cV9tYXNrID0KKwkJCUlOVF9DQVJEX0lOU0VSVElPTl9FTiB8IElOVF9DQVJEX1JFTU9WQUxfRU47 CisJZWxzZQorCQlob3N0LT5kZWZhdWx0X2lycV9tYXNrID0gMDsKKwogCWhvc3QtPnJlcyA9IHI7 CiAJaG9zdC0+aXJxID0gaXJxOwogCkBAIC04MzUsNyArODQ1LDcgQEAgc3RhdGljIGludCBteGNt Y2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkvKiByZWNvbW1lbmRlZCBp biBkYXRhIHNoZWV0ICovCiAJd3JpdGV3KDB4MmRiNCwgaG9zdC0+YmFzZSArIE1NQ19SRUdfUkVB RF9UTyk7CiAKLQl3cml0ZWwoMCwgaG9zdC0+YmFzZSArIE1NQ19SRUdfSU5UX0NOVFIpOworCXdy aXRlbChob3N0LT5kZWZhdWx0X2lycV9tYXNrLCBob3N0LT5iYXNlICsgTU1DX1JFR19JTlRfQ05U Uik7CiAKICNpZmRlZiBIQVNfRE1BCiAJaG9zdC0+ZG1hID0gaW14X2RtYV9yZXF1ZXN0X2J5X3By aW8oRFJJVkVSX05BTUUsIERNQV9QUklPX0xPVyk7Ci0tIAoxLjYuMy4zCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: eric@eukrea.com (=?utf-8?q?Eric=20B=C3=A9nard?=) Date: Thu, 27 May 2010 19:54:44 +0200 Subject: [PATCH] mxcmmc: add card detect through DAT3 possibility In-Reply-To: <1274287568-30253-9-git-send-email-eric@eukrea.com> References: <1274287568-30253-9-git-send-email-eric@eukrea.com> Message-ID: <1274982884-13205-1-git-send-email-eric@eukrea.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Signed-off-by: Eric B?nard To: s.hauer at pengutronix.de Cc: linux-arm-kernel at lists.infradead.org Cc: linux-mmc at vger.kernel.org --- arch/arm/plat-mxc/include/mach/mmc.h | 3 +++ drivers/mmc/host/mxcmmc.c | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/arch/arm/plat-mxc/include/mach/mmc.h b/arch/arm/plat-mxc/include/mach/mmc.h index de2128d..29115f4 100644 --- a/arch/arm/plat-mxc/include/mach/mmc.h +++ b/arch/arm/plat-mxc/include/mach/mmc.h @@ -31,6 +31,9 @@ struct imxmmc_platform_data { /* adjust slot voltage */ void (*setpower)(struct device *, unsigned int vdd); + + /* enable card detect using DAT3 */ + int dat3_card_detect; }; #endif diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c index ec18e3b..74c87e0 100644 --- a/drivers/mmc/host/mxcmmc.c +++ b/drivers/mmc/host/mxcmmc.c @@ -119,6 +119,7 @@ struct mxcmci_host { int detect_irq; int dma; int do_dma; + int default_irq_mask; int use_sdio; unsigned int power_mode; struct imxmmc_platform_data *pdata; @@ -228,7 +229,7 @@ static int mxcmci_setup_data(struct mxcmci_host *host, struct mmc_data *data) static int mxcmci_start_cmd(struct mxcmci_host *host, struct mmc_command *cmd, unsigned int cmdat) { - u32 int_cntr; + u32 int_cntr = host->default_irq_mask; unsigned long flags; WARN_ON(host->cmd != NULL); @@ -275,7 +276,7 @@ static int mxcmci_start_cmd(struct mxcmci_host *host, struct mmc_command *cmd, static void mxcmci_finish_request(struct mxcmci_host *host, struct mmc_request *req) { - u32 int_cntr = 0; + u32 int_cntr = host->default_irq_mask; unsigned long flags; spin_lock_irqsave(&host->lock, flags); @@ -585,6 +586,9 @@ static irqreturn_t mxcmci_irq(int irq, void *devid) (stat & (STATUS_DATA_TRANS_DONE | STATUS_WRITE_OP_DONE))) mxcmci_data_done(host, stat); #endif + if (host->default_irq_mask && + (stat & (STATUS_CARD_INSERTION | STATUS_CARD_REMOVAL))) + mmc_detect_change(host->mmc, msecs_to_jiffies(200)); return IRQ_HANDLED; } @@ -809,6 +813,12 @@ static int mxcmci_probe(struct platform_device *pdev) else mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; + if (host->pdata && host->pdata->dat3_card_detect) + host->default_irq_mask = + INT_CARD_INSERTION_EN | INT_CARD_REMOVAL_EN; + else + host->default_irq_mask = 0; + host->res = r; host->irq = irq; @@ -835,7 +845,7 @@ static int mxcmci_probe(struct platform_device *pdev) /* recommended in data sheet */ writew(0x2db4, host->base + MMC_REG_READ_TO); - writel(0, host->base + MMC_REG_INT_CNTR); + writel(host->default_irq_mask, host->base + MMC_REG_INT_CNTR); #ifdef HAS_DMA host->dma = imx_dma_request_by_prio(DRIVER_NAME, DMA_PRIO_LOW); -- 1.6.3.3