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: USB:serial:pl2303:Add new PID to support PL2303HXN (TYPE_HXN) From: Johan Hovold Message-Id: <20190402072235.GI12562@localhost> Date: Tue, 2 Apr 2019 09:22:35 +0200 To: Charles Yeh Cc: gregkh@linuxfoundation.org, johan@kernel.org, linux-usb@vger.kernel.org, charles-yeh@prolific.com.tw List-ID: T24gV2VkLCBGZWIgMTMsIDIwMTkgYXQgMDg6MzA6MDBQTSArMDgwMCwgQ2hhcmxlcyBZZWggd3Jv dGU6Cj4gUHJvbGlmaWMgaGFzIGRldmVsb3BlZCBhIG5ldyBVU0IgdG8gVUFSVCBjaGlwOiBQTDIz MDNIWE4gKFBMMjMwM0dDL1BMMjMwM0dTL1BMMjMwM0dUL1BMMjMwM0dML1BMMjMwM0dFKQoKT2ss IGxldCdzIGdldCBiYWNrIHRvIHRoaXMgb25lLgoKRmlyc3QgYSBnZW5lcmFsIGNvbW1lbnQ7IHBs ZWFzZSBtYWtlIHN1cmUgdG8gYWRkcmVzcyBhbGwgcmV2aWV3CmNvbW1lbnRzLiBJJ3ZlIGFscmVh ZHkgcG9pbnRlZCBvdXQgc29tZSBpc3N1ZXMgdGhhdCBzdGlsbCBoYXNuJ3QgYmVlbgpmaXhlZCBh bmQgSSd2ZSBhc2tlZCBxdWVzdGlvbnMgdGhhdCBoYXZlIGdvbmUgdW5hbnN3ZXJlZC4KCklmIHlv dSBkaXNhZ3JlZSBvbiBzb21ldGhpbmcgdGhlbiBqdXN0IHNheSBzbywgYnV0IGlnbm9yaW5nIGZl ZWRiYWNrIGlzCmp1c3QgZ29pbmcgdG8gbWFrZSB0aGlzIHRha2UgbG9uZ2VyIHRoYW4gbmVjZXNz YXJ5LgoKRm9yIGEgc3RhcnQsIHBsZWFzZSBmaXggdXAgdGhlIFN1YmplY3QgbGluZSBhcyB3ZSBh bHJlYWR5IGRpc2N1c3NlZCwgYW5kCm1ha2Ugc3VyZSB0byB3cmFwIHlvdXIgY29tbWl0IG1lc3Nh Z2VzIGF0IDcyIGNvbHVtbnMgb3Igc28gKEkndmUgcmVmbG93bgp0aGUgcmVzdCBvZiB0aGUgbWVz c2FnZSBiZWxvdykuCgpBbHdheXMgaW5jbHVkZSBhIGNoYW5nZWxvZyAoYmVsb3cgdGhlIGN1dC1v ZmYgbGluZSkgd2hlbiByZXNlbmRpbmcgc28gd2UKa25vdyB3aGF0IGNoYW5nZWQgd2hlbiB5b3Ug dXBkYXRlIHlvdXIgcGF0Y2hlcy4KCj4gVGhlIFZlbmRvciByZXF1ZXN0IHVzZWQgYnkgdGhlIFBM MjMwM0hYTiAoVFlQRV9IWE4pIGlzIGRpZmZlcmVudCBmcm9tCj4gdGhlIGV4aXN0aW5nIFBMMjMw MyBzZXJpZXMgKFRZUEVfSFggJiBUWVBFXzAxKS4KPiBUaGVyZWZvcmUsIGRpZmZlcmVudCBWZW5k b3IgcmVxdWVzdHMgYXJlIHVzZWQgdG8gaXNzdWUgcmVsYXRlZCBjb21tYW5kcy4KPiAKPiAxLiBB ZGRlZCBhIG5ldyBUWVBFX0hYTiB0eXBlIGluIHBsMjMwM190eXBlX2RhdGEsIGFuZCB0aGVuIGV4 ZWN1dGVzCj4gbmV3IFZlbmRvciByZXF1ZXN0LCBuZXcgZmxvdyBjb250cm9sIGFuZCBvdGhlciBy ZWxhdGVkIGluc3RydWN0aW9ucyBpZgo+IFRZUEVfSFhOIGlzIHJlY29nbml6ZWQuCj4gCj4gMi4g QmVjYXVzZSB0aGUgbmV3IFBMMjMwM0hYTiBjYW4gb25seSBhY2NlcHQgdGhlIG5ldyBWZW5kb3Ig cmVxdWVzdCwKPiB0aGUgb2xkIFZlbmRvciByZXF1ZXN0IGNhbm5vdCBiZSBhY2NlcHRlZCAodGhl IGVycm9yIG1lc3NhZ2Ugd2lsbCBiZQo+IHJldHVybmVkKSBTbyBmaXJzdCBkZXRlcm1pbmUgdGhl IFRZUEVfSFggb3IgVFlQRV9IWE4gdGhyb3VnaAo+IFRZUEVfSFhfUkVBRF9TVEFUVVNfUkVHIGlu IHBsMjMwM19zdGFydHVwLgo+IAo+ICAgMi4xIElmIHRoZSByZXR1cm4gbWVzc2FnZSBpcyAiMSIs IHRoZW4gdGhlIFBMMjMwMyBpcyB0aGUgZXhpc3RpbmcKPiAgIFRZUEVfSFgvIFRZUEVfMDEgc2Vy aWVzLiAgVGhlIG90aGVyIHNldHRpbmdzIGluIHBsMjMwM19zdGFydHVwIGFyZQo+ICAgdG8gY29u dGludWUgZXhlY3V0aW9uLgo+Cj4gICAyLjIgSWYgdGhlIHJldHVybiBtZXNzYWdlIGlzICJub3Qg MSIsIHRoZW4gdGhlIFBMMjMwMyBpcyB0aGUgbmV3Cj4gICBUWVBFX0hYTiBzZXJpZXMuICBUaGUg b3RoZXIgc2V0dGluZ3MgaW4gcGwyMzAzX3N0YXJ0dXAgYXJlIGlnbm9yZWQuCj4gICAoUEwyMzAz SFhOIHdpbGwgZGlyZWN0bHkgdXNlIHRoZSBkZWZhdWx0IHZhbHVlIGluIHRoZSBoYXJkd2FyZSwg bm8KPiAgIG5lZWQgdG8gYWRkIGFkZGl0aW9uYWwgc2V0dGluZ3MgdGhyb3VnaCB0aGUgc29mdHdh cmUpCj4gCj4gMy4gSW4gcGwyMzAzX29wZW46IEJlY2F1c2UgVFlQRV9IWE4gaXMgZGlmZmVyZW50 IGZyb20gdGhlIGluc3RydWN0aW9uCj4gb2YgZG93bi91cCBzdHJlYW0gdXNlZCBieSBUWVBFX0hY LiAgVGhlcmVmb3JlLCB3ZSB3aWxsIGFsc28gZXhlY3V0ZQo+IGRpZmZlcmVudCBpbnN0cnVjdGlv bnMgaGVyZS4KPiAKPiA0LiBJbiBwbDIzMDNfc2V0X3Rlcm1pb3M6IFRoZSBVQVJUIGZsb3cgY29u dHJvbCBpbnN0cnVjdGlvbnMgdXNlZCBieQo+IFRZUEVfSFhOL1RZUEVfSFgvVFlQRV8wMSBhcmUg ZGlmZmVyZW50LiAgVGhlcmVmb3JlLCB3ZSB3aWxsIGFsc28KPiBleGVjdXRlIGRpZmZlcmVudCBp bnN0cnVjdGlvbnMgaGVyZS4KPiAKPiA1LiBJbiBwbDIzMDNfdmVuZG9yX3JlYWQgJiBwbDIzMDNf dmVuZG9yX3dyaXRlLCBzaW5jZSBUWVBFX0hYTiBpcwo+IGRpZmZlcmVudCBmcm9tIHRoZSB2ZW5k b3IgcmVxdWVzdCBpbnN0cnVjdGlvbiB1c2VkIGJ5IFRZUEVfSFgvVFlQRV8wMSwKPiBpdCB3aWxs IGFsc28gZXhlY3V0ZSBkaWZmZXJlbnQgaW5zdHJ1Y3Rpb25zIGhlcmUuCgpUaGF0J3MgYSBnb29k IHN1bW1hcnkgb2YgdGhlIGRpZmZlcmVuY2VzLCBidXQgb24gYSBtb3JlIGdlbmVyYWwgbGV2ZWws CmNhbiB5b3UgY29uZmlybSB0aGUgZm9sbG93aW5nOgoKCTEuIFRoZSBIWE4gcmVnaXN0ZXIgbGF5 b3V0IGlzIGVudGlyZWx5IGRpZmZlcmVudCBmcm9tIEhYIGFuZAoJICAgZWFybGllciBkZXZpY2Vz LgoKCTIuIEhYTiB1c2UgdGhlIHNhbWUgQ0RDIGNsYXNzIHJlcXVlc3RzIChsaW5lIGVuY29kaW5n LCBldGMpIGFzCgkgICBlYXJsaWVyIHJldmlzaW9ucy4KCkNhbiB5b3Ugc2VuZCBtZSBkb2N1bWVu dGF0aW9uIGZvciB0aGUgSFhOIHByb3RvY29sPyBUaGF0IHdvdWxkIGhlbHAgYQpsb3QgaW4gZmlu ZGluZyB0aGUgcmlnaHQgYWJzdHJhY3Rpb24gbGV2ZWwgZm9yIHRoaXMuCgo+IFNpZ25lZC1vZmYt Ynk6IENoYXJsZXMgWWVoIDxjaGFybGVzeWVoNTIyQGdtYWlsLmNvbT4KPiAtLS0KPiAgZHJpdmVy cy91c2Ivc2VyaWFsL3BsMjMwMy5jIHwgMTMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLQo+ICBkcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmggfCAgIDcgKysKPiAgMiBmaWxl cyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9w bDIzMDMuYwo+IGluZGV4IGJiM2Y5YWE0YTkwOS4uZDdkNTU3ZTAxMzkwIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuYwo+ICsrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9w bDIzMDMuYwo+IEBAIC00Nyw2ICs0NywxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZp Y2VfaWQgaWRfdGFibGVbXSA9IHsKPiAgCXsgVVNCX0RFVklDRShQTDIzMDNfVkVORE9SX0lELCBQ TDIzMDNfUFJPRFVDVF9JRF9NT1RPUk9MQSkgfSwKPiAgCXsgVVNCX0RFVklDRShQTDIzMDNfVkVO RE9SX0lELCBQTDIzMDNfUFJPRFVDVF9JRF9aVEVLKSB9LAo+ICAJeyBVU0JfREVWSUNFKFBMMjMw M19WRU5ET1JfSUQsIFBMMjMwM19QUk9EVUNUX0lEX1RCKSB9LAo+ICsJeyBVU0JfREVWSUNFKFBM MjMwM19WRU5ET1JfSUQsIFBMMjMwM0dfUFJPRFVDVF9JRF9HQykgfSwKPiArCXsgVVNCX0RFVklD RShQTDIzMDNfVkVORE9SX0lELCBQTDIzMDNHX1BST0RVQ1RfSURfR0IpIH0sCj4gKwl7IFVTQl9E RVZJQ0UoUEwyMzAzX1ZFTkRPUl9JRCwgUEwyMzAzR19QUk9EVUNUX0lEX0dUKSB9LAo+ICsJeyBV U0JfREVWSUNFKFBMMjMwM19WRU5ET1JfSUQsIFBMMjMwM0dfUFJPRFVDVF9JRF9HTCkgfSwKPiAr CXsgVVNCX0RFVklDRShQTDIzMDNfVkVORE9SX0lELCBQTDIzMDNHX1BST0RVQ1RfSURfR0UpIH0s Cj4gKwl7IFVTQl9ERVZJQ0UoUEwyMzAzX1ZFTkRPUl9JRCwgUEwyMzAzR19QUk9EVUNUX0lEX0dT KSB9LAo+ICAJeyBVU0JfREVWSUNFKElPREFUQV9WRU5ET1JfSUQsIElPREFUQV9QUk9EVUNUX0lE KSB9LAo+ICAJeyBVU0JfREVWSUNFKElPREFUQV9WRU5ET1JfSUQsIElPREFUQV9QUk9EVUNUX0lE X1JTQVE1KSB9LAo+ICAJeyBVU0JfREVWSUNFKEFURU5fVkVORE9SX0lELCBBVEVOX1BST0RVQ1Rf SUQpLAo+IEBAIC0xMjksOSArMTM1LDExIEBAIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90 YWJsZSk7Cj4gIAo+ICAjZGVmaW5lIFZFTkRPUl9XUklURV9SRVFVRVNUX1RZUEUJMHg0MAo+ICAj ZGVmaW5lIFZFTkRPUl9XUklURV9SRVFVRVNUCQkweDAxCj4gKyNkZWZpbmUgVkVORE9SX1dSSVRF X05SRVFVRVNUCQkweDgwCj4gIAo+ICAjZGVmaW5lIFZFTkRPUl9SRUFEX1JFUVVFU1RfVFlQRQkw eGMwCj4gICNkZWZpbmUgVkVORE9SX1JFQURfUkVRVUVTVAkJMHgwMQo+ICsjZGVmaW5lIFZFTkRP Ul9SRUFEX05SRVFVRVNUCQkweDgxCj4gIAo+ICAjZGVmaW5lIFVBUlRfU1RBVEVfSU5ERVgJCTgK PiAgI2RlZmluZSBVQVJUX1NUQVRFX01TUl9NQVNLCQkweDhiCj4gQEAgLTE0NSwxMSArMTUzLDMw IEBAIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90YWJsZSk7Cj4gICNkZWZpbmUgVUFSVF9P VkVSUlVOX0VSUk9SCQkweDQwCj4gICNkZWZpbmUgVUFSVF9DVFMJCQkweDgwCj4gIAo+ICsjZGVm aW5lIFRZUEVfSFhfUkVBRF9TVEFUVVNfUkVHCQkweDgwODAKPiArI2RlZmluZSBUWVBFX0hYTl9G TE9XQ09OVFJPTF9SRUcJMHgwQQoKPiArI2RlZmluZSBUWVBFX0hYTl9IQVJEV0FSRUZMT1dfREFU QQkweEZBCj4gKyNkZWZpbmUgVFlQRV9IWE5fU09GVFdBUkVGTE9XX0RBVEEJMHhFRQo+ICsjZGVm aW5lIFRZUEVfSFhOX05PRkxPV19EQVRBCQkweEZGCgpXaGF0IGV4YWN0bHkgZG9lcyBiaXRzIDB4 MTUgKGJpdHMgNCwgMiBhbmQgMCkgZG8/CgpJcyByZWdpc3RlciAweDBhIHJlYWxseSBvbmx5IHVz ZWQgZm9yIGZsb3cgY29udHJvbD8KCj4gKyNkZWZpbmUgVFlQRV9IWF8wMV9GTE9XQ09OVFJPTF9S RUcJMHgwMAo+ICsjZGVmaW5lIFRZUEVfMDFfSEFSRFdBUkVGTE9XX0RBVEEJMHg0MQo+ICsjZGVm aW5lIFRZUEVfSFhfSEFSRFdBUkVGTE9XX0RBVEEJMHg2MQo+ICsjZGVmaW5lIFRZUEVfSFhfMDFf U09GVFdBUkVGTE9XX0RBVEEJMHhDMAo+ICsjZGVmaW5lIFRZUEVfSFhfMDFfTk9GTE9XX0RBVEEJ CTB4MDAKPiArI2RlZmluZSBVQVJUX1hPTl9DSEFSCQkJMHgxMQo+ICsjZGVmaW5lIFVBUlRfWE9G Rl9DSEFSCQkJMHgxMwo+ICsjZGVmaW5lIEhYX1JFU0VUX0RPV05fVVBTVFJFQU1fUkVHMQkweDA4 Cj4gKyNkZWZpbmUgSFhfUkVTRVRfRE9XTl9VUFNUUkVBTV9SRUcyCTB4MDkKPiArI2RlZmluZSBI WF9SRVNFVF9ET1dOX1VQU1RSRUFNX0RBVEEJMHgwMAo+ICsjZGVmaW5lIEhYTl9SRVNFVF9ET1dO X1VQU1RSRUFNX1JFRwkweDA3Cj4gKyNkZWZpbmUgSFhOX1JFU0VUX0RPV05fVVBTVFJFQU1fREFU QQkweDAwCj4gKwo+ICBzdGF0aWMgdm9pZCBwbDIzMDNfc2V0X2JyZWFrKHN0cnVjdCB1c2Jfc2Vy aWFsX3BvcnQgKnBvcnQsIGJvb2wgZW5hYmxlKTsKPiAgCj4gIGVudW0gcGwyMzAzX3R5cGUgewo+ ICAJVFlQRV8wMSwJLyogVHlwZSAwIGFuZCAxIChkaWZmZXJlbmNlIHVua25vd24pICovCj4gIAlU WVBFX0hYLAkvKiBIWCB2ZXJzaW9uIG9mIHRoZSBwbDIzMDMgY2hpcCAqLwo+ICsJVFlQRV9IWE4s CS8qIEhYTiB2ZXJzaW9uIG9mIHRoZSBwbDIzMDMgY2hpcCAqLwo+ICAJVFlQRV9DT1VOVAo+ICB9 Owo+ICAKPiBAQCAtMTc5LDE2ICsyMDYsMjYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwbDIzMDNf dHlwZV9kYXRhIHBsMjMwM190eXBlX2RhdGFbVFlQRV9DT1VOVF0gPSB7Cj4gIAlbVFlQRV9IWF0g PSB7Cj4gIAkJLm1heF9iYXVkX3JhdGUgPQkxMjAwMDAwMCwKPiAgCX0sCj4gKwlbVFlQRV9IWE5d ID0gewo+ICsJCS5tYXhfYmF1ZF9yYXRlID0JMTIwMDAwMDAsCj4gKwl9LAo+ICB9Owo+ICAKPiAg c3RhdGljIGludCBwbDIzMDNfdmVuZG9yX3JlYWQoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCwg dTE2IHZhbHVlLAo+ICAJCQkJCQkJdW5zaWduZWQgY2hhciBidWZbMV0pCj4gIHsKPiAgCXN0cnVj dCBkZXZpY2UgKmRldiA9ICZzZXJpYWwtPmludGVyZmFjZS0+ZGV2Owo+ICsJc3RydWN0IHBsMjMw M19zZXJpYWxfcHJpdmF0ZSAqc3ByaXYgPSB1c2JfZ2V0X3NlcmlhbF9kYXRhKHNlcmlhbCk7Cj4g IAlpbnQgcmVzOwo+ICsJdTggcmVxdWVzdDsKPiArCj4gKwlpZiAoc3ByaXYtPnR5cGUgPT0gJnBs MjMwM190eXBlX2RhdGFbVFlQRV9IWE5dKQo+ICsJCXJlcXVlc3QgPSBWRU5ET1JfUkVBRF9OUkVR VUVTVDsKPiArCWVsc2UKPiArCQlyZXF1ZXN0ID0gVkVORE9SX1JFQURfUkVRVUVTVDsKPiAgCj4g IAlyZXMgPSB1c2JfY29udHJvbF9tc2coc2VyaWFsLT5kZXYsIHVzYl9yY3ZjdHJscGlwZShzZXJp YWwtPmRldiwgMCksCj4gLQkJCVZFTkRPUl9SRUFEX1JFUVVFU1QsIFZFTkRPUl9SRUFEX1JFUVVF U1RfVFlQRSwKPiArCQkJcmVxdWVzdCwgVkVORE9SX1JFQURfUkVRVUVTVF9UWVBFLAo+ICAJCQl2 YWx1ZSwgMCwgYnVmLCAxLCAxMDApOwo+ICAJaWYgKHJlcyAhPSAxKSB7Cj4gIAkJZGV2X2Vycihk ZXYsICIlcyAtIGZhaWxlZCB0byByZWFkIFslMDR4XTogJWRcbiIsIF9fZnVuY19fLAo+IEBAIC0y MDcsMTIgKzI0NCwxOSBAQCBzdGF0aWMgaW50IHBsMjMwM192ZW5kb3JfcmVhZChzdHJ1Y3QgdXNi X3NlcmlhbCAqc2VyaWFsLCB1MTYgdmFsdWUsCj4gIHN0YXRpYyBpbnQgcGwyMzAzX3ZlbmRvcl93 cml0ZShzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLCB1MTYgdmFsdWUsIHUxNiBpbmRleCkKPiAg ewo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXY7Cj4gKwlz dHJ1Y3QgcGwyMzAzX3NlcmlhbF9wcml2YXRlICpzcHJpdiA9IHVzYl9nZXRfc2VyaWFsX2RhdGEo c2VyaWFsKTsKPiAgCWludCByZXM7Cj4gKwl1OCByZXF1ZXN0Owo+ICAKPiAgCWRldl9kYmcoZGV2 LCAiJXMgLSBbJTA0eF0gPSAlMDJ4XG4iLCBfX2Z1bmNfXywgdmFsdWUsIGluZGV4KTsKPiAgCj4g KwlpZiAoc3ByaXYtPnR5cGUgPT0gJnBsMjMwM190eXBlX2RhdGFbVFlQRV9IWE5dKQo+ICsJCXJl cXVlc3QgPSBWRU5ET1JfV1JJVEVfTlJFUVVFU1Q7Cj4gKwllbHNlCj4gKwkJcmVxdWVzdCA9IFZF TkRPUl9XUklURV9SRVFVRVNUOwo+ICsKPiAgCXJlcyA9IHVzYl9jb250cm9sX21zZyhzZXJpYWwt PmRldiwgdXNiX3NuZGN0cmxwaXBlKHNlcmlhbC0+ZGV2LCAwKSwKPiAtCQkJVkVORE9SX1dSSVRF X1JFUVVFU1QsIFZFTkRPUl9XUklURV9SRVFVRVNUX1RZUEUsCj4gKwkJCXJlcXVlc3QsIFZFTkRP Ul9XUklURV9SRVFVRVNUX1RZUEUsCj4gIAkJCXZhbHVlLCBpbmRleCwgTlVMTCwgMCwgMTAwKTsK PiAgCWlmIChyZXMpIHsKPiAgCQlkZXZfZXJyKGRldiwgIiVzIC0gZmFpbGVkIHRvIHdyaXRlIFsl MDR4XTogJWRcbiIsIF9fZnVuY19fLAo+IEBAIC0yOTIsNiArMzM2LDcgQEAgc3RhdGljIGludCBw bDIzMDNfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQo+ICAJc3RydWN0IHBsMjMw M19zZXJpYWxfcHJpdmF0ZSAqc3ByaXY7Cj4gIAllbnVtIHBsMjMwM190eXBlIHR5cGUgPSBUWVBF XzAxOwo+ICAJdW5zaWduZWQgY2hhciAqYnVmOwo+ICsJaW50IHJlczsKPiAgCj4gIAlzcHJpdiA9 IGt6YWxsb2Moc2l6ZW9mKCpzcHJpdiksIEdGUF9LRVJORUwpOwo+ICAJaWYgKCFzcHJpdikKPiBA QCAtMzEzLDI2ICszNTgsMzcgQEAgc3RhdGljIGludCBwbDIzMDNfc3RhcnR1cChzdHJ1Y3QgdXNi X3NlcmlhbCAqc2VyaWFsKQo+ICAJCXR5cGUgPSBUWVBFXzAxOwkJLyogdHlwZSAxICovCj4gIAlk ZXZfZGJnKCZzZXJpYWwtPmludGVyZmFjZS0+ZGV2LCAiZGV2aWNlIHR5cGU6ICVkXG4iLCB0eXBl KTsKPiAgCj4gKwlpZiAodHlwZSA9PSBUWVBFX0hYKSB7CgpJbiBhbiBlYXJsaWVyIHZlcnNpb24g b2YgeW91ciBwYXRjaCwgeW91IGFsc28gY2hlY2tlZCBiY2RVU0IgaGVyZS4gV2h5CmRpZCB5b3Ug cmVtb3ZlIGl0PwoKPiArCQlyZXMgPSB1c2JfY29udHJvbF9tc2coc2VyaWFsLT5kZXYsCj4gKwkJ CXVzYl9yY3ZjdHJscGlwZShzZXJpYWwtPmRldiwgMCksCj4gKwkJCVZFTkRPUl9SRUFEX1JFUVVF U1QsIFZFTkRPUl9SRUFEX1JFUVVFU1RfVFlQRSwKPiArCQkJVFlQRV9IWF9SRUFEX1NUQVRVU19S RUcsIDAsIGJ1ZiwgMSwgMTAwKTsKClBsZWFzZSBuYW1lIHRoZSByZWdpc3RlcnMgYWZ0ZXIgd2hh dCB0aGV5IGRvLCBub3QgaG93IHlvdSB1c2UgdGhlbS4gV2hhdAppcyByZWdpc3RlciAwIHRoYXQg eW91IHJlYWQgaGVyZT8gRG9lcyBpdCBoYXZlIGEgbmFtZT8KCj4gKwkJaWYgKHJlcyAhPSAxKQo+ ICsJCQl0eXBlID0gVFlQRV9IWE47Cj4gKwl9Cj4gKwo+ICAJc3ByaXYtPnR5cGUgPSAmcGwyMzAz X3R5cGVfZGF0YVt0eXBlXTsKPiAgCXNwcml2LT5xdWlya3MgPSAodW5zaWduZWQgbG9uZyl1c2Jf Z2V0X3NlcmlhbF9kYXRhKHNlcmlhbCk7Cj4gIAlzcHJpdi0+cXVpcmtzIHw9IHNwcml2LT50eXBl LT5xdWlya3M7Cj4gIAo+ICAJdXNiX3NldF9zZXJpYWxfZGF0YShzZXJpYWwsIHNwcml2KTsKPiAg Cj4gLQlwbDIzMDNfdmVuZG9yX3JlYWQoc2VyaWFsLCAweDg0ODQsIGJ1Zik7Cj4gLQlwbDIzMDNf dmVuZG9yX3dyaXRlKHNlcmlhbCwgMHgwNDA0LCAwKTsKPiAtCXBsMjMwM192ZW5kb3JfcmVhZChz ZXJpYWwsIDB4ODQ4NCwgYnVmKTsKPiAtCXBsMjMwM192ZW5kb3JfcmVhZChzZXJpYWwsIDB4ODM4 MywgYnVmKTsKPiAtCXBsMjMwM192ZW5kb3JfcmVhZChzZXJpYWwsIDB4ODQ4NCwgYnVmKTsKPiAt CXBsMjMwM192ZW5kb3Jfd3JpdGUoc2VyaWFsLCAweDA0MDQsIDEpOwo+IC0JcGwyMzAzX3ZlbmRv cl9yZWFkKHNlcmlhbCwgMHg4NDg0LCBidWYpOwo+IC0JcGwyMzAzX3ZlbmRvcl9yZWFkKHNlcmlh bCwgMHg4MzgzLCBidWYpOwo+IC0JcGwyMzAzX3ZlbmRvcl93cml0ZShzZXJpYWwsIDAsIDEpOwo+ IC0JcGwyMzAzX3ZlbmRvcl93cml0ZShzZXJpYWwsIDEsIDApOwo+IC0JaWYgKHNwcml2LT5xdWly a3MgJiBQTDIzMDNfUVVJUktfTEVHQUNZKQo+IC0JCXBsMjMwM192ZW5kb3Jfd3JpdGUoc2VyaWFs LCAyLCAweDI0KTsKPiAtCWVsc2UKPiAtCQlwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwgMiwg MHg0NCk7Cj4gKwlpZiAodHlwZSAhPSBUWVBFX0hYTikgewo+ICsJCXBsMjMwM192ZW5kb3JfcmVh ZChzZXJpYWwsIDB4ODQ4NCwgYnVmKTsKPiArCQlwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwg MHgwNDA0LCAwKTsKPiArCQlwbDIzMDNfdmVuZG9yX3JlYWQoc2VyaWFsLCAweDg0ODQsIGJ1Zik7 Cj4gKwkJcGwyMzAzX3ZlbmRvcl9yZWFkKHNlcmlhbCwgMHg4MzgzLCBidWYpOwo+ICsJCXBsMjMw M192ZW5kb3JfcmVhZChzZXJpYWwsIDB4ODQ4NCwgYnVmKTsKPiArCQlwbDIzMDNfdmVuZG9yX3dy aXRlKHNlcmlhbCwgMHgwNDA0LCAxKTsKPiArCQlwbDIzMDNfdmVuZG9yX3JlYWQoc2VyaWFsLCAw eDg0ODQsIGJ1Zik7Cj4gKwkJcGwyMzAzX3ZlbmRvcl9yZWFkKHNlcmlhbCwgMHg4MzgzLCBidWYp Owo+ICsJCXBsMjMwM192ZW5kb3Jfd3JpdGUoc2VyaWFsLCAwLCAxKTsKPiArCQlwbDIzMDNfdmVu ZG9yX3dyaXRlKHNlcmlhbCwgMSwgMCk7Cj4gKwkJaWYgKHNwcml2LT5xdWlya3MgJiBQTDIzMDNf UVVJUktfTEVHQUNZKQo+ICsJCQlwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwgMiwgMHgyNCk7 Cj4gKwkJZWxzZQo+ICsJCQlwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwgMiwgMHg0NCk7Cj4g Kwl9CgpGYWlyIGVub3VnaCwgc2luY2UgdGhlIEhYTiBkb2Vzbid0IHVzZSB0aGUgc2FtZSByZWdp c3RlcnMsIHRoaXMgbmVlZHMgdG8KYmUgZG9uZSBvbmx5IGZvciBIWE4gb3IgZWFybGllciwgYnV0 IHdlIHNob3VsZCBwcm9iYWJseSBhZGQgYW4KaW5pdGlhbGlzYXRpb24gY2FsbGJhY2sgaW5zdGVh ZCBvZiBzcHJlYWRpbmcgY29uZGl0aW9uYWxzIHRocm91Z2hvdXQgdGhlCmRyaXZlci4KCkkgdGhp bmsgSSBrbm93IHJvdWdobHkgd2hhdCB0aGUgY29kZSBhYm92ZSBkb2VzIG5vdywgYnV0IHNpbmNl IHlvdSBhcmUKdGhlIG9ubHkgb25lcyB3aXRoIGFjY2VzcyB0byB0aGUgZG9jdW1lbnRhdGlvbiwg cGVyaGFwcyB5b3UgY2FuIGV4cGxhaW4Kd2h5IFRZUEVfMDEgc2V0cyBiaXQgMHgyMCBvZiByZWdp c3RlciAyIGluc3RlYWQgb2YgMHg0MCBhcyB0aGUgSFggZG9lcz8KSXMgdGhhdCBldmVuIGNvcnJl Y3Q/Cgo+ICAJa2ZyZWUoYnVmKTsKPiAgCj4gQEAgLTY3NywxNSArNzMzLDMwIEBAIHN0YXRpYyB2 b2lkIHBsMjMwM19zZXRfdGVybWlvcyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAo+ICAJfQo+ICAK PiAgCWlmIChDX0NSVFNDVFModHR5KSkgewo+IC0JCWlmIChzcHJpdi0+cXVpcmtzICYgUEwyMzAz X1FVSVJLX0xFR0FDWSkKPiAtCQkJcGwyMzAzX3ZlbmRvcl93cml0ZShzZXJpYWwsIDB4MCwgMHg0 MSk7CgpXaHkgZG8gdGhlIFRZUEVfMDEgbm90IHNldCBiaXQgMHgyMCBoZXJlPyBEbyB0aGUgbGVn YWN5IGRldmljZSBzdXBwb3J0CmJvdGggYXV0by1ydHMgYW5kIGF1dG8tY3RzPwoKPiArCQlpZiAo c3ByaXYtPnR5cGUgPT0gJnBsMjMwM190eXBlX2RhdGFbVFlQRV8wMV0pCj4gKwkJCXBsMjMwM192 ZW5kb3Jfd3JpdGUoc2VyaWFsLCBUWVBFX0hYXzAxX0ZMT1dDT05UUk9MX1JFRywKPiArCQkJCQkJ VFlQRV8wMV9IQVJEV0FSRUZMT1dfREFUQSk7Cj4gKwkJZWxzZSBpZiAoc3ByaXYtPnR5cGUgPT0g JnBsMjMwM190eXBlX2RhdGFbVFlQRV9IWE5dKQo+ICsJCQlwbDIzMDNfdmVuZG9yX3dyaXRlKHNl cmlhbCwgVFlQRV9IWE5fRkxPV0NPTlRST0xfUkVHLAo+ICsJCQkJCQlUWVBFX0hYTl9IQVJEV0FS RUZMT1dfREFUQSk7Cj4gKwkJZWxzZQo+ICsJCQlwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwg VFlQRV9IWF8wMV9GTE9XQ09OVFJPTF9SRUcsCj4gKwkJCQkJCVRZUEVfSFhfSEFSRFdBUkVGTE9X X0RBVEEpOwo+ICsJfSBlbHNlIGlmIChJX0lYT04odHR5KSAmJiAhSV9JWEFOWSh0dHkpICYmIFNU QVJUX0NIQVIodHR5KSA9PQo+ICsJCQlVQVJUX1hPTl9DSEFSICYmIFNUT1BfQ0hBUih0dHkpID09 IFVBUlRfWE9GRl9DSEFSKSB7CgpObyBuZWVkIHRvIGFkZCBkZWZpbmVzIGZvciB0aGUgc3RhcnQg YW5kIHN0b3AgY2hhciBoZXJlLgoKPiArCQlpZiAoc3ByaXYtPnR5cGUgPT0gJnBsMjMwM190eXBl X2RhdGFbVFlQRV9IWE5dKQo+ICsJCQlwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwgVFlQRV9I WE5fRkxPV0NPTlRST0xfUkVHLAo+ICsJCQkJCQlUWVBFX0hYTl9TT0ZUV0FSRUZMT1dfREFUQSk7 Cj4gIAkJZWxzZQo+IC0JCQlwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwgMHgwLCAweDYxKTsK PiAtCX0gZWxzZSBpZiAoSV9JWE9OKHR0eSkgJiYgIUlfSVhBTlkodHR5KSAmJiBTVEFSVF9DSEFS KHR0eSkgPT0gMHgxMSAmJgo+IC0JCQlTVE9QX0NIQVIodHR5KSA9PSAweDEzKSB7Cj4gLQkJcGwy MzAzX3ZlbmRvcl93cml0ZShzZXJpYWwsIDB4MCwgMHhjMCk7Cj4gKwkJCXBsMjMwM192ZW5kb3Jf d3JpdGUoc2VyaWFsLCBUWVBFX0hYXzAxX0ZMT1dDT05UUk9MX1JFRywKPiArCQkJCQkJVFlQRV9I WF8wMV9TT0ZUV0FSRUZMT1dfREFUQSk7Cj4gIAl9IGVsc2Ugewo+IC0JCXBsMjMwM192ZW5kb3Jf d3JpdGUoc2VyaWFsLCAweDAsIDB4MCk7Cj4gKwkJaWYgKHNwcml2LT50eXBlID09ICZwbDIzMDNf dHlwZV9kYXRhW1RZUEVfSFhOXSkKPiArCQkJcGwyMzAzX3ZlbmRvcl93cml0ZShzZXJpYWwsIFRZ UEVfSFhOX0ZMT1dDT05UUk9MX1JFRywKPiArCQkJCQkJVFlQRV9IWE5fTk9GTE9XX0RBVEEpOwo+ ICsJCWVsc2UKPiArCQkJcGwyMzAzX3ZlbmRvcl93cml0ZShzZXJpYWwsIFRZUEVfSFhfMDFfRkxP V0NPTlRST0xfUkVHLAo+ICsJCQkJCQlUWVBFX0hYXzAxX05PRkxPV19EQVRBKTsKCkFzIGFscmVh ZHkgbWVudGlvbmVkLCB0aGUgYWJvdmUgaXMgaGFyZGx5IHJlYWRhYmxlLiBXaGVuIHN0dWR5aW5n IHRoZQpjdXJyZW50IGRyaXZlciwgSSBub3RpY2VkIGEgY291cGxlIG9mIGJ1Z3MgdGhhdCBJJ20g cHJlcGFyaW5nIGZpeGVzIGZvci4KClNwZWNpZmljYWxseSwgd2Ugc2hvdWxkbid0IGJlIG92ZXJ3 cml0aW5nIHRoZSBlbnRpcmUgY29udHJvbCByZWdpc3RlciwKd2hpY2ggY2hhbmdlcyB0aGUgdHJh bmNlaXZlciBzdXNwZW5kIG1vZGUuIEFyZSB0aGVyZSBzaW1pbGFyIHByb2JsZW1zCndpdGggbm90 IGRvaW5nIGJpdCB1cGRhdGVzIG9mIHJlZ2lzdGVyIDB4MGE/CgpFaXRoZXIgd2F5LCByZWJhc2lu ZyB5b3VyIHBhdGNoZXMgb24gdG9wIG9mIHRob3NlIHNob3VsZCBhbGxvdyB0aGlzIHRvCmJlIGNs ZWFuZWQgdXAgc29tZXdoYXQuCgo+ICAJfQo+ICAKPiAgCWtmcmVlKGJ1Zik7Cj4gQEAgLTcyNiw4 ICs3OTcsMTggQEAgc3RhdGljIGludCBwbDIzMDNfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5 LCBzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQo+ICAJCXVzYl9jbGVhcl9oYWx0KHNlcmlh bC0+ZGV2LCBwb3J0LT5yZWFkX3VyYi0+cGlwZSk7Cj4gIAl9IGVsc2Ugewo+ICAJCS8qIHJlc2V0 IHVwc3RyZWFtIGRhdGEgcGlwZXMgKi8KPiAtCQlwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwg OCwgMCk7Cj4gLQkJcGwyMzAzX3ZlbmRvcl93cml0ZShzZXJpYWwsIDksIDApOwo+ICsJCWlmIChz cHJpdi0+dHlwZSA9PSAmcGwyMzAzX3R5cGVfZGF0YVtUWVBFX0hYTl0pCgpZb3UgbmVlZCB0byBh ZGRlZCBicmFjZXMgKHt9KSB0byBib3RoIGJyYW5jaGVzIGhlcmUuCgo+ICsJCQlwbDIzMDNfdmVu ZG9yX3dyaXRlKHNlcmlhbCwKPiArCQkJCQlIWE5fUkVTRVRfRE9XTl9VUFNUUkVBTV9SRUcsCj4g KwkJCQkJSFhOX1JFU0VUX0RPV05fVVBTVFJFQU1fREFUQSk7CgpDYW4geW91IHdyaXRlIGFueXRo aW5nIHRvIHRoaXMgcmVnaXN0ZXIgdG8gcmVzZXQgdGhlIGJ1ZmZlcnMsIG9yIGRvZXMgaXQKaGF2 ZSB0byBiZSAwPwoKPiArCQllbHNlIHsKPiArCQkJcGwyMzAzX3ZlbmRvcl93cml0ZShzZXJpYWws Cj4gKwkJCQkJSFhfUkVTRVRfRE9XTl9VUFNUUkVBTV9SRUcxLAo+ICsJCQkJCUhYX1JFU0VUX0RP V05fVVBTVFJFQU1fREFUQSk7Cj4gKwkJCXBsMjMwM192ZW5kb3Jfd3JpdGUoc2VyaWFsLAo+ICsJ CQkJCUhYX1JFU0VUX0RPV05fVVBTVFJFQU1fUkVHMiwKPiArCQkJCQlIWF9SRVNFVF9ET1dOX1VQ U1RSRUFNX0RBVEEpOwoKSSBhc3N1bWUgdGhlIG9sZGVyIHZlcnNpb25zIGFsbG93IGZvciB0aGUg YW5kIHVwIGFuZCBkb3duIGJ1ZmZlcnMgdG8gYmUKcmVzZXQgaW5kZXBlbmRlbnRseT8gUGxlYXNl IG5hbWUgdGhlc2UgcmVnaXN0ZXJzIGFjY29yZGluZ2x5LgoKPiArCQl9Cj4gIAl9Cj4gIAo+ICAJ LyogU2V0dXAgdGVybWlvcyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvcGwy MzAzLmggYi9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmgKPiBpbmRleCA1NTk5NDFjYTg4NGQu Ljg5OGRkYzFhNzMwMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmgK PiArKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmgKPiBAQCAtMjEsNiArMjEsMTMgQEAK PiAgI2RlZmluZSBQTDIzMDNfUFJPRFVDVF9JRF9NT1RPUk9MQQkweDAzMDcKPiAgI2RlZmluZSBQ TDIzMDNfUFJPRFVDVF9JRF9aVEVLCQkweGUxZjEKPiAgCj4gKy8qIFBMMjMwM0hYTiAsIFRZUEVf SFhOICovCj4gKyNkZWZpbmUgUEwyMzAzR19QUk9EVUNUX0lEX0dDCTB4MjNBMwo+ICsjZGVmaW5l IFBMMjMwM0dfUFJPRFVDVF9JRF9HQgkweDIzQjMKPiArI2RlZmluZSBQTDIzMDNHX1BST0RVQ1Rf SURfR1QJMHgyM0MzCj4gKyNkZWZpbmUgUEwyMzAzR19QUk9EVUNUX0lEX0dMCTB4MjNEMwo+ICsj ZGVmaW5lIFBMMjMwM0dfUFJPRFVDVF9JRF9HRQkweDIzRTMKPiArI2RlZmluZSBQTDIzMDNHX1BS T0RVQ1RfSURfR1MJMHgyM0YzCgpKdXN0IHVzZSBQTDIzMDNfIGFzIHByZWZpeC4KCj4gIAo+ICAj ZGVmaW5lIEFURU5fVkVORE9SX0lECQkweDA1NTcKPiAgI2RlZmluZSBBVEVOX1ZFTkRPUl9JRDIJ CTB4MDU0NwoKVGhhbmtzLApKb2hhbgo=