From mboxrd@z Thu Jan 1 00:00:00 1970 From: philip@philip-laptop. (philip (none)) Date: Sat, 11 Dec 2010 16:58:59 -0800 Subject: [PATCH] sdhci: Add pre and post reset processing for chip specific= reset Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Marvell pxa controllers have private registers that need to be touched before and after a reset is done. Implement hooks to allow this to happen. Signed-off-by: Philip Rakity > --- drivers/mmc/host/sdhci.c | 6 ++++++ drivers/mmc/host/sdhci.h | 2 ++ 2 files changed, 8 insertions(+), 0 deletions(-) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index d5febe5..f439881 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -157,6 +157,9 @@ static void sdhci_reset(struct sdhci_host *host, u8 mas= k) if (host->quirks & SDHCI_QUIRK_RESTORE_IRQS_AFTER_RESET) ier =3D sdhci_readl(host, SDHCI_INT_ENABLE); + if (host->ops->platform_reset_enter) + host->ops->platform_reset_enter(host, mask); + sdhci_writeb(host, mask, SDHCI_SOFTWARE_RESET); if (mask & SDHCI_RESET_ALL) @@ -177,6 +180,9 @@ static void sdhci_reset(struct sdhci_host *host, u8 mas= k) mdelay(1); } + if (host->ops->platform_reset_exit) + host->ops->platform_reset_exit(host, mask); + if (host->quirks & SDHCI_QUIRK_RESTORE_IRQS_AFTER_RESET) sdhci_clear_set_irqs(host, SDHCI_INT_ALL_MASK, ier); } diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index 6e0969e..9dd7bc1 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -222,6 +222,8 @@ struct sdhci_ops { void (*platform_send_init_74_clocks)(struct sdhci_host *host, u8 power_mode); unsigned int (*get_ro)(struct sdhci_host *host); + void (*platform_reset_enter)(struct sdhci_host *host, u8 mask); + void (*platform_reset_exit)(struct sdhci_host *host, u8 mask); }; #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS -- 1.6.0.4 --_000_C514DA21446D4153B5B9E4AE4D0A06CAmarvellcom_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Resend addi= ng correct name and e-mail for 
Signed-off-by:

Be= gin forwarded message:

From: Philip Rakity <prakity at marvell.com>
Date: December 21, 2010 11:08:35 PM PST
To: "linux-mm= c at vger.kernel.org" <lin= ux-mmc at vger.kernel.org>, "linux-arm-kernel at lists.infradead.org" <linux-arm-kernel at lists.infradead.o= rg>
Cc: Mark Brown <markb at marvell.com>
Subject: [PATCH 7/23] Alternative mmc structure to sup= port pxa168, pxa910, mmp2 family SD

From 4998= 88df1a52491c201077c8a0f8310b70583290 Mon Sep 17 00:00:00 2001
From: phil= ip <philip at philip-laptop.(none)>
Date: Sat, 11 Dec 2010 16:58:59 -= 0800
Subject: [PATCH] sdhci: Add pre and post reset processing for chip = specific reset

Marvell pxa controllers have private registers that n= eed to be
touched before and after a reset is done.  Implement hook= s
to allow this to happen.

Signed-off-by: Philip Rakity <prakity at marvell.com>
---
dr= ivers/mmc/host/sdhci.c |    6 ++++++
drivers/mmc/host/sd= hci.h |    2 ++
2 files changed, 8 insertions(+), 0 dele= tions(-)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sd= hci.c
index d5febe5..f439881 100644
--- a/drivers/mmc/host/sdhci.c+++ b/drivers/mmc/host/sdhci.c
@@ -157,6 +157,9 @@ static void sdhci_re= set(struct sdhci_host *host, u8 mask)
if (host->quirks & SDHCI_QUIRK_RESTO= RE_IRQS_AFTER_RESET)
ier =3D sdhci_readl(host, SDHCI_INT_ENABLE);

