Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1233900

[PATCH 7/9] drivers:mtd:add NAND dual plane program support

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

Show all headers | View raw


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


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