Message ID | 1416228726-8514-1-git-send-email-avi.shchislowski@sandisk.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 17 November 2014 13:52, Avi Shchislowski <avi.shchislowski@sandisk.com> wrote: > Adding support for PSA (Production State Awareness) > feature for all eMMC devices with revision >=5.0 > In this patch the eMMC driver will check if device was completed > its Production State mode, and will switch it to Normal (field) mode. > Switching to normal mode signal the device to complete its work in production mode > and start working in regular performance mode. Please add some detail to what this patch does. Additionally why it's needed. Also, make sure to use proper prefix in the commit header. > > Signed-off-by: Alex Lemberg <alex.lemberg@sandisk.com> > > diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c > index 02ad792..2d59722 100644 > --- a/drivers/mmc/core/mmc.c > +++ b/drivers/mmc/core/mmc.c > @@ -605,6 +605,20 @@ static int mmc_read_ext_csd(struct mmc_card *card) > mmc_hostname(card->host)); > err = 0; > } > + /* eMMC v5.0 or later */ > + if (card->ext_csd.rev > 6) { > + card->ext_csd.psa = > + ext_csd[EXT_CSD_PSA]; > + if (ext_csd[EXT_CSD_PSA_TIMEOUT] > 0) { > + card->ext_csd.psa_timeout = > + 100 * > + (1 << ext_csd[EXT_CSD_PSA_TIMEOUT]); > + } else { > + card->ext_csd.psa_timeout = 0; This assignment isn't needed. It's 0 as default. > + pr_warn("%s: EXT_CSD PSA Timeout is zero\n", > + mmc_hostname(card->host)); Shouldn't we treat this as an error? > + } > + } > > return err; > } > @@ -1330,6 +1344,25 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, > if (card->csd.dsr_imp && host->dsr_req) > mmc_set_dsr(host); > > + /* > + * eMMC v5.0 or later > + * and Production State Awareness state is EXT_CSD_PSA_POST_SOLDERING_WRITES > + * The host should set the device to NORMAL mode > + */ > + if ((card->ext_csd.rev > 6) > + && (card->ext_csd.psa == EXT_CSD_PSA_POST_SOLDERING_WRITES)) { > + unsigned int timeout; > + /*Zero value in PSA Timeout – PSA is not defined*/ > + if (card->ext_csd.psa_timeout != 0) { > + timeout = DIV_ROUND_UP(card->ext_csd.psa_timeout, 1000); Can you give an example of a typical value for the timeout? > + card->ext_csd.psa = EXT_CSD_PSA_NORMAL; > + err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, > + EXT_CSD_PSA, card->ext_csd.psa, timeout); > + if (err && err != -EBADMSG) > + goto free_card; > + } So if there is no timeout specified what happens then? > + } > + > /* > * Select card, as all following commands rely on that. > */ > diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h > index 4d69c00..09ac3b0 100644 > --- a/include/linux/mmc/card.h > +++ b/include/linux/mmc/card.h > @@ -60,9 +60,11 @@ struct mmc_ext_csd { > u8 packed_event_en; > unsigned int part_time; /* Units: ms */ > unsigned int sa_timeout; /* Units: 100ns */ > + unsigned int psa_timeout; /* Units: 100us */ > unsigned int generic_cmd6_time; /* Units: 10ms */ > unsigned int power_off_longtime; /* Units: ms */ > u8 power_off_notification; /* state */ > + u8 psa; /* production state awareness */ > unsigned int hs_max_dtr; > unsigned int hs200_max_dtr; > #define MMC_HIGH_26_MAX_DTR 26000000 > diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h > index 49ad7a9..eb170ff 100644 > --- a/include/linux/mmc/mmc.h > +++ b/include/linux/mmc/mmc.h > @@ -285,6 +285,9 @@ struct _mmc_csd { > #define EXT_CSD_EXP_EVENTS_STATUS 54 /* RO, 2 bytes */ > #define EXT_CSD_EXP_EVENTS_CTRL 56 /* R/W, 2 bytes */ > #define EXT_CSD_DATA_SECTOR_SIZE 61 /* R */ > +#define EXT_CSD_QRDY_SUPPORT 96 /* RO */ > +#define EXT_CSD_CMDQ_QRDY_FUNCTION 97 /* R/W */ What's these? > +#define EXT_CSD_PSA 133 /* R/W/E */ > #define EXT_CSD_GP_SIZE_MULT 143 /* R/W */ > #define EXT_CSD_PARTITION_SETTING_COMPLETED 155 /* R/W */ > #define EXT_CSD_PARTITION_ATTRIBUTE 156 /* R/W */ > @@ -315,6 +318,7 @@ struct _mmc_csd { > #define EXT_CSD_PWR_CL_26_360 203 /* RO */ > #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ > #define EXT_CSD_S_A_TIMEOUT 217 /* RO */ > +#define EXT_CSD_PSA_TIMEOUT 218 /* RO */ > #define EXT_CSD_REL_WR_SEC_C 222 /* RO */ > #define EXT_CSD_HC_WP_GRP_SIZE 221 /* RO */ > #define EXT_CSD_ERASE_TIMEOUT_MULT 223 /* RO */ > @@ -433,6 +437,13 @@ struct _mmc_csd { > #define EXT_CSD_BKOPS_LEVEL_2 0x2 > > /* > + * PRODUCTION STATE AWARENESS fields > + */ > + > +#define EXT_CSD_PSA_NORMAL 0x00 > +#define EXT_CSD_PSA_POST_SOLDERING_WRITES 0x02 > + > +/* > * MMC_SWITCH access modes > */ > > -- > 1.7.9.5 > Kind regards Uffe -- 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
SGkgVWxmLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFVsZiBIYW5z c29uIFttYWlsdG86dWxmLmhhbnNzb25AbGluYXJvLm9yZ10NCj4gU2VudDogTW9uZGF5LCBOb3Zl bWJlciAxNywgMjAxNCAzOjM0IFBNDQo+IFRvOiBBdmkgU2hjaGlzbG93c2tpDQo+IENjOiBsaW51 eC1tbWM7IENocmlzIEJhbGw7IEFsZXggTGVtYmVyZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEv MV0gUHJvZHVjdGlvbiBTdGF0ZSBBd2FyZW5lc3Mgc3VwcG9ydCBpbiBob3N0IHNpZGUNCj4gDQo+ IE9uIDE3IE5vdmVtYmVyIDIwMTQgMTM6NTIsIEF2aSBTaGNoaXNsb3dza2kgPGF2aS5zaGNoaXNs b3dza2lAc2FuZGlzay5jb20+DQo+IHdyb3RlOg0KPiA+IEFkZGluZyBzdXBwb3J0IGZvciBQU0Eg KFByb2R1Y3Rpb24gU3RhdGUgQXdhcmVuZXNzKSBmZWF0dXJlIGZvciBhbGwNCj4gPiBlTU1DIGRl dmljZXMgd2l0aCByZXZpc2lvbiA+PTUuMCBJbiB0aGlzIHBhdGNoIHRoZSBlTU1DIGRyaXZlciB3 aWxsDQo+ID4gY2hlY2sgaWYgZGV2aWNlIHdhcyBjb21wbGV0ZWQgaXRzIFByb2R1Y3Rpb24gU3Rh dGUgbW9kZSwgYW5kIHdpbGwNCj4gPiBzd2l0Y2ggaXQgdG8gTm9ybWFsIChmaWVsZCkgbW9kZS4N Cj4gPiBTd2l0Y2hpbmcgdG8gbm9ybWFsIG1vZGUgc2lnbmFsIHRoZSBkZXZpY2UgdG8gY29tcGxl dGUgaXRzIHdvcmsgaW4NCj4gPiBwcm9kdWN0aW9uIG1vZGUgYW5kIHN0YXJ0IHdvcmtpbmcgaW4g cmVndWxhciBwZXJmb3JtYW5jZSBtb2RlLg0KPiANCj4gUGxlYXNlIGFkZCBzb21lIGRldGFpbCB0 byB3aGF0IHRoaXMgcGF0Y2ggZG9lcy4gQWRkaXRpb25hbGx5IHdoeSBpdCdzIG5lZWRlZC4NCg0K SW4gdGhpcyBwYXRjaCBkcml2ZXIgc2hvdWxkIHJlY29nbml6ZSBpZiBlTU1DIGRldmljZSAoUmV2 ID49NS4wKSB3YXMgbm90IHN3aXRjaGVkIA0KdG8gTm9ybWFsICgweDAwKSBQU0EgbW9kZSBieSBz dG9yYWdlIHZlbmRvciBvciBQcm9ncmFtbWVyIGhvdXNlLg0KRm9yIHRoaXMsIHdlIGFyZSBjaGVj a2luZyBpZiBkZXZpY2Ugd2FzIGxlYXZlZCBpbiBQUkVfU09MREVSSU5HX1BPU1RfV1JJVEVTICgw eDAyKSANCnN0YXRlIC0gcmVwcmVzZW50cyBhIHN0YXRlIGluIHdoaWNoIHRoZSBkZXZpY2UgaXMg aW4gcHJvZHVjdGlvbiBhbmQgdGhlIGhvc3QgDQoodXN1YWxseSBwcm9ncmFtbWVyKSBjb21wbGV0 ZWQgdG8gbG9hZCB0aGUgY29udGVudCB0byB0aGUgZGV2aWNlLiANClRoZSBob3N0ICh1c3VhbGx5 IHByb2dyYW1tZXIpIHNldHMgdGhlIGRldmljZSB0byB0aGlzIHN0YXRlIGFmdGVyIGNvbnRlbnQg d2FzIGxvYWRlZCANCmFuZCBqdXN0IGJlZm9yZSBzb2xkZXJpbmcuDQpBZnRlciBzb2xkZXJpbmcg dGhlIGRldmljZSB0byByZWFsIGhvc3QgKG5vdCBwcm9ncmFtbWVyKSwgdGhlIGRldmljZSBzaG91 bGQgYmUgc3dpdGNoZWQgdG8gDQpOb3JtYWwgKDB4MDApIG1vZGUuDQpUaGUgTm9ybWFsICgweDAw KSBtb2RlIG9mIFBTQSByZWdpc3RlciByZXByZXNlbnRzIGEgc3RhdGUgaW4gd2hpY2ggdGhlIGRl dmljZSBpcyBydW5uaW5nIA0KaW4gdGhlIGZpZWxkIGFuZCB1c2VzIOKAnHJlZ3VsYXLigJ0gb3Bl cmF0aW9ucy4NCkxlYXZpbmcgZGV2aWNlIGluIFBSRV9TT0xERVJJTkdfUE9TVF9XUklURVMgKDB4 MDIpIG1pZ2h0IG5vdCBhbGxvdyB0byBob3N0IHdyaXRlIGNvbnRlbnQgDQp0byB0aGUgZGV2aWNl Lg0KDQpNb3JlIGRldGFpbHMgYWJvdXQgUFNBIGZlYXR1cmUgY2FuIGJlIGZvdW5kIGluIGVNTUMg NS4wIHNwZWMgKEplZGVjOg0KIEpFU0Q4NC1CNTAucGRmKQ0KaHR0cDovL3d3dy5qZWRlYy5vcmcv c3RhbmRhcmRzLWRvY3VtZW50cy90ZWNobm9sb2d5LWZvY3VzLWFyZWFzL2ZsYXNoLW1lbW9yeS1z c2RzLXVmcy1lbW1jL2UtbW1jDQoNClBsZWFzZSBsZXQgdXMga25vdyBpZiBtb3JlIGRldGFpbHMg cmVxdWlyZWQuDQoNCj4gDQo+IEFsc28sIG1ha2Ugc3VyZSB0byB1c2UgcHJvcGVyIHByZWZpeCBp biB0aGUgY29tbWl0IGhlYWRlci4NClN1cmUsIHdlIHdpbGwgc3VibWl0IHRoZSBwYXRjaCBhZ2Fp biB3aXRoIGNvcnJlY3QgcHJlZml4Li4uDQoNClRoYW5rcywNCkFsZXgNCg0KPiANCj4gPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IEFsZXggTGVtYmVyZyA8YWxleC5sZW1iZXJnQHNhbmRpc2suY29tPg0K PiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvbW1jLmMgYi9kcml2ZXJzL21t Yy9jb3JlL21tYy5jIGluZGV4DQo+ID4gMDJhZDc5Mi4uMmQ1OTcyMiAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL21tYy9jb3JlL21tYy5jDQo+ID4gKysrIGIvZHJpdmVycy9tbWMvY29yZS9tbWMu Yw0KPiA+IEBAIC02MDUsNiArNjA1LDIwIEBAIHN0YXRpYyBpbnQgbW1jX3JlYWRfZXh0X2NzZChz dHJ1Y3QgbW1jX2NhcmQNCj4gKmNhcmQpDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtbWNfaG9zdG5hbWUoY2FyZC0+aG9zdCkpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgIGVyciA9IDA7DQo+ID4gICAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIC8qIGVNTUMg djUuMCBvciBsYXRlciAqLw0KPiA+ICsgICAgICAgaWYgKGNhcmQtPmV4dF9jc2QucmV2ID4gNikg ew0KPiA+ICsgICAgICAgICAgICAgICBjYXJkLT5leHRfY3NkLnBzYSA9DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgZXh0X2NzZFtFWFRfQ1NEX1BTQV07DQo+ID4gKyAgICAgICAgICAgICAg IGlmIChleHRfY3NkW0VYVF9DU0RfUFNBX1RJTUVPVVRdID4gMCkgew0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGNhcmQtPmV4dF9jc2QucHNhX3RpbWVvdXQgPQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTAwICoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgxIDw8IGV4dF9jc2RbRVhUX0NTRF9QU0FfVElNRU9VVF0pOw0KPiA+ICsgICAgICAg ICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNhcmQtPmV4dF9j c2QucHNhX3RpbWVvdXQgPSAwOw0KPiANCj4gVGhpcyBhc3NpZ25tZW50IGlzbid0IG5lZWRlZC4g SXQncyAwIGFzIGRlZmF1bHQuDQo+IA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHByX3dh cm4oIiVzOiBFWFRfQ1NEIFBTQSBUaW1lb3V0IGlzIHplcm9cbiIsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1tY19ob3N0bmFtZShjYXJkLT5ob3N0KSk7DQo+ IA0KPiBTaG91bGRuJ3Qgd2UgdHJlYXQgdGhpcyBhcyBhbiBlcnJvcj8NCj4gDQo+ID4gKyAgICAg ICAgICAgICAgIH0NCj4gPiArICAgICAgIH0NCj4gPg0KPiA+ICAgICAgICAgICAgICAgICByZXR1 cm4gZXJyOw0KPiA+ICAgICAgICAgfQ0KPiA+IEBAIC0xMzMwLDYgKzEzNDQsMjUgQEAgc3RhdGlj IGludCBtbWNfaW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwNCj4gdTMyIG9jciwNCj4g PiAgICAgICAgIGlmIChjYXJkLT5jc2QuZHNyX2ltcCAmJiBob3N0LT5kc3JfcmVxKQ0KPiA+ICAg ICAgICAgICAgICAgICBtbWNfc2V0X2Rzcihob3N0KTsNCj4gPg0KPiA+ICsgICAgLyoNCj4gPiAr ICAgICAqIGVNTUMgdjUuMCBvciBsYXRlcg0KPiA+ICsgICAgICogYW5kIFByb2R1Y3Rpb24gU3Rh dGUgQXdhcmVuZXNzIHN0YXRlIGlzDQo+IEVYVF9DU0RfUFNBX1BPU1RfU09MREVSSU5HX1dSSVRF Uw0KPiA+ICsgICAgICogVGhlIGhvc3Qgc2hvdWxkIHNldCB0aGUgZGV2aWNlIHRvIE5PUk1BTCBt b2RlDQo+ID4gKyAgICAgKi8NCj4gPiArICAgICAgIGlmICgoY2FyZC0+ZXh0X2NzZC5yZXYgPiA2 KQ0KPiA+ICsgICAgICAgICAgICAgICAmJiAoY2FyZC0+ZXh0X2NzZC5wc2EgPT0NCj4gRVhUX0NT RF9QU0FfUE9TVF9TT0xERVJJTkdfV1JJVEVTKSkgew0KPiA+ICsgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgdGltZW91dDsNCj4gPiArICAgICAgICAgICAgICAgLypaZXJvIHZhbHVlIGluIFBT QSBUaW1lb3V0IOKAkyBQU0EgaXMgbm90IGRlZmluZWQqLw0KPiA+ICsgICAgICAgICAgICAgICBp ZiAoY2FyZC0+ZXh0X2NzZC5wc2FfdGltZW91dCAhPSAwKSB7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgdGltZW91dCA9DQo+ID4gKyBESVZfUk9VTkRfVVAoY2FyZC0+ZXh0X2NzZC5wc2Ff dGltZW91dCwgMTAwMCk7DQo+IA0KPiBDYW4geW91IGdpdmUgYW4gZXhhbXBsZSBvZiBhIHR5cGlj YWwgdmFsdWUgZm9yIHRoZSB0aW1lb3V0Pw0KPiANCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBjYXJkLT5leHRfY3NkLnBzYSA9IEVYVF9DU0RfUFNBX05PUk1BTDsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBlcnIgPSBtbWNfc3dpdGNoKGNhcmQsIEVYVF9DU0RfQ01EX1NFVF9OT1JN QUwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFRfQ1NEX1BTQSwgY2Fy ZC0+ZXh0X2NzZC5wc2EsIHRpbWVvdXQpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlm IChlcnIgJiYgZXJyICE9IC1FQkFETVNHKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ290byBmcmVlX2NhcmQ7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gDQo+IFNvIGlm IHRoZXJlIGlzIG5vIHRpbWVvdXQgc3BlY2lmaWVkIHdoYXQgaGFwcGVucyB0aGVuPw0KPiANCj4g PiArICAgICAgIH0NCj4gPiArDQo+ID4gICAgICAgICAvKg0KPiA+ICAgICAgICAgICogU2VsZWN0 IGNhcmQsIGFzIGFsbCBmb2xsb3dpbmcgY29tbWFuZHMgcmVseSBvbiB0aGF0Lg0KPiA+ICAgICAg ICAgICovDQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1jL2NhcmQuaCBiL2luY2x1 ZGUvbGludXgvbW1jL2NhcmQuaCBpbmRleA0KPiA+IDRkNjljMDAuLjA5YWMzYjAgMTAwNjQ0DQo+ ID4gLS0tIGEvaW5jbHVkZS9saW51eC9tbWMvY2FyZC5oDQo+ID4gKysrIGIvaW5jbHVkZS9saW51 eC9tbWMvY2FyZC5oDQo+ID4gQEAgLTYwLDkgKzYwLDExIEBAIHN0cnVjdCBtbWNfZXh0X2NzZCB7 DQo+ID4gICAgICAgICB1OCAgICAgICAgICAgICAgICAgICAgICBwYWNrZWRfZXZlbnRfZW47DQo+ ID4gICAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICBwYXJ0X3RpbWU7ICAgICAgICAgICAg ICAvKiBVbml0czogbXMgKi8NCj4gPiAgICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIHNh X3RpbWVvdXQ7ICAgICAgICAgICAgIC8qIFVuaXRzOiAxMDBucyAqLw0KPiA+ICsgICAgICAgdW5z aWduZWQgaW50ICAgICAgICAgICAgcHNhX3RpbWVvdXQ7ICAgICAgICAgICAgLyogVW5pdHM6IDEw MHVzICovDQo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICBnZW5lcmljX2NtZDZf dGltZTsgICAgICAvKiBVbml0czogMTBtcyAqLw0KPiA+ICAgICAgICAgdW5zaWduZWQgaW50ICAg ICAgICAgICAgcG93ZXJfb2ZmX2xvbmd0aW1lOyAgICAgLyogVW5pdHM6IG1zICovDQo+ID4gICAg ICAgICB1OCAgICAgICAgICAgICAgICAgICAgICBwb3dlcl9vZmZfbm90aWZpY2F0aW9uOyAvKiBz dGF0ZSAqLw0KPiA+ICsgICAgICAgdTggICAgICAgICAgICAgICAgICAgICAgcHNhOyAvKiBwcm9k dWN0aW9uIHN0YXRlIGF3YXJlbmVzcyAqLw0KPiA+ICAgICAgICAgdW5zaWduZWQgaW50ICAgICAg ICAgICAgaHNfbWF4X2R0cjsNCj4gPiAgICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGhz MjAwX21heF9kdHI7DQo+ID4gICNkZWZpbmUgTU1DX0hJR0hfMjZfTUFYX0RUUiAgICAyNjAwMDAw MA0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tYy9tbWMuaCBiL2luY2x1ZGUvbGlu dXgvbW1jL21tYy5oIGluZGV4DQo+ID4gNDlhZDdhOS4uZWIxNzBmZiAxMDA2NDQNCj4gPiAtLS0g YS9pbmNsdWRlL2xpbnV4L21tYy9tbWMuaA0KPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvbW1jL21t Yy5oDQo+ID4gQEAgLTI4NSw2ICsyODUsOSBAQCBzdHJ1Y3QgX21tY19jc2Qgew0KPiA+ICAjZGVm aW5lIEVYVF9DU0RfRVhQX0VWRU5UU19TVEFUVVMgICAgICA1NCAgICAgIC8qIFJPLCAyIGJ5dGVz ICovDQo+ID4gICNkZWZpbmUgRVhUX0NTRF9FWFBfRVZFTlRTX0NUUkwgICAgICAgICAgICAgICAg NTYgICAgICAvKiBSL1csIDIgYnl0ZXMgKi8NCj4gPiAgI2RlZmluZSBFWFRfQ1NEX0RBVEFfU0VD VE9SX1NJWkUgICAgICAgNjEgICAgICAvKiBSICovDQo+ID4gKyNkZWZpbmUgRVhUX0NTRF9RUkRZ X1NVUFBPUlQgICAgICAgICAgIDk2ICAgICAgLyogUk8gKi8NCj4gPiArI2RlZmluZSBFWFRfQ1NE X0NNRFFfUVJEWV9GVU5DVElPTiAgICAgOTcgICAgICAvKiBSL1cgKi8NCj4gDQo+IFdoYXQncyB0 aGVzZT8NCj4gDQo+ID4gKyNkZWZpbmUgRVhUX0NTRF9QU0EgICAgICAgICAgICAgICAgICAgIDEz MyAgICAgLyogUi9XL0UgKi8NCj4gPiAgI2RlZmluZSBFWFRfQ1NEX0dQX1NJWkVfTVVMVCAgICAg ICAgICAgMTQzICAgICAvKiBSL1cgKi8NCj4gPiAgI2RlZmluZSBFWFRfQ1NEX1BBUlRJVElPTl9T RVRUSU5HX0NPTVBMRVRFRCAxNTUgICAgICAgIC8qIFIvVyAqLw0KPiA+ICAjZGVmaW5lIEVYVF9D U0RfUEFSVElUSU9OX0FUVFJJQlVURSAgICAxNTYgICAgIC8qIFIvVyAqLw0KPiA+IEBAIC0zMTUs NiArMzE4LDcgQEAgc3RydWN0IF9tbWNfY3NkIHsNCj4gPiAgI2RlZmluZSBFWFRfQ1NEX1BXUl9D TF8yNl8zNjAgICAgICAgICAgMjAzICAgICAvKiBSTyAqLw0KPiA+ICAjZGVmaW5lIEVYVF9DU0Rf U0VDX0NOVCAgICAgICAgICAgICAgICAgICAgICAgIDIxMiAgICAgLyogUk8sIDQgYnl0ZXMgKi8N Cj4gPiAgI2RlZmluZSBFWFRfQ1NEX1NfQV9USU1FT1VUICAgICAgICAgICAgMjE3ICAgICAvKiBS TyAqLw0KPiA+ICsjZGVmaW5lIEVYVF9DU0RfUFNBX1RJTUVPVVQgICAgICAgICAgICAyMTggICAg IC8qIFJPICovDQo+ID4gICNkZWZpbmUgRVhUX0NTRF9SRUxfV1JfU0VDX0MgICAgICAgICAgIDIy MiAgICAgLyogUk8gKi8NCj4gPiAgI2RlZmluZSBFWFRfQ1NEX0hDX1dQX0dSUF9TSVpFICAgICAg ICAgMjIxICAgICAvKiBSTyAqLw0KPiA+ICAjZGVmaW5lIEVYVF9DU0RfRVJBU0VfVElNRU9VVF9N VUxUICAgICAyMjMgICAgIC8qIFJPICovDQo+ID4gQEAgLTQzMyw2ICs0MzcsMTMgQEAgc3RydWN0 IF9tbWNfY3NkIHsNCj4gPiAgI2RlZmluZSBFWFRfQ1NEX0JLT1BTX0xFVkVMXzIgICAgICAgICAg MHgyDQo+ID4NCj4gPiAgLyoNCj4gPiArICogUFJPRFVDVElPTiBTVEFURSBBV0FSRU5FU1MgZmll bGRzDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2RlZmluZSBFWFRfQ1NEX1BTQV9OT1JNQUwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDANCj4gPiArI2RlZmluZSBFWFRfQ1NEX1BTQV9Q T1NUX1NPTERFUklOR19XUklURVMgICAgICAweDAyDQo+ID4gKw0KPiA+ICsvKg0KPiA+ICAgKiBN TUNfU1dJVENIIGFjY2VzcyBtb2Rlcw0KPiA+ICAgKi8NCj4gPg0KPiA+IC0tDQo+ID4gMS43Ljku NQ0KPiA+DQo+IA0KPiBLaW5kIHJlZ2FyZHMNCj4gVWZmZQ0K -- 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
On 18 November 2014 19:41, Alex Lemberg <Alex.Lemberg@sandisk.com> wrote: > Hi Ulf, > >> -----Original Message----- >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] >> Sent: Monday, November 17, 2014 3:34 PM >> To: Avi Shchislowski >> Cc: linux-mmc; Chris Ball; Alex Lemberg >> Subject: Re: [PATCH 1/1] Production State Awareness support in host side >> >> On 17 November 2014 13:52, Avi Shchislowski <avi.shchislowski@sandisk.com> >> wrote: >> > Adding support for PSA (Production State Awareness) feature for all >> > eMMC devices with revision >=5.0 In this patch the eMMC driver will >> > check if device was completed its Production State mode, and will >> > switch it to Normal (field) mode. >> > Switching to normal mode signal the device to complete its work in >> > production mode and start working in regular performance mode. >> >> Please add some detail to what this patch does. Additionally why it's needed. > > In this patch driver should recognize if eMMC device (Rev >=5.0) was not switched > to Normal (0x00) PSA mode by storage vendor or Programmer house. > For this, we are checking if device was leaved in PRE_SOLDERING_POST_WRITES (0x02) > state - represents a state in which the device is in production and the host > (usually programmer) completed to load the content to the device. > The host (usually programmer) sets the device to this state after content was loaded > and just before soldering. > After soldering the device to real host (not programmer), the device should be switched to > Normal (0x00) mode. > The Normal (0x00) mode of PSA register represents a state in which the device is running > in the field and uses “regular” operations. > Leaving device in PRE_SOLDERING_POST_WRITES (0x02) might not allow to host write content > to the device. > > More details about PSA feature can be found in eMMC 5.0 spec (Jedec: > JESD84-B50.pdf) > http://www.jedec.org/standards-documents/technology-focus-areas/flash-memory-ssds-ufs-emmc/e-mmc > > Please let us know if more details required. Okay, that was far better. I am not so sure we should finalize the production phase while initializing the eMMC card like this. Certainly we should check the PSA state, but I think we should return an error if we think the device hasn’t completed production. It should be the responsibility for the "programming tools" to finalize the production, right!? Kind regards Uffe -- 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
> -----Original Message----- > From: Ulf Hansson [mailto:ulf.hansson@linaro.org] > Sent: Wednesday, November 19, 2014 11:59 AM > To: Alex Lemberg > Cc: linux-mmc; Chris Ball; Avi Shchislowski > Subject: Re: [PATCH 1/1] Production State Awareness support in host side > > On 18 November 2014 19:41, Alex Lemberg <Alex.Lemberg@sandisk.com> > wrote: > > Hi Ulf, > > > >> -----Original Message----- > >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] > >> Sent: Monday, November 17, 2014 3:34 PM > >> To: Avi Shchislowski > >> Cc: linux-mmc; Chris Ball; Alex Lemberg > >> Subject: Re: [PATCH 1/1] Production State Awareness support in host > >> side > >> > >> On 17 November 2014 13:52, Avi Shchislowski > >> <avi.shchislowski@sandisk.com> > >> wrote: > >> > Adding support for PSA (Production State Awareness) feature for all > >> > eMMC devices with revision >=5.0 In this patch the eMMC driver will > >> > check if device was completed its Production State mode, and will > >> > switch it to Normal (field) mode. > >> > Switching to normal mode signal the device to complete its work in > >> > production mode and start working in regular performance mode. > >> > >> Please add some detail to what this patch does. Additionally why it's needed. > > > > In this patch driver should recognize if eMMC device (Rev >=5.0) was > > not switched to Normal (0x00) PSA mode by storage vendor or Programmer > house. > > For this, we are checking if device was leaved in > > PRE_SOLDERING_POST_WRITES (0x02) state - represents a state in which > > the device is in production and the host (usually programmer) completed to > load the content to the device. > > The host (usually programmer) sets the device to this state after > > content was loaded and just before soldering. > > After soldering the device to real host (not programmer), the device > > should be switched to Normal (0x00) mode. > > The Normal (0x00) mode of PSA register represents a state in which the > > device is running in the field and uses “regular” operations. > > Leaving device in PRE_SOLDERING_POST_WRITES (0x02) might not allow to > > host write content to the device. > > > > More details about PSA feature can be found in eMMC 5.0 spec (Jedec: > > JESD84-B50.pdf) > > http://www.jedec.org/standards-documents/technology-focus-areas/flash- > > memory-ssds-ufs-emmc/e-mmc > > > > Please let us know if more details required. > > Okay, that was far better. > > I am not so sure we should finalize the production phase while initializing the > eMMC card like this. > > Certainly we should check the PSA state, but I think we should return an error if > we think the device hasn’t completed production. It should be the responsibility > for the "programming tools" to finalize the production, right!? According to eMMC spec, the switch to NORMAL should be done after device soldering to final host (not programmer). Please refer to "Figure 32 — Recommended Soldering procedure" in eMMC5.0 specification document. Also, since we are dealing with only "field" host here, we are not touching/switching any other modes of PSA, but only Normal (field). This code should run only once - in the beginning of device life cycle. Best regards, Alex > > Kind regards > Uffe
On 19 November 2014 11:58, Alex Lemberg <Alex.Lemberg@sandisk.com> wrote: > > >> -----Original Message----- >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] >> Sent: Wednesday, November 19, 2014 11:59 AM >> To: Alex Lemberg >> Cc: linux-mmc; Chris Ball; Avi Shchislowski >> Subject: Re: [PATCH 1/1] Production State Awareness support in host side >> >> On 18 November 2014 19:41, Alex Lemberg <Alex.Lemberg@sandisk.com> >> wrote: >> > Hi Ulf, >> > >> >> -----Original Message----- >> >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] >> >> Sent: Monday, November 17, 2014 3:34 PM >> >> To: Avi Shchislowski >> >> Cc: linux-mmc; Chris Ball; Alex Lemberg >> >> Subject: Re: [PATCH 1/1] Production State Awareness support in host >> >> side >> >> >> >> On 17 November 2014 13:52, Avi Shchislowski >> >> <avi.shchislowski@sandisk.com> >> >> wrote: >> >> > Adding support for PSA (Production State Awareness) feature for all >> >> > eMMC devices with revision >=5.0 In this patch the eMMC driver will >> >> > check if device was completed its Production State mode, and will >> >> > switch it to Normal (field) mode. >> >> > Switching to normal mode signal the device to complete its work in >> >> > production mode and start working in regular performance mode. >> >> >> >> Please add some detail to what this patch does. Additionally why it's needed. >> > >> > In this patch driver should recognize if eMMC device (Rev >=5.0) was >> > not switched to Normal (0x00) PSA mode by storage vendor or Programmer >> house. >> > For this, we are checking if device was leaved in >> > PRE_SOLDERING_POST_WRITES (0x02) state - represents a state in which >> > the device is in production and the host (usually programmer) completed to >> load the content to the device. >> > The host (usually programmer) sets the device to this state after >> > content was loaded and just before soldering. >> > After soldering the device to real host (not programmer), the device >> > should be switched to Normal (0x00) mode. >> > The Normal (0x00) mode of PSA register represents a state in which the >> > device is running in the field and uses “regular” operations. >> > Leaving device in PRE_SOLDERING_POST_WRITES (0x02) might not allow to >> > host write content to the device. >> > >> > More details about PSA feature can be found in eMMC 5.0 spec (Jedec: >> > JESD84-B50.pdf) >> > http://www.jedec.org/standards-documents/technology-focus-areas/flash- >> > memory-ssds-ufs-emmc/e-mmc >> > >> > Please let us know if more details required. >> >> Okay, that was far better. >> >> I am not so sure we should finalize the production phase while initializing the >> eMMC card like this. >> >> Certainly we should check the PSA state, but I think we should return an error if >> we think the device hasn’t completed production. It should be the responsibility >> for the "programming tools" to finalize the production, right!? > > According to eMMC spec, the switch to NORMAL should be done after device soldering to final host (not programmer). > Please refer to "Figure 32 — Recommended Soldering procedure" in eMMC5.0 specification document. > Also, since we are dealing with only "field" host here, we are not touching/switching any other modes of PSA, but only Normal (field). > This code should run only once - in the beginning of device life cycle. I get your point, but I am not so sure. To me, I wouldn't trust that the platform binaries has been successfully programmed to the device, unless the programmer tool takes care of switching the device to "normal". What does other people think? Kind regards Uffe -- 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
> -----Original Message----- > From: Ulf Hansson [mailto:ulf.hansson@linaro.org] > Sent: Friday, November 21, 2014 3:16 PM > To: Alex Lemberg > Cc: linux-mmc; Chris Ball; Avi Shchislowski > Subject: Re: [PATCH 1/1] Production State Awareness support in host side > > On 19 November 2014 11:58, Alex Lemberg <Alex.Lemberg@sandisk.com> > wrote: > > > > > >> -----Original Message----- > >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] > >> Sent: Wednesday, November 19, 2014 11:59 AM > >> To: Alex Lemberg > >> Cc: linux-mmc; Chris Ball; Avi Shchislowski > >> Subject: Re: [PATCH 1/1] Production State Awareness support in host > >> side > >> > >> On 18 November 2014 19:41, Alex Lemberg <Alex.Lemberg@sandisk.com> > >> wrote: > >> > Hi Ulf, > >> > > >> >> -----Original Message----- > >> >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] > >> >> Sent: Monday, November 17, 2014 3:34 PM > >> >> To: Avi Shchislowski > >> >> Cc: linux-mmc; Chris Ball; Alex Lemberg > >> >> Subject: Re: [PATCH 1/1] Production State Awareness support in > >> >> host side > >> >> > >> >> On 17 November 2014 13:52, Avi Shchislowski > >> >> <avi.shchislowski@sandisk.com> > >> >> wrote: > >> >> > Adding support for PSA (Production State Awareness) feature for > >> >> > all eMMC devices with revision >=5.0 In this patch the eMMC > >> >> > driver will check if device was completed its Production State > >> >> > mode, and will switch it to Normal (field) mode. > >> >> > Switching to normal mode signal the device to complete its work > >> >> > in production mode and start working in regular performance mode. > >> >> > >> >> Please add some detail to what this patch does. Additionally why it's > needed. > >> > > >> > In this patch driver should recognize if eMMC device (Rev >=5.0) > >> > was not switched to Normal (0x00) PSA mode by storage vendor or > >> > Programmer > >> house. > >> > For this, we are checking if device was leaved in > >> > PRE_SOLDERING_POST_WRITES (0x02) state - represents a state in > >> > which the device is in production and the host (usually programmer) > >> > completed to > >> load the content to the device. > >> > The host (usually programmer) sets the device to this state after > >> > content was loaded and just before soldering. > >> > After soldering the device to real host (not programmer), the > >> > device should be switched to Normal (0x00) mode. > >> > The Normal (0x00) mode of PSA register represents a state in which > >> > the device is running in the field and uses “regular” operations. > >> > Leaving device in PRE_SOLDERING_POST_WRITES (0x02) might not allow > >> > to host write content to the device. > >> > > >> > More details about PSA feature can be found in eMMC 5.0 spec (Jedec: > >> > JESD84-B50.pdf) > >> > http://www.jedec.org/standards-documents/technology-focus-areas/fla > >> > sh- > >> > memory-ssds-ufs-emmc/e-mmc > >> > > >> > Please let us know if more details required. > >> > >> Okay, that was far better. > >> > >> I am not so sure we should finalize the production phase while > >> initializing the eMMC card like this. > >> > >> Certainly we should check the PSA state, but I think we should return > >> an error if we think the device hasn’t completed production. It > >> should be the responsibility for the "programming tools" to finalize the > production, right!? > > > > According to eMMC spec, the switch to NORMAL should be done after device > soldering to final host (not programmer). > > Please refer to "Figure 32 — Recommended Soldering procedure" in > eMMC5.0 specification document. > > Also, since we are dealing with only "field" host here, we are not > touching/switching any other modes of PSA, but only Normal (field). > > This code should run only once - in the beginning of device life cycle. > > I get your point, but I am not so sure. > > To me, I wouldn't trust that the platform binaries has been successfully > programmed to the device, unless the programmer tool takes care of switching > the device to "normal". > Thanks Ulf! Also, please note - PSA PRE_SOLDERING_POST_WRITES mode intent to save device pre-loaded content during the soldering process. Flash data can be corrupted due to soldering procedure high temperature. So switching to Normal cannot be done by external programmer. BTW, I have resubmitted the patch again, now with correct subject prefix, and some additional fixes. > What does other people think? > > Kind regards > Uffe
[...] >> >> >> >> I am not so sure we should finalize the production phase while >> >> initializing the eMMC card like this. >> >> >> >> Certainly we should check the PSA state, but I think we should return >> >> an error if we think the device hasn’t completed production. It >> >> should be the responsibility for the "programming tools" to finalize the >> production, right!? >> > >> > According to eMMC spec, the switch to NORMAL should be done after device >> soldering to final host (not programmer). >> > Please refer to "Figure 32 — Recommended Soldering procedure" in >> eMMC5.0 specification document. >> > Also, since we are dealing with only "field" host here, we are not >> touching/switching any other modes of PSA, but only Normal (field). >> > This code should run only once - in the beginning of device life cycle. >> >> I get your point, but I am not so sure. >> >> To me, I wouldn't trust that the platform binaries has been successfully >> programmed to the device, unless the programmer tool takes care of switching >> the device to "normal". >> > > Thanks Ulf! > Also, please note - PSA PRE_SOLDERING_POST_WRITES mode intent to save device > pre-loaded content during the soldering process. > Flash data can be corrupted due to soldering procedure high temperature. So switching > to Normal cannot be done by external programmer. So, if flash data will be corrupted due to for example high temperatures during soldering, how will that be detected when using the "manual mode"? If that's the job for the platform software I fail to understand why the PRE_SOLDERING_POST_WRITES state needs to exists at all!? Kind regards Uffe -- 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
> -----Original Message----- > From: Ulf Hansson [mailto:ulf.hansson@linaro.org] > Sent: Monday, November 24, 2014 2:24 PM > To: Alex Lemberg > Cc: linux-mmc; Chris Ball; Avi Shchislowski > Subject: Re: [PATCH 1/1] Production State Awareness support in host side > > [...] > > >> >> > >> >> I am not so sure we should finalize the production phase while > >> >> initializing the eMMC card like this. > >> >> > >> >> Certainly we should check the PSA state, but I think we should > >> >> return an error if we think the device hasn’t completed > >> >> production. It should be the responsibility for the "programming > >> >> tools" to finalize the > >> production, right!? > >> > > >> > According to eMMC spec, the switch to NORMAL should be done after > >> > device > >> soldering to final host (not programmer). > >> > Please refer to "Figure 32 — Recommended Soldering procedure" in > >> eMMC5.0 specification document. > >> > Also, since we are dealing with only "field" host here, we are not > >> touching/switching any other modes of PSA, but only Normal (field). > >> > This code should run only once - in the beginning of device life cycle. > >> > >> I get your point, but I am not so sure. > >> > >> To me, I wouldn't trust that the platform binaries has been > >> successfully programmed to the device, unless the programmer tool > >> takes care of switching the device to "normal". > >> > > > > Thanks Ulf! > > Also, please note - PSA PRE_SOLDERING_POST_WRITES mode intent to save > > device pre-loaded content during the soldering process. > > Flash data can be corrupted due to soldering procedure high > > temperature. So switching to Normal cannot be done by external > programmer. > > So, if flash data will be corrupted due to for example high temperatures during > soldering, how will that be detected when using the "manual mode"? > > If that's the job for the platform software I fail to understand why the > PRE_SOLDERING_POST_WRITES state needs to exists at all!? The flow of "Manual Mode" is: [skipping few common steps] ... Host (Programmer) sets PRODUCTION_STATE_AWARENESS to 0x1 (PRE_SOLDERING_WRITES) Host (Programmer) perform pre-soldering data loading and/or device configuration Host (Programmer) sets PRODUCTION_STATE_AWARENESS To 0x2 (PRE_SOLDERING_POST_WRITES). No writes past this point Device Soldering Host (field) sets PRODUCTION_STATE_AWARENESS to 0x0 (NORMAL) ... Hope this will answer... > > Kind regards > Uffe
On 25 November 2014 at 10:17, Alex Lemberg <Alex.Lemberg@sandisk.com> wrote: > > >> -----Original Message----- >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] >> Sent: Monday, November 24, 2014 2:24 PM >> To: Alex Lemberg >> Cc: linux-mmc; Chris Ball; Avi Shchislowski >> Subject: Re: [PATCH 1/1] Production State Awareness support in host side >> >> [...] >> >> >> >> >> >> >> I am not so sure we should finalize the production phase while >> >> >> initializing the eMMC card like this. >> >> >> >> >> >> Certainly we should check the PSA state, but I think we should >> >> >> return an error if we think the device hasn’t completed >> >> >> production. It should be the responsibility for the "programming >> >> >> tools" to finalize the >> >> production, right!? >> >> > >> >> > According to eMMC spec, the switch to NORMAL should be done after >> >> > device >> >> soldering to final host (not programmer). >> >> > Please refer to "Figure 32 — Recommended Soldering procedure" in >> >> eMMC5.0 specification document. >> >> > Also, since we are dealing with only "field" host here, we are not >> >> touching/switching any other modes of PSA, but only Normal (field). >> >> > This code should run only once - in the beginning of device life cycle. >> >> >> >> I get your point, but I am not so sure. >> >> >> >> To me, I wouldn't trust that the platform binaries has been >> >> successfully programmed to the device, unless the programmer tool >> >> takes care of switching the device to "normal". >> >> >> > >> > Thanks Ulf! >> > Also, please note - PSA PRE_SOLDERING_POST_WRITES mode intent to save >> > device pre-loaded content during the soldering process. >> > Flash data can be corrupted due to soldering procedure high >> > temperature. So switching to Normal cannot be done by external >> programmer. >> >> So, if flash data will be corrupted due to for example high temperatures during >> soldering, how will that be detected when using the "manual mode"? >> >> If that's the job for the platform software I fail to understand why the >> PRE_SOLDERING_POST_WRITES state needs to exists at all!? > > The flow of "Manual Mode" is: Thanks for clarifying. > > [skipping few common steps] > ... > Host (Programmer) sets PRODUCTION_STATE_AWARENESS > to 0x1 (PRE_SOLDERING_WRITES) > > Host (Programmer) perform pre-soldering data loading > and/or device configuration > > Host (Programmer) sets PRODUCTION_STATE_AWARENESS > To 0x2 (PRE_SOLDERING_POST_WRITES). > No writes past this point To repeat my question: _Unless_ there are no validation of the device soldering performed by the "programmer tool" past this point, why couldn't the host set PRODUCTION_STATE_AWARENESS to 0x0 (NORMAL) at this point instead? > > Device Soldering > > Host (field) sets PRODUCTION_STATE_AWARENESS > to 0x0 (NORMAL) > ... > > Hope this will answer... > Kind regards Uffe -- 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
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVWxmIEhhbnNzb24gW21h aWx0bzp1bGYuaGFuc3NvbkBsaW5hcm8ub3JnXQ0KPiBTZW50OiBUdWVzZGF5LCBOb3ZlbWJlciAy NSwgMjAxNCAxMjo1NyBQTQ0KPiBUbzogQWxleCBMZW1iZXJnDQo+IENjOiBsaW51eC1tbWM7IENo cmlzIEJhbGw7IEF2aSBTaGNoaXNsb3dza2kNCj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzFdIFBy b2R1Y3Rpb24gU3RhdGUgQXdhcmVuZXNzIHN1cHBvcnQgaW4gaG9zdCBzaWRlDQo+IA0KPiBPbiAy NSBOb3ZlbWJlciAyMDE0IGF0IDEwOjE3LCBBbGV4IExlbWJlcmcgPEFsZXguTGVtYmVyZ0BzYW5k aXNrLmNvbT4NCj4gd3JvdGU6DQo+ID4NCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+PiBGcm9tOiBVbGYgSGFuc3NvbiBbbWFpbHRvOnVsZi5oYW5zc29uQGxpbmFyby5v cmddDQo+ID4+IFNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgMjQsIDIwMTQgMjoyNCBQTQ0KPiA+PiBU bzogQWxleCBMZW1iZXJnDQo+ID4+IENjOiBsaW51eC1tbWM7IENocmlzIEJhbGw7IEF2aSBTaGNo aXNsb3dza2kNCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzFdIFByb2R1Y3Rpb24gU3RhdGUg QXdhcmVuZXNzIHN1cHBvcnQgaW4gaG9zdA0KPiA+PiBzaWRlDQo+ID4+DQo+ID4+IFsuLi5dDQo+ ID4+DQo+ID4+ID4+ID4+DQo+ID4+ID4+ID4+IEkgYW0gbm90IHNvIHN1cmUgd2Ugc2hvdWxkIGZp bmFsaXplIHRoZSBwcm9kdWN0aW9uIHBoYXNlIHdoaWxlDQo+ID4+ID4+ID4+IGluaXRpYWxpemlu ZyB0aGUgZU1NQyBjYXJkIGxpa2UgdGhpcy4NCj4gPj4gPj4gPj4NCj4gPj4gPj4gPj4gQ2VydGFp bmx5IHdlIHNob3VsZCBjaGVjayB0aGUgUFNBIHN0YXRlLCBidXQgSSB0aGluayB3ZSBzaG91bGQN Cj4gPj4gPj4gPj4gcmV0dXJuIGFuIGVycm9yIGlmIHdlIHRoaW5rIHRoZSBkZXZpY2UgaGFzbuKA mXQgY29tcGxldGVkDQo+ID4+ID4+ID4+IHByb2R1Y3Rpb24uIEl0IHNob3VsZCBiZSB0aGUgcmVz cG9uc2liaWxpdHkgZm9yIHRoZQ0KPiA+PiA+PiA+PiAicHJvZ3JhbW1pbmcgdG9vbHMiIHRvIGZp bmFsaXplIHRoZQ0KPiA+PiA+PiBwcm9kdWN0aW9uLCByaWdodCE/DQo+ID4+ID4+ID4NCj4gPj4g Pj4gPiBBY2NvcmRpbmcgdG8gZU1NQyBzcGVjLCB0aGUgc3dpdGNoIHRvIE5PUk1BTCBzaG91bGQg YmUgZG9uZQ0KPiA+PiA+PiA+IGFmdGVyIGRldmljZQ0KPiA+PiA+PiBzb2xkZXJpbmcgdG8gZmlu YWwgaG9zdCAobm90IHByb2dyYW1tZXIpLg0KPiA+PiA+PiA+IFBsZWFzZSByZWZlciB0byAiRmln dXJlIDMyIOKAlCBSZWNvbW1lbmRlZCBTb2xkZXJpbmcgcHJvY2VkdXJlIiBpbg0KPiA+PiA+PiBl TU1DNS4wIHNwZWNpZmljYXRpb24gZG9jdW1lbnQuDQo+ID4+ID4+ID4gQWxzbywgc2luY2Ugd2Ug YXJlIGRlYWxpbmcgd2l0aCBvbmx5ICJmaWVsZCIgaG9zdCBoZXJlLCB3ZSBhcmUNCj4gPj4gPj4g PiBub3QNCj4gPj4gPj4gdG91Y2hpbmcvc3dpdGNoaW5nIGFueSBvdGhlciBtb2RlcyBvZiBQU0Es IGJ1dCBvbmx5IE5vcm1hbCAoZmllbGQpLg0KPiA+PiA+PiA+IFRoaXMgY29kZSBzaG91bGQgcnVu IG9ubHkgb25jZSAtIGluIHRoZSBiZWdpbm5pbmcgb2YgZGV2aWNlIGxpZmUgY3ljbGUuDQo+ID4+ ID4+DQo+ID4+ID4+IEkgZ2V0IHlvdXIgcG9pbnQsIGJ1dCBJIGFtIG5vdCBzbyBzdXJlLg0KPiA+ PiA+Pg0KPiA+PiA+PiBUbyBtZSwgSSB3b3VsZG4ndCB0cnVzdCB0aGF0IHRoZSBwbGF0Zm9ybSBi aW5hcmllcyBoYXMgYmVlbg0KPiA+PiA+PiBzdWNjZXNzZnVsbHkgcHJvZ3JhbW1lZCB0byB0aGUg ZGV2aWNlLCB1bmxlc3MgdGhlIHByb2dyYW1tZXIgdG9vbA0KPiA+PiA+PiB0YWtlcyBjYXJlIG9m IHN3aXRjaGluZyB0aGUgZGV2aWNlIHRvICJub3JtYWwiLg0KPiA+PiA+Pg0KPiA+PiA+DQo+ID4+ ID4gVGhhbmtzIFVsZiENCj4gPj4gPiBBbHNvLCBwbGVhc2Ugbm90ZSAtIFBTQSBQUkVfU09MREVS SU5HX1BPU1RfV1JJVEVTIG1vZGUgaW50ZW50IHRvDQo+ID4+ID4gc2F2ZSBkZXZpY2UgcHJlLWxv YWRlZCBjb250ZW50IGR1cmluZyB0aGUgc29sZGVyaW5nIHByb2Nlc3MuDQo+ID4+ID4gRmxhc2gg ZGF0YSBjYW4gYmUgY29ycnVwdGVkIGR1ZSB0byBzb2xkZXJpbmcgcHJvY2VkdXJlIGhpZ2gNCj4g Pj4gPiB0ZW1wZXJhdHVyZS4gU28gc3dpdGNoaW5nIHRvIE5vcm1hbCBjYW5ub3QgYmUgZG9uZSBi eSBleHRlcm5hbA0KPiA+PiBwcm9ncmFtbWVyLg0KPiA+Pg0KPiA+PiBTbywgaWYgZmxhc2ggZGF0 YSB3aWxsIGJlIGNvcnJ1cHRlZCBkdWUgdG8gZm9yIGV4YW1wbGUgaGlnaA0KPiA+PiB0ZW1wZXJh dHVyZXMgZHVyaW5nIHNvbGRlcmluZywgaG93IHdpbGwgdGhhdCBiZSBkZXRlY3RlZCB3aGVuIHVz aW5nIHRoZQ0KPiAibWFudWFsIG1vZGUiPw0KPiA+Pg0KPiA+PiBJZiB0aGF0J3MgdGhlIGpvYiBm b3IgdGhlIHBsYXRmb3JtIHNvZnR3YXJlIEkgZmFpbCB0byB1bmRlcnN0YW5kIHdoeQ0KPiA+PiB0 aGUgUFJFX1NPTERFUklOR19QT1NUX1dSSVRFUyBzdGF0ZSBuZWVkcyB0byBleGlzdHMgYXQgYWxs IT8NCj4gPg0KPiA+IFRoZSBmbG93IG9mICJNYW51YWwgTW9kZSIgaXM6DQo+IA0KPiBUaGFua3Mg Zm9yIGNsYXJpZnlpbmcuDQo+IA0KPiA+DQo+ID4gW3NraXBwaW5nIGZldyBjb21tb24gc3RlcHNd DQo+ID4gLi4uDQo+ID4gSG9zdCAoUHJvZ3JhbW1lcikgc2V0cyBQUk9EVUNUSU9OX1NUQVRFX0FX QVJFTkVTUyB0byAweDENCj4gPiAoUFJFX1NPTERFUklOR19XUklURVMpDQo+ID4NCj4gPiBIb3N0 IChQcm9ncmFtbWVyKSBwZXJmb3JtIHByZS1zb2xkZXJpbmcgZGF0YSBsb2FkaW5nIGFuZC9vciBk ZXZpY2UNCj4gPiBjb25maWd1cmF0aW9uDQo+ID4NCj4gPiBIb3N0IChQcm9ncmFtbWVyKSBzZXRz IFBST0RVQ1RJT05fU1RBVEVfQVdBUkVORVNTIFRvIDB4Mg0KPiA+IChQUkVfU09MREVSSU5HX1BP U1RfV1JJVEVTKS4NCj4gPiBObyB3cml0ZXMgcGFzdCB0aGlzIHBvaW50DQo+IA0KPiBUbyByZXBl YXQgbXkgcXVlc3Rpb246DQo+IA0KPiBfVW5sZXNzXyB0aGVyZSBhcmUgbm8gdmFsaWRhdGlvbiBv ZiB0aGUgZGV2aWNlIHNvbGRlcmluZyBwZXJmb3JtZWQgYnkgdGhlDQo+ICJwcm9ncmFtbWVyIHRv b2wiIHBhc3QgdGhpcyBwb2ludCwgd2h5IGNvdWxkbid0IHRoZSBob3N0IHNldA0KPiBQUk9EVUNU SU9OX1NUQVRFX0FXQVJFTkVTUyB0byAweDAgKE5PUk1BTCkgYXQgdGhpcyBwb2ludCBpbnN0ZWFk Pw0KPg0KDQpJZiBwcm9ncmFtbWVyIHNldCB0byBOT1JNQUwgYXQgdGhpcyBwb2ludCwgdGhlIHBy b2dyYW1tZWQgZGF0YSBjYW4gYmUgDQpjb3JydXB0ZWQgZHVyaW5nIHRoZSBzb2xkZXJpbmcgcHJv Y2Vzcy4NCmVNTUMgZGV2aWNlIHdpbGwgcHJvdGVjdCBwcm9ncmFtbWVkIGRhdGEgZHVyaW5nIHRo ZSBzb2xkZXJpbmcgcHJvY2VzcyBpbiANClBSRV9TT0xERVJJTkdfUE9TVF9XUklURVMgKDB4Mikg IG1vZGUuDQpCVFcsIHdoZW4gSSBhbSBzYXlpbmcgIkhvc3QgKFByb2dyYW1tZXIpIiAtIEkgaW50 ZW5kIGV4dGVybmFsIHByb2dyYW1taW5nIG1hY2hpbmUuDQoNCj4gPg0KPiA+IERldmljZSBTb2xk ZXJpbmcNCj4gPg0KPiA+IEhvc3QgKGZpZWxkKSBzZXRzIFBST0RVQ1RJT05fU1RBVEVfQVdBUkVO RVNTIHRvIDB4MCAoTk9STUFMKSAuLi4NCj4gPg0KPiA+IEhvcGUgdGhpcyB3aWxsIGFuc3dlci4u Lg0KPiA+DQo+IA0KPiBLaW5kIHJlZ2FyZHMNCj4gVWZmZQ0K -- 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
On 25 November 2014 at 15:55, Alex Lemberg <Alex.Lemberg@sandisk.com> wrote: > > >> -----Original Message----- >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] >> Sent: Tuesday, November 25, 2014 12:57 PM >> To: Alex Lemberg >> Cc: linux-mmc; Chris Ball; Avi Shchislowski >> Subject: Re: [PATCH 1/1] Production State Awareness support in host side >> >> On 25 November 2014 at 10:17, Alex Lemberg <Alex.Lemberg@sandisk.com> >> wrote: >> > >> > >> >> -----Original Message----- >> >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] >> >> Sent: Monday, November 24, 2014 2:24 PM >> >> To: Alex Lemberg >> >> Cc: linux-mmc; Chris Ball; Avi Shchislowski >> >> Subject: Re: [PATCH 1/1] Production State Awareness support in host >> >> side >> >> >> >> [...] >> >> >> >> >> >> >> >> >> >> I am not so sure we should finalize the production phase while >> >> >> >> initializing the eMMC card like this. >> >> >> >> >> >> >> >> Certainly we should check the PSA state, but I think we should >> >> >> >> return an error if we think the device hasn’t completed >> >> >> >> production. It should be the responsibility for the >> >> >> >> "programming tools" to finalize the >> >> >> production, right!? >> >> >> > >> >> >> > According to eMMC spec, the switch to NORMAL should be done >> >> >> > after device >> >> >> soldering to final host (not programmer). >> >> >> > Please refer to "Figure 32 — Recommended Soldering procedure" in >> >> >> eMMC5.0 specification document. >> >> >> > Also, since we are dealing with only "field" host here, we are >> >> >> > not >> >> >> touching/switching any other modes of PSA, but only Normal (field). >> >> >> > This code should run only once - in the beginning of device life cycle. >> >> >> >> >> >> I get your point, but I am not so sure. >> >> >> >> >> >> To me, I wouldn't trust that the platform binaries has been >> >> >> successfully programmed to the device, unless the programmer tool >> >> >> takes care of switching the device to "normal". >> >> >> >> >> > >> >> > Thanks Ulf! >> >> > Also, please note - PSA PRE_SOLDERING_POST_WRITES mode intent to >> >> > save device pre-loaded content during the soldering process. >> >> > Flash data can be corrupted due to soldering procedure high >> >> > temperature. So switching to Normal cannot be done by external >> >> programmer. >> >> >> >> So, if flash data will be corrupted due to for example high >> >> temperatures during soldering, how will that be detected when using the >> "manual mode"? >> >> >> >> If that's the job for the platform software I fail to understand why >> >> the PRE_SOLDERING_POST_WRITES state needs to exists at all!? >> > >> > The flow of "Manual Mode" is: >> >> Thanks for clarifying. >> >> > >> > [skipping few common steps] >> > ... >> > Host (Programmer) sets PRODUCTION_STATE_AWARENESS to 0x1 >> > (PRE_SOLDERING_WRITES) >> > >> > Host (Programmer) perform pre-soldering data loading and/or device >> > configuration >> > >> > Host (Programmer) sets PRODUCTION_STATE_AWARENESS To 0x2 >> > (PRE_SOLDERING_POST_WRITES). >> > No writes past this point >> >> To repeat my question: >> >> _Unless_ there are no validation of the device soldering performed by the >> "programmer tool" past this point, why couldn't the host set >> PRODUCTION_STATE_AWARENESS to 0x0 (NORMAL) at this point instead? >> > > If programmer set to NORMAL at this point, the programmed data can be > corrupted during the soldering process. > eMMC device will protect programmed data during the soldering process in > PRE_SOLDERING_POST_WRITES (0x2) mode. Exactly how will that be done? During the soldering process the eMMC card isn't powered. So how could it protect itself better, just because the state is PRE_SOLDERING_POST_WRITES? Kind regards Uffe -- 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
SGkgVWxmLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFVsZiBIYW5z c29uIFttYWlsdG86dWxmLmhhbnNzb25AbGluYXJvLm9yZ10NCj4gU2VudDogVHVlc2RheSwgRGVj ZW1iZXIgMDIsIDIwMTQgMTE6MzEgQU0NCj4gVG86IEFsZXggTGVtYmVyZw0KPiBDYzogbGludXgt bW1jOyBDaHJpcyBCYWxsOyBBdmkgU2hjaGlzbG93c2tpDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg MS8xXSBQcm9kdWN0aW9uIFN0YXRlIEF3YXJlbmVzcyBzdXBwb3J0IGluIGhvc3Qgc2lkZQ0KPiAN Cj4gT24gMjUgTm92ZW1iZXIgMjAxNCBhdCAxNTo1NSwgQWxleCBMZW1iZXJnIDxBbGV4LkxlbWJl cmdAc2FuZGlzay5jb20+DQo+IHdyb3RlOg0KPiA+DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogVWxmIEhhbnNzb24gW21haWx0bzp1bGYuaGFuc3NvbkBs aW5hcm8ub3JnXQ0KPiA+PiBTZW50OiBUdWVzZGF5LCBOb3ZlbWJlciAyNSwgMjAxNCAxMjo1NyBQ TQ0KPiA+PiBUbzogQWxleCBMZW1iZXJnDQo+ID4+IENjOiBsaW51eC1tbWM7IENocmlzIEJhbGw7 IEF2aSBTaGNoaXNsb3dza2kNCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzFdIFByb2R1Y3Rp b24gU3RhdGUgQXdhcmVuZXNzIHN1cHBvcnQgaW4gaG9zdA0KPiA+PiBzaWRlDQo+ID4+DQo+ID4+ IE9uIDI1IE5vdmVtYmVyIDIwMTQgYXQgMTA6MTcsIEFsZXggTGVtYmVyZw0KPiA8QWxleC5MZW1i ZXJnQHNhbmRpc2suY29tPg0KPiA+PiB3cm90ZToNCj4gPj4gPg0KPiA+PiA+DQo+ID4+ID4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ID4+IEZyb206IFVsZiBIYW5zc29uIFttYWls dG86dWxmLmhhbnNzb25AbGluYXJvLm9yZ10NCj4gPj4gPj4gU2VudDogTW9uZGF5LCBOb3ZlbWJl ciAyNCwgMjAxNCAyOjI0IFBNDQo+ID4+ID4+IFRvOiBBbGV4IExlbWJlcmcNCj4gPj4gPj4gQ2M6 IGxpbnV4LW1tYzsgQ2hyaXMgQmFsbDsgQXZpIFNoY2hpc2xvd3NraQ0KPiA+PiA+PiBTdWJqZWN0 OiBSZTogW1BBVENIIDEvMV0gUHJvZHVjdGlvbiBTdGF0ZSBBd2FyZW5lc3Mgc3VwcG9ydCBpbg0K PiA+PiA+PiBob3N0IHNpZGUNCj4gPj4gPj4NCj4gPj4gPj4gWy4uLl0NCj4gPj4gPj4NCj4gPj4g Pj4gPj4gPj4NCj4gPj4gPj4gPj4gPj4gSSBhbSBub3Qgc28gc3VyZSB3ZSBzaG91bGQgZmluYWxp emUgdGhlIHByb2R1Y3Rpb24gcGhhc2UNCj4gPj4gPj4gPj4gPj4gd2hpbGUgaW5pdGlhbGl6aW5n IHRoZSBlTU1DIGNhcmQgbGlrZSB0aGlzLg0KPiA+PiA+PiA+PiA+Pg0KPiA+PiA+PiA+PiA+PiBD ZXJ0YWlubHkgd2Ugc2hvdWxkIGNoZWNrIHRoZSBQU0Egc3RhdGUsIGJ1dCBJIHRoaW5rIHdlDQo+ ID4+ID4+ID4+ID4+IHNob3VsZCByZXR1cm4gYW4gZXJyb3IgaWYgd2UgdGhpbmsgdGhlIGRldmlj ZSBoYXNu4oCZdA0KPiA+PiA+PiA+PiA+PiBjb21wbGV0ZWQgcHJvZHVjdGlvbi4gSXQgc2hvdWxk IGJlIHRoZSByZXNwb25zaWJpbGl0eSBmb3INCj4gPj4gPj4gPj4gPj4gdGhlICJwcm9ncmFtbWlu ZyB0b29scyIgdG8gZmluYWxpemUgdGhlDQo+ID4+ID4+ID4+IHByb2R1Y3Rpb24sIHJpZ2h0IT8N Cj4gPj4gPj4gPj4gPg0KPiA+PiA+PiA+PiA+IEFjY29yZGluZyB0byBlTU1DIHNwZWMsIHRoZSBz d2l0Y2ggdG8gTk9STUFMIHNob3VsZCBiZSBkb25lDQo+ID4+ID4+ID4+ID4gYWZ0ZXIgZGV2aWNl DQo+ID4+ID4+ID4+IHNvbGRlcmluZyB0byBmaW5hbCBob3N0IChub3QgcHJvZ3JhbW1lcikuDQo+ ID4+ID4+ID4+ID4gUGxlYXNlIHJlZmVyIHRvICJGaWd1cmUgMzIg4oCUIFJlY29tbWVuZGVkIFNv bGRlcmluZyBwcm9jZWR1cmUiDQo+ID4+ID4+ID4+ID4gaW4NCj4gPj4gPj4gPj4gZU1NQzUuMCBz cGVjaWZpY2F0aW9uIGRvY3VtZW50Lg0KPiA+PiA+PiA+PiA+IEFsc28sIHNpbmNlIHdlIGFyZSBk ZWFsaW5nIHdpdGggb25seSAiZmllbGQiIGhvc3QgaGVyZSwgd2UNCj4gPj4gPj4gPj4gPiBhcmUg bm90DQo+ID4+ID4+ID4+IHRvdWNoaW5nL3N3aXRjaGluZyBhbnkgb3RoZXIgbW9kZXMgb2YgUFNB LCBidXQgb25seSBOb3JtYWwgKGZpZWxkKS4NCj4gPj4gPj4gPj4gPiBUaGlzIGNvZGUgc2hvdWxk IHJ1biBvbmx5IG9uY2UgLSBpbiB0aGUgYmVnaW5uaW5nIG9mIGRldmljZSBsaWZlIGN5Y2xlLg0K PiA+PiA+PiA+Pg0KPiA+PiA+PiA+PiBJIGdldCB5b3VyIHBvaW50LCBidXQgSSBhbSBub3Qgc28g c3VyZS4NCj4gPj4gPj4gPj4NCj4gPj4gPj4gPj4gVG8gbWUsIEkgd291bGRuJ3QgdHJ1c3QgdGhh dCB0aGUgcGxhdGZvcm0gYmluYXJpZXMgaGFzIGJlZW4NCj4gPj4gPj4gPj4gc3VjY2Vzc2Z1bGx5 IHByb2dyYW1tZWQgdG8gdGhlIGRldmljZSwgdW5sZXNzIHRoZSBwcm9ncmFtbWVyDQo+ID4+ID4+ ID4+IHRvb2wgdGFrZXMgY2FyZSBvZiBzd2l0Y2hpbmcgdGhlIGRldmljZSB0byAibm9ybWFsIi4N Cj4gPj4gPj4gPj4NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IFRoYW5rcyBVbGYhDQo+ID4+ID4+ID4g QWxzbywgcGxlYXNlIG5vdGUgLSBQU0EgUFJFX1NPTERFUklOR19QT1NUX1dSSVRFUyBtb2RlIGlu dGVudCB0bw0KPiA+PiA+PiA+IHNhdmUgZGV2aWNlIHByZS1sb2FkZWQgY29udGVudCBkdXJpbmcg dGhlIHNvbGRlcmluZyBwcm9jZXNzLg0KPiA+PiA+PiA+IEZsYXNoIGRhdGEgY2FuIGJlIGNvcnJ1 cHRlZCBkdWUgdG8gc29sZGVyaW5nIHByb2NlZHVyZSBoaWdoDQo+ID4+ID4+ID4gdGVtcGVyYXR1 cmUuIFNvIHN3aXRjaGluZyB0byBOb3JtYWwgY2Fubm90IGJlIGRvbmUgYnkgZXh0ZXJuYWwNCj4g Pj4gPj4gcHJvZ3JhbW1lci4NCj4gPj4gPj4NCj4gPj4gPj4gU28sIGlmIGZsYXNoIGRhdGEgd2ls bCBiZSBjb3JydXB0ZWQgZHVlIHRvIGZvciBleGFtcGxlIGhpZ2gNCj4gPj4gPj4gdGVtcGVyYXR1 cmVzIGR1cmluZyBzb2xkZXJpbmcsIGhvdyB3aWxsIHRoYXQgYmUgZGV0ZWN0ZWQgd2hlbg0KPiA+ PiA+PiB1c2luZyB0aGUNCj4gPj4gIm1hbnVhbCBtb2RlIj8NCj4gPj4gPj4NCj4gPj4gPj4gSWYg dGhhdCdzIHRoZSBqb2IgZm9yIHRoZSBwbGF0Zm9ybSBzb2Z0d2FyZSBJIGZhaWwgdG8gdW5kZXJz dGFuZA0KPiA+PiA+PiB3aHkgdGhlIFBSRV9TT0xERVJJTkdfUE9TVF9XUklURVMgc3RhdGUgbmVl ZHMgdG8gZXhpc3RzIGF0IGFsbCE/DQo+ID4+ID4NCj4gPj4gPiBUaGUgZmxvdyBvZiAiTWFudWFs IE1vZGUiIGlzOg0KPiA+Pg0KPiA+PiBUaGFua3MgZm9yIGNsYXJpZnlpbmcuDQo+ID4+DQo+ID4+ ID4NCj4gPj4gPiBbc2tpcHBpbmcgZmV3IGNvbW1vbiBzdGVwc10NCj4gPj4gPiAuLi4NCj4gPj4g PiBIb3N0IChQcm9ncmFtbWVyKSBzZXRzIFBST0RVQ1RJT05fU1RBVEVfQVdBUkVORVNTIHRvIDB4 MQ0KPiA+PiA+IChQUkVfU09MREVSSU5HX1dSSVRFUykNCj4gPj4gPg0KPiA+PiA+IEhvc3QgKFBy b2dyYW1tZXIpIHBlcmZvcm0gcHJlLXNvbGRlcmluZyBkYXRhIGxvYWRpbmcgYW5kL29yIGRldmlj ZQ0KPiA+PiA+IGNvbmZpZ3VyYXRpb24NCj4gPj4gPg0KPiA+PiA+IEhvc3QgKFByb2dyYW1tZXIp IHNldHMgUFJPRFVDVElPTl9TVEFURV9BV0FSRU5FU1MgVG8gMHgyDQo+ID4+ID4gKFBSRV9TT0xE RVJJTkdfUE9TVF9XUklURVMpLg0KPiA+PiA+IE5vIHdyaXRlcyBwYXN0IHRoaXMgcG9pbnQNCj4g Pj4NCj4gPj4gVG8gcmVwZWF0IG15IHF1ZXN0aW9uOg0KPiA+Pg0KPiA+PiBfVW5sZXNzXyB0aGVy ZSBhcmUgbm8gdmFsaWRhdGlvbiBvZiB0aGUgZGV2aWNlIHNvbGRlcmluZyBwZXJmb3JtZWQgYnkN Cj4gPj4gdGhlICJwcm9ncmFtbWVyIHRvb2wiIHBhc3QgdGhpcyBwb2ludCwgd2h5IGNvdWxkbid0 IHRoZSBob3N0IHNldA0KPiA+PiBQUk9EVUNUSU9OX1NUQVRFX0FXQVJFTkVTUyB0byAweDAgKE5P Uk1BTCkgYXQgdGhpcyBwb2ludCBpbnN0ZWFkPw0KPiA+Pg0KPiA+DQo+ID4gSWYgcHJvZ3JhbW1l ciBzZXQgdG8gTk9STUFMIGF0IHRoaXMgcG9pbnQsIHRoZSBwcm9ncmFtbWVkIGRhdGEgY2FuIGJl DQo+ID4gY29ycnVwdGVkIGR1cmluZyB0aGUgc29sZGVyaW5nIHByb2Nlc3MuDQo+ID4gZU1NQyBk ZXZpY2Ugd2lsbCBwcm90ZWN0IHByb2dyYW1tZWQgZGF0YSBkdXJpbmcgdGhlIHNvbGRlcmluZyBw cm9jZXNzDQo+ID4gaW4gUFJFX1NPTERFUklOR19QT1NUX1dSSVRFUyAoMHgyKSAgbW9kZS4NCj4g DQo+IEV4YWN0bHkgaG93IHdpbGwgdGhhdCBiZSBkb25lPw0KPiANCj4gRHVyaW5nIHRoZSBzb2xk ZXJpbmcgcHJvY2VzcyB0aGUgZU1NQyBjYXJkIGlzbid0IHBvd2VyZWQuIFNvIGhvdyBjb3VsZCBp dA0KPiBwcm90ZWN0IGl0c2VsZiBiZXR0ZXIsIGp1c3QgYmVjYXVzZSB0aGUgc3RhdGUgaXMgUFJF X1NPTERFUklOR19QT1NUX1dSSVRFUz8NCg0KVGhlIGRldmljZSB3aWxsIHVzZSAic3BlY2lhbCIg aW50ZXJuYWwgb3BlcmF0aW9ucyBmb3Igc2F2aW5nIGNvbnRlbnQgcHJpb3IgdG8NCmRldmljZSBz b2xkZXJpbmcsIGFuZCB3aWxsIHN3aXRjaCB0byAicmVndWxhciIgYWZ0ZXIgdGhlIHNvbGRlcmlu ZyBhbmQgZ2V0dGluZyAiTk9STUFMIiBtb2RlLg0KDQo+IA0KPiBLaW5kIHJlZ2FyZHMNCj4gVWZm ZQ0K -- 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
On 3 December 2014 at 12:39, Alex Lemberg <Alex.Lemberg@sandisk.com> wrote: > Hi Ulf, > >> -----Original Message----- >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] >> Sent: Tuesday, December 02, 2014 11:31 AM >> To: Alex Lemberg >> Cc: linux-mmc; Chris Ball; Avi Shchislowski >> Subject: Re: [PATCH 1/1] Production State Awareness support in host side >> >> On 25 November 2014 at 15:55, Alex Lemberg <Alex.Lemberg@sandisk.com> >> wrote: >> > >> > >> >> -----Original Message----- >> >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] >> >> Sent: Tuesday, November 25, 2014 12:57 PM >> >> To: Alex Lemberg >> >> Cc: linux-mmc; Chris Ball; Avi Shchislowski >> >> Subject: Re: [PATCH 1/1] Production State Awareness support in host >> >> side >> >> >> >> On 25 November 2014 at 10:17, Alex Lemberg >> <Alex.Lemberg@sandisk.com> >> >> wrote: >> >> > >> >> > >> >> >> -----Original Message----- >> >> >> From: Ulf Hansson [mailto:ulf.hansson@linaro.org] >> >> >> Sent: Monday, November 24, 2014 2:24 PM >> >> >> To: Alex Lemberg >> >> >> Cc: linux-mmc; Chris Ball; Avi Shchislowski >> >> >> Subject: Re: [PATCH 1/1] Production State Awareness support in >> >> >> host side >> >> >> >> >> >> [...] >> >> >> >> >> >> >> >> >> >> >> >> >> I am not so sure we should finalize the production phase >> >> >> >> >> while initializing the eMMC card like this. >> >> >> >> >> >> >> >> >> >> Certainly we should check the PSA state, but I think we >> >> >> >> >> should return an error if we think the device hasn’t >> >> >> >> >> completed production. It should be the responsibility for >> >> >> >> >> the "programming tools" to finalize the >> >> >> >> production, right!? >> >> >> >> > >> >> >> >> > According to eMMC spec, the switch to NORMAL should be done >> >> >> >> > after device >> >> >> >> soldering to final host (not programmer). >> >> >> >> > Please refer to "Figure 32 — Recommended Soldering procedure" >> >> >> >> > in >> >> >> >> eMMC5.0 specification document. >> >> >> >> > Also, since we are dealing with only "field" host here, we >> >> >> >> > are not >> >> >> >> touching/switching any other modes of PSA, but only Normal (field). >> >> >> >> > This code should run only once - in the beginning of device life cycle. >> >> >> >> >> >> >> >> I get your point, but I am not so sure. >> >> >> >> >> >> >> >> To me, I wouldn't trust that the platform binaries has been >> >> >> >> successfully programmed to the device, unless the programmer >> >> >> >> tool takes care of switching the device to "normal". >> >> >> >> >> >> >> > >> >> >> > Thanks Ulf! >> >> >> > Also, please note - PSA PRE_SOLDERING_POST_WRITES mode intent to >> >> >> > save device pre-loaded content during the soldering process. >> >> >> > Flash data can be corrupted due to soldering procedure high >> >> >> > temperature. So switching to Normal cannot be done by external >> >> >> programmer. >> >> >> >> >> >> So, if flash data will be corrupted due to for example high >> >> >> temperatures during soldering, how will that be detected when >> >> >> using the >> >> "manual mode"? >> >> >> >> >> >> If that's the job for the platform software I fail to understand >> >> >> why the PRE_SOLDERING_POST_WRITES state needs to exists at all!? >> >> > >> >> > The flow of "Manual Mode" is: >> >> >> >> Thanks for clarifying. >> >> >> >> > >> >> > [skipping few common steps] >> >> > ... >> >> > Host (Programmer) sets PRODUCTION_STATE_AWARENESS to 0x1 >> >> > (PRE_SOLDERING_WRITES) >> >> > >> >> > Host (Programmer) perform pre-soldering data loading and/or device >> >> > configuration >> >> > >> >> > Host (Programmer) sets PRODUCTION_STATE_AWARENESS To 0x2 >> >> > (PRE_SOLDERING_POST_WRITES). >> >> > No writes past this point >> >> >> >> To repeat my question: >> >> >> >> _Unless_ there are no validation of the device soldering performed by >> >> the "programmer tool" past this point, why couldn't the host set >> >> PRODUCTION_STATE_AWARENESS to 0x0 (NORMAL) at this point instead? >> >> >> > >> > If programmer set to NORMAL at this point, the programmed data can be >> > corrupted during the soldering process. >> > eMMC device will protect programmed data during the soldering process >> > in PRE_SOLDERING_POST_WRITES (0x2) mode. >> >> Exactly how will that be done? >> >> During the soldering process the eMMC card isn't powered. So how could it >> protect itself better, just because the state is PRE_SOLDERING_POST_WRITES? > > The device will use "special" internal operations for saving content prior to > device soldering, and will switch to "regular" after the soldering and getting "NORMAL" mode. Huh, this is a seriously hard question to get some answer to. I still don't get it. Are you saying the card are able to protect itself during the soldering phase? I assume soldiering is done without powering the card, thus I find it hard to understand that your statement can be true. Anyway, to convenience me, you need to give at least one example of what these protective operations could be during soldering. Kind regards Uffe -- 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
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogbGludXgtbW1jLW93bmVy QHZnZXIua2VybmVsLm9yZyBbbWFpbHRvOmxpbnV4LW1tYy0NCj4gb3duZXJAdmdlci5rZXJuZWwu b3JnXSBPbiBCZWhhbGYgT2YgVWxmIEhhbnNzb24NCj4gU2VudDogV2VkbmVzZGF5LCBEZWNlbWJl ciAwMywgMjAxNCAyOjI5IFBNDQo+IFRvOiBBbGV4IExlbWJlcmcNCj4gQ2M6IGxpbnV4LW1tYzsg Q2hyaXMgQmFsbDsgQXZpIFNoY2hpc2xvd3NraQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEvMV0g UHJvZHVjdGlvbiBTdGF0ZSBBd2FyZW5lc3Mgc3VwcG9ydCBpbiBob3N0IHNpZGUNCj4gDQo+IE9u IDMgRGVjZW1iZXIgMjAxNCBhdCAxMjozOSwgQWxleCBMZW1iZXJnIDxBbGV4LkxlbWJlcmdAc2Fu ZGlzay5jb20+DQo+IHdyb3RlOg0KPiA+IEhpIFVsZiwNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBVbGYgSGFuc3NvbiBbbWFpbHRvOnVsZi5oYW5zc29u QGxpbmFyby5vcmddDQo+ID4+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDAyLCAyMDE0IDExOjMx IEFNDQo+ID4+IFRvOiBBbGV4IExlbWJlcmcNCj4gPj4gQ2M6IGxpbnV4LW1tYzsgQ2hyaXMgQmFs bDsgQXZpIFNoY2hpc2xvd3NraQ0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIDEvMV0gUHJvZHVj dGlvbiBTdGF0ZSBBd2FyZW5lc3Mgc3VwcG9ydCBpbiBob3N0DQo+ID4+IHNpZGUNCj4gPj4NCj4g Pj4gT24gMjUgTm92ZW1iZXIgMjAxNCBhdCAxNTo1NSwgQWxleCBMZW1iZXJnDQo+IDxBbGV4Lkxl bWJlcmdAc2FuZGlzay5jb20+DQo+ID4+IHdyb3RlOg0KPiA+PiA+DQo+ID4+ID4NCj4gPj4gPj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gPj4gRnJvbTogVWxmIEhhbnNzb24gW21h aWx0bzp1bGYuaGFuc3NvbkBsaW5hcm8ub3JnXQ0KPiA+PiA+PiBTZW50OiBUdWVzZGF5LCBOb3Zl bWJlciAyNSwgMjAxNCAxMjo1NyBQTQ0KPiA+PiA+PiBUbzogQWxleCBMZW1iZXJnDQo+ID4+ID4+ IENjOiBsaW51eC1tbWM7IENocmlzIEJhbGw7IEF2aSBTaGNoaXNsb3dza2kNCj4gPj4gPj4gU3Vi amVjdDogUmU6IFtQQVRDSCAxLzFdIFByb2R1Y3Rpb24gU3RhdGUgQXdhcmVuZXNzIHN1cHBvcnQg aW4NCj4gPj4gPj4gaG9zdCBzaWRlDQo+ID4+ID4+DQo+ID4+ID4+IE9uIDI1IE5vdmVtYmVyIDIw MTQgYXQgMTA6MTcsIEFsZXggTGVtYmVyZw0KPiA+PiA8QWxleC5MZW1iZXJnQHNhbmRpc2suY29t Pg0KPiA+PiA+PiB3cm90ZToNCj4gPj4gPj4gPg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ID4+ID4+IEZyb206IFVsZiBIYW5zc29uIFttYWls dG86dWxmLmhhbnNzb25AbGluYXJvLm9yZ10NCj4gPj4gPj4gPj4gU2VudDogTW9uZGF5LCBOb3Zl bWJlciAyNCwgMjAxNCAyOjI0IFBNDQo+ID4+ID4+ID4+IFRvOiBBbGV4IExlbWJlcmcNCj4gPj4g Pj4gPj4gQ2M6IGxpbnV4LW1tYzsgQ2hyaXMgQmFsbDsgQXZpIFNoY2hpc2xvd3NraQ0KPiA+PiA+ PiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIDEvMV0gUHJvZHVjdGlvbiBTdGF0ZSBBd2FyZW5lc3Mg c3VwcG9ydCBpbg0KPiA+PiA+PiA+PiBob3N0IHNpZGUNCj4gPj4gPj4gPj4NCj4gPj4gPj4gPj4g Wy4uLl0NCj4gPj4gPj4gPj4NCj4gPj4gPj4gPj4gPj4gPj4NCj4gPj4gPj4gPj4gPj4gPj4gSSBh bSBub3Qgc28gc3VyZSB3ZSBzaG91bGQgZmluYWxpemUgdGhlIHByb2R1Y3Rpb24gcGhhc2UNCj4g Pj4gPj4gPj4gPj4gPj4gd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBlTU1DIGNhcmQgbGlrZSB0aGlz Lg0KPiA+PiA+PiA+PiA+PiA+Pg0KPiA+PiA+PiA+PiA+PiA+PiBDZXJ0YWlubHkgd2Ugc2hvdWxk IGNoZWNrIHRoZSBQU0Egc3RhdGUsIGJ1dCBJIHRoaW5rIHdlDQo+ID4+ID4+ID4+ID4+ID4+IHNo b3VsZCByZXR1cm4gYW4gZXJyb3IgaWYgd2UgdGhpbmsgdGhlIGRldmljZSBoYXNu4oCZdA0KPiA+ PiA+PiA+PiA+PiA+PiBjb21wbGV0ZWQgcHJvZHVjdGlvbi4gSXQgc2hvdWxkIGJlIHRoZSByZXNw b25zaWJpbGl0eSBmb3INCj4gPj4gPj4gPj4gPj4gPj4gdGhlICJwcm9ncmFtbWluZyB0b29scyIg dG8gZmluYWxpemUgdGhlDQo+ID4+ID4+ID4+ID4+IHByb2R1Y3Rpb24sIHJpZ2h0IT8NCj4gPj4g Pj4gPj4gPj4gPg0KPiA+PiA+PiA+PiA+PiA+IEFjY29yZGluZyB0byBlTU1DIHNwZWMsIHRoZSBz d2l0Y2ggdG8gTk9STUFMIHNob3VsZCBiZQ0KPiA+PiA+PiA+PiA+PiA+IGRvbmUgYWZ0ZXIgZGV2 aWNlDQo+ID4+ID4+ID4+ID4+IHNvbGRlcmluZyB0byBmaW5hbCBob3N0IChub3QgcHJvZ3JhbW1l cikuDQo+ID4+ID4+ID4+ID4+ID4gUGxlYXNlIHJlZmVyIHRvICJGaWd1cmUgMzIg4oCUIFJlY29t bWVuZGVkIFNvbGRlcmluZw0KPiBwcm9jZWR1cmUiDQo+ID4+ID4+ID4+ID4+ID4gaW4NCj4gPj4g Pj4gPj4gPj4gZU1NQzUuMCBzcGVjaWZpY2F0aW9uIGRvY3VtZW50Lg0KPiA+PiA+PiA+PiA+PiA+ IEFsc28sIHNpbmNlIHdlIGFyZSBkZWFsaW5nIHdpdGggb25seSAiZmllbGQiIGhvc3QgaGVyZSwg d2UNCj4gPj4gPj4gPj4gPj4gPiBhcmUgbm90DQo+ID4+ID4+ID4+ID4+IHRvdWNoaW5nL3N3aXRj aGluZyBhbnkgb3RoZXIgbW9kZXMgb2YgUFNBLCBidXQgb25seSBOb3JtYWwNCj4gKGZpZWxkKS4N Cj4gPj4gPj4gPj4gPj4gPiBUaGlzIGNvZGUgc2hvdWxkIHJ1biBvbmx5IG9uY2UgLSBpbiB0aGUg YmVnaW5uaW5nIG9mIGRldmljZSBsaWZlDQo+IGN5Y2xlLg0KPiA+PiA+PiA+PiA+Pg0KPiA+PiA+ PiA+PiA+PiBJIGdldCB5b3VyIHBvaW50LCBidXQgSSBhbSBub3Qgc28gc3VyZS4NCj4gPj4gPj4g Pj4gPj4NCj4gPj4gPj4gPj4gPj4gVG8gbWUsIEkgd291bGRuJ3QgdHJ1c3QgdGhhdCB0aGUgcGxh dGZvcm0gYmluYXJpZXMgaGFzIGJlZW4NCj4gPj4gPj4gPj4gPj4gc3VjY2Vzc2Z1bGx5IHByb2dy YW1tZWQgdG8gdGhlIGRldmljZSwgdW5sZXNzIHRoZSBwcm9ncmFtbWVyDQo+ID4+ID4+ID4+ID4+ IHRvb2wgdGFrZXMgY2FyZSBvZiBzd2l0Y2hpbmcgdGhlIGRldmljZSB0byAibm9ybWFsIi4NCj4g Pj4gPj4gPj4gPj4NCj4gPj4gPj4gPj4gPg0KPiA+PiA+PiA+PiA+IFRoYW5rcyBVbGYhDQo+ID4+ ID4+ID4+ID4gQWxzbywgcGxlYXNlIG5vdGUgLSBQU0EgUFJFX1NPTERFUklOR19QT1NUX1dSSVRF UyBtb2RlIGludGVudA0KPiA+PiA+PiA+PiA+IHRvIHNhdmUgZGV2aWNlIHByZS1sb2FkZWQgY29u dGVudCBkdXJpbmcgdGhlIHNvbGRlcmluZyBwcm9jZXNzLg0KPiA+PiA+PiA+PiA+IEZsYXNoIGRh dGEgY2FuIGJlIGNvcnJ1cHRlZCBkdWUgdG8gc29sZGVyaW5nIHByb2NlZHVyZSBoaWdoDQo+ID4+ ID4+ID4+ID4gdGVtcGVyYXR1cmUuIFNvIHN3aXRjaGluZyB0byBOb3JtYWwgY2Fubm90IGJlIGRv bmUgYnkNCj4gPj4gPj4gPj4gPiBleHRlcm5hbA0KPiA+PiA+PiA+PiBwcm9ncmFtbWVyLg0KPiA+ PiA+PiA+Pg0KPiA+PiA+PiA+PiBTbywgaWYgZmxhc2ggZGF0YSB3aWxsIGJlIGNvcnJ1cHRlZCBk dWUgdG8gZm9yIGV4YW1wbGUgaGlnaA0KPiA+PiA+PiA+PiB0ZW1wZXJhdHVyZXMgZHVyaW5nIHNv bGRlcmluZywgaG93IHdpbGwgdGhhdCBiZSBkZXRlY3RlZCB3aGVuDQo+ID4+ID4+ID4+IHVzaW5n IHRoZQ0KPiA+PiA+PiAibWFudWFsIG1vZGUiPw0KPiA+PiA+PiA+Pg0KPiA+PiA+PiA+PiBJZiB0 aGF0J3MgdGhlIGpvYiBmb3IgdGhlIHBsYXRmb3JtIHNvZnR3YXJlIEkgZmFpbCB0bw0KPiA+PiA+ PiA+PiB1bmRlcnN0YW5kIHdoeSB0aGUgUFJFX1NPTERFUklOR19QT1NUX1dSSVRFUyBzdGF0ZSBu ZWVkcyB0bw0KPiBleGlzdHMgYXQgYWxsIT8NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IFRoZSBmbG93 IG9mICJNYW51YWwgTW9kZSIgaXM6DQo+ID4+ID4+DQo+ID4+ID4+IFRoYW5rcyBmb3IgY2xhcmlm eWluZy4NCj4gPj4gPj4NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IFtza2lwcGluZyBmZXcgY29tbW9u IHN0ZXBzXQ0KPiA+PiA+PiA+IC4uLg0KPiA+PiA+PiA+IEhvc3QgKFByb2dyYW1tZXIpIHNldHMg UFJPRFVDVElPTl9TVEFURV9BV0FSRU5FU1MgdG8gMHgxDQo+ID4+ID4+ID4gKFBSRV9TT0xERVJJ TkdfV1JJVEVTKQ0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gSG9zdCAoUHJvZ3JhbW1lcikgcGVyZm9y bSBwcmUtc29sZGVyaW5nIGRhdGEgbG9hZGluZyBhbmQvb3INCj4gPj4gPj4gPiBkZXZpY2UgY29u ZmlndXJhdGlvbg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gSG9zdCAoUHJvZ3JhbW1lcikgc2V0cyBQ Uk9EVUNUSU9OX1NUQVRFX0FXQVJFTkVTUyBUbyAweDINCj4gPj4gPj4gPiAoUFJFX1NPTERFUklO R19QT1NUX1dSSVRFUykuDQo+ID4+ID4+ID4gTm8gd3JpdGVzIHBhc3QgdGhpcyBwb2ludA0KPiA+ PiA+Pg0KPiA+PiA+PiBUbyByZXBlYXQgbXkgcXVlc3Rpb246DQo+ID4+ID4+DQo+ID4+ID4+IF9V bmxlc3NfIHRoZXJlIGFyZSBubyB2YWxpZGF0aW9uIG9mIHRoZSBkZXZpY2Ugc29sZGVyaW5nIHBl cmZvcm1lZA0KPiA+PiA+PiBieSB0aGUgInByb2dyYW1tZXIgdG9vbCIgcGFzdCB0aGlzIHBvaW50 LCB3aHkgY291bGRuJ3QgdGhlIGhvc3QNCj4gPj4gPj4gc2V0IFBST0RVQ1RJT05fU1RBVEVfQVdB UkVORVNTIHRvIDB4MCAoTk9STUFMKSBhdCB0aGlzIHBvaW50DQo+IGluc3RlYWQ/DQo+ID4+ID4+ DQo+ID4+ID4NCj4gPj4gPiBJZiBwcm9ncmFtbWVyIHNldCB0byBOT1JNQUwgYXQgdGhpcyBwb2lu dCwgdGhlIHByb2dyYW1tZWQgZGF0YSBjYW4NCj4gPj4gPiBiZSBjb3JydXB0ZWQgZHVyaW5nIHRo ZSBzb2xkZXJpbmcgcHJvY2Vzcy4NCj4gPj4gPiBlTU1DIGRldmljZSB3aWxsIHByb3RlY3QgcHJv Z3JhbW1lZCBkYXRhIGR1cmluZyB0aGUgc29sZGVyaW5nDQo+ID4+ID4gcHJvY2VzcyBpbiBQUkVf U09MREVSSU5HX1BPU1RfV1JJVEVTICgweDIpICBtb2RlLg0KPiA+Pg0KPiA+PiBFeGFjdGx5IGhv dyB3aWxsIHRoYXQgYmUgZG9uZT8NCj4gPj4NCj4gPj4gRHVyaW5nIHRoZSBzb2xkZXJpbmcgcHJv Y2VzcyB0aGUgZU1NQyBjYXJkIGlzbid0IHBvd2VyZWQuIFNvIGhvdw0KPiA+PiBjb3VsZCBpdCBw cm90ZWN0IGl0c2VsZiBiZXR0ZXIsIGp1c3QgYmVjYXVzZSB0aGUgc3RhdGUgaXMNCj4gUFJFX1NP TERFUklOR19QT1NUX1dSSVRFUz8NCj4gPg0KPiA+IFRoZSBkZXZpY2Ugd2lsbCB1c2UgInNwZWNp YWwiIGludGVybmFsIG9wZXJhdGlvbnMgZm9yIHNhdmluZyBjb250ZW50DQo+ID4gcHJpb3IgdG8g ZGV2aWNlIHNvbGRlcmluZywgYW5kIHdpbGwgc3dpdGNoIHRvICJyZWd1bGFyIiBhZnRlciB0aGUg c29sZGVyaW5nIGFuZA0KPiBnZXR0aW5nICJOT1JNQUwiIG1vZGUuDQo+IA0KPiBIdWgsIHRoaXMg aXMgYSBzZXJpb3VzbHkgaGFyZCBxdWVzdGlvbiB0byBnZXQgc29tZSBhbnN3ZXIgdG8uIEkgc3Rp bGwgZG9uJ3QgZ2V0IGl0Lg0KPiANCj4gQXJlIHlvdSBzYXlpbmcgdGhlIGNhcmQgYXJlIGFibGUg dG8gcHJvdGVjdCBpdHNlbGYgZHVyaW5nIHRoZSBzb2xkZXJpbmcgcGhhc2U/IEkNCj4gYXNzdW1l IHNvbGRpZXJpbmcgaXMgZG9uZSB3aXRob3V0IHBvd2VyaW5nIHRoZSBjYXJkLCB0aHVzIEkgZmlu ZCBpdCBoYXJkIHRvDQo+IHVuZGVyc3RhbmQgdGhhdCB5b3VyIHN0YXRlbWVudCBjYW4gYmUgdHJ1 ZS4NCj4gDQo+IEFueXdheSwgdG8gY29udmVuaWVuY2UgbWUsIHlvdSBuZWVkIHRvIGdpdmUgYXQg bGVhc3Qgb25lIGV4YW1wbGUgb2Ygd2hhdA0KPiB0aGVzZSBwcm90ZWN0aXZlIG9wZXJhdGlvbnMg Y291bGQgYmUgZHVyaW5nIHNvbGRlcmluZy4NCj4NCg0KUGxlYXNlIGxldCBtZSB0cnkgdG8gY2xh cmlmeS4NClRoZSByaXNrIGluIHNvbGRlcmluZyBpcyB0aGF0IGRhdGEgd2hpY2ggd2FzIGxvYWRl ZCBpbnRvIHRoZSBmbGFzaCB3b3VsZCBiZSBjb3JydXB0ZWQNCmR1ZSB0byB0aGUgaGVhdCBvZiBz b2xkZXJpbmcgdGhlIGRldmljZSB0byB0aGUgaG9zdC4NClRvIG1pdGlnYXRlIHRoZSByaXNrIHRo ZSBwcm9kdWN0aW9uIHRvb2xzIChwcm9ncmFtbWVyKSBhbmQgaG9zdCBwbGF0Zm9ybSBzcGVjaWZ5 IHRvDQp0aGUgZGV2aWNlIGl0cyBjdXJyZW50ICBzdGF0ZS4NCkJhc2ljYWxseSB0aGVyZSBhcmUg MiB0eXBlcyBvZiBzdGF0ZXM6DQpwcmUtc29sZGVyaW5nIHN0YXRlIGFuZCBwb3N0LXNvbGRlcmlu ZyBzdGF0ZSAo4oCcTm9ybWFs4oCdKS4gDQoNCldoZW4gdGhlIGRldmljZSBjb250cm9sbGVyIGlk ZW50aWZpZXMgdGhhdCBpdCBpcyBpbiBwcmUtc29sZGVyaW5nIHN0YXRlIGl0IHdvdWxkIHVzZQ0K 4oCcc3BlY2lhbOKAnSBmbGFzaCBwcm9ncmFtbWluZyBtYW5uZXIgaW4gb3JkZXIgdG8gd3JpdGUg dG8gdGhlIGZsYXNoLg0KVGhpcyDigJxzcGVjaWFs4oCdIGZsYXNoIHByb2dyYW1taW5nIG1ha2Vz IHRoZSBkYXRhLCB3aGljaCB3YXMgcHJldmlvdXNseSB3cml0dGVuLA0KaW1tdW5lIHRvIHRoZSBy aXNreSBzb2xkZXJpbmcgcHJvY2VkdXJlIGFuZCB0aGUgZGF0YSB3aWxsIG5vdCBiZSBjb3JydXB0 ZWQgYXQNCnNvbGRlcmluZy4NCihIb3dldmVyLCDigJxzcGVjaWFs4oCdIGZsYXNoIHByb2dyYW1t aW5nIGNvbWVzIHdpdGggYSBjb3N0LCB3aGljaCBkZXBlbmRzIG9uIHRoZQ0KdmVuZG9yIHByb3By aWV0YXJ5IHNvbHV0aW9uKS4NCkFzIHlvdSBjYW4gc2VlLCB0aGUgZGF0YSBwcm90ZWN0aW9uIGlz IGRvbmUgd2hpbGUgcHJvZ3JhbW1pbmcgdGhlIGRhdGEgdXNpbmcgdGhlDQrigJxzcGVjaWFs4oCd IG1ldGhvZCBiZWZvcmUgdGhlIHNvbGRlcmluZyBhbmQgbm90IGR1cmluZyBzb2xkZXJpbmcuDQoN ClRvIHJlZHVjZSB0aGUgY29zdCB0byBtaW5pbXVtLCBhbmQgYWxsb3cgcHJvcGVyIG9wZXJhdGlv biBvZiB0aGUgc3RvcmFnZSBkZXZpY2UsDQp0aGUgZGV2aWNlIHNob3VsZCBOT1QgdXNlIHRoZSDi gJxzcGVjaWFs4oCdIGZsYXNoIHByb2dyYW1taW5nIHdoZW4gaXQgZG9lcyBub3QgaGF2ZSB0by4N ClRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZXZpY2Ugc3RvcHMgdGhlIOKAnHNwZWNpYWzigJ0gZmxh c2ggcHJvZ3JhbW1pbmcgYW5kIHJlc3VtZXMNCnJlZ3VsYXIgZmxhc2ggcHJvZ3JhbW1pbmcgdGhl IGRldmljZSBtdXN0IGtub3cgdGhhdCBpdCBpcyBpbiBwb3N0LXNvbGRlcmluZyBzdGF0ZS4NClRo aXMgaW5kaWNhdGlvbiBjb21lcyBmcm9tIHRoZSBob3N0IHdoZW4gaXQgc2V0cyBQUk9EVUNUSU9O X1NUQVRFX0FXQVJFTkVTUw0KYmFjayB0byBOT1JNQUwgc3RhdGUuDQpUaGVyZWZvcmUsIHRoZSBo b3N0IHBsYXRmb3JtIG5lZWRzIHRvIHNlbmQgdGhpcyBpbmRpY2F0aW9uIHRvIHRoZSBkZXZpY2Ug QUZURVIgZGV2aWNlDQpzb2xkZXJpbmcgdG8gdGhlIHBsYXRmb3JtLg0KDQpJIGhvcGUgdGhhdCB0 aGlzIGNsYXJpZmllcyB0aGUgcHJvY2VkdXJlIGFuZCB0aGUgbmVlZCBmb3Igc2VuZGluZyB0aGUg cG9zdC1zb2xkZXJpbmcNCmluZGljYXRpb24gdG8gdGhlIGRldmljZSBieSB0aGUgaG9zdCBwbGF0 Zm9ybS4NCg0KPiBLaW5kIHJlZ2FyZHMNCj4gVWZmZQ0KPiAtLQ0KPiBUbyB1bnN1YnNjcmliZSBm cm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtbW1jIiBpbiB0 aGUgYm9keQ0KPiBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZyBNb3Jl IG1ham9yZG9tbyBpbmZvIGF0DQo+IGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWlu Zm8uaHRtbA0K -- 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 --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 02ad792..2d59722 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -605,6 +605,20 @@ static int mmc_read_ext_csd(struct mmc_card *card) mmc_hostname(card->host)); err = 0; } + /* eMMC v5.0 or later */ + if (card->ext_csd.rev > 6) { + card->ext_csd.psa = + ext_csd[EXT_CSD_PSA]; + if (ext_csd[EXT_CSD_PSA_TIMEOUT] > 0) { + card->ext_csd.psa_timeout = + 100 * + (1 << ext_csd[EXT_CSD_PSA_TIMEOUT]); + } else { + card->ext_csd.psa_timeout = 0; + pr_warn("%s: EXT_CSD PSA Timeout is zero\n", + mmc_hostname(card->host)); + } + } return err; } @@ -1330,6 +1344,25 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, if (card->csd.dsr_imp && host->dsr_req) mmc_set_dsr(host); + /* + * eMMC v5.0 or later + * and Production State Awareness state is EXT_CSD_PSA_POST_SOLDERING_WRITES + * The host should set the device to NORMAL mode + */ + if ((card->ext_csd.rev > 6) + && (card->ext_csd.psa == EXT_CSD_PSA_POST_SOLDERING_WRITES)) { + unsigned int timeout; + /*Zero value in PSA Timeout – PSA is not defined*/ + if (card->ext_csd.psa_timeout != 0) { + timeout = DIV_ROUND_UP(card->ext_csd.psa_timeout, 1000); + card->ext_csd.psa = EXT_CSD_PSA_NORMAL; + err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, + EXT_CSD_PSA, card->ext_csd.psa, timeout); + if (err && err != -EBADMSG) + goto free_card; + } + } + /* * Select card, as all following commands rely on that. */ diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 4d69c00..09ac3b0 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h @@ -60,9 +60,11 @@ struct mmc_ext_csd { u8 packed_event_en; unsigned int part_time; /* Units: ms */ unsigned int sa_timeout; /* Units: 100ns */ + unsigned int psa_timeout; /* Units: 100us */ unsigned int generic_cmd6_time; /* Units: 10ms */ unsigned int power_off_longtime; /* Units: ms */ u8 power_off_notification; /* state */ + u8 psa; /* production state awareness */ unsigned int hs_max_dtr; unsigned int hs200_max_dtr; #define MMC_HIGH_26_MAX_DTR 26000000 diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h index 49ad7a9..eb170ff 100644 --- a/include/linux/mmc/mmc.h +++ b/include/linux/mmc/mmc.h @@ -285,6 +285,9 @@ struct _mmc_csd { #define EXT_CSD_EXP_EVENTS_STATUS 54 /* RO, 2 bytes */ #define EXT_CSD_EXP_EVENTS_CTRL 56 /* R/W, 2 bytes */ #define EXT_CSD_DATA_SECTOR_SIZE 61 /* R */ +#define EXT_CSD_QRDY_SUPPORT 96 /* RO */ +#define EXT_CSD_CMDQ_QRDY_FUNCTION 97 /* R/W */ +#define EXT_CSD_PSA 133 /* R/W/E */ #define EXT_CSD_GP_SIZE_MULT 143 /* R/W */ #define EXT_CSD_PARTITION_SETTING_COMPLETED 155 /* R/W */ #define EXT_CSD_PARTITION_ATTRIBUTE 156 /* R/W */ @@ -315,6 +318,7 @@ struct _mmc_csd { #define EXT_CSD_PWR_CL_26_360 203 /* RO */ #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ #define EXT_CSD_S_A_TIMEOUT 217 /* RO */ +#define EXT_CSD_PSA_TIMEOUT 218 /* RO */ #define EXT_CSD_REL_WR_SEC_C 222 /* RO */ #define EXT_CSD_HC_WP_GRP_SIZE 221 /* RO */ #define EXT_CSD_ERASE_TIMEOUT_MULT 223 /* RO */ @@ -433,6 +437,13 @@ struct _mmc_csd { #define EXT_CSD_BKOPS_LEVEL_2 0x2 /* + * PRODUCTION STATE AWARENESS fields + */ + +#define EXT_CSD_PSA_NORMAL 0x00 +#define EXT_CSD_PSA_POST_SOLDERING_WRITES 0x02 + +/* * MMC_SWITCH access modes */
Adding support for PSA (Production State Awareness) feature for all eMMC devices with revision >=5.0 In this patch the eMMC driver will check if device was completed its Production State mode, and will switch it to Normal (field) mode. Switching to normal mode signal the device to complete its work in production mode and start working in regular performance mode. Signed-off-by: Alex Lemberg <alex.lemberg@sandisk.com>