+ if (host->ops->platfo= rm_reset_enter)
+ = host->ops->platform_reset_enter(host, mask);
+
sdhci_writeb(host, mask, = SDHCI_SOFTWARE_RESET);

if (mask & SDHCI_RESET_ALL)
@@ -177,6 +180,9 @@= static void sdhci_reset(struct sdhci_host *host, u8 mask)
mdelay(1);
}

+ if (host->ops->platf= orm_reset_exit)
+ = host->ops->platform_reset_exit(host, mask);
+
if (host->quirks & = SDHCI_QUIRK_RESTORE_IRQS_AFTER_RESET)
sdhci_clear_set_irqs(host, SDHCI_INT_ALL_MASK, ier);<= br> }
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.hindex 6e0969e..9dd7bc1 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/= drivers/mmc/host/sdhci.h
@@ -222,6 +222,8 @@ struct sdhci_ops {
void (*platfor= m_send_init_74_clocks)(struct sdhci_host *host,
    u8 power_mode);
unsigned int    (*get_r= o)(struct sdhci_host *host);
+ void (*platform_reset_enter)(struct sdhci_host *host, u8 mask);=
+ void<= span class=3D"Apple-tab-span" style=3D"white-space:pre">
(*platform_= reset_exit)(struct sdhci_host *host, u8 mask);
};

#ifdef CONFIG= _MMC_SDHCI_IO_ACCESSORS
--
1.6.0.4

