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,v2,3/3] usb: typec: tcpm: Support for Alternate Modes From: Guenter Roeck Message-Id: <20180316213206.GA10520@roeck-us.net> Date: Fri, 16 Mar 2018 14:32:06 -0700 To: Heikki Krogerus Cc: Greg Kroah-Hartman , Hans de Goede , Jun Li , "Regupathy, Rajaram" , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: T24gRnJpLCBNYXIgMDksIDIwMTggYXQgMDY6MTk6MThQTSArMDMwMCwgSGVpa2tpIEtyb2dlcnVz IHdyb3RlOgo+IFRoaXMgYWRkcyBtb3JlIGNvbXBsZXRlIGhhbmRsaW5nIG9mIFZETXMgYW5kIHJl Z2lzdHJhdGlvbiBvZgo+IHBhcnRuZXIgYWx0ZXJuYXRlIG1vZGVzLCBhbmQgaW50cm9kdWNlcyBj YWxsYmFja3MgZm9yCj4gYWx0ZXJuYXRlIG1vZGUgb3BlcmF0aW9ucy4KPiAKPiBPbmx5IERGUCBy b2xlIGlzIHN1cHBvcnRlZCBmb3Igbm93Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IEhlaWtraSBLcm9n ZXJ1cyA8aGVpa2tpLmtyb2dlcnVzQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy91 c2IvdHlwZWMvdGNwbS5jIHwgMTMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgMjIgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYyBiL2Ry aXZlcnMvdXNiL3R5cGVjL3RjcG0uYwo+IGluZGV4IGJmYjg0M2ViZmZhNi4uMzRiZjVjMWY0ZDgx IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYwo+ICsrKyBiL2RyaXZlcnMv dXNiL3R5cGVjL3RjcG0uYwo+IEBAIC0xNTgsMTMgKzE1OCwxNCBAQCBlbnVtIHBkX21zZ19yZXF1 ZXN0IHsKPiAgLyogQWx0ZXJuYXRlIG1vZGUgc3VwcG9ydCAqLwo+ICAKPiAgI2RlZmluZSBTVklE X0RJU0NPVkVSWV9NQVgJMTYKPiArI2RlZmluZSBBTFRNT0RFX0RJU0NPVkVSWV9NQVgJKFNWSURf RElTQ09WRVJZX01BWCAqIE1PREVfRElTQ09WRVJZX01BWCkKPiAgCj4gIHN0cnVjdCBwZF9tb2Rl X2RhdGEgewo+ICAJaW50IHN2aWRfaW5kZXg7CQkvKiBjdXJyZW50IFNWSUQgaW5kZXgJCSovCj4g IAlpbnQgbnN2aWRzOwo+ICAJdTE2IHN2aWRzW1NWSURfRElTQ09WRVJZX01BWF07Cj4gIAlpbnQg YWx0bW9kZXM7CQkvKiBudW1iZXIgb2YgYWx0ZXJuYXRlIG1vZGVzCSovCj4gLQlzdHJ1Y3QgdHlw ZWNfYWx0bW9kZV9kZXNjIGFsdG1vZGVfZGVzY1tTVklEX0RJU0NPVkVSWV9NQVhdOwo+ICsJc3Ry dWN0IHR5cGVjX2FsdG1vZGVfZGVzYyBhbHRtb2RlX2Rlc2NbQUxUTU9ERV9ESVNDT1ZFUllfTUFY XTsKPiAgfTsKPiAgCj4gIHN0cnVjdCB0Y3BtX3BvcnQgewo+IEBAIC0yODAsOCArMjgxLDggQEAg c3RydWN0IHRjcG1fcG9ydCB7Cj4gIAkvKiBBbHRlcm5hdGUgbW9kZSBkYXRhICovCj4gIAo+ICAJ c3RydWN0IHBkX21vZGVfZGF0YSBtb2RlX2RhdGE7Cj4gLQlzdHJ1Y3QgdHlwZWNfYWx0bW9kZSAq cGFydG5lcl9hbHRtb2RlW1NWSURfRElTQ09WRVJZX01BWCAqIDZdOwo+IC0Jc3RydWN0IHR5cGVj X2FsdG1vZGUgKnBvcnRfYWx0bW9kZVtTVklEX0RJU0NPVkVSWV9NQVggKiA2XTsKPiArCXN0cnVj dCB0eXBlY19hbHRtb2RlICpwYXJ0bmVyX2FsdG1vZGVbQUxUTU9ERV9ESVNDT1ZFUllfTUFYXTsK PiArCXN0cnVjdCB0eXBlY19hbHRtb2RlICpwb3J0X2FsdG1vZGVbQUxUTU9ERV9ESVNDT1ZFUllf TUFYXTsKPiAgCj4gIAkvKiBEZWFkbGluZSBpbiBqaWZmaWVzIHRvIGV4aXQgc3JjX3RyeV93YWl0 IHN0YXRlICovCj4gIAl1bnNpZ25lZCBsb25nIG1heF93YWl0Owo+IEBAIC05ODUsMzYgKzk4Niw1 MyBAQCBzdGF0aWMgdm9pZCBzdmRtX2NvbnN1bWVfbW9kZXMoc3RydWN0IHRjcG1fcG9ydCAqcG9y dCwgY29uc3QgX19sZTMyICpwYXlsb2FkLAo+ICAJCQkgcG1kYXRhLT5hbHRtb2RlcywgcGFsdG1v ZGUtPnN2aWQsCj4gIAkJCSBwYWx0bW9kZS0+bW9kZSwgcGFsdG1vZGUtPnZkbyk7Cj4gIAo+IC0J CXBvcnQtPnBhcnRuZXJfYWx0bW9kZVtwbWRhdGEtPmFsdG1vZGVzXSA9Cj4gLQkJCXR5cGVjX3Bh cnRuZXJfcmVnaXN0ZXJfYWx0bW9kZShwb3J0LT5wYXJ0bmVyLCBwYWx0bW9kZSk7Cj4gLQkJaWYg KCFwb3J0LT5wYXJ0bmVyX2FsdG1vZGVbcG1kYXRhLT5hbHRtb2Rlc10pIHsKPiAtCQkJdGNwbV9s b2cocG9ydCwKPiAtCQkJCSAiRmFpbGVkIHRvIHJlZ2lzdGVyIG1vZGVzIGZvciBTVklEIDB4JTA0 eCIsCj4gLQkJCQkgcGFsdG1vZGUtPnN2aWQpOwo+IC0JCQlyZXR1cm47Cj4gLQkJfQo+ICAJCXBt ZGF0YS0+YWx0bW9kZXMrKzsKPiAgCX0KPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgdGNwbV9yZWdp c3Rlcl9wYXJ0bmVyX2FsdG1vZGVzKHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpCj4gK3sKPiArCXN0 cnVjdCBwZF9tb2RlX2RhdGEgKm1vZGVwID0gJnBvcnQtPm1vZGVfZGF0YTsKPiArCXN0cnVjdCB0 eXBlY19hbHRtb2RlICphbHRtb2RlOwo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8 IG1vZGVwLT5hbHRtb2RlczsgaSsrKSB7Cj4gKwkJYWx0bW9kZSA9IHR5cGVjX3BhcnRuZXJfcmVn aXN0ZXJfYWx0bW9kZShwb3J0LT5wYXJ0bmVyLAo+ICsJCQkJCQkmbW9kZXAtPmFsdG1vZGVfZGVz Y1tpXSk7Cj4gKwkJaWYgKCFhbHRtb2RlKQo+ICsJCQl0Y3BtX2xvZyhwb3J0LCAiRmFpbGVkIHRv IHJlZ2lzdGVyIHBhcnRuZXIgU1ZJRCAweCUwNHgiLAo+ICsJCQkJIG1vZGVwLT5hbHRtb2RlX2Rl c2NbaV0uc3ZpZCk7Cj4gKwkJcG9ydC0+cGFydG5lcl9hbHRtb2RlW2ldID0gYWx0bW9kZTsKPiAr CX0KPiArfQo+ICsKPiAgI2RlZmluZSBzdXBwb3J0c19tb2RhbChwb3J0KQlQRF9JREhfTU9EQUxf U1VQUCgocG9ydCktPnBhcnRuZXJfaWRlbnQuaWRfaGVhZGVyKQo+ICAKPiAgc3RhdGljIGludCB0 Y3BtX3BkX3N2ZG0oc3RydWN0IHRjcG1fcG9ydCAqcG9ydCwgY29uc3QgX19sZTMyICpwYXlsb2Fk LCBpbnQgY250LAo+ICAJCQl1MzIgKnJlc3BvbnNlKQo+ICB7Cj4gLQl1MzIgcDAgPSBsZTMyX3Rv X2NwdShwYXlsb2FkWzBdKTsKPiAtCWludCBjbWRfdHlwZSA9IFBEX1ZET19DTURUKHAwKTsKPiAt CWludCBjbWQgPSBQRF9WRE9fQ01EKHAwKTsKPiArCXN0cnVjdCB0eXBlY19hbHRtb2RlICphbHRt b2RlOwo+ICAJc3RydWN0IHBkX21vZGVfZGF0YSAqbW9kZXA7Cj4gKwl1MzIgcFtQRF9NQVhfUEFZ TE9BRF07Cj4gIAlpbnQgcmxlbiA9IDA7Cj4gLQl1MTYgc3ZpZDsKPiArCWludCBjbWRfdHlwZTsK PiArCWludCBjbWQ7Cj4gIAlpbnQgaTsKPiAgCj4gKwlmb3IgKGkgPSAwOyBpIDwgY250OyBpKysp Cj4gKwkJcFtpXSA9IGxlMzJfdG9fY3B1KHBheWxvYWRbaV0pOwo+ICsKPiArCWNtZF90eXBlID0g UERfVkRPX0NNRFQocFswXSk7Cj4gKwljbWQgPSBQRF9WRE9fQ01EKHBbMF0pOwo+ICsKPiAgCXRj cG1fbG9nKHBvcnQsICJSeCBWRE0gY21kIDB4JXggdHlwZSAlZCBjbWQgJWQgbGVuICVkIiwKPiAt CQkgcDAsIGNtZF90eXBlLCBjbWQsIGNudCk7Cj4gKwkJIHBbMF0sIGNtZF90eXBlLCBjbWQsIGNu dCk7Cj4gIAo+ICAJbW9kZXAgPSAmcG9ydC0+bW9kZV9kYXRhOwo+ICAKPiArCWFsdG1vZGUgPSB0 eXBlY19tYXRjaF9hbHRtb2RlKHBvcnQtPnBvcnRfYWx0bW9kZSwgQUxUTU9ERV9ESVNDT1ZFUllf TUFYLAo+ICsJCQkJICAgICAgUERfVkRPX1ZJRChwWzBdKSwgUERfVkRPX09QT1MocFswXSkpOwoK VGhpcyBjYW4gcmV0dXJuIE5VTEwgLi4uCgo+ICsKPiAgCXN3aXRjaCAoY21kX3R5cGUpIHsKPiAg CWNhc2UgQ01EVF9JTklUOgo+ICAJCXN3aXRjaCAoY21kKSB7Cj4gQEAgLTEwMzYsMTcgKzEwNTQs MjEgQEAgc3RhdGljIGludCB0Y3BtX3BkX3N2ZG0oc3RydWN0IHRjcG1fcG9ydCAqcG9ydCwgY29u c3QgX19sZTMyICpwYXlsb2FkLCBpbnQgY250LAo+ICAJCWNhc2UgQ01EX0VYSVRfTU9ERToKPiAg CQkJYnJlYWs7Cj4gIAkJY2FzZSBDTURfQVRURU5USU9OOgo+IC0JCQlicmVhazsKPiArCQkJdHlw ZWNfYWx0bW9kZV9hdHRlbnRpb24oYWx0bW9kZSwgcFsxXSk7CgouLi4gYW5kIE5VTEwgaXMgbm90 IGhhbmRsZWQgYnkgdHlwZWNfYWx0bW9kZV9hdHRlbnRpb24oKS4KCj4gKwkJCXJldHVybiAwOwo+ ICAJCWRlZmF1bHQ6Cj4gKwkJCWlmICh0eXBlY19hbHRtb2RlX3ZkbShhbHRtb2RlLCBwWzBdLCAm cFsxXSwgY250KSA9PQo+ICsJCQkgICAgVkRNX09LKQoKdHlwZWNfYWx0bW9kZV92ZG0oKSByZXR1 cm5zIG9sZCBmYXNoaW9uZWQgZXJyb3IgbWVzc2FnZXMuCk5vdCBzdXJlIHdoYXQgaXQgaXMgc3Vw cG9zZWQgdG8gcmV0dXJuLCB0aG91Z2guCgo+ICsJCQkJcmV0dXJuIDA7Cj4gIAkJCWJyZWFrOwo+ ICAJCX0KPiAgCQlpZiAocmxlbiA+PSAxKSB7Cj4gLQkJCXJlc3BvbnNlWzBdID0gcDAgfCBWRE9f Q01EVChDTURUX1JTUF9BQ0spOwo+ICsJCQlyZXNwb25zZVswXSA9IHBbMF0gfCBWRE9fQ01EVChD TURUX1JTUF9BQ0spOwo+ICAJCX0gZWxzZSBpZiAocmxlbiA9PSAwKSB7Cj4gLQkJCXJlc3BvbnNl WzBdID0gcDAgfCBWRE9fQ01EVChDTURUX1JTUF9OQUspOwo+ICsJCQlyZXNwb25zZVswXSA9IHBb MF0gfCBWRE9fQ01EVChDTURUX1JTUF9OQUspOwo+ICAJCQlybGVuID0gMTsKPiAgCQl9IGVsc2Ug ewo+IC0JCQlyZXNwb25zZVswXSA9IHAwIHwgVkRPX0NNRFQoQ01EVF9SU1BfQlVTWSk7Cj4gKwkJ CXJlc3BvbnNlWzBdID0gcFswXSB8IFZET19DTURUKENNRFRfUlNQX0JVU1kpOwo+ICAJCQlybGVu ID0gMTsKPiAgCQl9Cj4gIAkJYnJlYWs7Cj4gQEAgLTEwNzksMjAgKzExMDEsMjYgQEAgc3RhdGlj IGludCB0Y3BtX3BkX3N2ZG0oc3RydWN0IHRjcG1fcG9ydCAqcG9ydCwgY29uc3QgX19sZTMyICpw YXlsb2FkLCBpbnQgY250LAo+ICAJCQlzdmRtX2NvbnN1bWVfbW9kZXMocG9ydCwgcGF5bG9hZCwg Y250KTsKPiAgCQkJbW9kZXAtPnN2aWRfaW5kZXgrKzsKPiAgCQkJaWYgKG1vZGVwLT5zdmlkX2lu ZGV4IDwgbW9kZXAtPm5zdmlkcykgewo+IC0JCQkJc3ZpZCA9IG1vZGVwLT5zdmlkc1ttb2RlcC0+ c3ZpZF9pbmRleF07Cj4gKwkJCQl1MTYgc3ZpZCA9IG1vZGVwLT5zdmlkc1ttb2RlcC0+c3ZpZF9p bmRleF07Cj4gIAkJCQlyZXNwb25zZVswXSA9IFZETyhzdmlkLCAxLCBDTURfRElTQ09WRVJfTU9E RVMpOwo+ICAJCQkJcmxlbiA9IDE7Cj4gIAkJCX0gZWxzZSB7Cj4gLQkJCQkvKiBlbnRlciBhbHRl cm5hdGUgbW9kZSBpZi93aGVuIGltcGxlbWVudGVkICovCj4gKwkJCQl0Y3BtX3JlZ2lzdGVyX3Bh cnRuZXJfYWx0bW9kZXMocG9ydCk7Cj4gIAkJCX0KPiAgCQkJYnJlYWs7Cj4gIAkJY2FzZSBDTURf RU5URVJfTU9ERToKPiArCQkJdHlwZWNfYWx0bW9kZV9lbnRlcihhbHRtb2RlKTsKCnR5cGVjX2Fs dG1vZGVfZW50ZXIoKSBkb24ndCBoYW5kbGUgYWx0bW9kZSA9PSBOVUxMLgpObyBlcnJvciBoYW5k bGluZyA/Cgo+ICsJCQlicmVhazsKPiArCQljYXNlIENNRF9FWElUX01PREU6Cj4gKwkJCXR5cGVj X2FsdG1vZGVfZXhpdChhbHRtb2RlKTsKCkRvZXNuJ3QgaGFuZGxlIE5VTEwuIEVycm9yIGhhbmRs aW5nID8KCj4gIAkJCWJyZWFrOwo+ICAJCWRlZmF1bHQ6Cj4gKwkJCXR5cGVjX2FsdG1vZGVfdmRt KGFsdG1vZGUsIHBbMF0sICZwWzFdLCBjbnQpOwo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAkJYnJl YWs7Cj4gIAlkZWZhdWx0Ogo+ICsJCXR5cGVjX2FsdG1vZGVfdmRtKGFsdG1vZGUsIHBbMF0sICZw WzFdLCBjbnQpOwo+ICAJCWJyZWFrOwo+ICAJfQo+ICAKPiBAQCAtMTM1Miw2ICsxMzgwLDQ3IEBA IHN0YXRpYyBpbnQgdGNwbV92YWxpZGF0ZV9jYXBzKHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQsIGNv bnN0IHUzMiAqcGRvLAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIHRjcG1f YWx0bW9kZV9lbnRlcihzdHJ1Y3QgdHlwZWNfYWx0bW9kZSAqYWx0bW9kZSkKPiArewo+ICsJc3Ry dWN0IHRjcG1fcG9ydCAqcG9ydCA9IHR5cGVjX2FsdG1vZGVfZ2V0X2RydmRhdGEoYWx0bW9kZSk7 Cj4gKwl1MzIgaGVhZGVyOwo+ICsKPiArCWhlYWRlciA9IFZETyhhbHRtb2RlLT5zdmlkLCAxLCBD TURfRU5URVJfTU9ERSk7Cj4gKwloZWFkZXIgfD0gVkRPX09QT1MoYWx0bW9kZS0+bW9kZSk7Cj4g Kwo+ICsJdGNwbV9xdWV1ZV92ZG0ocG9ydCwgaGVhZGVyLCBOVUxMLCAwKTsKPiArCW1vZF9kZWxh eWVkX3dvcmsocG9ydC0+d3EsICZwb3J0LT52ZG1fc3RhdGVfbWFjaGluZSwgMCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIHRjcG1fYWx0bW9kZV9leGl0KHN0cnVjdCB0eXBlY19hbHRtb2RlICph bHRtb2RlKQo+ICt7Cj4gKwlzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0ID0gdHlwZWNfYWx0bW9kZV9n ZXRfZHJ2ZGF0YShhbHRtb2RlKTsKPiArCXUzMiBoZWFkZXI7Cj4gKwo+ICsJaGVhZGVyID0gVkRP KGFsdG1vZGUtPnN2aWQsIDEsIENNRF9FWElUX01PREUpOwo+ICsJaGVhZGVyIHw9IFZET19PUE9T KGFsdG1vZGUtPm1vZGUpOwo+ICsKPiArCXRjcG1fcXVldWVfdmRtKHBvcnQsIGhlYWRlciwgTlVM TCwgMCk7Cj4gKwltb2RfZGVsYXllZF93b3JrKHBvcnQtPndxLCAmcG9ydC0+dmRtX3N0YXRlX21h Y2hpbmUsIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRjcG1fYWx0bW9kZV92ZG0oc3RydWN0 IHR5cGVjX2FsdG1vZGUgKmFsdG1vZGUsCj4gKwkJCSAgICB1MzIgaGVhZGVyLCBjb25zdCB1MzIg KmRhdGEsIGludCBjb3VudCkKPiArewo+ICsJc3RydWN0IHRjcG1fcG9ydCAqcG9ydCA9IHR5cGVj X2FsdG1vZGVfZ2V0X2RydmRhdGEoYWx0bW9kZSk7Cj4gKwo+ICsJdGNwbV9xdWV1ZV92ZG0ocG9y dCwgaGVhZGVyLCBkYXRhLCBjb3VudCAtIDEpOwo+ICsJbW9kX2RlbGF5ZWRfd29yayhwb3J0LT53 cSwgJnBvcnQtPnZkbV9zdGF0ZV9tYWNoaW5lLCAwKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCB0eXBlY19hbHRtb2RlX29wcyB0Y3BtX2FsdG1vZGVf b3BzID0gewo+ICsJLmVudGVyID0gdGNwbV9hbHRtb2RlX2VudGVyLAo+ICsJLmV4aXQgPSB0Y3Bt X2FsdG1vZGVfZXhpdCwKPiArCS52ZG0gPSB0Y3BtX2FsdG1vZGVfdmRtLAo+ICt9Owo+ICsKPiAg LyoKPiAgICogUEQgKGRhdGEsIGNvbnRyb2wpIGNvbW1hbmQgaGFuZGxpbmcgZnVuY3Rpb25zCj4g ICAqLwo+IEBAIC0zNDc5LDYgKzM1NDgsMjMgQEAgc3RhdGljIHZvaWQgdGNwbV9pbml0KHN0cnVj dCB0Y3BtX3BvcnQgKnBvcnQpCj4gIAl0Y3BtX3NldF9zdGF0ZShwb3J0LCBQT1JUX1JFU0VULCAw KTsKPiAgfQo+ICAKPiArc3RhdGljIGludCB0Y3BtX2FjdGl2YXRlX21vZGUoc3RydWN0IHR5cGVj X2FsdG1vZGUgKmFsdCwgaW50IGFjdGl2YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgdGNwbV9wb3J0ICpw b3J0ID0gdHlwZWNfYWx0bW9kZV9nZXRfZHJ2ZGF0YShhbHQpOwo+ICsJdTMyIGhlYWRlcjsKPiAr Cj4gKwloZWFkZXIgPSBWRE8oY3B1X3RvX2xlMTYoYWx0LT5zdmlkKSwgMSwKPiArCQkgICAgIGFj dGl2YXRlID8gQ01EX0VOVEVSX01PREUgOiBDTURfRVhJVF9NT0RFKTsKPiArCWhlYWRlciB8PSBW RE9fT1BPUyhhbHQtPm1vZGUpOwo+ICsKPiArCW11dGV4X2xvY2soJnBvcnQtPmxvY2spOwo+ICsJ dGNwbV9xdWV1ZV92ZG0ocG9ydCwgaGVhZGVyLCBOVUxMLCAwKTsKPiArCW1vZF9kZWxheWVkX3dv cmsocG9ydC0+d3EsICZwb3J0LT52ZG1fc3RhdGVfbWFjaGluZSwgMCk7Cj4gKwltdXRleF91bmxv Y2soJnBvcnQtPmxvY2spOwoKU29tZSBvZiB0aGUgYWJvdmUgZnVuY3Rpb25zIGFyZSBwb3J0IG11 dGV4IHByb3RlY3RlZCwgc29tZSBhcmUgbm90LgpJcyB0aGlzIG9uIHB1cnBvc2UgPwoKPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCB0Y3BtX3BvcnRfdHlwZV9zZXQoY29u c3Qgc3RydWN0IHR5cGVjX2NhcGFiaWxpdHkgKmNhcCwKPiAgCQkJICAgICAgZW51bSB0eXBlY19w b3J0X3R5cGUgdHlwZSkKPiAgewo+IEBAIC0zNjcxLDYgKzM3NTcsNyBAQCBzdHJ1Y3QgdGNwbV9w b3J0ICp0Y3BtX3JlZ2lzdGVyX3BvcnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdGNwY19k ZXYgKnRjcGMpCj4gIAlwb3J0LT50eXBlY19jYXBzLnByX3NldCA9IHRjcG1fcHJfc2V0Owo+ICAJ cG9ydC0+dHlwZWNfY2Fwcy52Y29ubl9zZXQgPSB0Y3BtX3Zjb25uX3NldDsKPiAgCXBvcnQtPnR5 cGVjX2NhcHMudHJ5X3JvbGUgPSB0Y3BtX3RyeV9yb2xlOwo+ICsJcG9ydC0+dHlwZWNfY2Fwcy5h Y3RpdmF0ZV9tb2RlID0gdGNwbV9hY3RpdmF0ZV9tb2RlOwo+ICAJcG9ydC0+dHlwZWNfY2Fwcy5w b3J0X3R5cGVfc2V0ID0gdGNwbV9wb3J0X3R5cGVfc2V0Owo+ICAKPiAgCXBvcnQtPnBhcnRuZXJf ZGVzYy5pZGVudGl0eSA9ICZwb3J0LT5wYXJ0bmVyX2lkZW50Owo+IEBAIC0zNzAzLDYgKzM3OTAs OCBAQCBzdHJ1Y3QgdGNwbV9wb3J0ICp0Y3BtX3JlZ2lzdGVyX3BvcnQoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgdGNwY19kZXYgKnRjcGMpCj4gIAkJCQkJIGRldl9uYW1lKGRldiksIHBhbHRt b2RlLT5zdmlkKTsKPiAgCQkJCWJyZWFrOwo+ICAJCQl9Cj4gKwkJCXR5cGVjX2FsdG1vZGVfc2V0 X2RydmRhdGEoYWx0LCBwb3J0KTsKPiArCQkJdHlwZWNfYWx0bW9kZV9yZWdpc3Rlcl9vcHMoYWx0 LCAmdGNwbV9hbHRtb2RlX29wcyk7Cj4gIAkJCXBvcnQtPnBvcnRfYWx0bW9kZVtpXSA9IGFsdDsK PiAgCQkJaSsrOwo+ICAJCQlwYWx0bW9kZSsrOwo+IC0tIAo+IDIuMTYuMQo+Ci0tLQpUbyB1bnN1 YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgt dXNiIiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9y ZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9t by1pbmZvLmh0bWwK