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,net-next] net: fixed_phy: Move the DT based link GPIO parsing to of_mdio.c From: Florian Fainelli Message-Id: Date: Wed, 6 Feb 2019 14:41:27 -0800 To: Moritz Fischer , Andrew Lunn Cc: linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, netdev@vger.kernel.org, colin.king@canonical.com, linus.walleij@linaro.org, yuehaibing@huawei.com, mcgrof@kernel.org, frowand.list@gmail.com, robh+dt@kernel.org, UNGLinuxDriver@microchip.com, woojung.huh@microchip.com, hkallweit1@gmail.com, davem@davemloft.net, vivien.didelot@gmail.com, moritz@ettus.com, alex.williams@ni.com List-ID: T24gMi82LzE5IDI6MzggUE0sIE1vcml0eiBGaXNjaGVyIHdyb3RlOgo+IEhpIEFuZHJldywKPiAK PiB0aGFua3MgZm9yIHlvdXIgZmVlZGJhY2suCj4gCj4gT24gV2VkLCBGZWIgMDYsIDIwMTkgYXQg MTA6NTM6MjJQTSArMDEwMCwgQW5kcmV3IEx1bm4gd3JvdGU6Cj4+IE9uIFdlZCwgRmViIDA2LCAy MDE5IGF0IDEyOjUxOjA2UE0gLTA4MDAsIE1vcml0eiBGaXNjaGVyIHdyb3RlOgo+Pj4gTW92ZSB0 aGUgRFQgYmFzZWQgbGluayBHUElPIHBhcnNpbmcgdG8gb2ZfbWRpbyBhbmQgbGV0IHRoZSBwbGFj ZXMKPj4+IHRoYXQgcmVnaXN0ZXIgYSBmaXhlZF9waHkgcGFzcyBpbiBhIEdQSU8gZGVzY3JpcHRv ciBvciBOVUxMLgo+Pj4KPj4+IFRoaXMgYWxsb3dzIGZpeGVkX3BoeSBvbiBub24tRFQgcGxhdGZv cm1zIHRvIGhhdmUgbGluayBHUElPcywgdG9vLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IE1vcml0 eiBGaXNjaGVyIDxtZGZAa2VybmVsLm9yZz4KPj4+IC0tLQo+Pj4gIGRyaXZlcnMvbmV0L2RzYS9k c2FfbG9vcC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPj4+ICBkcml2ZXJzL25ldC9ldGhl cm5ldC9icm9hZGNvbS9iZ21hYy5jICAgICAgICB8ICAyICstCj4+PiAgZHJpdmVycy9uZXQvZXRo ZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMgfCAgMiArLQo+Pj4gIGRyaXZlcnMvbmV0L3Bo eS9maXhlZF9waHkuYyAgICAgICAgICAgICAgICAgIHwgNDggKystLS0tLS0tLS0tLS0tLS0tLS0K Pj4+ICBkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jICAgICAgICAgICAgICAgICAgICB8ICAyICst Cj4+PiAgZHJpdmVycy9vZi9vZl9tZGlvLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNSAr KysrKy0KPj4+ICBpbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oICAgICAgICAgICAgICAgICAgICB8 ICAzICstCj4+PiAgNyBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlv bnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMgYi9k cml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYwo+Pj4gaW5kZXggMTc0ODJhZTA5YWE1Li43ZjEyNGM2 MjAwOTIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYwo+Pj4gKysr IGIvZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMKPj4+IEBAIC0zNDMsNyArMzQzLDcgQEAgc3Rh dGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKQo+Pj4gIAl1bnNpZ25lZCBpbnQgaTsK Pj4+ICAKPj4+ICAJZm9yIChpID0gMDsgaSA8IE5VTV9GSVhFRF9QSFlTOyBpKyspCj4+PiAtCQlw aHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFBIWV9QT0xMLCAmc3RhdHVzLCBOVUxMKTsK Pj4+ICsJCXBoeWRldnNbaV0gPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZX1BPTEwsICZzdGF0dXMs IE5VTEwsIE5VTEwpOwo+Pj4gIAo+Pj4gIAlyZXR1cm4gbWRpb19kcml2ZXJfcmVnaXN0ZXIoJmRz YV9sb29wX2Rydik7Cj4+PiAgfQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2Jyb2FkY29tL2JnbWFjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5j Cj4+PiBpbmRleCA0NjMyZGQ1ZGJhZDEuLmJjZTY0NGRlYzVjMiAxMDA2NDQKPj4+IC0tLSBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMKPj4+ICsrKyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMKPj4+IEBAIC0xNDQ2LDcgKzE0NDYsNyBAQCBpbnQg YmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpCj4+PiAgCXN0cnVj dCBwaHlfZGV2aWNlICpwaHlfZGV2Owo+Pj4gIAlpbnQgZXJyOwo+Pj4gIAo+Pj4gLQlwaHlfZGV2 ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFBIWV9QT0xMLCAmZnBoeV9zdGF0dXMsIE5VTEwpOwo+Pj4g KwlwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFBIWV9QT0xMLCAmZnBoeV9zdGF0dXMsIE5V TEwsIE5VTEwpOwo+Pj4gIAlpZiAoIXBoeV9kZXYgfHwgSVNfRVJSKHBoeV9kZXYpKSB7Cj4+PiAg CQlkZXZfZXJyKGJnbWFjLT5kZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgZml4ZWQgUEhZIGRldmlj ZVxuIik7Cj4+PiAgCQlyZXR1cm4gLUVOT0RFVjsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jCj4+PiBpbmRleCA1MTg4MGQ4MzEzMWEuLjdjYmQ3Mzdh YmE4MCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0 L2JjbW1paS5jCj4+PiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9i Y21taWkuYwo+Pj4gQEAgLTUyNSw3ICs1MjUsNyBAQCBzdGF0aWMgaW50IGJjbWdlbmV0X21paV9w ZF9pbml0KHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2KQo+Pj4gIAkJCS5hc3ltX3BhdXNlID0g MCwKPj4+ICAJCX07Cj4+PiAgCj4+PiAtCQlwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZ X1BPTEwsICZmcGh5X3N0YXR1cywgTlVMTCk7Cj4+PiArCQlwaHlkZXYgPSBmaXhlZF9waHlfcmVn aXN0ZXIoUEhZX1BPTEwsICZmcGh5X3N0YXR1cywgTlVMTCwgTlVMTCk7Cj4+PiAgCQlpZiAoIXBo eWRldiB8fCBJU19FUlIocGh5ZGV2KSkgewo+Pj4gIAkJCWRldl9lcnIoa2RldiwgImZhaWxlZCB0 byByZWdpc3RlciBmaXhlZCBQSFkgZGV2aWNlXG4iKTsKPj4+ICAJCQlyZXR1cm4gLUVOT0RFVjsK Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMgYi9kcml2ZXJzL25l dC9waHkvZml4ZWRfcGh5LmMKPj4+IGluZGV4IGQ4MTBmOTE0YWFhNC4uODQ1YmQ3YzIwNjVhIDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jCj4+PiArKysgYi9kcml2 ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMKPj4+IEBAIC0xOCw2ICsxOCw3IEBACj4+PiAgI2luY2x1 ZGUgPGxpbnV4L2Vyci5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+PiAgI2luY2x1 ZGUgPGxpbnV4L29mLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L29mX21kaW8uaD4KPj4+ICAjaW5j bHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9zZXFsb2Nr Lmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L2lkci5oPgo+Pj4gQEAgLTE5MSw1MCArMTkyLDEyIEBA IHN0YXRpYyB2b2lkIGZpeGVkX3BoeV9kZWwoaW50IHBoeV9hZGRyKQo+Pj4gIAl9Cj4+PiAgfQo+ Pj4gIAo+Pj4gLSNpZmRlZiBDT05GSUdfT0ZfR1BJTwo+Pj4gLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19k ZXNjICpmaXhlZF9waHlfZ2V0X2dwaW9kKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4+PiAtewo+ Pj4gLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKmZpeGVkX2xpbmtfbm9kZTsKPj4+IC0Jc3RydWN0IGdw aW9fZGVzYyAqZ3Bpb2Q7Cj4+PiAtCj4+PiAtCWlmICghbnApCj4+PiAtCQlyZXR1cm4gTlVMTDsK Pj4+IC0KPj4+IC0JZml4ZWRfbGlua19ub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsICJm aXhlZC1saW5rIik7Cj4+PiAtCWlmICghZml4ZWRfbGlua19ub2RlKQo+Pj4gLQkJcmV0dXJuIE5V TEw7Cj4+PiAtCj4+PiAtCS8qCj4+PiAtCSAqIEFzIHRoZSBmaXhlZCBsaW5rIGlzIGp1c3QgYSBk ZXZpY2UgdHJlZSBub2RlIHdpdGhvdXQgYW55Cj4+PiAtCSAqIExpbnV4IGRldmljZSBhc3NvY2lh dGVkIHdpdGggaXQsIHdlIHNpbXBseSBoYXZlIG9idGFpbgo+Pj4gLQkgKiB0aGUgR1BJTyBkZXNj cmlwdG9yIGZyb20gdGhlIGRldmljZSB0cmVlIGxpa2UgdGhpcy4KPj4+IC0JICovCj4+PiAtCWdw aW9kID0gZ3Bpb2RfZ2V0X2Zyb21fb2Zfbm9kZShmaXhlZF9saW5rX25vZGUsICJsaW5rLWdwaW9z IiwgMCwKPj4+IC0JCQkJICAgICAgIEdQSU9EX0lOLCAibWRpbyIpOwo+Pj4gLQlvZl9ub2RlX3B1 dChmaXhlZF9saW5rX25vZGUpOwo+Pj4gLQlpZiAoSVNfRVJSKGdwaW9kKSkgewo+Pj4gLQkJaWYg KFBUUl9FUlIoZ3Bpb2QpID09IC1FUFJPQkVfREVGRVIpCj4+PiAtCQkJcmV0dXJuIGdwaW9kOwo+ Pj4gLQkJcHJfZXJyKCJlcnJvciBnZXR0aW5nIEdQSU8gZm9yIGZpeGVkIGxpbmsgJXBPRiwgcHJv Y2VlZCB3aXRob3V0XG4iLAo+Pj4gLQkJICAgICAgIGZpeGVkX2xpbmtfbm9kZSk7Cj4+PiAtCQln cGlvZCA9IE5VTEw7Cj4+PiAtCX0KPj4+IC0KPj4+IC0JcmV0dXJuIGdwaW9kOwo+Pj4gLX0KPj4+ IC0jZWxzZQo+Pj4gLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19kZXNjICpmaXhlZF9waHlfZ2V0X2dwaW9k KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4+PiAtewo+Pj4gLQlyZXR1cm4gTlVMTDsKPj4+IC19 Cj4+PiAtI2VuZGlmCj4+PiAtCj4+PiAgc3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdp c3Rlcih1bnNpZ25lZCBpbnQgaXJxLAo+Pj4gIAkJCQkgICAgICBzdHJ1Y3QgZml4ZWRfcGh5X3N0 YXR1cyAqc3RhdHVzLAo+Pj4gLQkJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQo+Pj4g KwkJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAo+Pj4gKwkJCQkgICAgICBzdHJ1Y3Qg Z3Bpb19kZXNjICpncGlvZCkKPj4+ICB7Cj4+PiAgCXN0cnVjdCBmaXhlZF9tZGlvX2J1cyAqZm1i ID0gJnBsYXRmb3JtX2ZtYjsKPj4+IC0Jc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2QgPSBOVUxMOwo+ Pj4gIAlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5Owo+Pj4gIAlpbnQgcGh5X2FkZHI7Cj4+PiAgCWlu dCByZXQ7Cj4+PiBAQCAtMjQyLDExICsyMDUsNiBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRf cGh5X3JlZ2lzdGVyKHVuc2lnbmVkIGludCBpcnEsCj4+PiAgCWlmICghZm1iLT5taWlfYnVzIHx8 IGZtYi0+bWlpX2J1cy0+c3RhdGUgIT0gTURJT0JVU19SRUdJU1RFUkVEKQo+Pj4gIAkJcmV0dXJu IEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7Cj4+PiAgCj4+PiAtCS8qIENoZWNrIGlmIHdlIGhhdmUg YSBHUElPIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpeGVkIHBoeSAqLwo+Pj4gLQlncGlvZCA9IGZp eGVkX3BoeV9nZXRfZ3Bpb2QobnApOwo+Pj4gLQlpZiAoSVNfRVJSKGdwaW9kKSkKPj4+IC0JCXJl dHVybiBFUlJfQ0FTVChncGlvZCk7Cj4+PiAtCj4+PiAgCS8qIEdldCB0aGUgbmV4dCBhdmFpbGFi bGUgUEhZIGFkZHJlc3MsIHVwIHRvIFBIWV9NQVhfQUREUiAqLwo+Pj4gIAlwaHlfYWRkciA9IGlk YV9zaW1wbGVfZ2V0KCZwaHlfZml4ZWRfaWRhLCAwLCBQSFlfTUFYX0FERFIsIEdGUF9LRVJORUwp Owo+Pj4gIAlpZiAocGh5X2FkZHIgPCAwKQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Vz Yi9sYW43OHh4LmMgYi9kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jCj4+PiBpbmRleCAzZDkyZWE2 ZmNjMDIuLmJkODhmMGFlZjJmYSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvbmV0L3VzYi9sYW43 OHh4LmMKPj4+ICsrKyBiL2RyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMKPj4+IEBAIC0yMDUxLDcg KzIwNTEsNyBAQCBzdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKmxhbjc4MDFfcGh5X2luaXQoc3Ry dWN0IGxhbjc4eHhfbmV0ICpkZXYpCj4+PiAgCXBoeWRldiA9IHBoeV9maW5kX2ZpcnN0KGRldi0+ bWRpb2J1cyk7Cj4+PiAgCWlmICghcGh5ZGV2KSB7Cj4+PiAgCQluZXRkZXZfZGJnKGRldi0+bmV0 LCAiUEhZIE5vdCBGb3VuZCEhIFJlZ2lzdGVyaW5nIEZpeGVkIFBIWVxuIik7Cj4+PiAtCQlwaHlk ZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZX1BPTEwsICZmcGh5X3N0YXR1cywgTlVMTCk7Cj4+ PiArCQlwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZX1BPTEwsICZmcGh5X3N0YXR1cywg TlVMTCwgTlVMTCk7Cj4+PiAgCQlpZiAoSVNfRVJSKHBoeWRldikpIHsKPj4+ICAJCQluZXRkZXZf ZXJyKGRldi0+bmV0LCAiTm8gUEhZL2ZpeGVkX1BIWSBmb3VuZFxuIik7Cj4+PiAgCQkJcmV0dXJu IE5VTEw7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9vZl9tZGlvLmMgYi9kcml2ZXJzL29m L29mX21kaW8uYwo+Pj4gaW5kZXggZGU2MTU3MzU3ZTI2Li42YmUyMTIwYjVmMDMgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL29mL29mX21kaW8uYwo+Pj4gKysrIGIvZHJpdmVycy9vZi9vZl9tZGlv LmMKPj4+IEBAIC0yMCw2ICsyMCw3IEBACj4+PiAgI2luY2x1ZGUgPGxpbnV4L29mX21kaW8uaD4K Pj4+ICAjaW5jbHVkZSA8bGludXgvb2ZfbmV0Lmg+Cj4+PiAgI2luY2x1ZGUgPGxpbnV4L21vZHVs ZS5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4+PiAgCj4+PiAgI2Rl ZmluZSBERUZBVUxUX0dQSU9fUkVTRVRfREVMQVkJMTAJLyogaW4gbWljcm9zZWNvbmRzICovCj4+ PiAgCj4+PiBAQCAtNDYwLDYgKzQ2MSw3IEBAIGludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlu ayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQo+Pj4gIHsKPj4+ICAJc3RydWN0IGZpeGVkX3BoeV9z dGF0dXMgc3RhdHVzID0ge307Cj4+PiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZml4ZWRfbGlua19u b2RlOwo+Pj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZCA9IE5VTEw7Cj4+PiAgCXUzMiBmaXhl ZF9saW5rX3Byb3BbNV07Cj4+PiAgCWNvbnN0IGNoYXIgKm1hbmFnZWQ7Cj4+PiAgCj4+PiBAQCAt NDgzLDcgKzQ4NSwxNyBAQCBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRl dmljZV9ub2RlICpucCkKPj4+ICAJCXN0YXR1cy5wYXVzZSA9IG9mX3Byb3BlcnR5X3JlYWRfYm9v bChmaXhlZF9saW5rX25vZGUsICJwYXVzZSIpOwo+Pj4gIAkJc3RhdHVzLmFzeW1fcGF1c2UgPSBv Zl9wcm9wZXJ0eV9yZWFkX2Jvb2woZml4ZWRfbGlua19ub2RlLAo+Pj4gIAkJCQkJCQkgICJhc3lt LXBhdXNlIik7Cj4+PiArCj4+PiArCQlncGlvZCA9IGdwaW9kX2dldF9mcm9tX29mX25vZGUoZml4 ZWRfbGlua19ub2RlLCAibGluay1ncGlvcyIsIDAsCj4+PiArCQkJCSAgICAgICBHUElPRF9JTiwg Im1kaW8iKTsKPj4+ICAJCW9mX25vZGVfcHV0KGZpeGVkX2xpbmtfbm9kZSk7Cj4+PiArCQlpZiAo SVNfRVJSKGdwaW9kKSkgewo+Pj4gKwkJCWlmIChQVFJfRVJSKGdwaW9kKSA9PSAtRVBST0JFX0RF RkVSKQo+Pj4gKwkJCQlyZXR1cm4gUFRSX0VSUihncGlvZCk7Cj4+PiArCQkJcHJfZXJyKCJlcnJv ciBnZXR0aW5nIEdQSU8gZm9yIGZpeGVkIGxpbmsgJXBPRiwgcHJvY2VlZCB3aXRob3V0XG4iLAo+ Pj4gKwkJCSAgICAgICBmaXhlZF9saW5rX25vZGUpOwo+Pj4gKwkJCWdwaW9kID0gTlVMTDsKPj4+ ICBleHRlcm4gc3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcih1bnNpZ25lZCBp bnQgaXJxLAo+Pj4gIAkJCQkJICAgICBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLAo+ Pj4gLQkJCQkJICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTsKPj4+ICsJCQkJCSAgICAgc3Ry dWN0IGRldmljZV9ub2RlICpucCwKPj4+ICsJCQkJCSAgICAgc3RydWN0IGdwaW9fZGVzYyAqZ3Bp b2QpOwo+Pgo+PiBIaSBNb3JpdHoKPj4KPj4gSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8g YWRkIGEgCj4+Cj4+IGV4dGVybiBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVy X2dwaW9kKHVuc2lnbmVkIGludCBpcnEsCj4+ICAgICAgCQkJCQkgICAgIHN0cnVjdCBmaXhlZF9w aHlfc3RhdHVzICpzdGF0dXMsCj4+IAkJCQkJICAgICBzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZCk7 Cj4+Cj4+IElmIHlvdSBhcmUgbm90IHVzaW5nIERULCB0aGUgbnAgaXMgcG9pbnRsZXNzLiBTbyBs ZXRzIGtlZXAgdGhlIEFQSQo+PiBzaW1wbGUuCj4gCj4gVG8gY2xhcmlmeTogRG8geW91IGFncmVl IHdpdGggbW92aW5nIHRoZSBwYXJzaW5nIHRvIG9mX21kaW8sIG9yIGRvIHlvdQo+IHdhbnQgdG8g a2VlcCB0aGUgcGFyc2luZyBhcyBpdCB3YXMgYW5kIGp1c3QgYWRkIGFuIGFkZGl0aW9uYWwgZnVu Y3Rpb24uCj4gCj4gSW4gdGhlIGxhdHRlciBjYXNlIHlvdSdkIGhhdmUgYQo+IHN0YXRpYyBzdHJ1 Y3QgcGh5X2RldmljZSAqX19maXhlZF9waHlfcmVnaXN0ZXIodW5zaWduZWQgaW50IGlycSwKPiAJ CQkJCSAgICAgICBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLAo+IAkJCQkJICAgICAg IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCj4gCQkJCQkgICAgICAgc3RydWN0IGdwaW9fZGVzYyAq Z3Bpb2QpCj4gewo+IGlmIChncGlvZCkKPiAgICB1c2UgdGhhdAo+IGVsc2UKPiAgICBvbGQgYmVo YXZpb3IgLyBzY2FuIGR0Pwo+IH0KPiAKPiBUaGF0IHdlIHRoZW4gY2FsbCBmcm9tIGZpeGVkX3Bo eV9yZWdpc3Rlcl9ncGlvZCgpIHdpdGggYSBucCBvZiBOVUxMLAo+IGFuZCBmcm9tIGZpeGVkX3Bo eV9yZWdpc3RlcigpIHdpdGggYSBncGlvZCBvZiBOVUxMPwoKSWYgeW91IGhhdmUgZXhpc3Rpbmcg dXNlcnMgaW4gdHJlZSwgb2Ygc29tZXRoaW5nIGxpa2U6Cgpmb28oYSwgYiwgYykKCmFuZCB5b3Ug d2FudCB0byBpbnRyb2R1Y2UgYSAiZCIgYXJndW1lbnQsIGl0J3MgYSBnb29kIHByYWN0aWNlIHRv IGRvOgoKZm9vKGEsIGIsIGMpIC0+IF9fZm9vKGEsIGIsIGMsIDApCmZvb193aXRoX2QoYSwgYiwg YywgZCkgX19mb28oYSwgYiwgYywgZCkKCmFuZCBoYXZlIHRoZSBib2R5IG9mIGZvbygpIGJlY29t ZSBfX2ZvbygpIHdoaWxlIHRha2luZyB0aGUgbmV3IGFyZ3VtZW50LgoKSG9wZSB0aGlzIGlzIGNs ZWFyLgo=