<= /div>= --_000_C514DA21446D4153B5B9E4AE4D0A06CAmarvellcom_-- --_005_C514DA21446D4153B5B9E4AE4D0A06CAmarvellcom_ Content-Type: application/octet-stream; name="0007-sdhci-Add-pre-and-post-reset-processing-for-chip-sp.patch" Content-Description: 0007-sdhci-Add-pre-and-post-reset-processing-for-chip-sp.patch Content-Disposition: attachment; filename="0007-sdhci-Add-pre-and-post-reset-processing-for-chip-sp.patch"; size=1910; creation-date="Wed, 22 Dec 2010 15:06:52 GMT"; modification-date="Wed, 22 Dec 2010 15:06:52 GMT" Content-Transfer-Encoding: base64 RnJvbSA0OTk4ODhkZjFhNTI0OTFjMjAxMDc3YzhhMGY4MzEwYjcwNTgzMjkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwaGlsaXAgPHBoaWxpcEBwaGlsaXAtbGFwdG9wLihub25lKT4K RGF0ZTogU2F0LCAxMSBEZWMgMjAxMCAxNjo1ODo1OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIHNk aGNpOiBBZGQgcHJlIGFuZCBwb3N0IHJlc2V0IHByb2Nlc3NpbmcgZm9yIGNoaXAgc3BlY2lmaWMg cmVzZXQKCk1hcnZlbGwgcHhhIGNvbnRyb2xsZXJzIGhhdmUgcHJpdmF0ZSByZWdpc3RlcnMgdGhh dCBuZWVkIHRvIGJlCnRvdWNoZWQgYmVmb3JlIGFuZCBhZnRlciBhIHJlc2V0IGlzIGRvbmUuICBJ bXBsZW1lbnQgaG9va3MKdG8gYWxsb3cgdGhpcyB0byBoYXBwZW4uCgpTaWduZWQtb2ZmLWJ5OiBQ aGlsaXAgUmFraXR5IDxwcmFraXR5QG1hcnZlbGwuY29tPgotLS0KIGRyaXZlcnMvbW1jL2hvc3Qv c2RoY2kuYyB8ICAgIDYgKysrKysrCiBkcml2ZXJzL21tYy9ob3N0L3NkaGNpLmggfCAgICAyICsr CiAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmMgYi9kcml2ZXJzL21tYy9ob3N0L3NkaGNp LmMKaW5kZXggZDVmZWJlNS4uZjQzOTg4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9z ZGhjaS5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYwpAQCAtMTU3LDYgKzE1Nyw5IEBA IHN0YXRpYyB2b2lkIHNkaGNpX3Jlc2V0KHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCB1OCBtYXNr KQogCWlmIChob3N0LT5xdWlya3MgJiBTREhDSV9RVUlSS19SRVNUT1JFX0lSUVNfQUZURVJfUkVT RVQpCiAJCWllciA9IHNkaGNpX3JlYWRsKGhvc3QsIFNESENJX0lOVF9FTkFCTEUpOwogCisJaWYg KGhvc3QtPm9wcy0+cGxhdGZvcm1fcmVzZXRfZW50ZXIpCisJCWhvc3QtPm9wcy0+cGxhdGZvcm1f cmVzZXRfZW50ZXIoaG9zdCwgbWFzayk7CisKIAlzZGhjaV93cml0ZWIoaG9zdCwgbWFzaywgU0RI Q0lfU09GVFdBUkVfUkVTRVQpOwogCiAJaWYgKG1hc2sgJiBTREhDSV9SRVNFVF9BTEwpCkBAIC0x NzcsNiArMTgwLDkgQEAgc3RhdGljIHZvaWQgc2RoY2lfcmVzZXQoc3RydWN0IHNkaGNpX2hvc3Qg Kmhvc3QsIHU4IG1hc2spCiAJCW1kZWxheSgxKTsKIAl9CiAKKwlpZiAoaG9zdC0+b3BzLT5wbGF0 Zm9ybV9yZXNldF9leGl0KQorCQlob3N0LT5vcHMtPnBsYXRmb3JtX3Jlc2V0X2V4aXQoaG9zdCwg bWFzayk7CisKIAlpZiAoaG9zdC0+cXVpcmtzICYgU0RIQ0lfUVVJUktfUkVTVE9SRV9JUlFTX0FG VEVSX1JFU0VUKQogCQlzZGhjaV9jbGVhcl9zZXRfaXJxcyhob3N0LCBTREhDSV9JTlRfQUxMX01B U0ssIGllcik7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmggYi9kcml2 ZXJzL21tYy9ob3N0L3NkaGNpLmgKaW5kZXggNmUwOTY5ZS4uOWRkN2JjMSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5oCisrKyBiL2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuaApA QCAtMjIyLDYgKzIyMiw4IEBAIHN0cnVjdCBzZGhjaV9vcHMgewogCXZvaWQgKCpwbGF0Zm9ybV9z ZW5kX2luaXRfNzRfY2xvY2tzKShzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCwKIAkJCQkJICAgICB1 OCBwb3dlcl9tb2RlKTsKIAl1bnNpZ25lZCBpbnQgICAgKCpnZXRfcm8pKHN0cnVjdCBzZGhjaV9o b3N0ICpob3N0KTsKKwl2b2lkCSgqcGxhdGZvcm1fcmVzZXRfZW50ZXIpKHN0cnVjdCBzZGhjaV9o b3N0ICpob3N0LCB1OCBtYXNrKTsKKwl2b2lkCSgqcGxhdGZvcm1fcmVzZXRfZXhpdCkoc3RydWN0 IHNkaGNpX2hvc3QgKmhvc3QsIHU4IG1hc2spOwogfTsKIAogI2lmZGVmIENPTkZJR19NTUNfU0RI Q0lfSU9fQUNDRVNTT1JTCi0tIAoxLjYuMC40Cgo= --_005_C514DA21446D4153B5B9E4AE4D0A06CAmarvellcom_ Content-Type: text/html; name="ATT00001..htm" Content-Description: ATT00001..htm Content-Disposition: attachment; filename="ATT00001..htm"; size=147; creation-date="Wed, 22 Dec 2010 15:06:52 GMT"; modification-date="Wed, 22 Dec 2010 15:06:52 GMT" Content-Transfer-Encoding: base64 PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5IHN0eWxlPSJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IC13 ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTsgLXdlYmtpdC1saW5lLWJyZWFrOiBhZnRlci13aGl0ZS1z cGFjZTsgIj48ZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+ --_005_C514DA21446D4153B5B9E4AE4D0A06CAmarvellcom_--