From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcel Ziswiler Subject: Re: [PATCH 3/3] mmc: core: support hs speed mode if hs200 mode fails Date: Fri, 13 May 2016 09:06:38 +0000 Message-ID: <1463130397.3151.13.camel@toradex.com> References: <1461171092-30631-1-git-send-email-aisheng.dong@nxp.com> <1461171092-30631-3-git-send-email-aisheng.dong@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1461171092-30631-3-git-send-email-aisheng.dong@nxp.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: "linux-mmc@vger.kernel.org" , "aisheng.dong@nxp.com" Cc: "ulf.hansson@linaro.org" , "dev@lynxeye.de" , "dongas86@gmail.com" , "chris@printf.net" , "haibo.chen@nxp.com" , "jonathanh@nvidia.com" , "linux-tegra@vger.kernel.org" , "adrian.hunter@intel.com" , "shawnguo@kernel.org" , "linux-arm-kernel@lists.infradead.org" List-Id: linux-mmc@vger.kernel.org T24gVGh1LCAyMDE2LTA0LTIxIGF0IDAwOjUxICswODAwLCBEb25nIEFpc2hlbmcgd3JvdGU6DQo+ IEN1cnJlbnRseSBpZiBtbWNfc2VsZWN0X2hzMjAwIG1vZGUgc3dpdGNoIGZhaWxzLCBNTUMgY29y ZQ0KPiBjYW4gb25seSB1c2UgbGVnYWN5IG1vZGUgdG8gcnVuIHRoZSBjYXJkLg0KPiBMZXQncyBy ZXRyeSBIUyBzcGVlZCBtb2RlIGlmIEhTMjAwIGZhaWxzLg0KPiANCj4gQmVmb3JlIHRoZSBmaXg6 DQo+IG1tYzA6IG1tY19zZWxlY3RfaHMyMDAgZmFpbGVkLCBlcnJvciAtNzQNCj4gOiBzd2l0Y2gg dG8gbW1jMCBmYWlsZWQNCj4gbW1jMDogbmV3IE1NQyBjYXJkIGF0IGFkZHJlc3MgMDAwMQ0KPiBt bWNibGswOiBtbWMwOjAwMDEgUTJKNTVMIDcuMTIgR2lCDQo+IG1tY2JsazBib290MDogbW1jMDow MDAxIFEySjU1TCBwYXJ0aXRpb24gMSAyLjAwIE1pQg0KPiBtbWNibGswYm9vdDE6IG1tYzA6MDAw MSBRMko1NUwgcGFydGl0aW9uIDIgMi4wMCBNaUINCj4gbW1jYmxrMHJwbWI6IG1tYzA6MDAwMSBR Mko1NUwgcGFydGl0aW9uIDMgNC4wMCBNaUINCj4gwqBtbWNibGswOiBwMSBwMg0KPiANCj4gQWZ0 ZXIgdGhlIGZpeDoNCj4gbW1jMDogbW1jX3NlbGVjdF9oczIwMCBmYWlsZWQsIGVycm9yIC03NA0K PiBtbWMwOiBuZXcgRERSIE1NQyBjYXJkIGF0IGFkZHJlc3MgMDAwMQ0KPiBtbWNibGswOiBtbWMw OjAwMDEgUTJKNTVMIDcuMTIgR2lCDQo+IG1tY2JsazBib290MDogbW1jMDowMDAxIFEySjU1TCBw YXJ0aXRpb24gMSAyLjAwIE1pQg0KPiBtbWNibGswYm9vdDE6IG1tYzA6MDAwMSBRMko1NUwgcGFy dGl0aW9uIDIgMi4wMCBNaUINCj4gbW1jYmxrMHJwbWI6IG1tYzA6MDAwMSBRMko1NUwgcGFydGl0 aW9uIDMgNC4wMCBNaUINCj4gwqBtbWNibGswOiBwMSBwMg0KPiANCj4gU2lnbmVkLW9mZi1ieTog RG9uZyBBaXNoZW5nIDxhaXNoZW5nLmRvbmdAbnhwLmNvbT4NCj4gLS0tDQo+IMKgZHJpdmVycy9t bWMvY29yZS9tbWMuYyB8IDMgKystDQo+IMKgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvbW1j LmMgYi9kcml2ZXJzL21tYy9jb3JlL21tYy5jDQo+IGluZGV4IDU1YzgyMDEuLmI1NzNkYzcgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvbW1jLmMNCj4gKysrIGIvZHJpdmVycy9tbWMv Y29yZS9tbWMuYw0KPiBAQCAtMTMxNSw3ICsxMzE1LDggQEAgc3RhdGljIGludCBtbWNfc2VsZWN0 X3RpbWluZyhzdHJ1Y3QgbW1jX2NhcmQNCj4gKmNhcmQpDQo+IMKgDQo+IMKgCWlmIChjYXJkLT5t bWNfYXZhaWxfdHlwZSAmIEVYVF9DU0RfQ0FSRF9UWVBFX0hTMjAwKQ0KPiDCoAkJZXJyID0gbW1j X3NlbGVjdF9oczIwMChjYXJkKTsNCj4gLQllbHNlIGlmIChjYXJkLT5tbWNfYXZhaWxfdHlwZSAm IEVYVF9DU0RfQ0FSRF9UWVBFX0hTKQ0KPiArDQo+ICsJaWYgKGVyciAmJiAoY2FyZC0+bW1jX2F2 YWlsX3R5cGUgJiBFWFRfQ1NEX0NBUkRfVFlQRV9IUykpDQo+IMKgCQllcnIgPSBtbWNfc2VsZWN0 X2hzKGNhcmQpOw0KPiDCoA0KPiDCoAlpZiAoZXJyICYmIGVyciAhPSAtRUJBRE1TRykNCg0KDQpU aGlzIHNlZW1zIHRvIGJyZWFrIG9uIFRLMSB3aGVyZSBlTU1DIHNvIGZhciB3YXMgZGV0ZWN0ZWQg YXMgYW4gOC1iaXQNCmhpZ2ggc3BlZWQgTU1DIGNhcmQuIFdpdGggdGhpcyBwYXRjaCBpdCByZXZl cnRzIHRvIGRldGVjdGluZyBhIDEtYml0IG9ubHkNCk1NQyBjYXJkISBUaGlzIGhhcyBiZWVuIG9i c2VydmVkIGJvdGggb24gYSBOVklESUEncyBKZXRzb24gVEsxIGFzIHdlbGwgYXMNCm91ciBuZXcg VG9yYWRleCBBcGFsaXMgVEsxwqAoQ0MgVGVncmEgbWFpbGluZyBsaXN0LMKgSm9uIEh1bnRlciBh bmTCoEx1Y2FzDQpTdGFjaCBhcyB3ZWxsKS4gU28gZmFyIFQzMCBpcyBub3QgYWZmZWN0ZWQgYXMg dGhlcmUgd2UgYXJlIHN0aWxsIGRvaW5nDQpmdWxsIEhTMjAwIHdpdGggd2hhdGV2ZXIgaXNzdWVz IHRoYXQgaGFzLg0KDQpCZWZvcmU6DQpbwqDCoMKgwqAzLjcyNjg5NF0gc2RoY2k6IFNlY3VyZSBE aWdpdGFsIEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UgZHJpdmVyDQpbwqDCoMKgwqAzLjczMzA4 MV0gc2RoY2k6IENvcHlyaWdodChjKSBQaWVycmUgT3NzbWFuDQpbwqDCoMKgwqAzLjczNzQ2Ml0g c2RoY2ktcGx0Zm06IFNESENJIHBsYXRmb3JtIGFuZCBPRiBkcml2ZXIgaGVscGVyDQpbwqDCoMKg wqAzLjc1MzQxMV0gbW1jMDogVW5rbm93biBjb250cm9sbGVyIHZlcnNpb24gKDMpLiBZb3UgbWF5 IGV4cGVyaWVuY2UNCiBwcm9ibGVtcy4NClvCoMKgwqDCoDMuNzY4MzQ1XSBtbWMwOiBJbnZhbGlk IG1heGltdW0gYmxvY2sgc2l6ZSwgYXNzdW1pbmcgNTEyIGJ5dGVzDQpbwqDCoMKgwqAzLjgxNDg5 Nl0gbW1jMDogU0RIQ0kgY29udHJvbGxlciBvbiA3MDBiMDYwMC5zZGhjaSBbNzAwYjA2MDAuc2Ro Y2ldDQogdXNpbmcgQURNQSA2NC1iaXQNClvCoMKgwqDCoDMuODkyMDg4XSBtbWMwOiBuZXcgaGln aCBzcGVlZCBNTUMgY2FyZCBhdCBhZGRyZXNzIDAwMDENClvCoMKgwqDCoDMuODk5MTk0XSBtbWNi bGswOiBtbWMwOjAwMDEgU0VNMTZHIDE0LjcgR2lCDQpbwqDCoMKgwqAzLjkwNDIxN10gbW1jYmxr MGJvb3QwOiBtbWMwOjAwMDEgU0VNMTZHIHBhcnRpdGlvbiAxIDQuMDAgTWlCDQpbwqDCoMKgwqAz LjkxMDY0NV0gbW1jYmxrMGJvb3QxOiBtbWMwOjAwMDEgU0VNMTZHIHBhcnRpdGlvbiAyIDQuMDAg TWlCDQpbwqDCoMKgwqAzLjkxNzExOV0gbW1jYmxrMHJwbWI6IG1tYzA6MDAwMSBTRU0xNkcgcGFy dGl0aW9uIDMgNC4wMCBNaUINClvCoMKgwqDCoDMuOTI2MDA2XcKgwqBtbWNibGswOiBwMSBwMiBw MyBwNCBwNSBwNiBwNyBwOCBwOQ0Kcm9vdEBqZXRzb25fdGsxOn4jIGNhdCAvc3lzL2tlcm5lbC9k ZWJ1Zy9tbWMwL2lvc8KgDQpjbG9jazrCoMKgwqDCoMKgwqDCoMKgwqDCoDUyMDAwMDAwIEh6DQph Y3R1YWwgY2xvY2s6wqDCoMKgNTEwMDAwMDAgSHoNCnZkZDrCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAyMSAoMy4zIH4gMy40IFYpDQpidXMgbW9kZTrCoMKgwqDCoMKgwqDCoDIgKHB1c2gtcHVsbCkN CmNoaXAgc2VsZWN0OsKgwqDCoMKgMCAoZG9uJ3QgY2FyZSkNCnBvd2VyIG1vZGU6wqDCoMKgwqDC oDIgKG9uKQ0KYnVzIHdpZHRoOsKgwqDCoMKgwqDCoDMgKDggYml0cykNCnRpbWluZyBzcGVjOsKg wqDCoMKgMSAobW1jIGhpZ2gtc3BlZWQpDQpzaWduYWwgdm9sdGFnZTogMCAoMy4zMCBWKQ0KZHJp dmVyIHR5cGU6wqDCoMKgwqAwIChkcml2ZXIgdHlwZSBCKQ0KDQpBZnRlcjoNClvCoMKgwqDCoDMu ODk5OTE4XSBtbWMwOiBuZXcgTU1DIGNhcmQgYXQgYWRkcmVzcyAwMDAxDQpyb290QGpldHNvbl90 azE6fiMgY2F0IC9zeXMva2VybmVsL2RlYnVnL21tYzAvaW9zwqANCmNsb2NrOsKgwqDCoMKgwqDC oMKgwqDCoMKgMjUwMDAwMDAgSHoNCmFjdHVhbCBjbG9jazrCoMKgwqAyNDcyNzI3MyBIeg0KdmRk OsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDIxICgzLjMgfiAzLjQgVikNCmJ1cyBtb2RlOsKgwqDC oMKgwqDCoMKgMiAocHVzaC1wdWxsKQ0KY2hpcCBzZWxlY3Q6wqDCoMKgwqAwIChkb24ndCBjYXJl KQ0KcG93ZXIgbW9kZTrCoMKgwqDCoMKgMiAob24pDQpidXMgd2lkdGg6wqDCoMKgwqDCoMKgMCAo MSBiaXRzKQ0KdGltaW5nIHNwZWM6wqDCoMKgwqAwIChsZWdhY3kpDQpzaWduYWwgdm9sdGFnZTog MCAoMy4zMCBWKQ0KZHJpdmVyIHR5cGU6wqDCoMKgwqAwIChkcml2ZXIgdHlwZSBCKQ0KDQpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: marcel.ziswiler@toradex.com (Marcel Ziswiler) Date: Fri, 13 May 2016 09:06:38 +0000 Subject: [PATCH 3/3] mmc: core: support hs speed mode if hs200 mode fails In-Reply-To: <1461171092-30631-3-git-send-email-aisheng.dong@nxp.com> References: <1461171092-30631-1-git-send-email-aisheng.dong@nxp.com> <1461171092-30631-3-git-send-email-aisheng.dong@nxp.com> Message-ID: <1463130397.3151.13.camel@toradex.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, 2016-04-21 at 00:51 +0800, Dong Aisheng wrote: > Currently if mmc_select_hs200 mode switch fails, MMC core > can only use legacy mode to run the card. > Let's retry HS speed mode if HS200 fails. > > Before the fix: > mmc0: mmc_select_hs200 failed, error -74 > : switch to mmc0 failed > mmc0: new MMC card at address 0001 > mmcblk0: mmc0:0001 Q2J55L 7.12 GiB > mmcblk0boot0: mmc0:0001 Q2J55L partition 1 2.00 MiB > mmcblk0boot1: mmc0:0001 Q2J55L partition 2 2.00 MiB > mmcblk0rpmb: mmc0:0001 Q2J55L partition 3 4.00 MiB > ?mmcblk0: p1 p2 > > After the fix: > mmc0: mmc_select_hs200 failed, error -74 > mmc0: new DDR MMC card at address 0001 > mmcblk0: mmc0:0001 Q2J55L 7.12 GiB > mmcblk0boot0: mmc0:0001 Q2J55L partition 1 2.00 MiB > mmcblk0boot1: mmc0:0001 Q2J55L partition 2 2.00 MiB > mmcblk0rpmb: mmc0:0001 Q2J55L partition 3 4.00 MiB > ?mmcblk0: p1 p2 > > Signed-off-by: Dong Aisheng > --- > ?drivers/mmc/core/mmc.c | 3 ++- > ?1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c > index 55c8201..b573dc7 100644 > --- a/drivers/mmc/core/mmc.c > +++ b/drivers/mmc/core/mmc.c > @@ -1315,7 +1315,8 @@ static int mmc_select_timing(struct mmc_card > *card) > ? > ? if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200) > ? err = mmc_select_hs200(card); > - else if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS) > + > + if (err && (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS)) > ? err = mmc_select_hs(card); > ? > ? if (err && err != -EBADMSG) This seems to break on TK1 where eMMC so far was detected as an 8-bit high speed MMC card. With this patch it reverts to detecting a 1-bit only MMC card! This has been observed both on a NVIDIA's Jetson TK1 as well as our new Toradex Apalis TK1?(CC Tegra mailing list,?Jon Hunter and?Lucas Stach as well). So far T30 is not affected as there we are still doing full HS200 with whatever issues that has. Before: [????3.726894] sdhci: Secure Digital Host Controller Interface driver [????3.733081] sdhci: Copyright(c) Pierre Ossman [????3.737462] sdhci-pltfm: SDHCI platform and OF driver helper [????3.753411] mmc0: Unknown controller version (3). You may experience problems. [????3.768345] mmc0: Invalid maximum block size, assuming 512 bytes [????3.814896] mmc0: SDHCI controller on 700b0600.sdhci [700b0600.sdhci] using ADMA 64-bit [????3.892088] mmc0: new high speed MMC card at address 0001 [????3.899194] mmcblk0: mmc0:0001 SEM16G 14.7 GiB [????3.904217] mmcblk0boot0: mmc0:0001 SEM16G partition 1 4.00 MiB [????3.910645] mmcblk0boot1: mmc0:0001 SEM16G partition 2 4.00 MiB [????3.917119] mmcblk0rpmb: mmc0:0001 SEM16G partition 3 4.00 MiB [????3.926006]??mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 root at jetson_tk1:~# cat /sys/kernel/debug/mmc0/ios? clock:??????????52000000 Hz actual clock:???51000000 Hz vdd:????????????21 (3.3 ~ 3.4 V) bus mode:???????2 (push-pull) chip select:????0 (don't care) power mode:?????2 (on) bus width:??????3 (8 bits) timing spec:????1 (mmc high-speed) signal voltage: 0 (3.30 V) driver type:????0 (driver type B) After: [????3.899918] mmc0: new MMC card at address 0001 root at jetson_tk1:~# cat /sys/kernel/debug/mmc0/ios? clock:??????????25000000 Hz actual clock:???24727273 Hz vdd:????????????21 (3.3 ~ 3.4 V) bus mode:???????2 (push-pull) chip select:????0 (don't care) power mode:?????2 (on) bus width:??????0 (1 bits) timing spec:????0 (legacy) signal voltage: 0 (3.30 V) driver type:????0 (driver type B)