From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [RFC,01/10] dma-engine: sun4i: Add a quirk to support different chips From: Maxime Ripard Message-Id: <20181203105440.jxy6ue75ic2fc5t5@flea> Date: Mon, 3 Dec 2018 11:54:40 +0100 To: Mesih Kilinc Cc: dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org, linux-sunxi@googlegroups.com, Vinod Koul , Rob Herring , Mark Rutland , Chen-Yu Tsai , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai List-ID: SGksCgooeW91IGRvbid0IHJlYWxseSBuZWVkIHRoZSBSRkMgdGFnLiBSRkMgdGFncyBhcmUgdXN1 YWxseSBtZWFudCB0byBhc2sKY29tbWVudHMgb24gdGhlIGdlbmVyYWwgYXBwcm9hY2gsIG5vdCB0 aGUgaW1wbGVtZW50YXRpb24pLgoKT24gTW9uLCBEZWMgMDMsIDIwMTggYXQgMTI6MjM6MDhBTSAr MDMwMCwgTWVzaWggS2lsaW5jIHdyb3RlOgo+IEFsbHdpbm5lciBzdW5pdiBGMUMxMDBzIGhhcyBz aW1pbGFyIERNQSBlbmdpbmUgdG8gc3VuNGkuIFNldmVyYWwKPiByZWdpc3RlcnMgaGFzIGRpZmZl cmVudCBhZGRyZXNzZXMuIFRvdGFsIGRtYSBjaGFubmVscywgZW5kcG9pbnQgY291bnRzCj4gYW5k IG1heCBidXJzdCBjb3VudHMgYXJlIGFsc28gZGlmZmVyZW50Lgo+IAo+IEluIG9yZGVyIHRvIHN1 cHBvcnQgRjFDMTAwcyBhZGQgYSBxdWlyayBzdHJ1Y3R1cmUgdG8gaG9sZCBJQyBzcGVjaWZpYwo+ IGRhdGEuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWVzaWggS2lsaW5jIDxtZXNpaGtpbGluY0BnbWFp bC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZG1hL3N1bjRpLWRtYS5jIHwgMTM4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwg MTA2IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2RtYS9zdW40aS1kbWEuYyBiL2RyaXZlcnMvZG1hL3N1bjRpLWRtYS5jCj4gaW5kZXggZjRl ZDNmMS4uZTg2YjQyNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2RtYS9zdW40aS1kbWEuYwo+ICsr KyBiL2RyaXZlcnMvZG1hL3N1bjRpLWRtYS5jCj4gQEAgLTE2LDYgKzE2LDcgQEAKPiAgI2luY2x1 ZGUgPGxpbnV4L2ludGVycnVwdC5oPgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICNp bmNsdWRlIDxsaW51eC9vZl9kbWEuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgo+ ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgo+IEBAIC0zNCw2ICszNSw4IEBA Cj4gICNkZWZpbmUgU1VONElfRE1BX0NGR19TUkNfQUREUl9NT0RFKG1vZGUpCSgobW9kZSkgPDwg NSkKPiAgI2RlZmluZSBTVU40SV9ETUFfQ0ZHX1NSQ19EUlFfVFlQRSh0eXBlKQkodHlwZSkKPiAg Cj4gKyNkZWZpbmUgU1VONElfTUFYX0JVUlNUCTgKPiArCj4gIC8qKiBOb3JtYWwgRE1BIHJlZ2lz dGVyIHZhbHVlcyAqKi8KPiAgCj4gIC8qIE5vcm1hbCBETUEgc291cmNlL2Rlc3RpbmF0aW9uIGRh dGEgcmVxdWVzdCB0eXBlIHZhbHVlcyAqLwo+IEBAIC0xMjYsNiArMTI5LDMyIEBACj4gIAkgU1VO NElfRERNQV9QQVJBX0RTVF9XQUlUX0NZQ0xFUygyKSB8CQkJCVwKPiAgCSBTVU40SV9ERE1BX1BB UkFfU1JDX1dBSVRfQ1lDTEVTKDIpKQo+ICAKPiArLyoKPiArICogSGFyZHdhcmUgY2hhbm5lbHMg LyBwb3J0cyByZXByZXNlbnRhdGlvbgo+ICsgKgo+ICsgKiBUaGUgaGFyZHdhcmUgaXMgdXNlZCBp biBzZXZlcmFsIFNvQ3MsIHdpdGggZGlmZmVyaW5nIG51bWJlcnMKPiArICogb2YgY2hhbm5lbHMg YW5kIGVuZHBvaW50cy4gVGhpcyBzdHJ1Y3R1cmUgdGllcyB0aG9zZSBudW1iZXJzCj4gKyAqIHRv IGEgY2VydGFpbiBjb21wYXRpYmxlIHN0cmluZy4KPiArICovCj4gK3N0cnVjdCBzdW40aV9kbWFf Y29uZmlnIHsKPiArCXUzMiBuZG1hX25yX21heF9jaGFubmVsczsKPiArCXUzMiBuZG1hX25yX21h eF92Y2hhbnM7Cj4gKwo+ICsJdTMyIGRkbWFfbnJfbWF4X2NoYW5uZWxzOwo+ICsJdTMyIGRkbWFf bnJfbWF4X3ZjaGFuczsKPiArCj4gKwl1MzIgZG1hX25yX21heF9jaGFubmVsczsKPiArCj4gKyAg ICAgICAgdm9pZCAoKnNldF9kc3RfZGF0YV93aWR0aCkodTMyICpwX2NmZywgczggZGF0YV93aWR0 aCk7Cj4gKyAgICAgICAgdm9pZCAoKnNldF9zcmNfZGF0YV93aWR0aCkodTMyICpwX2NmZywgczgg ZGF0YV93aWR0aCk7CgpUaGlzIHNob3VsZCBiZSBpbmRlbnRlZCB3aXRoIHRhYnMsIG5vdCBzcGFj ZXMuCgo+ICsJaW50ICgqY29udmVydF9idXJzdCkodTMyIG1heGJ1cnN0KTsKPiArCj4gKwl1OCBu ZG1hX2RycV9zZHJhbTsKPiArCXU4IGRkbWFfZHJxX3NkcmFtOwo+ICsKPiArCXU4IG1heF9idXJz dDsKCllvdSdkIGJlIGJldHRlciBvZmYgdXNpbmcgYSBiaXRtYXNrIHdpdCBodGhlIHN1cHBvcnRl ZCBidXJzdHMsIGxpa2UKd2UncmUgZG9pbmcgaW4gc3VuNmktZG1hLgoKPiArfTsKPiArCj4gIHN0 cnVjdCBzdW40aV9kbWFfcGNoYW4gewo+ICAJLyogUmVnaXN0ZXIgYmFzZSBvZiBjaGFubmVsICov Cj4gIAl2b2lkIF9faW9tZW0JCQkqYmFzZTsKPiBAQCAtMTYzLDcgKzE5Miw3IEBAIHN0cnVjdCBz dW40aV9kbWFfY29udHJhY3Qgewo+ICB9Owo+ICAKPiAgc3RydWN0IHN1bjRpX2RtYV9kZXYgewo+ IC0JREVDTEFSRV9CSVRNQVAocGNoYW5zX3VzZWQsIFNVTjRJX0RNQV9OUl9NQVhfQ0hBTk5FTFMp Owo+ICsJdW5zaWduZWQgbG9uZyAqcGNoYW5zX3VzZWQ7Cj4gIAlzdHJ1Y3QgZG1hX2RldmljZQkJ c2xhdmU7Cj4gIAlzdHJ1Y3Qgc3VuNGlfZG1hX3BjaGFuCQkqcGNoYW5zOwo+ICAJc3RydWN0IHN1 bjRpX2RtYV92Y2hhbgkJKnZjaGFuczsKPiBAQCAtMTcxLDYgKzIwMCw3IEBAIHN0cnVjdCBzdW40 aV9kbWFfZGV2IHsKPiAgCXN0cnVjdCBjbGsJCQkqY2xrOwo+ICAJaW50CQkJCWlycTsKPiAgCXNw aW5sb2NrX3QJCQlsb2NrOwo+ICsJY29uc3Qgc3RydWN0IHN1bjRpX2RtYV9jb25maWcgKmNmZzsK ClRoaXMgc2hvdWxkIGJlIGFsaWduZWQgdG8gdGhlIHJlc3Qgb2YgdGhlIG1lbWJlcnMsIHVzaW5n IHRhYnMuCgo+ICB9Owo+ICAKPiAgc3RhdGljIHN0cnVjdCBzdW40aV9kbWFfZGV2ICp0b19zdW40 aV9kbWFfZGV2KHN0cnVjdCBkbWFfZGV2aWNlICpkZXYpCj4gQEAgLTE5Myw3ICsyMjMsMTcgQEAg c3RhdGljIHN0cnVjdCBkZXZpY2UgKmNoYW4yZGV2KHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKPiAg CXJldHVybiAmY2hhbi0+ZGV2LT5kZXZpY2U7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgY29udmVy dF9idXJzdCh1MzIgbWF4YnVyc3QpCj4gK3N0YXRpYyB2b2lkIHNldF9kc3RfZGF0YV93aWR0aF9h MTAodTMyICpwX2NmZywgczggZGF0YV93aWR0aCkKPiArewo+ICsJKnBfY2ZnIHw9IFNVTjRJX0RN QV9DRkdfRFNUX0RBVEFfV0lEVEgoZGF0YV93aWR0aCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IHNldF9zcmNfZGF0YV93aWR0aF9hMTAodTMyICpwX2NmZywgczggZGF0YV93aWR0aCkKPiArewo+ ICsJKnBfY2ZnIHw9IFNVTjRJX0RNQV9DRkdfU1JDX0RBVEFfV0lEVEgoZGF0YV93aWR0aCk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgY29udmVydF9idXJzdF9hMTAodTMyIG1heGJ1cnN0KQo+ICB7 Cj4gIAlpZiAobWF4YnVyc3QgPiA4KQo+ICAJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0yMjYsMTUg KzI2NiwxNSBAQCBzdGF0aWMgc3RydWN0IHN1bjRpX2RtYV9wY2hhbiAqZmluZF9hbmRfdXNlX3Bj aGFuKHN0cnVjdCBzdW40aV9kbWFfZGV2ICpwcml2LAo+ICAJaW50IGksIG1heDsKPiAgCj4gIAkv Kgo+IC0JICogcGNoYW5zIDAtU1VONElfTkRNQV9OUl9NQVhfQ0hBTk5FTFMgYXJlIG5vcm1hbCwg YW5kCj4gLQkgKiBTVU40SV9ORE1BX05SX01BWF9DSEFOTkVMUysgYXJlIGRlZGljYXRlZCBvbmVz Cj4gKwkgKiBwY2hhbnMgMC1wcml2LT5jZmctPm5kbWFfbnJfbWF4X2NoYW5uZWxzIGFyZSBub3Jt YWwsIGFuZAo+ICsJICogcHJpdi0+Y2ZnLT5uZG1hX25yX21heF9jaGFubmVscysgYXJlIGRlZGlj YXRlZCBvbmVzCgpUaGlzIHNob3VsZCBiZSBuZXh0IHRvIHRoZSBzdHJ1Y3R1cmUgeW91IGp1c3Qg Y3JlYXRlZC4KCj4gIAkgKi8KPiAgCWlmICh2Y2hhbi0+aXNfZGVkaWNhdGVkKSB7Cj4gLQkJaSA9 IFNVTjRJX05ETUFfTlJfTUFYX0NIQU5ORUxTOwo+IC0JCW1heCA9IFNVTjRJX0RNQV9OUl9NQVhf Q0hBTk5FTFM7Cj4gKwkJaSA9IHByaXYtPmNmZy0+bmRtYV9ucl9tYXhfY2hhbm5lbHM7Cj4gKwkJ bWF4ID0gcHJpdi0+Y2ZnLT5kbWFfbnJfbWF4X2NoYW5uZWxzOwo+ICAJfSBlbHNlIHsKPiAgCQlp ID0gMDsKPiAtCQltYXggPSBTVU40SV9ORE1BX05SX01BWF9DSEFOTkVMUzsKPiArCQltYXggPSBw cml2LT5jZmctPm5kbWFfbnJfbWF4X2NoYW5uZWxzOwo+ICAJfQo+ICAKPiAgCXNwaW5fbG9ja19p cnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7Cj4gQEAgLTQzNyw2ICs0NzcsNyBAQCBnZW5lcmF0 ZV9uZG1hX3Byb21pc2Uoc3RydWN0IGRtYV9jaGFuICpjaGFuLCBkbWFfYWRkcl90IHNyYywgZG1h X2FkZHJfdCBkZXN0LAo+ICAJCSAgICAgIHNpemVfdCBsZW4sIHN0cnVjdCBkbWFfc2xhdmVfY29u ZmlnICpzY29uZmlnLAo+ICAJCSAgICAgIGVudW0gZG1hX3RyYW5zZmVyX2RpcmVjdGlvbiBkaXJl Y3Rpb24pCj4gIHsKPiArCXN0cnVjdCBzdW40aV9kbWFfZGV2ICpwcml2ID0gdG9fc3VuNGlfZG1h X2RldihjaGFuLT5kZXZpY2UpOwo+ICAJc3RydWN0IHN1bjRpX2RtYV9wcm9taXNlICpwcm9taXNl Owo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTQ2MCwxMyArNTAxLDEzIEBAIGdlbmVyYXRlX25kbWFf cHJvbWlzZShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIGRtYV9hZGRyX3Qgc3JjLCBkbWFfYWRkcl90 IGRlc3QsCj4gIAkJc2NvbmZpZy0+c3JjX2FkZHJfd2lkdGgsIHNjb25maWctPmRzdF9hZGRyX3dp ZHRoKTsKPiAgCj4gIAkvKiBTb3VyY2UgYnVyc3QgKi8KPiAtCXJldCA9IGNvbnZlcnRfYnVyc3Qo c2NvbmZpZy0+c3JjX21heGJ1cnN0KTsKPiArCXJldCA9IHByaXYtPmNmZy0+Y29udmVydF9idXJz dChzY29uZmlnLT5zcmNfbWF4YnVyc3QpOwo+ICAJaWYgKHJldCA8IDApCj4gIAkJZ290byBmYWls Owo+ICAJcHJvbWlzZS0+Y2ZnIHw9IFNVTjRJX0RNQV9DRkdfU1JDX0JVUlNUX0xFTkdUSChyZXQp Owo+ICAKPiAgCS8qIERlc3RpbmF0aW9uIGJ1cnN0ICovCj4gLQlyZXQgPSBjb252ZXJ0X2J1cnN0 KHNjb25maWctPmRzdF9tYXhidXJzdCk7Cj4gKwlyZXQgPSBwcml2LT5jZmctPmNvbnZlcnRfYnVy c3Qoc2NvbmZpZy0+ZHN0X21heGJ1cnN0KTsKPiAgCWlmIChyZXQgPCAwKQo+ICAJCWdvdG8gZmFp bDsKPiAgCXByb21pc2UtPmNmZyB8PSBTVU40SV9ETUFfQ0ZHX0RTVF9CVVJTVF9MRU5HVEgocmV0 KTsKPiBAQCAtNDc1LDEzICs1MTYsMTMgQEAgZ2VuZXJhdGVfbmRtYV9wcm9taXNlKHN0cnVjdCBk bWFfY2hhbiAqY2hhbiwgZG1hX2FkZHJfdCBzcmMsIGRtYV9hZGRyX3QgZGVzdCwKPiAgCXJldCA9 IGNvbnZlcnRfYnVzd2lkdGgoc2NvbmZpZy0+c3JjX2FkZHJfd2lkdGgpOwo+ICAJaWYgKHJldCA8 IDApCj4gIAkJZ290byBmYWlsOwo+IC0JcHJvbWlzZS0+Y2ZnIHw9IFNVTjRJX0RNQV9DRkdfU1JD X0RBVEFfV0lEVEgocmV0KTsKPiArCXByaXYtPmNmZy0+c2V0X3NyY19kYXRhX3dpZHRoKCZwcm9t aXNlLT5jZmcsIHJldCk7Cj4gIAo+ICAJLyogRGVzdGluYXRpb24gYnVzIHdpZHRoICovCj4gIAly ZXQgPSBjb252ZXJ0X2J1c3dpZHRoKHNjb25maWctPmRzdF9hZGRyX3dpZHRoKTsKPiAgCWlmIChy ZXQgPCAwKQo+ICAJCWdvdG8gZmFpbDsKPiAtCXByb21pc2UtPmNmZyB8PSBTVU40SV9ETUFfQ0ZH X0RTVF9EQVRBX1dJRFRIKHJldCk7Cj4gKwlwcml2LT5jZmctPnNldF9kc3RfZGF0YV93aWR0aCgm cHJvbWlzZS0+Y2ZnLCByZXQpOwo+ICAKPiAgCXJldHVybiBwcm9taXNlOwo+ICAKPiBAQCAtNTAz LDYgKzU0NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3VuNGlfZG1hX3Byb21pc2UgKgo+ICBnZW5lcmF0 ZV9kZG1hX3Byb21pc2Uoc3RydWN0IGRtYV9jaGFuICpjaGFuLCBkbWFfYWRkcl90IHNyYywgZG1h X2FkZHJfdCBkZXN0LAo+ICAJCSAgICAgIHNpemVfdCBsZW4sIHN0cnVjdCBkbWFfc2xhdmVfY29u ZmlnICpzY29uZmlnKQo+ICB7Cj4gKwlzdHJ1Y3Qgc3VuNGlfZG1hX2RldiAqcHJpdiA9IHRvX3N1 bjRpX2RtYV9kZXYoY2hhbi0+ZGV2aWNlKTsKPiAgCXN0cnVjdCBzdW40aV9kbWFfcHJvbWlzZSAq cHJvbWlzZTsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC01MTcsMTMgKzU1OSwxMyBAQCBnZW5lcmF0 ZV9kZG1hX3Byb21pc2Uoc3RydWN0IGRtYV9jaGFuICpjaGFuLCBkbWFfYWRkcl90IHNyYywgZG1h X2FkZHJfdCBkZXN0LAo+ICAJCVNVTjRJX0RETUFfQ0ZHX0JZVEVfQ09VTlRfTU9ERV9SRU1BSU47 Cj4gIAo+ICAJLyogU291cmNlIGJ1cnN0ICovCj4gLQlyZXQgPSBjb252ZXJ0X2J1cnN0KHNjb25m aWctPnNyY19tYXhidXJzdCk7Cj4gKwlyZXQgPSBwcml2LT5jZmctPmNvbnZlcnRfYnVyc3Qoc2Nv bmZpZy0+c3JjX21heGJ1cnN0KTsKPiAgCWlmIChyZXQgPCAwKQo+ICAJCWdvdG8gZmFpbDsKPiAg CXByb21pc2UtPmNmZyB8PSBTVU40SV9ETUFfQ0ZHX1NSQ19CVVJTVF9MRU5HVEgocmV0KTsKPiAg Cj4gIAkvKiBEZXN0aW5hdGlvbiBidXJzdCAqLwo+IC0JcmV0ID0gY29udmVydF9idXJzdChzY29u ZmlnLT5kc3RfbWF4YnVyc3QpOwo+ICsJcmV0ID0gcHJpdi0+Y2ZnLT5jb252ZXJ0X2J1cnN0KHNj b25maWctPmRzdF9tYXhidXJzdCk7Cj4gIAlpZiAocmV0IDwgMCkKPiAgCQlnb3RvIGZhaWw7Cj4g IAlwcm9taXNlLT5jZmcgfD0gU1VONElfRE1BX0NGR19EU1RfQlVSU1RfTEVOR1RIKHJldCk7Cj4g QEAgLTUzMiwxMyArNTc0LDEzIEBAIGdlbmVyYXRlX2RkbWFfcHJvbWlzZShzdHJ1Y3QgZG1hX2No YW4gKmNoYW4sIGRtYV9hZGRyX3Qgc3JjLCBkbWFfYWRkcl90IGRlc3QsCj4gIAlyZXQgPSBjb252 ZXJ0X2J1c3dpZHRoKHNjb25maWctPnNyY19hZGRyX3dpZHRoKTsKPiAgCWlmIChyZXQgPCAwKQo+ ICAJCWdvdG8gZmFpbDsKPiAtCXByb21pc2UtPmNmZyB8PSBTVU40SV9ETUFfQ0ZHX1NSQ19EQVRB X1dJRFRIKHJldCk7Cj4gKwlwcml2LT5jZmctPnNldF9zcmNfZGF0YV93aWR0aCgmcHJvbWlzZS0+ Y2ZnLCByZXQpOwo+ICAKPiAgCS8qIERlc3RpbmF0aW9uIGJ1cyB3aWR0aCAqLwo+ICAJcmV0ID0g Y29udmVydF9idXN3aWR0aChzY29uZmlnLT5kc3RfYWRkcl93aWR0aCk7Cj4gIAlpZiAocmV0IDwg MCkKPiAgCQlnb3RvIGZhaWw7Cj4gLQlwcm9taXNlLT5jZmcgfD0gU1VONElfRE1BX0NGR19EU1Rf REFUQV9XSURUSChyZXQpOwo+ICsJcHJpdi0+Y2ZnLT5zZXRfZHN0X2RhdGFfd2lkdGgoJnByb21p c2UtPmNmZywgcmV0KTsKPiAgCj4gIAlyZXR1cm4gcHJvbWlzZTsKPiAgCj4gQEAgLTYxNSw2ICs2 NTcsNyBAQCBzdGF0aWMgc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICoKPiAgc3VuNGlf ZG1hX3ByZXBfZG1hX21lbWNweShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIGRtYV9hZGRyX3QgZGVz dCwKPiAgCQkJICBkbWFfYWRkcl90IHNyYywgc2l6ZV90IGxlbiwgdW5zaWduZWQgbG9uZyBmbGFn cykKPiAgewo+ICsJc3RydWN0IHN1bjRpX2RtYV9kZXYgKnByaXYgPSB0b19zdW40aV9kbWFfZGV2 KGNoYW4tPmRldmljZSk7Cj4gIAlzdHJ1Y3Qgc3VuNGlfZG1hX3ZjaGFuICp2Y2hhbiA9IHRvX3N1 bjRpX2RtYV92Y2hhbihjaGFuKTsKPiAgCXN0cnVjdCBkbWFfc2xhdmVfY29uZmlnICpzY29uZmln ID0gJnZjaGFuLT5jZmc7Cj4gIAlzdHJ1Y3Qgc3VuNGlfZG1hX3Byb21pc2UgKnByb21pc2U7Cj4g QEAgLTYzMSw4ICs2NzQsOCBAQCBzdW40aV9kbWFfcHJlcF9kbWFfbWVtY3B5KHN0cnVjdCBkbWFf Y2hhbiAqY2hhbiwgZG1hX2FkZHJfdCBkZXN0LAo+ICAJICovCj4gIAlzY29uZmlnLT5zcmNfYWRk cl93aWR0aCA9IERNQV9TTEFWRV9CVVNXSURUSF80X0JZVEVTOwo+ICAJc2NvbmZpZy0+ZHN0X2Fk ZHJfd2lkdGggPSBETUFfU0xBVkVfQlVTV0lEVEhfNF9CWVRFUzsKPiAtCXNjb25maWctPnNyY19t YXhidXJzdCA9IDg7Cj4gLQlzY29uZmlnLT5kc3RfbWF4YnVyc3QgPSA4Owo+ICsJc2NvbmZpZy0+ c3JjX21heGJ1cnN0ID0gcHJpdi0+Y2ZnLT5tYXhfYnVyc3Q7Cj4gKwlzY29uZmlnLT5kc3RfbWF4 YnVyc3QgPSBwcml2LT5jZmctPm1heF9idXJzdDsKPiAgCj4gIAlpZiAodmNoYW4tPmlzX2RlZGlj YXRlZCkKPiAgCQlwcm9taXNlID0gZ2VuZXJhdGVfZGRtYV9wcm9taXNlKGNoYW4sIHNyYywgZGVz dCwgbGVuLCBzY29uZmlnKTsKPiBAQCAtNjQ3LDExICs2OTAsMTMgQEAgc3VuNGlfZG1hX3ByZXBf ZG1hX21lbWNweShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIGRtYV9hZGRyX3QgZGVzdCwKPiAgCj4g IAkvKiBDb25maWd1cmUgbWVtY3B5IG1vZGUgKi8KPiAgCWlmICh2Y2hhbi0+aXNfZGVkaWNhdGVk KSB7Cj4gLQkJcHJvbWlzZS0+Y2ZnIHw9IFNVTjRJX0RNQV9DRkdfU1JDX0RSUV9UWVBFKFNVTjRJ X0RETUFfRFJRX1RZUEVfU0RSQU0pIHwKPiAtCQkJCVNVTjRJX0RNQV9DRkdfRFNUX0RSUV9UWVBF KFNVTjRJX0RETUFfRFJRX1RZUEVfU0RSQU0pOwo+ICsJCXByb21pc2UtPmNmZyB8PQo+ICsJCQlT VU40SV9ETUFfQ0ZHX1NSQ19EUlFfVFlQRShwcml2LT5jZmctPmRkbWFfZHJxX3NkcmFtKSB8Cj4g KwkJCVNVTjRJX0RNQV9DRkdfRFNUX0RSUV9UWVBFKHByaXYtPmNmZy0+ZGRtYV9kcnFfc2RyYW0p Owo+ICAJfSBlbHNlIHsKPiAtCQlwcm9taXNlLT5jZmcgfD0gU1VONElfRE1BX0NGR19TUkNfRFJR X1RZUEUoU1VONElfTkRNQV9EUlFfVFlQRV9TRFJBTSkgfAo+IC0JCQkJU1VONElfRE1BX0NGR19E U1RfRFJRX1RZUEUoU1VONElfTkRNQV9EUlFfVFlQRV9TRFJBTSk7Cj4gKwkJcHJvbWlzZS0+Y2Zn IHw9Cj4gKwkJCVNVTjRJX0RNQV9DRkdfU1JDX0RSUV9UWVBFKHByaXYtPmNmZy0+bmRtYV9kcnFf c2RyYW0pIHwKPiArCQkJU1VONElfRE1BX0NGR19EU1RfRFJRX1RZUEUocHJpdi0+Y2ZnLT5uZG1h X2RycV9zZHJhbSk7Cj4gIAl9Cj4gIAo+ICAJLyogRmlsbCB0aGUgY29udHJhY3Qgd2l0aCBvdXIg b25seSBwcm9taXNlICovCj4gQEAgLTY2Niw2ICs3MTEsNyBAQCBzdW40aV9kbWFfcHJlcF9kbWFf Y3ljbGljKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgZG1hX2FkZHJfdCBidWYsIHNpemVfdCBsZW4s Cj4gIAkJCSAgc2l6ZV90IHBlcmlvZF9sZW4sIGVudW0gZG1hX3RyYW5zZmVyX2RpcmVjdGlvbiBk aXIsCj4gIAkJCSAgdW5zaWduZWQgbG9uZyBmbGFncykKPiAgewo+ICsJc3RydWN0IHN1bjRpX2Rt YV9kZXYgKnByaXYgPSB0b19zdW40aV9kbWFfZGV2KGNoYW4tPmRldmljZSk7Cj4gIAlzdHJ1Y3Qg c3VuNGlfZG1hX3ZjaGFuICp2Y2hhbiA9IHRvX3N1bjRpX2RtYV92Y2hhbihjaGFuKTsKPiAgCXN0 cnVjdCBkbWFfc2xhdmVfY29uZmlnICpzY29uZmlnID0gJnZjaGFuLT5jZmc7Cj4gIAlzdHJ1Y3Qg c3VuNGlfZG1hX3Byb21pc2UgKnByb21pc2U7Cj4gQEAgLTcwMSw3ICs3NDcsNyBAQCBzdW40aV9k bWFfcHJlcF9kbWFfY3ljbGljKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgZG1hX2FkZHJfdCBidWYs IHNpemVfdCBsZW4sCj4gIAlpZiAoZGlyID09IERNQV9NRU1fVE9fREVWKSB7Cj4gIAkJc3JjID0g YnVmOwo+ICAJCWRlc3QgPSBzY29uZmlnLT5kc3RfYWRkcjsKPiAtCQllbmRwb2ludHMgPSBTVU40 SV9ETUFfQ0ZHX1NSQ19EUlFfVFlQRShTVU40SV9ORE1BX0RSUV9UWVBFX1NEUkFNKSB8Cj4gKwkJ ZW5kcG9pbnRzID0gU1VONElfRE1BX0NGR19TUkNfRFJRX1RZUEUocHJpdi0+Y2ZnLT5uZG1hX2Ry cV9zZHJhbSkgfAo+ICAJCQkgICAgU1VONElfRE1BX0NGR19EU1RfRFJRX1RZUEUodmNoYW4tPmVu ZHBvaW50KSB8Cj4gIAkJCSAgICBTVU40SV9ETUFfQ0ZHX0RTVF9BRERSX01PREUoU1VONElfTkRN QV9BRERSX01PREVfSU8pOwo+ICAJfSBlbHNlIHsKPiBAQCAtNzA5LDcgKzc1NSw3IEBAIHN1bjRp X2RtYV9wcmVwX2RtYV9jeWNsaWMoc3RydWN0IGRtYV9jaGFuICpjaGFuLCBkbWFfYWRkcl90IGJ1 Ziwgc2l6ZV90IGxlbiwKPiAgCQlkZXN0ID0gYnVmOwo+ICAJCWVuZHBvaW50cyA9IFNVTjRJX0RN QV9DRkdfU1JDX0RSUV9UWVBFKHZjaGFuLT5lbmRwb2ludCkgfAo+ICAJCQkgICAgU1VONElfRE1B X0NGR19TUkNfQUREUl9NT0RFKFNVTjRJX05ETUFfQUREUl9NT0RFX0lPKSB8Cj4gLQkJCSAgICBT VU40SV9ETUFfQ0ZHX0RTVF9EUlFfVFlQRShTVU40SV9ORE1BX0RSUV9UWVBFX1NEUkFNKTsKPiAr CQkJICAgIFNVTjRJX0RNQV9DRkdfRFNUX0RSUV9UWVBFKHByaXYtPmNmZy0+bmRtYV9kcnFfc2Ry YW0pOwo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTc3Miw2ICs4MTgsNyBAQCBzdW40aV9kbWFfcHJl cF9zbGF2ZV9zZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIHN0cnVjdCBzY2F0dGVybGlzdCAqc2ds LAo+ICAJCQl1bnNpZ25lZCBpbnQgc2dfbGVuLCBlbnVtIGRtYV90cmFuc2Zlcl9kaXJlY3Rpb24g ZGlyLAo+ICAJCQl1bnNpZ25lZCBsb25nIGZsYWdzLCB2b2lkICpjb250ZXh0KQo+ICB7Cj4gKwlz dHJ1Y3Qgc3VuNGlfZG1hX2RldiAqcHJpdiA9IHRvX3N1bjRpX2RtYV9kZXYoY2hhbi0+ZGV2aWNl KTsKPiAgCXN0cnVjdCBzdW40aV9kbWFfdmNoYW4gKnZjaGFuID0gdG9fc3VuNGlfZG1hX3ZjaGFu KGNoYW4pOwo+ICAJc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgKnNjb25maWcgPSAmdmNoYW4tPmNm ZzsKPiAgCXN0cnVjdCBzdW40aV9kbWFfcHJvbWlzZSAqcHJvbWlzZTsKPiBAQCAtNzk3LDExICs4 NDQsMTEgQEAgc3VuNGlfZG1hX3ByZXBfc2xhdmVfc2coc3RydWN0IGRtYV9jaGFuICpjaGFuLCBz dHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbCwKPiAgCWlmICh2Y2hhbi0+aXNfZGVkaWNhdGVkKSB7Cj4g IAkJaW9fbW9kZSA9IFNVTjRJX0RETUFfQUREUl9NT0RFX0lPOwo+ICAJCWxpbmVhcl9tb2RlID0g U1VONElfRERNQV9BRERSX01PREVfTElORUFSOwo+IC0JCXJhbV90eXBlID0gU1VONElfRERNQV9E UlFfVFlQRV9TRFJBTTsKPiArCQlyYW1fdHlwZSA9IHByaXYtPmNmZy0+ZGRtYV9kcnFfc2RyYW07 Cj4gIAl9IGVsc2Ugewo+ICAJCWlvX21vZGUgPSBTVU40SV9ORE1BX0FERFJfTU9ERV9JTzsKPiAg CQlsaW5lYXJfbW9kZSA9IFNVTjRJX05ETUFfQUREUl9NT0RFX0xJTkVBUjsKPiAtCQlyYW1fdHlw ZSA9IFNVTjRJX05ETUFfRFJRX1RZUEVfU0RSQU07Cj4gKwkJcmFtX3R5cGUgPSBwcml2LT5jZmct Pm5kbWFfZHJxX3NkcmFtOwo+ICAJfQo+ICAKPiAgCWlmIChkaXIgPT0gRE1BX01FTV9UT19ERVYp Cj4gQEAgLTExMzAsNiArMTE3NywxMCBAQCBzdGF0aWMgaW50IHN1bjRpX2RtYV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJaWYgKCFwcml2KQo+ICAJCXJldHVybiAtRU5P TUVNOwo+ICAKPiArCXByaXYtPmNmZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YSgmcGRldi0+ ZGV2KTsKPiArCWlmICghcHJpdi0+Y2ZnKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiAgCXJl cyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gIAlw cml2LT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7Cj4gIAlp ZiAoSVNfRVJSKHByaXYtPmJhc2UpKQo+IEBAIC0xMTc4LDIzICsxMjI5LDI2IEBAIHN0YXRpYyBp bnQgc3VuNGlfZG1hX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAo+ICAJ cHJpdi0+c2xhdmUuZGV2ID0gJnBkZXYtPmRldjsKPiAgCj4gLQlwcml2LT5wY2hhbnMgPSBkZXZt X2tjYWxsb2MoJnBkZXYtPmRldiwgU1VONElfRE1BX05SX01BWF9DSEFOTkVMUywKPiArCXByaXYt PnBjaGFucyA9IGRldm1fa2NhbGxvYygmcGRldi0+ZGV2LCBwcml2LT5jZmctPmRtYV9ucl9tYXhf Y2hhbm5lbHMsCj4gIAkJCQkgICAgc2l6ZW9mKHN0cnVjdCBzdW40aV9kbWFfcGNoYW4pLCBHRlBf S0VSTkVMKTsKPiAgCXByaXYtPnZjaGFucyA9IGRldm1fa2NhbGxvYygmcGRldi0+ZGV2LCBTVU40 SV9ETUFfTlJfTUFYX1ZDSEFOUywKPiAgCQkJCSAgICBzaXplb2Yoc3RydWN0IHN1bjRpX2RtYV92 Y2hhbiksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCFwcml2LT52Y2hhbnMgfHwgIXByaXYtPnBjaGFu cykKPiArCXByaXYtPnBjaGFuc191c2VkID0gZGV2bV9rY2FsbG9jKCZwZGV2LT5kZXYsCj4gKwkJ CUJJVFNfVE9fTE9OR1MocHJpdi0+Y2ZnLT5kbWFfbnJfbWF4X2NoYW5uZWxzKSwKPiArCQkJc2l6 ZW9mKHVuc2lnbmVkIGxvbmcpLCBHRlBfS0VSTkVMKTsKCkknbSBub3Qgc3VyZSB3ZSByZWFsbHkg bmVlZCBhIGR5bmFtaWMgYWxsb2NhdGlvbiBoZXJlLiBKdXN0IGtlZXAgdGhlCmJpdG1hcCwgYW5k IHVzZSB0aGUgYmlnZ2VyIHNpemUuCgpUaGFua3MhCk1heGltZQo=