Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1233900
| From | Bean Huo 霍斌斌 (beanhuo) <beanhuo@micron.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 7/9] drivers:mtd:add NAND dual plane program support |
| Date | 2015-09-28 09:10 +0200 |
| Message-ID | <qdAJs-6Z2-25@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
QWRkIE5BTkQgZHVhbCBwbGFuZSBwcm9ncmFtIGZ1bmN0aW9uLg0KDQpTaWduZWQtb2ZmLWJ5OiBC ZWFuIEh1byA8YmVhbmh1b0BtaWNyb24uY29tPg0KLS0tDQogZHJpdmVycy9tdGQvbXRkcGFydC5j ICAgICAgICB8ICAyMSArKysNCiBkcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jIHwgNDAxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAyIGZpbGVzIGNoYW5n ZWQsIDQyMiBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tdGRwYXJ0 LmMgYi9kcml2ZXJzL210ZC9tdGRwYXJ0LmMNCmluZGV4IGNhZmRiODguLjNlZTk2ZTcgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL210ZC9tdGRwYXJ0LmMNCisrKyBiL2RyaXZlcnMvbXRkL210ZHBhcnQu Yw0KQEAgLTE0Nyw2ICsxNDcsNyBAQCBzdGF0aWMgaW50IHBhcnRfcmVhZF91c2VyX3Byb3RfcmVn KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgZnJvbSwNCiAJCXNpemVfdCBsZW4sIHNpemVf dCAqcmV0bGVuLCB1X2NoYXIgKmJ1ZikNCiB7DQogCXN0cnVjdCBtdGRfcGFydCAqcGFydCA9IFBB UlQobXRkKTsNCisNCiAJcmV0dXJuIHBhcnQtPm1hc3Rlci0+X3JlYWRfdXNlcl9wcm90X3JlZyhw YXJ0LT5tYXN0ZXIsIGZyb20sIGxlbiwNCiAJCQkJCQkgcmV0bGVuLCBidWYpOw0KIH0NCkBAIC0x NTUsNiArMTU2LDcgQEAgc3RhdGljIGludCBwYXJ0X2dldF91c2VyX3Byb3RfaW5mbyhzdHJ1Y3Qg bXRkX2luZm8gKm10ZCwgc2l6ZV90IGxlbiwNCiAJCQkJICAgc2l6ZV90ICpyZXRsZW4sIHN0cnVj dCBvdHBfaW5mbyAqYnVmKQ0KIHsNCiAJc3RydWN0IG10ZF9wYXJ0ICpwYXJ0ID0gUEFSVChtdGQp Ow0KKw0KIAlyZXR1cm4gcGFydC0+bWFzdGVyLT5fZ2V0X3VzZXJfcHJvdF9pbmZvKHBhcnQtPm1h c3RlciwgbGVuLCByZXRsZW4sDQogCQkJCQkJIGJ1Zik7DQogfQ0KQEAgLTIwMyw2ICsyMDUsMjMg QEAgc3RhdGljIGludCBwYXJ0X3dyaXRlX29vYihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90 IHRvLA0KIAlyZXR1cm4gcGFydC0+bWFzdGVyLT5fd3JpdGVfb29iKHBhcnQtPm1hc3RlciwgdG8g KyBwYXJ0LT5vZmZzZXQsIG9wcyk7DQogfQ0KIA0KK3N0YXRpYyBpbnQgcGFydF93cml0ZV9kdWFs X3BsYW5lX29vYihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IHRvX3BsYW5lMCwNCisJCQkg ICAgc3RydWN0IG10ZF9vb2Jfb3BzICpvcHNfcGxhbmUwLCBsb2ZmX3QgdG9fcGxhbmUxLA0KKwkJ CSAgICBzdHJ1Y3QgbXRkX29vYl9vcHMgKm9wc19wbGFuZTEpDQorew0KKwlzdHJ1Y3QgbXRkX3Bh cnQgKnBhcnQgPSBQQVJUKG10ZCk7DQorDQorCWlmICgodG9fcGxhbmUwID49IG10ZC0+c2l6ZSkg fHwgKCh0b19wbGFuZTEgPj0gbXRkLT5zaXplKSkpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisJaWYg KChvcHNfcGxhbmUwLT5kYXRidWYgJiYgdG9fcGxhbmUwICsgb3BzX3BsYW5lMC0+bGVuID4gbXRk LT5zaXplKSB8fA0KKwkgICAgKG9wc19wbGFuZTEtPmRhdGJ1ZiAmJiB0b19wbGFuZTEgKyBvcHNf cGxhbmUwLT5sZW4gPiBtdGQtPnNpemUpKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQorCXJldHVy biBwYXJ0LT5tYXN0ZXItPl9kdWFsX3BsYW5lX3dyaXRlX29vYihwYXJ0LT5tYXN0ZXIsDQorCQkJ CXRvX3BsYW5lMCArIHBhcnQtPm9mZnNldCwgb3BzX3BsYW5lMCwNCisJCQkJdG9fcGxhbmUxICsg cGFydC0+b2Zmc2V0LCBvcHNfcGxhbmUxKTsNCit9DQorDQogc3RhdGljIGludCBwYXJ0X3dyaXRl X3VzZXJfcHJvdF9yZWcoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLA0KIAkJc2l6 ZV90IGxlbiwgc2l6ZV90ICpyZXRsZW4sIHVfY2hhciAqYnVmKQ0KIHsNCkBAIC00MDksNiArNDI4 LDggQEAgc3RhdGljIHN0cnVjdCBtdGRfcGFydCAqYWxsb2NhdGVfcGFydGl0aW9uKHN0cnVjdCBt dGRfaW5mbyAqbWFzdGVyLA0KIAkJc2xhdmUtPm10ZC5fcmVhZF9vb2IgPSBwYXJ0X3JlYWRfb29i Ow0KIAlpZiAobWFzdGVyLT5fd3JpdGVfb29iKQ0KIAkJc2xhdmUtPm10ZC5fd3JpdGVfb29iID0g cGFydF93cml0ZV9vb2I7DQorCWlmIChtYXN0ZXItPl9kdWFsX3BsYW5lX3dyaXRlX29vYikNCisJ CXNsYXZlLT5tdGQuX2R1YWxfcGxhbmVfd3JpdGVfb29iID0gcGFydF93cml0ZV9kdWFsX3BsYW5l X29vYjsNCiAJaWYgKG1hc3Rlci0+X3JlYWRfdXNlcl9wcm90X3JlZykNCiAJCXNsYXZlLT5tdGQu X3JlYWRfdXNlcl9wcm90X3JlZyA9IHBhcnRfcmVhZF91c2VyX3Byb3RfcmVnOw0KIAlpZiAobWFz dGVyLT5fcmVhZF9mYWN0X3Byb3RfcmVnKQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQv bmFuZF9iYXNlLmMgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jDQppbmRleCBjZWI2OGNh Li5iY2M5ZTkyIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2Jhc2UuYw0KKysr IGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2Jhc2UuYw0KQEAgLTIyNDksNiArMjI0OSw3NSBAQCBz dGF0aWMgaW50IG5hbmRfd3JpdGVfcGFnZV9zeW5kcm9tZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwN CiANCiAJcmV0dXJuIDA7DQogfQ0KKy8qKg0KKyAqIG5hbmRfd3JpdGVfcGxhbmVfcGFnZSAtIFtS RVBMQUNFQUJMRV0gd3JpdGUgb25lIHBhZ2UNCisgKiBAbXRkOiBNVEQgZGV2aWNlIHN0cnVjdHVy ZQ0KKyAqIEBjaGlwOiBOQU5EIGNoaXAgZGVzY3JpcHRvcg0KKyAqIEBvZmZzZXQ6IGFkZHJlc3Mg b2Zmc2V0IHdpdGhpbiB0aGUgcGFnZQ0KKyAqIEBkYXRhX2xlbjogbGVuZ3RoIG9mIGFjdHVhbCBk YXRhIHRvIGJlIHdyaXR0ZW4NCisgKiBAYnVmOiB0aGUgZGF0YSB0byB3cml0ZQ0KKyAqIEBvb2Jf cmVxdWlyZWQ6IG11c3Qgd3JpdGUgY2hpcC0+b29iX3BvaSB0byBPT0INCisgKiBAcGFnZTogcGFn ZSBudW1iZXIgdG8gd3JpdGUNCisgKiBAcGxhbmU6IG11bHRpcGxlIHBsYW5lIHByb2dyYW1taW5n DQorICogQHJhdzogdXNlIF9yYXcgdmVyc2lvbiBvZiB3cml0ZV9wYWdlDQorICovDQorc3RhdGlj IGludCBuYW5kX3dyaXRlX3BsYW5lX3BhZ2Uoc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVjdCBu YW5kX2NoaXAgKmNoaXAsDQorCQkJICAgIHVpbnQzMl90IG9mZnNldCwgaW50IGRhdGFfbGVuLCBj b25zdCB1aW50OF90ICpidWYsDQorCQkJICAgIGludCBvb2JfcmVxdWlyZWQsIGludCBwYWdlLCBp bnQgcGxhbmUsIGludCByYXcpDQorew0KKwlpbnQgc3RhdHVzLCBzdWJwYWdlOw0KKw0KKwlpZiAo IShjaGlwLT5vcHRpb25zICYgTkFORF9OT19TVUJQQUdFX1dSSVRFKSAmJg0KKwkgICAgY2hpcC0+ ZWNjLndyaXRlX3N1YnBhZ2UpDQorCQlzdWJwYWdlID0gb2Zmc2V0IHx8IChkYXRhX2xlbiA8IG10 ZC0+d3JpdGVzaXplKTsNCisJZWxzZQ0KKwkJc3VicGFnZSA9IDA7DQorDQorCWNoaXAtPmNtZGZ1 bmMobXRkLCBOQU5EX0NNRF9TRVFJTiwgMHgwMCwgcGFnZSk7DQorDQorCWlmICh1bmxpa2VseShy YXcpKQ0KKwkJc3RhdHVzID0gY2hpcC0+ZWNjLndyaXRlX3BhZ2VfcmF3KG10ZCwgY2hpcCwgYnVm LA0KKwkJCQkJCQlvb2JfcmVxdWlyZWQpOw0KKwllbHNlIGlmIChzdWJwYWdlKQ0KKwkJc3RhdHVz ID0gY2hpcC0+ZWNjLndyaXRlX3N1YnBhZ2UobXRkLCBjaGlwLCBvZmZzZXQsIGRhdGFfbGVuLA0K KwkJCQkJCQlidWYsIG9vYl9yZXF1aXJlZCk7DQorCWVsc2UNCisJCXN0YXR1cyA9IGNoaXAtPmVj Yy53cml0ZV9wYWdlKG10ZCwgY2hpcCwgYnVmLCBvb2JfcmVxdWlyZWQpOw0KKw0KKwlpZiAoc3Rh dHVzIDwgMCkNCisJCXJldHVybiBzdGF0dXM7DQorDQorCS8qIE11bHRpcGFsIHBsYW5lIHByb2dh bW1pbmcgKi8NCisJaWYgKHBsYW5lKSB7DQorCQljaGlwLT5jbWRmdW5jKG10ZCwgTkFORF9DTURf TVVMVElfUEFHRVBST0csIC0xLCAtMSk7DQorCQlzdGF0dXMgPSBjaGlwLT53YWl0ZnVuYyhtdGQs IGNoaXApOw0KKwkJLyoNCisJCSAqIFNlZSBpZiBvcGVyYXRpb24gZmFpbGVkIGFuZCBhZGRpdGlv bmFsIHN0YXR1cyBjaGVja3MgYXJlDQorCQkgKiBhdmFpbGFibGUuDQorCQkgKi8NCisJICAgIGlm ICgoc3RhdHVzICYgTkFORF9TVEFUVVNfRkFJTCkgJiYgKGNoaXAtPmVycnN0YXQpKQ0KKwkJc3Rh dHVzID0gY2hpcC0+ZXJyc3RhdChtdGQsIGNoaXAsIEZMX1dSSVRJTkcsIHN0YXR1cywgcGFnZSk7 DQorDQorCSAgICBpZiAoc3RhdHVzICYgTkFORF9TVEFUVVNfRkFJTCkNCisJCXJldHVybiAtRUlP Ow0KKw0KKwl9IGVsc2UgaWYgKCFwbGFuZSB8fCAhTkFORF9IQVNfQ0FDSEVQUk9HKGNoaXApKSB7 DQorDQorCQljaGlwLT5jbWRmdW5jKG10ZCwgTkFORF9DTURfUEFHRVBST0csIC0xLCAtMSk7DQor CQlzdGF0dXMgPSBjaGlwLT53YWl0ZnVuYyhtdGQsIGNoaXApOw0KKwkJLyoNCisJCSAqIFNlZSBp ZiBvcGVyYXRpb24gZmFpbGVkIGFuZCBhZGRpdGlvbmFsIHN0YXR1cyBjaGVja3MgYXJlDQorCQkg KiBhdmFpbGFibGUuDQorCQkgKi8NCisJICAgIGlmICgoc3RhdHVzICYgTkFORF9TVEFUVVNfRkFJ TCkgJiYgKGNoaXAtPmVycnN0YXQpKQ0KKwkJc3RhdHVzID0gY2hpcC0+ZXJyc3RhdChtdGQsIGNo aXAsIEZMX1dSSVRJTkcsIHN0YXR1cywgcGFnZSk7DQorDQorCSAgICBpZiAoc3RhdHVzICYgTkFO RF9TVEFUVVNfRkFJTCkNCisJCXJldHVybiAtRUlPOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30N CiANCiAvKioNCiAgKiBuYW5kX3dyaXRlX3BhZ2UgLSBbUkVQTEFDRUFCTEVdIHdyaXRlIG9uZSBw YWdlDQpAQCAtMjM3Myw2ICsyNDQyLDI3NyBAQCBzdGF0aWMgdWludDhfdCAqbmFuZF9maWxsX29v YihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdWludDhfdCAqb29iLCBzaXplX3QgbGVuLA0KIH0NCiAN CiAjZGVmaW5lIE5PVEFMSUdORUQoeCkJKCh4ICYgKGNoaXAtPnN1YnBhZ2VzaXplIC0gMSkpICE9 IDApDQorLyoqDQorICogbmFuZF9kb19kdWFsX3BsYW5lX3dyaXRlX29wcyAtIFtJTlRFUk5dIE5B TkQgd3JpdGUgd2l0aCBFQ0MgYnkgZHVhbCBwbGFuZQ0KKyAqIEBtdGQ6IE1URCBkZXZpY2Ugc3Ry dWN0dXJlDQorICogQHRvX3BsYW5lMDogb2Zmc2V0IG9mICB3cml0ZSBwbGFuZSAwDQorICogQG9w c19wbGFuZTA6IG9vYiBvcGVyYXRpb25zIGRlc2NyaXB0aW9uIHN0cnVjdHVyZSBmb3IgcGxhbmUg MA0KKyAqIEB0b19wbGFuZTE6IG9mZnNldCBvZiAgd3JpdGUgcGxhbmUgMQ0KKyAqIEBvcHNfcGxh bmUxOiBvb2Igb3BlcmF0aW9ucyBkZXNjcmlwdGlvbiBzdHJ1Y3R1cmUgZm9yIHBsYW5lIDENCisg Kg0KKyAqIE5BTkQgd3JpdGUgd2l0aCBFQ0MgdGhyb3VnaCBkdWFsIHBsYW5lIHByb2dyYW0uDQor ICovDQorc3RhdGljIGludCBuYW5kX2RvX2R1YWxfcGxhbmVfd3JpdGVfb3BzKHN0cnVjdCBtdGRf aW5mbyAqbXRkLCBsb2ZmX3QgdG9fcGxhbmUwLA0KKwkJCSAgIHN0cnVjdCBtdGRfb29iX29wcyAq b3BzX3BsYW5lMCwgbG9mZl90IHRvX3BsYW5lMSwNCisJCQkgICBzdHJ1Y3QgbXRkX29vYl9vcHMg Km9wc19wbGFuZTEpDQorew0KKwlpbnQgY2hpcG5yMCwgY2hpcG5yMSwgY2hpcG5yID0gMCwgYmxv Y2ttYXNrOw0KKwl1aW50MzJfdCBvb2J3cml0ZWxlbiA9IDA7DQorCXVpbnQzMl90IG9vYm1heGxl biA9IDA7DQorCWludCByZXQ7DQorCWludCBjb2x1bW4gPSAwLCByZWFscGFnZSA9IDAsIHBhZ2Ug PSAwOw0KKwl1aW50MzJfdCB3cml0ZWxlbiA9IDA7DQorCWNoYXIgZmxhZyA9IDAsIGN5Y2xlID0g MDsNCisJaW50IG9vYl9yZXF1aXJlZCA9IDA7DQorCXVpbnQ4X3QgKm9vYiA9IE5VTEw7DQorCXVp bnQ4X3QgKmJ1ZiA9IE5VTEw7DQorCXVpbnQzMl90IGJhazBfb29id3JpdGVsZW4gPSAwLCBiYWsx X29vYndyaXRlbGVuID0gMDsNCisJaW50IGJhazBfY29sdW1uID0gMCwgYmFrMV9jb2x1bW4gPSAw Ow0KKwlpbnQgYmFrMF9yZWFscGFnZSA9IDAsIGJhazFfcmVhbHBhZ2UgPSAwOw0KKwlpbnQgYmFr MF9wYWdlID0gMCwgYmFrMV9wYWdlID0gMDsNCisJaW50IGJhazBfd3JpdGVsZW4gPSAwLCBiYWsx X3dyaXRlbGVuID0gMDsNCisJdWludDhfdCAqYmFrMF9idWYgPSBOVUxMLCAqYmFrMV9idWYgPSBO VUxMOw0KKwl1aW50OF90ICpiYWswX29vYiA9IE5VTEwsICpiYWsxX29vYiA9IE5VTEw7DQorCXVp bnQ4X3QgYmFrMF9wYWdlYnVmID0gMCwgYmFrMV9wYWdlYnVmID0gMDsNCisJaW50IGJ5dGVzID0g MDsNCisJaW50IGNhY2hlZCA9IDA7DQorCXVpbnQ4X3QgKndidWYgPSBOVUxMOw0KKwlpbnQgdXNl X2J1ZnBvaSA9IDA7DQorCWludCBwYXJ0X3BhZ2V3ciA9IDA7DQorCXN0cnVjdCBuYW5kX2NoaXAg KmNoaXAgPSBtdGQtPnByaXY7DQorCXN0cnVjdCBtdGRfb29iX29wcyAqb3BzID0gTlVMTDsNCisN CisJb3BzX3BsYW5lMC0+cmV0bGVuID0gMDsNCisJb3BzX3BsYW5lMS0+cmV0bGVuID0gMDsNCisN CisJaWYgKCghb3BzX3BsYW5lMC0+bGVuKSB8fCAoIW9wc19wbGFuZTEtPmxlbikpDQorCQlyZXR1 cm4gMDsNCisNCisJLyogUmVqZWN0IHdyaXRlcywgd2hpY2ggYXJlIG5vdCBwYWdlIGFsaWduZWQg Ki8NCisJaWYgKE5PVEFMSUdORUQodG9fcGxhbmUwKSB8fCBOT1RBTElHTkVEKG9wc19wbGFuZTAt PmxlbikgfHwNCisJICAgIE5PVEFMSUdORUQodG9fcGxhbmUxKSB8fCBOT1RBTElHTkVEKG9wc19w bGFuZTEtPmxlbikpIHsNCisJCXByX25vdGljZSgiJXM6IGF0dGVtcHQgdG8gd3JpdGUgbm9uIHBh Z2UgYWxpZ25lZCBkYXRhXG4iLA0KKwkJCQkJCQkJX19mdW5jX18pOw0KKwkJcmV0dXJuIC1FSU5W QUw7DQorCX0NCisNCisJY2hpcG5yMCA9IChpbnQpKHRvX3BsYW5lMCA+PiBjaGlwLT5jaGlwX3No aWZ0KTsNCisJY2hpcG5yMSA9IChpbnQpKHRvX3BsYW5lMSA+PiBjaGlwLT5jaGlwX3NoaWZ0KTsN CisNCisJaWYgKHVubGlrZWx5KGNoaXBucjAgIT0gY2hpcG5yMSkpIHsNCisJCXByX25vdGljZSgi JXM6IGF0dGVtcHQgdG8gd3JpdGUgZGlmZmVyZW50IG5hbmQgY2hpcFxuIiwNCisJCQkJCQkJCV9f ZnVuY19fKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCWNoaXAtPnNlbGVjdF9jaGlw KG10ZCwgY2hpcG5yMCk7DQorDQorCS8qIENoZWNrLCBpZiBpdCBpcyB3cml0ZSBwcm90ZWN0ZWQg Ki8NCisJaWYgKG5hbmRfY2hlY2tfd3AobXRkKSkgew0KKwkJcmV0ID0gLUVJTzsNCisJCWdvdG8g ZXJyX291dDsNCisJfQ0KKw0KKwlibG9ja21hc2sgPSAoMSA8PCAoY2hpcC0+cGh5c19lcmFzZV9z aGlmdCAtIGNoaXAtPnBhZ2Vfc2hpZnQpKSAtIDE7DQorDQorCS8qIERvbid0IGFsbG93IG11bHRp cGFnZSBvb2Igd3JpdGVzIHdpdGggb2Zmc2V0ICovDQorCWlmICgob3BzX3BsYW5lMC0+b29iYnVm ICYmIG9wc19wbGFuZTAtPm9vYm9mZnMgJiYNCisJKG9wc19wbGFuZTAtPm9vYm9mZnMgKyBvcHNf cGxhbmUwLT5vb2JsZW4gPiBvb2JtYXhsZW4pKSB8fA0KKwkob3BzX3BsYW5lMS0+b29iYnVmICYm IG9wc19wbGFuZTEtPm9vYm9mZnMgJiYNCisJKG9wc19wbGFuZTEtPm9vYm9mZnMgKyBvcHNfcGxh bmUxLT5vb2JsZW4gPiBvb2JtYXhsZW4pKSkgew0KKwkJcmV0ID0gLUVJTlZBTDsNCisJCWdvdG8g ZXJyX291dDsNCisJfQ0KKw0KKwl3aGlsZSAoMSkgew0KK3JldHJ5Og0KKwkJaWYgKGZsYWcgPT0g MCkgew0KKwkJCS8qIG9wZXJhdGUgcGxhbmUgMCAqLw0KKwkJCW9wcyA9IG9wc19wbGFuZTA7DQor CQkJb29ibWF4bGVuID0gb3BzLT5tb2RlID09IE1URF9PUFNfQVVUT19PT0IgPw0KKwkJCQkJbXRk LT5vb2JhdmFpbCA6IG10ZC0+b29ic2l6ZTsNCisJCQljaGlwbnIgPSBjaGlwbnIwOw0KKwkJCW9v Yl9yZXF1aXJlZCA9IG9wcy0+b29iYnVmID8gMSA6IDA7DQorDQorCQkgICBpZiAoY3ljbGUgPT0g MCkgew0KKwkJCS8qIHBsYW5lIDAgZmlyc3Qgd3JpdGUsYmFja3VwIHByb2dyYW1taW5nIGluZm9y ICovDQorCQkJYmFrMF9vb2J3cml0ZWxlbiA9IG9vYndyaXRlbGVuID0gb3BzLT5vb2JsZW47DQor CQkJYmFrMF9jb2x1bW4gPSBjb2x1bW4gPSB0b19wbGFuZTAgJiAobXRkLT53cml0ZXNpemUgLSAx KTsNCisJCQlyZWFscGFnZSA9IChpbnQpKHRvX3BsYW5lMCA+PiBjaGlwLT5wYWdlX3NoaWZ0KTsN CisJCQliYWswX3JlYWxwYWdlID0gcmVhbHBhZ2U7DQorCQkJYmFrMF9wYWdlID0gcGFnZSA9IHJl YWxwYWdlICYgY2hpcC0+cGFnZW1hc2s7DQorCQkJYmFrMF93cml0ZWxlbiA9IHdyaXRlbGVuID0g b3BzLT5sZW47DQorCQkJYmFrMF9idWYgPSBidWYgPSBvcHMtPmRhdGJ1ZjsNCisJCQliYWswX29v YiA9IG9vYiA9IG9wcy0+b29iYnVmOw0KKw0KKwkJaWYgKHRvX3BsYW5lMCA8PSAoKGxvZmZfdClj aGlwLT5wYWdlYnVmIDw8IGNoaXAtPnBhZ2Vfc2hpZnQpICYmDQorCSAgICgobG9mZl90KWNoaXAt PnBhZ2VidWYgPDwgY2hpcC0+cGFnZV9zaGlmdCkgPCAodG9fcGxhbmUwICsgb3BzLT5sZW4pKQ0K KwkJCQljaGlwLT5wYWdlYnVmID0gLTE7DQorDQorCQkJYmFrMF9wYWdlYnVmID0gY2hpcC0+cGFn ZWJ1ZjsNCisNCisJCSAgIH0gZWxzZSB7DQorCQkJb29id3JpdGVsZW4gPSBiYWswX29vYndyaXRl bGVuOw0KKwkJCWNvbHVtbiA9IGJhazBfY29sdW1uOw0KKwkJCXJlYWxwYWdlID0gYmFrMF9yZWFs cGFnZTsNCisJCQlwYWdlID0gYmFrMF9wYWdlOw0KKwkJCXdyaXRlbGVuID0gYmFrMF93cml0ZWxl bjsNCisJCQlidWYgPSBiYWswX2J1ZjsNCisJCQlvb2IgPSBiYWswX29vYjsNCisJCQljaGlwLT5w YWdlYnVmICA9IGJhazBfcGFnZWJ1ZjsNCisJCSAgIH0NCisJCX0gZWxzZSBpZiAoZmxhZyA9PSAx KSB7DQorCQkJLyogb3BlcmF0ZSBwbGFuZSAxICovDQorCQkJb3BzID0gb3BzX3BsYW5lMTsNCisJ CQlvb2JtYXhsZW4gPSBvcHMtPm1vZGUgPT0gTVREX09QU19BVVRPX09PQiA/DQorCQkJCQltdGQt Pm9vYmF2YWlsIDogbXRkLT5vb2JzaXplOw0KKwkJCWNoaXBuciA9IGNoaXBucjE7DQorCQkJb29i X3JlcXVpcmVkID0gb3BzLT5vb2JidWYgPyAxIDogMDsNCisNCisJCSAgIGlmIChjeWNsZSA9PSAw KSB7DQorCQkJLyogcGxhbmUgMSBmaXJzdCB3cml0ZSxiYWNrdXAgcHJvZ3JhbW1pbmcgaW5mb3Ig Ki8NCisJCQliYWsxX29vYndyaXRlbGVuID0gb29id3JpdGVsZW4gPSBvcHMtPm9vYmxlbjsNCisJ CQliYWsxX2NvbHVtbiA9IGNvbHVtbiA9IHRvX3BsYW5lMSAmIChtdGQtPndyaXRlc2l6ZSAtIDEp Ow0KKwkJCXJlYWxwYWdlID0gKGludCkodG9fcGxhbmUxID4+IGNoaXAtPnBhZ2Vfc2hpZnQpOw0K KwkJCWJhazFfcmVhbHBhZ2UgPSByZWFscGFnZTsNCisJCQliYWsxX3BhZ2UgPSBwYWdlID0gcmVh bHBhZ2UgJiBjaGlwLT5wYWdlbWFzazsNCisJCQliYWsxX3dyaXRlbGVuID0gd3JpdGVsZW4gPSBv cHMtPmxlbjsNCisJCQliYWsxX2J1ZiA9IGJ1ZiA9IG9wcy0+ZGF0YnVmOw0KKwkJCWJhazFfb29i ID0gb29iID0gb3BzLT5vb2JidWY7DQorDQorCSAgICAgIGlmICh0b19wbGFuZTEgPD0gKChsb2Zm X3QpY2hpcC0+cGFnZWJ1ZiA8PCBjaGlwLT5wYWdlX3NoaWZ0KSAmJg0KKwkgICAoKGxvZmZfdClj aGlwLT5wYWdlYnVmIDw8IGNoaXAtPnBhZ2Vfc2hpZnQpIDwgKHRvX3BsYW5lMSArIG9wcy0+bGVu KSkNCisJCQkJY2hpcC0+cGFnZWJ1ZiA9IC0xOw0KKw0KKwkJCWJhazFfcGFnZWJ1ZiA9IGNoaXAt PnBhZ2VidWY7DQorCQkJfSBlbHNlIHsNCisJCQlvb2J3cml0ZWxlbiA9IGJhazFfb29id3JpdGVs ZW47DQorCQkJY29sdW1uID0gYmFrMV9jb2x1bW47DQorCQkJcmVhbHBhZ2UgPSBiYWsxX3JlYWxw YWdlOw0KKwkJCXBhZ2UgPSBiYWsxX3BhZ2U7DQorCQkJd3JpdGVsZW4gPSBiYWsxX3dyaXRlbGVu Ow0KKwkJCWJ1ZiA9IGJhazFfYnVmOw0KKwkJCW9vYiA9IGJhazFfb29iOw0KKwkJCWNoaXAtPnBh Z2VidWYgID0gYmFrMV9wYWdlYnVmOw0KKwkJCX0NCisJCX0NCisNCisJCS8qIERvbid0IGFsbG93 IG11bHRpcGFnZSBvb2Igd3JpdGVzIHdpdGggb2Zmc2V0ICovDQorCQlpZiAob3BzLT5vb2JidWYg JiYgb3BzLT5vb2JvZmZzICYmDQorCQkJKG9wcy0+b29ib2ZmcyArIG9wcy0+b29ibGVuID4gb29i bWF4bGVuKSkgew0KKwkJCXJldCA9IC1FSU5WQUw7DQorCQkJZ290byBlcnJfb3V0Ow0KKwkJfQ0K Kw0KKwkJYnl0ZXMgPSBtdGQtPndyaXRlc2l6ZTsNCisJCWNhY2hlZCA9IHdyaXRlbGVuID4gYnl0 ZXMgJiYgcGFnZSAhPSBibG9ja21hc2s7DQorCQl3YnVmID0gYnVmOw0KKw0KKwkJcGFydF9wYWdl d3IgPSAoY29sdW1uIHx8IHdyaXRlbGVuIDwgKG10ZC0+d3JpdGVzaXplIC0gMSkpOw0KKw0KKwkJ aWYgKHBhcnRfcGFnZXdyKQ0KKwkJCXVzZV9idWZwb2kgPSAxOw0KKwkJZWxzZSBpZiAoY2hpcC0+ b3B0aW9ucyAmIE5BTkRfVVNFX0JPVU5DRV9CVUZGRVIpDQorCQkJdXNlX2J1ZnBvaSA9ICF2aXJ0 X2FkZHJfdmFsaWQoYnVmKTsNCisJCWVsc2UNCisJCQl1c2VfYnVmcG9pID0gMDsNCisNCisJCS8q IFBhcnRpYWwgcGFnZSB3cml0ZT8sIG9yIG5lZWQgdG8gdXNlIGJvdW5jZSBidWZmZXIgKi8NCisJ CWlmICh1c2VfYnVmcG9pKSB7DQorCQkJcHJfZGVidWcoIiVzOiB1c2luZyB3cml0ZSBib3VuY2Ug YnVmZmVyIGZvciBidWZAJXBcbiIsDQorCQkJCQkJCQlfX2Z1bmNfXywgYnVmKTsNCisJCQljYWNo ZWQgPSAwOw0KKwkJCWlmIChwYXJ0X3BhZ2V3cikNCisJCQkJYnl0ZXMgPSBtaW5fdChpbnQsIGJ5 dGVzIC0gY29sdW1uLCB3cml0ZWxlbik7DQorCQkJY2hpcC0+cGFnZWJ1ZiA9IC0xOw0KKwkJCW1l bXNldChjaGlwLT5idWZmZXJzLT5kYXRhYnVmLCAweGZmLCBtdGQtPndyaXRlc2l6ZSk7DQorCQkJ bWVtY3B5KCZjaGlwLT5idWZmZXJzLT5kYXRhYnVmW2NvbHVtbl0sIGJ1ZiwgYnl0ZXMpOw0KKwkJ CXdidWYgPSBjaGlwLT5idWZmZXJzLT5kYXRhYnVmOw0KKwkJfQ0KKw0KKwkJaWYgKHVubGlrZWx5 KG9vYikpIHsNCisJCQlzaXplX3QgbGVuID0gbWluKG9vYndyaXRlbGVuLCBvb2JtYXhsZW4pOw0K Kw0KKwkJCW9vYiA9IG5hbmRfZmlsbF9vb2IobXRkLCBvb2IsIGxlbiwgb3BzKTsNCisJCQlvb2J3 cml0ZWxlbiAtPSBsZW47DQorCQl9IGVsc2Ugew0KKwkJCS8qIFdlIHN0aWxsIG5lZWQgdG8gZXJh c2UgbGVmdG92ZXIgT09CIGRhdGEgKi8NCisJCQltZW1zZXQoY2hpcC0+b29iX3BvaSwgMHhmZiwg bXRkLT5vb2JzaXplKTsNCisJCX0NCisNCisJCWlmIChmbGFnID09IDApIHsNCisJCQlyZXQgPSBj aGlwLT53cml0ZV9wbGFuZV9wYWdlKG10ZCwgY2hpcCwgY29sdW1uLCBieXRlcywNCisJCSAgICAg IHdidWYsIG9vYl9yZXF1aXJlZCwgcGFnZSwgMSwgKG9wcy0+bW9kZSA9PSBNVERfT1BTX1JBVykp Ow0KKwkJfSBlbHNlIGlmIChmbGFnID09IDEpIHsNCisJCQlyZXQgPSBjaGlwLT53cml0ZV9wYWdl KG10ZCwgY2hpcCwgY29sdW1uLCBieXRlcywgd2J1ZiwNCisJCQlvb2JfcmVxdWlyZWQsIHBhZ2Us IGNhY2hlZCwgKG9wcy0+bW9kZSA9PSBNVERfT1BTX1JBVykpOw0KKwkJfQ0KKw0KKwkJaWYgKHJl dCkNCisJCQlicmVhazsNCisNCisJCXdyaXRlbGVuIC09IGJ5dGVzOw0KKwkJY29sdW1uID0gMDsN CisNCisJCWlmIChmbGFnID09IDApIHsNCisJCQliYWswX3dyaXRlbGVuID0gd3JpdGVsZW47DQor CQkJYmFrMF9jb2x1bW4gPSBjb2x1bW47DQorCQkJYmFrMF9vb2J3cml0ZWxlbiA9IG9vYndyaXRl bGVuOw0KKwkJfSBlbHNlIHsNCisJCQliYWsxX3dyaXRlbGVuID0gd3JpdGVsZW47DQorCQkJYmFr MV9jb2x1bW4gPSBjb2x1bW47DQorCQkJYmFrMV9vb2J3cml0ZWxlbiA9IG9vYndyaXRlbGVuOw0K KwkJfQ0KKw0KKwkJaWYgKCghd3JpdGVsZW4pICYmIChmbGFnID09IDEpKQ0KKwkJCWJyZWFrOw0K Kw0KKwkJYnVmICs9IGJ5dGVzOw0KKwkJcmVhbHBhZ2UrKzsNCisNCisJCWlmIChmbGFnID09IDAp IHsNCisJCQliYWswX2J1ZiA9IGJ1ZjsNCisJCQliYWswX29vYiA9IG9vYjsNCisJCQliYWswX3Jl YWxwYWdlID0gcmVhbHBhZ2U7DQorCQl9IGVsc2Ugew0KKwkJCWJhazFfYnVmID0gYnVmOw0KKwkJ CWJhazFfb29iID0gb29iOw0KKwkJCWJhazFfcmVhbHBhZ2UgPSByZWFscGFnZTsNCisJCX0NCisN CisJCWlmIChmbGFnID09IDApIHsNCisJCQlmbGFnID0gMTsNCisJCWdvdG8gcmV0cnk7DQorCQl9 DQorDQorCQlwYWdlID0gcmVhbHBhZ2UgJiBjaGlwLT5wYWdlbWFzazsNCisNCisJCS8qIENoZWNr LCBpZiB3ZSBjcm9zcyBhIGNoaXAgYm91bmRhcnkgKi8NCisJCWlmICghcGFnZSkgew0KKwkJCWNo aXBucisrOw0KKwkJCWNoaXAtPnNlbGVjdF9jaGlwKG10ZCwgLTEpOw0KKwkJCWNoaXAtPnNlbGVj dF9jaGlwKG10ZCwgY2hpcG5yKTsNCisJCX0NCisNCisJCWZsYWcgPSAwOw0KKwkJY3ljbGUrKzsN CisNCisJfQ0KKw0KKwlvcHNfcGxhbmUwLT5yZXRsZW4gPSBvcHNfcGxhbmUwLT5sZW4gLSBiYWsw X3dyaXRlbGVuOw0KKwlvcHNfcGxhbmUxLT5yZXRsZW4gPSBvcHNfcGxhbmUxLT5sZW4gLSBiYWsx X3dyaXRlbGVuOw0KKw0KKwlpZiAodW5saWtlbHkoYmFrMF9vb2IpKQ0KKwkJb3BzX3BsYW5lMC0+ b29icmV0bGVuID0gb3BzX3BsYW5lMC0+b29ibGVuOw0KKwlpZiAodW5saWtlbHkoYmFrMV9vb2Ip KQ0KKwkJb3BzX3BsYW5lMS0+b29icmV0bGVuID0gb3BzX3BsYW5lMS0+b29ibGVuOw0KKw0KK2Vy cl9vdXQ6DQorCWZsYWcgPSAwOw0KKwljeWNsZSA9IDA7DQorCWNoaXAtPnNlbGVjdF9jaGlwKG10 ZCwgLTEpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCiANCiAvKioNCiAgKiBuYW5kX2RvX3dyaXRlX29w cyAtIFtJTlRFUk5dIE5BTkQgd3JpdGUgd2l0aCBFQ0MNCkBAIC0yNTY0LDYgKzI5MDQsMTQgQEAg c3RhdGljIGludCBuYW5kX3dyaXRlKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgdG8sIHNp emVfdCBsZW4sDQogCXJldHVybiByZXQ7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbmFuZF9kb19kdWFs X3BsYW5lX3dyaXRlX29vYihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IHRvX3BsYW5lMCwN CisJCQkgICAgICBzdHJ1Y3QgbXRkX29vYl9vcHMgKm9wc19wbGFuZTAsIGxvZmZfdCB0b19wbGFu ZTEsDQorCQkJICAgICAgc3RydWN0IG10ZF9vb2Jfb3BzICpvcHNfcGxhbmUxKQ0KK3sNCisJcmV0 dXJuIDA7DQorDQorfQ0KKw0KIC8qKg0KICAqIG5hbmRfZG9fd3JpdGVfb29iIC0gW01URCBJbnRl cmZhY2VdIE5BTkQgd3JpdGUgb3V0LW9mLWJhbmQNCiAgKiBAbXRkOiBNVEQgZGV2aWNlIHN0cnVj dHVyZQ0KQEAgLTI2OTIsNiArMzA0MCw1MiBAQCBvdXQ6DQogCXJldHVybiByZXQ7DQogfQ0KIA0K K3N0YXRpYyBpbnQgbmFuZF9kdWFsX3BsYW5lX3dyaXRlX29vYihzdHJ1Y3QgbXRkX2luZm8gKm10 ZCwgbG9mZl90IHRvX3BsYW5lMCwNCisJCQkgICBzdHJ1Y3QgbXRkX29vYl9vcHMgKm9wc19wbGFu ZTAsIGxvZmZfdCB0b19wbGFuZTEsDQorCQkJICAgc3RydWN0IG10ZF9vb2Jfb3BzICpvcHNfcGxh bmUxKQ0KK3sNCisJaW50IHJldCA9IC1FTk9UU1VQUDsNCisNCisJLyogRG8gbm90IGFsbG93IHdy aXRlcyBwYXN0IGVuZCBvZiBkZXZpY2UgKi8NCisJaWYgKChvcHNfcGxhbmUwLT5kYXRidWYgJiYg KHRvX3BsYW5lMCArIG9wc19wbGFuZTAtPmxlbikgPiBtdGQtPnNpemUpIHx8DQorCSAgICAob3Bz X3BsYW5lMS0+ZGF0YnVmICYmICh0b19wbGFuZTEgKyBvcHNfcGxhbmUxLT5sZW4pID4gbXRkLT5z aXplKSkgew0KKwkJcHJfZGVidWcoIiVzOiBhdHRlbXB0IHRvIHdyaXRlIGJleW9uZCBlbmQgb2Yg ZGV2aWNlXG4iLA0KKwkJCQkJCQkJX19mdW5jX18pOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0N CisJbmFuZF9nZXRfZGV2aWNlKG10ZCwgRkxfV1JJVElORyk7DQorDQorCXN3aXRjaCAob3BzX3Bs YW5lMC0+bW9kZSkgew0KKwljYXNlIE1URF9PUFNfUExBQ0VfT09COg0KKwkJaWYgKG9wc19wbGFu ZTEtPm1vZGUgIT0gTVREX09QU19QTEFDRV9PT0IpDQorCQkJZ290byBvdXQ7DQorCQlicmVhazsN CisJY2FzZSBNVERfT1BTX0FVVE9fT09COg0KKwkJaWYgKG9wc19wbGFuZTEtPm1vZGUgIT0gTVRE X09QU19BVVRPX09PQikNCisJCQlnb3RvIG91dDsNCisJCWJyZWFrOw0KKwljYXNlIE1URF9PUFNf UkFXOg0KKwkJaWYgKG9wc19wbGFuZTEtPm1vZGUgIT0gTVREX09QU19SQVcpDQorCQkJZ290byBv dXQ7DQorCQlicmVhazsNCisNCisJZGVmYXVsdDoNCisJCWdvdG8gb3V0Ow0KKwl9DQorDQorCWlm ICghb3BzX3BsYW5lMC0+ZGF0YnVmICYmICFvcHNfcGxhbmUxLT5kYXRidWYpDQorCQlyZXQgPSBu YW5kX2RvX2R1YWxfcGxhbmVfd3JpdGVfb29iKG10ZCwgdG9fcGxhbmUwLCBvcHNfcGxhbmUwLA0K KwkJCQkJCQl0b19wbGFuZTEsIG9wc19wbGFuZTEpOw0KKwllbHNlDQorCQlyZXQgPSBuYW5kX2Rv X2R1YWxfcGxhbmVfd3JpdGVfb3BzKG10ZCwgdG9fcGxhbmUwLCBvcHNfcGxhbmUwLA0KKwkJCQkJ CQl0b19wbGFuZTEsIG9wc19wbGFuZTEpOw0KKw0KK291dDoNCisJbmFuZF9yZWxlYXNlX2Rldmlj ZShtdGQpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCitFWFBPUlRfU1lNQk9MKG5hbmRfZHVhbF9wbGFu ZV93cml0ZV9vb2IpOw0KKw0KIC8qKg0KICAqIHNpbmdsZV9lcmFzZSAtIFtHRU5FUklDXSBOQU5E IHN0YW5kYXJkIGJsb2NrIGVyYXNlIGNvbW1hbmQgZnVuY3Rpb24NCiAgKiBAbXRkOiBNVEQgZGV2 aWNlIHN0cnVjdHVyZQ0KQEAgLTM5OTEsNiArNDM4NSw4IEBAIGludCBuYW5kX3NjYW5fdGFpbChz dHJ1Y3QgbXRkX2luZm8gKm10ZCkNCiANCiAJaWYgKCFjaGlwLT53cml0ZV9wYWdlKQ0KIAkJY2hp cC0+d3JpdGVfcGFnZSA9IG5hbmRfd3JpdGVfcGFnZTsNCisJaWYgKCFjaGlwLT53cml0ZV9wbGFu ZV9wYWdlKQ0KKwkJY2hpcC0+d3JpdGVfcGxhbmVfcGFnZSA9IG5hbmRfd3JpdGVfcGxhbmVfcGFn ZTsNCiANCiAJLyoNCiAJICogQ2hlY2sgRUNDIG1vZGUsIGRlZmF1bHQgdG8gc29mdHdhcmUgaWYg M2J5dGUvNTEyYnl0ZSBoYXJkd2FyZSBFQ0MgaXMNCkBAIC00MjA2LDYgKzQ2MDIsMTEgQEAgaW50 IG5hbmRfc2Nhbl90YWlsKHN0cnVjdCBtdGRfaW5mbyAqbXRkKQ0KIAltdGQtPl9wYW5pY193cml0 ZSA9IHBhbmljX25hbmRfd3JpdGU7DQogCW10ZC0+X3JlYWRfb29iID0gbmFuZF9yZWFkX29vYjsN CiAJbXRkLT5fd3JpdGVfb29iID0gbmFuZF93cml0ZV9vb2I7DQorI2lmZGVmIENPTkZJR19NVERf VUJJX01MQ19OQU5EX0JBS1ZPTA0KKwltdGQtPl9kdWFsX3BsYW5lX3dyaXRlX29vYiA9IG5hbmRf ZHVhbF9wbGFuZV93cml0ZV9vb2I7DQorI2Vsc2UNCisJbXRkLT5fZHVhbF9wbGFuZV93cml0ZV9v b2IgPSBOVUxMOw0KKyNlbmRpZg0KIAltdGQtPl9zeW5jID0gbmFuZF9zeW5jOw0KIAltdGQtPl9s b2NrID0gTlVMTDsNCiAJbXRkLT5fdW5sb2NrID0gTlVMTDsNCi0tIA0KMS45LjENCg== -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
[PATCH 7/9] drivers:mtd:add NAND dual plane program support Bean Huo 霍斌斌 (beanhuo) <beanhuo@micron.com> - 2015-09-28 09:10 +0200
csiph-web