diff mbox

mmc: sdhci-pci: disable preset register for Baytrail and Merrifield

Message ID 1408347129-733-1-git-send-email-yunpeng.gao@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Gao, Yunpeng Aug. 18, 2014, 7:32 a.m. UTC
Due to HW issue, SDHCI host controller on Intel
Baytrail/Merrifield platforms can not use preset
register. So, disable preset registers for them by quirks.

Signed-off-by: Yunpeng Gao <yunpeng.gao@intel.com>
Signed-off-by: Chuanxiao Dong <chuanxiao.dong@intel.com>
---
 drivers/mmc/host/sdhci-pci.c |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Ulf Hansson Sept. 2, 2014, 10:05 a.m. UTC | #1
On 18 August 2014 09:32, Yunpeng Gao <yunpeng.gao@intel.com> wrote:
> Due to HW issue, SDHCI host controller on Intel
> Baytrail/Merrifield platforms can not use preset
> register. So, disable preset registers for them by quirks.
>
> Signed-off-by: Yunpeng Gao <yunpeng.gao@intel.com>
> Signed-off-by: Chuanxiao Dong <chuanxiao.dong@intel.com>

Hi Yunpeng,

Could you please rebase this patch, it didn't apply to my next branch.

Kind regards
Uffe

> ---
>  drivers/mmc/host/sdhci-pci.c |   10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
> index 52c42fc..98187ae 100644
> --- a/drivers/mmc/host/sdhci-pci.c
> +++ b/drivers/mmc/host/sdhci-pci.c
> @@ -277,18 +277,21 @@ static int byt_sdio_probe_slot(struct sdhci_pci_slot *slot)
>  }
>
>  static const struct sdhci_pci_fixes sdhci_intel_byt_emmc = {
> +       .quirks2        = SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
>         .allow_runtime_pm = true,
>         .probe_slot     = byt_emmc_probe_slot,
>  };
>
>  static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = {
> -       .quirks2        = SDHCI_QUIRK2_HOST_OFF_CARD_ON,
> +       .quirks2        = SDHCI_QUIRK2_HOST_OFF_CARD_ON |
> +                       SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
>         .allow_runtime_pm = true,
>         .probe_slot     = byt_sdio_probe_slot,
>  };
>
>  static const struct sdhci_pci_fixes sdhci_intel_byt_sd = {
> -       .quirks2        = SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON,
> +       .quirks2        = SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON |
> +                       SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
>         .allow_runtime_pm = true,
>         .own_cd_for_runtime_pm = true,
>  };
> @@ -312,7 +315,8 @@ static int intel_mrfl_mmc_probe_slot(struct sdhci_pci_slot *slot)
>
>  static const struct sdhci_pci_fixes sdhci_intel_mrfl_mmc = {
>         .quirks         = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
> -       .quirks2        = SDHCI_QUIRK2_BROKEN_HS200,
> +       .quirks2        = SDHCI_QUIRK2_BROKEN_HS200 |
> +                       SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
>         .probe_slot     = intel_mrfl_mmc_probe_slot,
>  };
>
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Gao, Yunpeng Sept. 3, 2014, 3:04 a.m. UTC | #2
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVWxmIEhhbnNzb24gW21h
aWx0bzp1bGYuaGFuc3NvbkBsaW5hcm8ub3JnXQ0KPiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIg
MDIsIDIwMTQgNjowNiBQTQ0KPiBUbzogR2FvLCBZdW5wZW5nDQo+IENjOiBsaW51eC1tbWM7IERv
bmcsIENodWFueGlhbw0KPiBTdWJqZWN0OiBSZTogW1BBVENIXSBtbWM6IHNkaGNpLXBjaTogZGlz
YWJsZSBwcmVzZXQgcmVnaXN0ZXIgZm9yIEJheXRyYWlsIGFuZA0KPiBNZXJyaWZpZWxkDQo+IA0K
PiBPbiAxOCBBdWd1c3QgMjAxNCAwOTozMiwgWXVucGVuZyBHYW8gPHl1bnBlbmcuZ2FvQGludGVs
LmNvbT4gd3JvdGU6DQo+ID4gRHVlIHRvIEhXIGlzc3VlLCBTREhDSSBob3N0IGNvbnRyb2xsZXIg
b24gSW50ZWwgQmF5dHJhaWwvTWVycmlmaWVsZA0KPiA+IHBsYXRmb3JtcyBjYW4gbm90IHVzZSBw
cmVzZXQgcmVnaXN0ZXIuIFNvLCBkaXNhYmxlIHByZXNldCByZWdpc3RlcnMNCj4gPiBmb3IgdGhl
bSBieSBxdWlya3MuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBZdW5wZW5nIEdhbyA8eXVucGVu
Zy5nYW9AaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IENodWFueGlhbyBEb25nIDxjaHVh
bnhpYW8uZG9uZ0BpbnRlbC5jb20+DQo+IA0KPiBIaSBZdW5wZW5nLA0KPiANCj4gQ291bGQgeW91
IHBsZWFzZSByZWJhc2UgdGhpcyBwYXRjaCwgaXQgZGlkbid0IGFwcGx5IHRvIG15IG5leHQgYnJh
bmNoLg0KDQpPSy4gSSdsbCBnaXQgY2xvbmUgbXkgbW1jX25leHQgdHJlZSBhbmQgcmViYXNlIHRo
ZSBwYXRjaC4gQW5kIHdpbGwgc3VibWl0IGl0IGFnYWluIG9uY2UgZG9uZS4NClRoYW5rcyBmb3Ig
dGhlIHJldmlldy4NCg0KVGhhbmtzLg0KDQpSZWdhcmRzLA0KWXVucGVuZw0KDQo+IEtpbmQgcmVn
YXJkcw0KPiBVZmZlDQo+IA0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL21tYy9ob3N0L3NkaGNpLXBj
aS5jIHwgICAxMCArKysrKysrLS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMo
KyksIDMgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9z
dC9zZGhjaS1wY2kuYw0KPiA+IGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1wY2kuYyBpbmRleCA1
MmM0MmZjLi45ODE4N2FlIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2kt
cGNpLmMNCj4gPiArKysgYi9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXBjaS5jDQo+ID4gQEAgLTI3
NywxOCArMjc3LDIxIEBAIHN0YXRpYyBpbnQgYnl0X3NkaW9fcHJvYmVfc2xvdChzdHJ1Y3QNCj4g
PiBzZGhjaV9wY2lfc2xvdCAqc2xvdCkgIH0NCj4gPg0KPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0
IHNkaGNpX3BjaV9maXhlcyBzZGhjaV9pbnRlbF9ieXRfZW1tYyA9IHsNCj4gPiArICAgICAgIC5x
dWlya3MyICAgICAgICA9IFNESENJX1FVSVJLMl9QUkVTRVRfVkFMVUVfQlJPS0VOLA0KPiA+ICAg
ICAgICAgLmFsbG93X3J1bnRpbWVfcG0gPSB0cnVlLA0KPiA+ICAgICAgICAgLnByb2JlX3Nsb3Qg
ICAgID0gYnl0X2VtbWNfcHJvYmVfc2xvdCwNCj4gPiAgfTsNCj4gPg0KPiA+ICBzdGF0aWMgY29u
c3Qgc3RydWN0IHNkaGNpX3BjaV9maXhlcyBzZGhjaV9pbnRlbF9ieXRfc2RpbyA9IHsNCj4gPiAt
ICAgICAgIC5xdWlya3MyICAgICAgICA9IFNESENJX1FVSVJLMl9IT1NUX09GRl9DQVJEX09OLA0K
PiA+ICsgICAgICAgLnF1aXJrczIgICAgICAgID0gU0RIQ0lfUVVJUksyX0hPU1RfT0ZGX0NBUkRf
T04gfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIFNESENJX1FVSVJLMl9QUkVTRVRfVkFM
VUVfQlJPS0VOLA0KPiA+ICAgICAgICAgLmFsbG93X3J1bnRpbWVfcG0gPSB0cnVlLA0KPiA+ICAg
ICAgICAgLnByb2JlX3Nsb3QgICAgID0gYnl0X3NkaW9fcHJvYmVfc2xvdCwNCj4gPiAgfTsNCj4g
Pg0KPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHNkaGNpX3BjaV9maXhlcyBzZGhjaV9pbnRlbF9i
eXRfc2QgPSB7DQo+ID4gLSAgICAgICAucXVpcmtzMiAgICAgICAgPSBTREhDSV9RVUlSSzJfQ0FS
RF9PTl9ORUVEU19CVVNfT04sDQo+ID4gKyAgICAgICAucXVpcmtzMiAgICAgICAgPSBTREhDSV9R
VUlSSzJfQ0FSRF9PTl9ORUVEU19CVVNfT04gfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg
IFNESENJX1FVSVJLMl9QUkVTRVRfVkFMVUVfQlJPS0VOLA0KPiA+ICAgICAgICAgLmFsbG93X3J1
bnRpbWVfcG0gPSB0cnVlLA0KPiA+ICAgICAgICAgLm93bl9jZF9mb3JfcnVudGltZV9wbSA9IHRy
dWUsICB9OyBAQCAtMzEyLDcgKzMxNSw4IEBADQo+IHN0YXRpYw0KPiA+IGludCBpbnRlbF9tcmZs
X21tY19wcm9iZV9zbG90KHN0cnVjdCBzZGhjaV9wY2lfc2xvdCAqc2xvdCkNCj4gPg0KPiA+ICBz
dGF0aWMgY29uc3Qgc3RydWN0IHNkaGNpX3BjaV9maXhlcyBzZGhjaV9pbnRlbF9tcmZsX21tYyA9
IHsNCj4gPiAgICAgICAgIC5xdWlya3MgICAgICAgICA9IFNESENJX1FVSVJLX05PX0VOREFUVFJf
SU5fTk9QREVTQywNCj4gPiAtICAgICAgIC5xdWlya3MyICAgICAgICA9IFNESENJX1FVSVJLMl9C
Uk9LRU5fSFMyMDAsDQo+ID4gKyAgICAgICAucXVpcmtzMiAgICAgICAgPSBTREhDSV9RVUlSSzJf
QlJPS0VOX0hTMjAwIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBTREhDSV9RVUlSSzJf
UFJFU0VUX1ZBTFVFX0JST0tFTiwNCj4gPiAgICAgICAgIC5wcm9iZV9zbG90ICAgICA9IGludGVs
X21yZmxfbW1jX3Byb2JlX3Nsb3QsDQo+ID4gIH07DQo+ID4NCj4gPiAtLQ0KPiA+IDEuNy45LjUN
Cj4gPg0KPiA+IC0tDQo+ID4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhl
IGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LW1tYyINCj4gPiBpbiB0aGUgYm9keSBvZiBhIG1lc3Nh
Z2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZyBNb3JlIG1ham9yZG9tbw0KPiA+IGluZm8g
YXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0K
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
index 52c42fc..98187ae 100644
--- a/drivers/mmc/host/sdhci-pci.c
+++ b/drivers/mmc/host/sdhci-pci.c
@@ -277,18 +277,21 @@  static int byt_sdio_probe_slot(struct sdhci_pci_slot *slot)
 }
 
 static const struct sdhci_pci_fixes sdhci_intel_byt_emmc = {
+	.quirks2	= SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
 	.allow_runtime_pm = true,
 	.probe_slot	= byt_emmc_probe_slot,
 };
 
 static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = {
-	.quirks2	= SDHCI_QUIRK2_HOST_OFF_CARD_ON,
+	.quirks2	= SDHCI_QUIRK2_HOST_OFF_CARD_ON |
+			SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
 	.allow_runtime_pm = true,
 	.probe_slot	= byt_sdio_probe_slot,
 };
 
 static const struct sdhci_pci_fixes sdhci_intel_byt_sd = {
-	.quirks2	= SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON,
+	.quirks2	= SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON |
+			SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
 	.allow_runtime_pm = true,
 	.own_cd_for_runtime_pm = true,
 };
@@ -312,7 +315,8 @@  static int intel_mrfl_mmc_probe_slot(struct sdhci_pci_slot *slot)
 
 static const struct sdhci_pci_fixes sdhci_intel_mrfl_mmc = {
 	.quirks		= SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
-	.quirks2	= SDHCI_QUIRK2_BROKEN_HS200,
+	.quirks2	= SDHCI_QUIRK2_BROKEN_HS200 |
+			SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
 	.probe_slot	= intel_mrfl_mmc_probe_slot,
 };