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: [v6,03/12] usb: typec: API for controlling USB Type-C Multiplexers From: Hans de Goede Message-Id: <20180302102057.8917-4-hdegoede@redhat.com> Date: Fri, 2 Mar 2018 11:20:48 +0100 To: Darren Hart , Andy Shevchenko , MyungJoo Ham , Chanwoo Choi , Mathias Nyman , Heikki Krogerus , Greg Kroah-Hartman , Guenter Roeck Cc: Hans de Goede , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org List-ID: RnJvbTogSGVpa2tpIEtyb2dlcnVzIDxoZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tPgoK VVNCIFR5cGUtQyBjb25uZWN0b3JzIGNvbnNpc3Qgb2YgdmFyaW91cyBtdXhlcyBhbmQgc3dpdGNo ZXMKdGhhdCByb3V0ZSB0aGUgcGlucyBvbiB0aGUgY29ubmVjdG9yIHRvIHRoZSByaWdodCBsb2Nh dGlvbnMuClRoZSBVU0IgVHlwZS1DIGRyaXZlcnMgbmVlZCB0byBiZSBhYmxlIHRvIGNvbnRyb2wg dGhlIG11eGVzLAphcyB0aGV5IGFyZSB0aGUgb25lcyB0aGF0IGtub3cgdGhpbmdzIGxpa2UgdGhl IGNhYmxlIHBsdWcKb3JpZW50YXRpb24sIGFuZCB0aGUgY3VycmVudCBtb2RlIHRoYXQgd2FzIG5l Z290aWF0ZWQgd2l0aAp0aGUgcGFydG5lci4KClRoaXMgaW50cm9kdWNlcyBhIHNtYWxsIEFQSSBm b3IgcmVnaXN0ZXJpbmcgYW5kIGNvbnRyb2xsaW5nCmNhYmxlIHBsdWcgb3JpZW50YXRpb24gc3dp dGNoZXMsIGFuZCBzZXBhcmF0ZSBzbWFsbCBBUEkgZm9yCnJlZ2lzdGVyaW5nIGFuZCBjb250cm9s bGluZyBwaW4gbXVsdGlwbGV4ZXIvZGVtdWx0aXBsZXhlcgpzd2l0Y2hlcyB0aGF0IGFyZSBuZWVk ZWQgd2l0aCBBY2Nlc3NvcnkvQWx0ZXJuYXRlIE1vZGVzLgoKU2lnbmVkLW9mZi1ieTogSGVpa2tp IEtyb2dlcnVzIDxoZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTog SGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHkgU2hl dmNoZW5rbyA8YW5keS5zaGV2Y2hlbmtvQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogSGFucyBk ZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KLS0tCkNoYW5nZXMgaW4gdjQ6Ci1BZGQgQW5k eSdzIFJldmlld2VkLWJ5CgpDaGFuZ2VzIGluIHYzOgotQWRkICNpbmNsdWRlLXMgZm9yIGEgZmV3 IG1pc3NpbmcgaGVhZGVycyB0byBkcml2ZXJzL3VzYi90eXBlYy9tdXguYwotVmFyaW91cyBzcGVs bGluZyBhbmQgZ3JhbWFyIGZpeGVzIGluIHRoZSBkb2NzIHBvaW50ZWQgb3V0IGJ5IFJhbmR5IER1 bmxhcAotLS0KIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvdHlwZWMucnN0IHwgIDczICsr KysrKysrKysrLS0KIGRyaXZlcnMvdXNiL3R5cGVjL01ha2VmaWxlICAgICAgICAgICAgIHwgICAx ICsKIGRyaXZlcnMvdXNiL3R5cGVjL3t0eXBlYy5jID0+IGNsYXNzLmN9IHwgIDcwICsrKysrKysr KysrKwogZHJpdmVycy91c2IvdHlwZWMvbXV4LmMgICAgICAgICAgICAgICAgfCAxOTAgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2xpbnV4L3VzYi90eXBlYy5oICAg ICAgICAgICAgICB8ICAxNCArKysKIGluY2x1ZGUvbGludXgvdXNiL3R5cGVjX211eC5oICAgICAg ICAgIHwgIDU1ICsrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMzkyIGluc2VydGlvbnMoKyks IDExIGRlbGV0aW9ucygtKQogcmVuYW1lIGRyaXZlcnMvdXNiL3R5cGVjL3t0eXBlYy5jID0+IGNs YXNzLmN9ICg5NSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvdHlwZWMvbXV4LmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L3VzYi90eXBlY19tdXguaAoKZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvdHlwZWMucnN0IGIvRG9jdW1lbnRh dGlvbi9kcml2ZXItYXBpL3VzYi90eXBlYy5yc3QKaW5kZXggOGE3MjQ5ZjJmZjA0Li5mZWIzMTk0 NjQ5MGIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvdHlwZWMucnN0 CisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvdHlwZWMucnN0CkBAIC02MSw3ICs2 MSw3IEBAIFJlZ2lzdGVyaW5nIHRoZSBwb3J0cwogVGhlIHBvcnQgZHJpdmVycyB3aWxsIGRlc2Ny aWJlIGV2ZXJ5IFR5cGUtQyBwb3J0IHRoZXkgY29udHJvbCB3aXRoIHN0cnVjdAogdHlwZWNfY2Fw YWJpbGl0eSBkYXRhIHN0cnVjdHVyZSwgYW5kIHJlZ2lzdGVyIHRoZW0gd2l0aCB0aGUgZm9sbG93 aW5nIEFQSToKIAotLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvdXNiL3R5cGVjL3R5cGVjLmMKKy4u IGtlcm5lbC1kb2M6OiBkcml2ZXJzL3VzYi90eXBlYy9jbGFzcy5jCiAgICA6ZnVuY3Rpb25zOiB0 eXBlY19yZWdpc3Rlcl9wb3J0IHR5cGVjX3VucmVnaXN0ZXJfcG9ydAogCiBXaGVuIHJlZ2lzdGVy aW5nIHRoZSBwb3J0cywgdGhlIHByZWZlcl9yb2xlIG1lbWJlciBpbiBzdHJ1Y3QgdHlwZWNfY2Fw YWJpbGl0eQpAQCAtODAsNyArODAsNyBAQCB0eXBlY19wYXJ0bmVyX2Rlc2MuIFRoZSBjbGFzcyBj b3BpZXMgdGhlIGRldGFpbHMgb2YgdGhlIHBhcnRuZXIgZHVyaW5nCiByZWdpc3RyYXRpb24uIFRo ZSBjbGFzcyBvZmZlcnMgdGhlIGZvbGxvd2luZyBBUEkgZm9yIHJlZ2lzdGVyaW5nL3VucmVnaXN0 ZXJpbmcKIHBhcnRuZXJzLgogCi0uLiBrZXJuZWwtZG9jOjogZHJpdmVycy91c2IvdHlwZWMvdHlw ZWMuYworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvdXNiL3R5cGVjL2NsYXNzLmMKICAgIDpmdW5j dGlvbnM6IHR5cGVjX3JlZ2lzdGVyX3BhcnRuZXIgdHlwZWNfdW5yZWdpc3Rlcl9wYXJ0bmVyCiAK IFRoZSBjbGFzcyB3aWxsIHByb3ZpZGUgYSBoYW5kbGUgdG8gc3RydWN0IHR5cGVjX3BhcnRuZXIg aWYgdGhlIHJlZ2lzdHJhdGlvbiB3YXMKQEAgLTkyLDcgKzkyLDcgQEAgc2hvdWxkIGluY2x1ZGUg aGFuZGxlIHRvIHN0cnVjdCB1c2JfcGRfaWRlbnRpdHkgaW5zdGFuY2UuIFRoZSBjbGFzcyB3aWxs IHRoZW4KIGNyZWF0ZSBhIHN5c2ZzIGRpcmVjdG9yeSBmb3IgdGhlIGlkZW50aXR5IHVuZGVyIHRo ZSBwYXJ0bmVyIGRldmljZS4gVGhlIHJlc3VsdAogb2YgRGlzY292ZXIgSWRlbnRpdHkgY29tbWFu ZCBjYW4gdGhlbiBiZSByZXBvcnRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgQVBJOgogCi0uLiBrZXJu ZWwtZG9jOjogZHJpdmVycy91c2IvdHlwZWMvdHlwZWMuYworLi4ga2VybmVsLWRvYzo6IGRyaXZl cnMvdXNiL3R5cGVjL2NsYXNzLmMKICAgIDpmdW5jdGlvbnM6IHR5cGVjX3BhcnRuZXJfc2V0X2lk ZW50aXR5CiAKIFJlZ2lzdGVyaW5nIENhYmxlcwpAQCAtMTEzLDcgKzExMyw3IEBAIHR5cGVjX2Nh YmxlX2Rlc2MgYW5kIGFib3V0IGEgcGx1ZyBpbiBzdHJ1Y3QgdHlwZWNfcGx1Z19kZXNjLiBUaGUg Y2xhc3MgY29waWVzCiB0aGUgZGV0YWlscyBkdXJpbmcgcmVnaXN0cmF0aW9uLiBUaGUgY2xhc3Mg b2ZmZXJzIHRoZSBmb2xsb3dpbmcgQVBJIGZvcgogcmVnaXN0ZXJpbmcvdW5yZWdpc3RlcmluZyBj YWJsZXMgYW5kIHRoZWlyIHBsdWdzOgogCi0uLiBrZXJuZWwtZG9jOjogZHJpdmVycy91c2IvdHlw ZWMvdHlwZWMuYworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvdXNiL3R5cGVjL2NsYXNzLmMKICAg IDpmdW5jdGlvbnM6IHR5cGVjX3JlZ2lzdGVyX2NhYmxlIHR5cGVjX3VucmVnaXN0ZXJfY2FibGUg dHlwZWNfcmVnaXN0ZXJfcGx1ZyB0eXBlY191bnJlZ2lzdGVyX3BsdWcKIAogVGhlIGNsYXNzIHdp bGwgcHJvdmlkZSBhIGhhbmRsZSB0byBzdHJ1Y3QgdHlwZWNfY2FibGUgYW5kIHN0cnVjdCB0eXBl Y19wbHVnIGlmCkBAIC0xMjUsNyArMTI1LDcgQEAgaW5jbHVkZSBoYW5kbGUgdG8gc3RydWN0IHVz Yl9wZF9pZGVudGl0eSBpbnN0YW5jZS4gVGhlIGNsYXNzIHdpbGwgdGhlbiBjcmVhdGUgYQogc3lz ZnMgZGlyZWN0b3J5IGZvciB0aGUgaWRlbnRpdHkgdW5kZXIgdGhlIGNhYmxlIGRldmljZS4gVGhl IHJlc3VsdCBvZiBEaXNjb3ZlcgogSWRlbnRpdHkgY29tbWFuZCBjYW4gdGhlbiBiZSByZXBvcnRl ZCB3aXRoIHRoZSBmb2xsb3dpbmcgQVBJOgogCi0uLiBrZXJuZWwtZG9jOjogZHJpdmVycy91c2Iv dHlwZWMvdHlwZWMuYworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvdXNiL3R5cGVjL2NsYXNzLmMK ICAgIDpmdW5jdGlvbnM6IHR5cGVjX2NhYmxlX3NldF9pZGVudGl0eQogCiBOb3RpZmljYXRpb25z CkBAIC0xMzUsNyArMTM1LDcgQEAgV2hlbiB0aGUgcGFydG5lciBoYXMgZXhlY3V0ZWQgYSByb2xl IGNoYW5nZSwgb3Igd2hlbiB0aGUgZGVmYXVsdCByb2xlcyBjaGFuZ2UKIGR1cmluZyBjb25uZWN0 aW9uIG9mIGEgcGFydG5lciBvciBjYWJsZSwgdGhlIHBvcnQgZHJpdmVyIG11c3QgdXNlIHRoZSBm b2xsb3dpbmcKIEFQSXMgdG8gcmVwb3J0IGl0IHRvIHRoZSBjbGFzczoKIAotLi4ga2VybmVsLWRv Yzo6IGRyaXZlcnMvdXNiL3R5cGVjL3R5cGVjLmMKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL3Vz Yi90eXBlYy9jbGFzcy5jCiAgICA6ZnVuY3Rpb25zOiB0eXBlY19zZXRfZGF0YV9yb2xlIHR5cGVj X3NldF9wd3Jfcm9sZSB0eXBlY19zZXRfdmNvbm5fcm9sZSB0eXBlY19zZXRfcHdyX29wbW9kZQog CiBBbHRlcm5hdGUgTW9kZXMKQEAgLTE1MCw3ICsxNTAsNyBAQCBhbmQgc3RydWN0IHR5cGVjX2Fs dG1vZGVfZGVzYyB3aGljaCBpcyBhIGNvbnRhaW5lciBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgbW9k ZXMuCiBQb3J0cyB0aGF0IHN1cHBvcnQgQWx0ZXJuYXRlIE1vZGVzIG5lZWQgdG8gcmVnaXN0ZXIg ZWFjaCBTVklEIHRoZXkgc3VwcG9ydCB3aXRoCiB0aGUgZm9sbG93aW5nIEFQSToKIAotLi4ga2Vy bmVsLWRvYzo6IGRyaXZlcnMvdXNiL3R5cGVjL3R5cGVjLmMKKy4uIGtlcm5lbC1kb2M6OiBkcml2 ZXJzL3VzYi90eXBlYy9jbGFzcy5jCiAgICA6ZnVuY3Rpb25zOiB0eXBlY19wb3J0X3JlZ2lzdGVy X2FsdG1vZGUKIAogSWYgYSBwYXJ0bmVyIG9yIGNhYmxlIHBsdWcgcHJvdmlkZXMgYSBsaXN0IG9m IFNWSURzIGFzIHJlc3BvbnNlIHRvIFVTQiBQb3dlcgpAQCAtMTU5LDEyICsxNTksMTIgQEAgcmVn aXN0ZXJlZC4KIAogQVBJIGZvciB0aGUgcGFydG5lcnM6CiAKLS4uIGtlcm5lbC1kb2M6OiBkcml2 ZXJzL3VzYi90eXBlYy90eXBlYy5jCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy91c2IvdHlwZWMv Y2xhc3MuYwogICAgOmZ1bmN0aW9uczogdHlwZWNfcGFydG5lcl9yZWdpc3Rlcl9hbHRtb2RlCiAK IEFQSSBmb3IgdGhlIENhYmxlIFBsdWdzOgogCi0uLiBrZXJuZWwtZG9jOjogZHJpdmVycy91c2Iv dHlwZWMvdHlwZWMuYworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvdXNiL3R5cGVjL2NsYXNzLmMK ICAgIDpmdW5jdGlvbnM6IHR5cGVjX3BsdWdfcmVnaXN0ZXJfYWx0bW9kZQogCiBTbyBwb3J0cywg cGFydG5lcnMgYW5kIGNhYmxlIHBsdWdzIHdpbGwgcmVnaXN0ZXIgdGhlIGFsdGVybmF0ZSBtb2Rl cyB3aXRoIHRoZWlyCkBAIC0xNzIsMTEgKzE3Miw2MiBAQCBvd24gZnVuY3Rpb25zLCBidXQgdGhl IHJlZ2lzdHJhdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gYSBoYW5kbGUgdG8gc3RydWN0CiB0eXBl Y19hbHRtb2RlIG9uIHN1Y2Nlc3MsIG9yIE5VTEwuIFRoZSB1bnJlZ2lzdHJhdGlvbiB3aWxsIGhh cHBlbiB3aXRoIHRoZSBzYW1lCiBmdW5jdGlvbjoKIAotLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMv dXNiL3R5cGVjL3R5cGVjLmMKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL3VzYi90eXBlYy9jbGFz cy5jCiAgICA6ZnVuY3Rpb25zOiB0eXBlY191bnJlZ2lzdGVyX2FsdG1vZGUKIAogSWYgYSBwYXJ0 bmVyIG9yIGNhYmxlIHBsdWcgZW50ZXJzIG9yIGV4aXRzIGEgbW9kZSwgdGhlIHBvcnQgZHJpdmVy IG5lZWRzIHRvCiBub3RpZnkgdGhlIGNsYXNzIHdpdGggdGhlIGZvbGxvd2luZyBBUEk6CiAKLS4u IGtlcm5lbC1kb2M6OiBkcml2ZXJzL3VzYi90eXBlYy90eXBlYy5jCisuLiBrZXJuZWwtZG9jOjog ZHJpdmVycy91c2IvdHlwZWMvY2xhc3MuYwogICAgOmZ1bmN0aW9uczogdHlwZWNfYWx0bW9kZV91 cGRhdGVfYWN0aXZlCisKK011bHRpcGxleGVyL0RlTXVsdGlwbGV4ZXIgU3dpdGNoZXMKK35+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVVNCIFR5cGUtQyBjb25uZWN0b3JzIG1h eSBoYXZlIG9uZSBvciBtb3JlIG11eC9kZW11eCBzd2l0Y2hlcyBiZWhpbmQgdGhlbS4gU2luY2UK K3RoZSBwbHVncyBjYW4gYmUgaW5zZXJ0ZWQgcmlnaHQtc2lkZS11cCBvciB1cHNpZGUtZG93biwg YSBzd2l0Y2ggaXMgbmVlZGVkIHRvCityb3V0ZSB0aGUgY29ycmVjdCBkYXRhIHBhaXJzIGZyb20g dGhlIGNvbm5lY3RvciB0byB0aGUgVVNCIGNvbnRyb2xsZXJzLiBJZgorQWx0ZXJuYXRlIG9yIEFj Y2Vzc29yeSBNb2RlcyBhcmUgc3VwcG9ydGVkLCBhbm90aGVyIHN3aXRjaCBpcyBuZWVkZWQgdGhh dCBjYW4KK3JvdXRlIHRoZSBwaW5zIG9uIHRoZSBjb25uZWN0b3IgdG8gc29tZSBvdGhlciBjb21w b25lbnQgYmVzaWRlcyBVU0IuIFVTQiBUeXBlLUMKK0Nvbm5lY3RvciBDbGFzcyBzdXBwbGllcyBh biBBUEkgZm9yIHJlZ2lzdGVyaW5nIHRob3NlIHN3aXRjaGVzLgorCisuLiBrZXJuZWwtZG9jOjog ZHJpdmVycy91c2IvdHlwZWMvbXV4LmMKKyAgIDpmdW5jdGlvbnM6IHR5cGVjX3N3aXRjaF9yZWdp c3RlciB0eXBlY19zd2l0Y2hfdW5yZWdpc3RlciB0eXBlY19tdXhfcmVnaXN0ZXIgdHlwZWNfbXV4 X3VucmVnaXN0ZXIKKworSW4gbW9zdCBjYXNlcyB0aGUgc2FtZSBwaHlzaWNhbCBtdXggd2lsbCBo YW5kbGUgYm90aCB0aGUgb3JpZW50YXRpb24gYW5kIG1vZGUuCitIb3dldmVyLCBhcyB0aGUgcG9y dCBkcml2ZXJzIHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHRoZSBvcmllbnRhdGlvbiwgYW5kIHRo ZQorYWx0ZXJuYXRlIG1vZGUgZHJpdmVycyBmb3IgdGhlIG1vZGUsIHRoZSB0d28gYXJlIGFsd2F5 cyBzZXBhcmF0ZWQgaW50byB0aGVpcgorb3duIGxvZ2ljYWwgY29tcG9uZW50czogIm11eCIgZm9y IHRoZSBtb2RlIGFuZCAic3dpdGNoIiBmb3IgdGhlIG9yaWVudGF0aW9uLgorCitXaGVuIGEgcG9y dCBpcyByZWdpc3RlcmVkLCBVU0IgVHlwZS1DIENvbm5lY3RvciBDbGFzcyByZXF1ZXN0cyBib3Ro IHRoZSBtdXggYW5kCit0aGUgc3dpdGNoIGZvciB0aGUgcG9ydC4gVGhlIGRyaXZlcnMgY2FuIHRo ZW4gdXNlIHRoZSBmb2xsb3dpbmcgQVBJIGZvcgorY29udHJvbGxpbmcgdGhlbToKKworLi4ga2Vy bmVsLWRvYzo6IGRyaXZlcnMvdXNiL3R5cGVjL2NsYXNzLmMKKyAgIDpmdW5jdGlvbnM6IHR5cGVj X3NldF9vcmllbnRhdGlvbiB0eXBlY19zZXRfbW9kZQorCitJZiB0aGUgY29ubmVjdG9yIGlzIGR1 YWwtcm9sZSBjYXBhYmxlLCB0aGVyZSBtYXkgYWxzbyBiZSBhIHN3aXRjaCBmb3IgdGhlIGRhdGEK K3JvbGUuIFVTQiBUeXBlLUMgQ29ubmVjdG9yIENsYXNzIGRvZXMgbm90IHN1cHBseSBzZXBhcmF0 ZSBBUEkgZm9yIHRoZW0uIFRoZQorcG9ydCBkcml2ZXJzIGNhbiB1c2UgVVNCIFJvbGUgQ2xhc3Mg QVBJIHdpdGggdGhvc2UuCisKK0lsbHVzdHJhdGlvbiBvZiB0aGUgbXV4ZXMgYmVoaW5kIGEgY29u bmVjdG9yIHRoYXQgc3VwcG9ydHMgYW4gYWx0ZXJuYXRlIG1vZGU6CisKKyAgICAgICAgICAgICAg ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICBDb25uZWN0b3IgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfAorICAg ICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgXCAgICAgT3JpZW50YXRpb24gICAgLworICAgICAgICAgICAgICAgICAgICAgICAt LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg ICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgLyAgICAgICAgTW9kZSAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAg ICAgICAgXAorICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAtLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgfCAgICAgICBBbHQgTW9kZSAgICAgICB8ICAgICAgIC8gICAgICBV U0IgUm9sZSAgICAgIFwKKyAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgIFVTQiBIb3N0ICAgICAgIHwgICAgICB8ICAgICAgIFVTQiBEZXZpY2UgICAg IHwKKyAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvTWFr ZWZpbGUgYi9kcml2ZXJzL3VzYi90eXBlYy9NYWtlZmlsZQppbmRleCBiYjMxMzhhNmVhYWMuLjU2 YjJlOTUxNmVjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy91c2IvdHlwZWMvTWFrZWZpbGUKQEAgLTEsNSArMSw2IEBACiAjIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCiBvYmotJChDT05GSUdfVFlQRUMpCQkrPSB0eXBlYy5vCit0 eXBlYy15CQkJCTo9IGNsYXNzLm8gbXV4Lm8KIG9iai0kKENPTkZJR19UWVBFQ19UQ1BNKQkrPSB0 Y3BtLm8KIG9iai15CQkJCSs9IGZ1c2IzMDIvCiBvYmotJChDT05GSUdfVFlQRUNfV0NPVkUpCSs9 IHR5cGVjX3djb3ZlLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3R5cGVjLmMgYi9k cml2ZXJzL3VzYi90eXBlYy9jbGFzcy5jCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9t IGRyaXZlcnMvdXNiL3R5cGVjL3R5cGVjLmMKcmVuYW1lIHRvIGRyaXZlcnMvdXNiL3R5cGVjL2Ns YXNzLmMKaW5kZXggZGMyOGFkODY4ZDkzLi4yNjIwYTY5NDcwNGYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdXNiL3R5cGVjL3R5cGVjLmMKKysrIGIvZHJpdmVycy91c2IvdHlwZWMvY2xhc3MuYwpAQCAt MTEsNiArMTEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CiAjaW5jbHVkZSA8bGludXgv c2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L3VzYi90eXBlYy5oPgorI2luY2x1ZGUgPGxpbnV4L3Vz Yi90eXBlY19tdXguaD4KIAogc3RydWN0IHR5cGVjX21vZGUgewogCWludAkJCQlpbmRleDsKQEAg LTcwLDYgKzcxLDEwIEBAIHN0cnVjdCB0eXBlY19wb3J0IHsKIAllbnVtIHR5cGVjX3BvcnRfdHlw ZQkJcG9ydF90eXBlOwogCXN0cnVjdCBtdXRleAkJCXBvcnRfdHlwZV9sb2NrOwogCisJZW51bSB0 eXBlY19vcmllbnRhdGlvbgkJb3JpZW50YXRpb247CisJc3RydWN0IHR5cGVjX3N3aXRjaAkJKnN3 OworCXN0cnVjdCB0eXBlY19tdXgJCSptdXg7CisKIAljb25zdCBzdHJ1Y3QgdHlwZWNfY2FwYWJp bGl0eQkqY2FwOwogfTsKIApAQCAtOTIsNiArOTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRl dmljZV90eXBlIHR5cGVjX3BvcnRfZGV2X3R5cGU7CiBzdGF0aWMgREVGSU5FX0lEQSh0eXBlY19p bmRleF9pZGEpOwogc3RhdGljIHN0cnVjdCBjbGFzcyAqdHlwZWNfY2xhc3M7CiAKKy8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gKi8KIC8qIENvbW1vbiBhdHRyaWJ1dGVzICovCiAKIHN0YXRpYyBjb25zdCBj aGFyICogY29uc3QgdHlwZWNfYWNjZXNzb3J5X21vZGVzW10gPSB7CkBAIC0xMTM3LDYgKzExNDMs OCBAQCBzdGF0aWMgdm9pZCB0eXBlY19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlzdHJ1 Y3QgdHlwZWNfcG9ydCAqcG9ydCA9IHRvX3R5cGVjX3BvcnQoZGV2KTsKIAogCWlkYV9zaW1wbGVf cmVtb3ZlKCZ0eXBlY19pbmRleF9pZGEsIHBvcnQtPmlkKTsKKwl0eXBlY19zd2l0Y2hfcHV0KHBv cnQtPnN3KTsKKwl0eXBlY19tdXhfcHV0KHBvcnQtPm11eCk7CiAJa2ZyZWUocG9ydCk7CiB9CiAK QEAgLTEyNDYsNiArMTI1NCw0NyBAQCB2b2lkIHR5cGVjX3NldF9wd3Jfb3Btb2RlKHN0cnVjdCB0 eXBlY19wb3J0ICpwb3J0LAogfQogRVhQT1JUX1NZTUJPTF9HUEwodHlwZWNfc2V0X3B3cl9vcG1v ZGUpOwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K Ky8qIEFQSSBmb3IgTXVsdGlwbGV4ZXIvRGVNdWx0aXBsZXhlciBTd2l0Y2hlcyAqLworCisvKioK KyAqIHR5cGVjX3NldF9vcmllbnRhdGlvbiAtIFNldCBVU0IgVHlwZS1DIGNhYmxlIHBsdWcgb3Jp ZW50YXRpb24KKyAqIEBwb3J0OiBVU0IgVHlwZS1DIFBvcnQKKyAqIEBvcmllbnRhdGlvbjogVVNC IFR5cGUtQyBjYWJsZSBwbHVnIG9yaWVudGF0aW9uCisgKgorICogU2V0IGNhYmxlIHBsdWcgb3Jp ZW50YXRpb24gZm9yIEBwb3J0LgorICovCitpbnQgdHlwZWNfc2V0X29yaWVudGF0aW9uKHN0cnVj dCB0eXBlY19wb3J0ICpwb3J0LAorCQkJICBlbnVtIHR5cGVjX29yaWVudGF0aW9uIG9yaWVudGF0 aW9uKQoreworCWludCByZXQ7CisKKwlpZiAocG9ydC0+c3cpIHsKKwkJcmV0ID0gcG9ydC0+c3ct PnNldChwb3J0LT5zdywgb3JpZW50YXRpb24pOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsK Kwl9CisKKwlwb3J0LT5vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOworCisJcmV0dXJuIDA7Cit9 CitFWFBPUlRfU1lNQk9MX0dQTCh0eXBlY19zZXRfb3JpZW50YXRpb24pOworCisvKioKKyAqIHR5 cGVjX3NldF9tb2RlIC0gU2V0IG1vZGUgb2Ygb3BlcmF0aW9uIGZvciBVU0IgVHlwZS1DIGNvbm5l Y3RvcgorICogQHBvcnQ6IFVTQiBUeXBlLUMgcG9ydCBmb3IgdGhlIGNvbm5lY3RvcgorICogQG1v ZGU6IE9wZXJhdGlvbiBtb2RlIGZvciB0aGUgY29ubmVjdG9yCisgKgorICogU2V0IG1vZGUgQG1v ZGUgZm9yIEBwb3J0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgY29uZmlndXJlIHRoZSBtdXhlcyBuZWVk ZWQgdG8KKyAqIGVudGVyIEBtb2RlLgorICovCitpbnQgdHlwZWNfc2V0X21vZGUoc3RydWN0IHR5 cGVjX3BvcnQgKnBvcnQsIGludCBtb2RlKQoreworCXJldHVybiBwb3J0LT5tdXggPyBwb3J0LT5t dXgtPnNldChwb3J0LT5tdXgsIG1vZGUpIDogMDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHR5cGVj X3NldF9tb2RlKTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICovCiAKIC8qKgpAQCAtMTI5Myw2ICsxMzQyLDE4IEBAIHN0cnVjdCB0eXBlY19wb3J0ICp0eXBl Y19yZWdpc3Rlcl9wb3J0KHN0cnVjdCBkZXZpY2UgKnBhcmVudCwKIAkJcmV0dXJuIEVSUl9QVFIo aWQpOwogCX0KIAorCXBvcnQtPnN3ID0gdHlwZWNfc3dpdGNoX2dldChjYXAtPmZ3bm9kZSA/ICZw b3J0LT5kZXYgOiBwYXJlbnQpOworCWlmIChJU19FUlIocG9ydC0+c3cpKSB7CisJCXJldCA9IFBU Ul9FUlIocG9ydC0+c3cpOworCQlnb3RvIGVycl9zd2l0Y2g7CisJfQorCisJcG9ydC0+bXV4ID0g dHlwZWNfbXV4X2dldChjYXAtPmZ3bm9kZSA/ICZwb3J0LT5kZXYgOiBwYXJlbnQpOworCWlmIChJ U19FUlIocG9ydC0+bXV4KSkgeworCQlyZXQgPSBQVFJfRVJSKHBvcnQtPm11eCk7CisJCWdvdG8g ZXJyX211eDsKKwl9CisKIAlpZiAoY2FwLT50eXBlID09IFRZUEVDX1BPUlRfREZQKQogCQlyb2xl ID0gVFlQRUNfU09VUkNFOwogCWVsc2UgaWYgKGNhcC0+dHlwZSA9PSBUWVBFQ19QT1JUX1VGUCkK QEAgLTEzMzAsNiArMTM5MSwxNSBAQCBzdHJ1Y3QgdHlwZWNfcG9ydCAqdHlwZWNfcmVnaXN0ZXJf cG9ydChzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCiAJfQogCiAJcmV0dXJuIHBvcnQ7CisKK2Vycl9t dXg6CisJdHlwZWNfc3dpdGNoX3B1dChwb3J0LT5zdyk7CisKK2Vycl9zd2l0Y2g6CisJaWRhX3Np bXBsZV9yZW1vdmUoJnR5cGVjX2luZGV4X2lkYSwgcG9ydC0+aWQpOworCWtmcmVlKHBvcnQpOwor CisJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHR5cGVjX3JlZ2lz dGVyX3BvcnQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXguYyBiL2RyaXZl cnMvdXNiL3R5cGVjL211eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZWZkNDA3OWE5NmYyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy91c2IvdHlwZWMvbXV4 LmMKQEAgLTAsMCArMSwxOTAgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w CisvKioKKyAqIFVTQiBUeXBlLUMgTXVsdGlwbGV4ZXIvRGVNdWx0aXBsZXhlciBTd2l0Y2ggc3Vw cG9ydAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICogQXV0 aG9yOiBIZWlra2kgS3JvZ2VydXMgPGhlaWtraS5rcm9nZXJ1c0BsaW51eC5pbnRlbC5jb20+Cisg KiAgICAgICAgIEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CisgKi8KKworI2lu Y2x1ZGUgPGxpbnV4L2Nvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNp bmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNsdWRl IDxsaW51eC91c2IvdHlwZWNfbXV4Lmg+CisKK3N0YXRpYyBERUZJTkVfTVVURVgoc3dpdGNoX2xv Y2spOworc3RhdGljIERFRklORV9NVVRFWChtdXhfbG9jayk7CitzdGF0aWMgTElTVF9IRUFEKHN3 aXRjaF9saXN0KTsKK3N0YXRpYyBMSVNUX0hFQUQobXV4X2xpc3QpOworCitzdGF0aWMgdm9pZCAq dHlwZWNfc3dpdGNoX21hdGNoKHN0cnVjdCBkZXZjb24gKmNvbiwgaW50IGVwLCB2b2lkICpkYXRh KQoreworCXN0cnVjdCB0eXBlY19zd2l0Y2ggKnN3OworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShz dywgJnN3aXRjaF9saXN0LCBlbnRyeSkKKwkJaWYgKCFzdHJjbXAoY29uLT5lbmRwb2ludFtlcF0s IGRldl9uYW1lKHN3LT5kZXYpKSkKKwkJCXJldHVybiBzdzsKKworCS8qCisJICogV2Ugb25seSBn ZXQgY2FsbGVkIGlmIGEgY29ubmVjdGlvbiB3YXMgZm91bmQsIHRlbGwgdGhlIGNhbGxlciB0bwor CSAqIHdhaXQgZm9yIHRoZSBzd2l0Y2ggdG8gc2hvdyB1cC4KKwkgKi8KKwlyZXR1cm4gRVJSX1BU UigtRVBST0JFX0RFRkVSKTsKK30KKworLyoqCisgKiB0eXBlY19zd2l0Y2hfZ2V0IC0gRmluZCBV U0IgVHlwZS1DIG9yaWVudGF0aW9uIHN3aXRjaAorICogQGRldjogVGhlIGNhbGxlciBkZXZpY2UK KyAqCisgKiBGaW5kcyBhIHN3aXRjaCBsaW5rZWQgd2l0aCBAZGV2LiBSZXR1cm5zIGEgcmVmZXJl bmNlIHRvIHRoZSBzd2l0Y2ggb24KKyAqIHN1Y2Nlc3MsIE5VTEwgaWYgbm8gbWF0Y2hpbmcgY29u bmVjdGlvbiB3YXMgZm91bmQsIG9yCisgKiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpIHdoZW4gYSBj b25uZWN0aW9uIHdhcyBmb3VuZCBidXQgdGhlIHN3aXRjaAorICogaGFzIG5vdCBiZWVuIGVudW1l cmF0ZWQgeWV0LgorICovCitzdHJ1Y3QgdHlwZWNfc3dpdGNoICp0eXBlY19zd2l0Y2hfZ2V0KHN0 cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdHlwZWNfc3dpdGNoICpzdzsKKworCW11dGV4 X2xvY2soJnN3aXRjaF9sb2NrKTsKKwlzdyA9IF9fZGV2aWNlX2ZpbmRfY29ubmVjdGlvbihkZXYs ICJ0eXBlYy1zd2l0Y2giLCBOVUxMLAorCQkJCSAgICAgIHR5cGVjX3N3aXRjaF9tYXRjaCk7CisJ aWYgKCFJU19FUlJfT1JfTlVMTChzdykpCisJCWdldF9kZXZpY2Uoc3ctPmRldik7CisJbXV0ZXhf dW5sb2NrKCZzd2l0Y2hfbG9jayk7CisKKwlyZXR1cm4gc3c7Cit9CitFWFBPUlRfU1lNQk9MX0dQ TCh0eXBlY19zd2l0Y2hfZ2V0KTsKKworLyoqCisgKiB0eXBlY19wdXRfc3dpdGNoIC0gUmVsZWFz ZSBVU0IgVHlwZS1DIG9yaWVudGF0aW9uIHN3aXRjaAorICogQHN3OiBVU0IgVHlwZS1DIG9yaWVu dGF0aW9uIHN3aXRjaAorICoKKyAqIERlY3JlbWVudCByZWZlcmVuY2UgY291bnQgZm9yIEBzdy4K KyAqLwordm9pZCB0eXBlY19zd2l0Y2hfcHV0KHN0cnVjdCB0eXBlY19zd2l0Y2ggKnN3KQorewor CWlmICghSVNfRVJSX09SX05VTEwoc3cpKQorCQlwdXRfZGV2aWNlKHN3LT5kZXYpOworfQorRVhQ T1JUX1NZTUJPTF9HUEwodHlwZWNfc3dpdGNoX3B1dCk7CisKKy8qKgorICogdHlwZWNfc3dpdGNo X3JlZ2lzdGVyIC0gUmVnaXN0ZXIgVVNCIFR5cGUtQyBvcmllbnRhdGlvbiBzd2l0Y2gKKyAqIEBz dzogVVNCIFR5cGUtQyBvcmllbnRhdGlvbiBzd2l0Y2gKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJl Z2lzdGVycyBhIHN3aXRjaCB0aGF0IGNhbiBiZSB1c2VkIGZvciByb3V0aW5nIHRoZSBjb3JyZWN0 CisgKiBkYXRhIHBhaXJzIGRlcGVuZGluZyBvbiB0aGUgY2FibGUgcGx1ZyBvcmllbnRhdGlvbiBm cm9tIHRoZSBVU0IgVHlwZS1DCisgKiBjb25uZWN0b3IgdG8gdGhlIFVTQiBjb250cm9sbGVycy4g VVNCIFR5cGUtQyBwbHVncyBjYW4gYmUgaW5zZXJ0ZWQKKyAqIHJpZ2h0LXNpZGUtdXAgb3IgdXBz aWRlLWRvd24uCisgKi8KK2ludCB0eXBlY19zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IHR5cGVjX3N3 aXRjaCAqc3cpCit7CisJbXV0ZXhfbG9jaygmc3dpdGNoX2xvY2spOworCWxpc3RfYWRkX3RhaWwo JnN3LT5lbnRyeSwgJnN3aXRjaF9saXN0KTsKKwltdXRleF91bmxvY2soJnN3aXRjaF9sb2NrKTsK KworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTF9HUEwodHlwZWNfc3dpdGNoX3JlZ2lzdGVy KTsKKworLyoqCisgKiB0eXBlY19zd2l0Y2hfdW5yZWdpc3RlciAtIFVucmVnaXN0ZXIgVVNCIFR5 cGUtQyBvcmllbnRhdGlvbiBzd2l0Y2gKKyAqIEBzdzogVVNCIFR5cGUtQyBvcmllbnRhdGlvbiBz d2l0Y2gKKyAqCisgKiBVbnJlZ2lzdGVyIHN3aXRjaCB0aGF0IHdhcyByZWdpc3RlcmVkIHdpdGgg dHlwZWNfc3dpdGNoX3JlZ2lzdGVyKCkuCisgKi8KK3ZvaWQgdHlwZWNfc3dpdGNoX3VucmVnaXN0 ZXIoc3RydWN0IHR5cGVjX3N3aXRjaCAqc3cpCit7CisJbXV0ZXhfbG9jaygmc3dpdGNoX2xvY2sp OworCWxpc3RfZGVsKCZzdy0+ZW50cnkpOworCW11dGV4X3VubG9jaygmc3dpdGNoX2xvY2spOwor fQorRVhQT1JUX1NZTUJPTF9HUEwodHlwZWNfc3dpdGNoX3VucmVnaXN0ZXIpOworCisvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyB2b2lkICp0eXBlY19tdXhfbWF0Y2goc3RydWN0IGRl dmNvbiAqY29uLCBpbnQgZXAsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHR5cGVjX211eCAqbXV4 OworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShtdXgsICZtdXhfbGlzdCwgZW50cnkpCisJCWlmICgh c3RyY21wKGNvbi0+ZW5kcG9pbnRbZXBdLCBkZXZfbmFtZShtdXgtPmRldikpKQorCQkJcmV0dXJu IG11eDsKKworCS8qCisJICogV2Ugb25seSBnZXQgY2FsbGVkIGlmIGEgY29ubmVjdGlvbiB3YXMg Zm91bmQsIHRlbGwgdGhlIGNhbGxlciB0bworCSAqIHdhaXQgZm9yIHRoZSBzd2l0Y2ggdG8gc2hv dyB1cC4KKwkgKi8KKwlyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsKK30KKworLyoqCisg KiB0eXBlY19tdXhfZ2V0IC0gRmluZCBVU0IgVHlwZS1DIE11bHRpcGxleGVyCisgKiBAZGV2OiBU aGUgY2FsbGVyIGRldmljZQorICoKKyAqIEZpbmRzIGEgbXV4IGxpbmtlZCB0byB0aGUgY2FsbGVy LiBUaGlzIGZ1bmN0aW9uIGlzIHByaW1hcmlseSBtZWFudCBmb3IgdGhlCisgKiBUeXBlLUMgZHJp dmVycy4gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgbXV4IG9uIHN1Y2Nlc3MsIE5VTEwgaWYg bm8KKyAqIG1hdGNoaW5nIGNvbm5lY3Rpb24gd2FzIGZvdW5kLCBvciBFUlJfUFRSKC1FUFJPQkVf REVGRVIpIHdoZW4gYSBjb25uZWN0aW9uCisgKiB3YXMgZm91bmQgYnV0IHRoZSBtdXggaGFzIG5v dCBiZWVuIGVudW1lcmF0ZWQgeWV0LgorICovCitzdHJ1Y3QgdHlwZWNfbXV4ICp0eXBlY19tdXhf Z2V0KHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdHlwZWNfbXV4ICptdXg7CisKKwlt dXRleF9sb2NrKCZtdXhfbG9jayk7CisJbXV4ID0gX19kZXZpY2VfZmluZF9jb25uZWN0aW9uKGRl diwgInR5cGVjLW11eCIsIE5VTEwsIHR5cGVjX211eF9tYXRjaCk7CisJaWYgKCFJU19FUlJfT1Jf TlVMTChtdXgpKQorCQlnZXRfZGV2aWNlKG11eC0+ZGV2KTsKKwltdXRleF91bmxvY2soJm11eF9s b2NrKTsKKworCXJldHVybiBtdXg7Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh0eXBlY19tdXhfZ2V0 KTsKKworLyoqCisgKiB0eXBlY19tdXhfcHV0IC0gUmVsZWFzZSBoYW5kbGUgdG8gYSBNdWx0aXBs ZXhlcgorICogQG11eDogVVNCIFR5cGUtQyBDb25uZWN0b3IgTXVsdGlwbGV4ZXIvRGVNdWx0aXBs ZXhlcgorICoKKyAqIERlY3JlbWVudHMgcmVmZXJlbmNlIGNvdW50IGZvciBAbXV4LgorICovCit2 b2lkIHR5cGVjX211eF9wdXQoc3RydWN0IHR5cGVjX211eCAqbXV4KQoreworCWlmICghSVNfRVJS X09SX05VTEwobXV4KSkKKwkJcHV0X2RldmljZShtdXgtPmRldik7Cit9CitFWFBPUlRfU1lNQk9M X0dQTCh0eXBlY19tdXhfcHV0KTsKKworLyoqCisgKiB0eXBlY19tdXhfcmVnaXN0ZXIgLSBSZWdp c3RlciBNdWx0aXBsZXhlciByb3V0aW5nIFVTQiBUeXBlLUMgcGlucworICogQG11eDogVVNCIFR5 cGUtQyBDb25uZWN0b3IgTXVsdGlwbGV4ZXIvRGVNdWx0aXBsZXhlcgorICoKKyAqIFVTQiBUeXBl LUMgY29ubmVjdG9ycyBjYW4gYmUgdXNlZCBmb3IgYWx0ZXJuYXRlIG1vZGVzIG9mIG9wZXJhdGlv biBiZXNpZGVzCisgKiBVU0Igd2hlbiBBY2Nlc3NvcnkvQWx0ZXJuYXRlIE1vZGVzIGFyZSBzdXBw b3J0ZWQuIFdpdGggc29tZSBvZiB0aG9zZSBtb2RlcywKKyAqIHRoZSBwaW5zIG9uIHRoZSBjb25u ZWN0b3IgbmVlZCB0byBiZSByZWNvbmZpZ3VyZWQuIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzCisg KiBtdWx0aXBsZXhlciBzd2l0Y2hlcyByb3V0aW5nIHRoZSBwaW5zIG9uIHRoZSBjb25uZWN0b3Iu CisgKi8KK2ludCB0eXBlY19tdXhfcmVnaXN0ZXIoc3RydWN0IHR5cGVjX211eCAqbXV4KQorewor CW11dGV4X2xvY2soJm11eF9sb2NrKTsKKwlsaXN0X2FkZF90YWlsKCZtdXgtPmVudHJ5LCAmbXV4 X2xpc3QpOworCW11dGV4X3VubG9jaygmbXV4X2xvY2spOworCisJcmV0dXJuIDA7Cit9CitFWFBP UlRfU1lNQk9MX0dQTCh0eXBlY19tdXhfcmVnaXN0ZXIpOworCisvKioKKyAqIHR5cGVjX211eF91 bnJlZ2lzdGVyIC0gVW5yZWdpc3RlciBNdWx0aXBsZXhlciBTd2l0Y2gKKyAqIEBzdzogVVNCIFR5 cGUtQyBDb25uZWN0b3IgTXVsdGlwbGV4ZXIvRGVNdWx0aXBsZXhlcgorICoKKyAqIFVucmVnaXN0 ZXIgbXV4IHRoYXQgd2FzIHJlZ2lzdGVyZWQgd2l0aCB0eXBlY19tdXhfcmVnaXN0ZXIoKS4KKyAq Lwordm9pZCB0eXBlY19tdXhfdW5yZWdpc3RlcihzdHJ1Y3QgdHlwZWNfbXV4ICptdXgpCit7CisJ bXV0ZXhfbG9jaygmbXV4X2xvY2spOworCWxpc3RfZGVsKCZtdXgtPmVudHJ5KTsKKwltdXRleF91 bmxvY2soJm11eF9sb2NrKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHR5cGVjX211eF91bnJlZ2lz dGVyKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjLmggYi9pbmNsdWRlL2xp bnV4L3VzYi90eXBlYy5oCmluZGV4IDBkNDRjZTZhZjA4Zi4uMjQwOGU1YzJlZDkxIDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L3VzYi90eXBlYy5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL3R5 cGVjLmgKQEAgLTYwLDYgKzYwLDEyIEBAIGVudW0gdHlwZWNfYWNjZXNzb3J5IHsKIAogI2RlZmlu ZSBUWVBFQ19NQVhfQUNDRVNTT1JZCTMKIAorZW51bSB0eXBlY19vcmllbnRhdGlvbiB7CisJVFlQ RUNfT1JJRU5UQVRJT05fTk9ORSwKKwlUWVBFQ19PUklFTlRBVElPTl9OT1JNQUwsCisJVFlQRUNf T1JJRU5UQVRJT05fUkVWRVJTRSwKK307CisKIC8qCiAgKiBzdHJ1Y3QgdXNiX3BkX2lkZW50aXR5 IC0gVVNCIFBvd2VyIERlbGl2ZXJ5IGlkZW50aXR5IGRhdGEKICAqIEBpZF9oZWFkZXI6IElEIEhl YWRlciBWRE8KQEAgLTE4NSw2ICsxOTEsOCBAQCBzdHJ1Y3QgdHlwZWNfcGFydG5lcl9kZXNjIHsK ICAqIEBwZF9yZXZpc2lvbjogVVNCIFBvd2VyIERlbGl2ZXJ5IFNwZWNpZmljYXRpb24gcmV2aXNp b24gaWYgc3VwcG9ydGVkCiAgKiBAcHJlZmVyX3JvbGU6IEluaXRpYWwgcm9sZSBwcmVmZXJlbmNl CiAgKiBAYWNjZXNzb3J5OiBTdXBwb3J0ZWQgQWNjZXNzb3J5IE1vZGVzCisgKiBAc3c6IENhYmxl IHBsdWcgb3JpZW50YXRpb24gc3dpdGNoCisgKiBAbXV4OiBNdWx0aXBsZXhlciBzd2l0Y2ggZm9y IEFsdGVybmF0ZS9BY2Nlc3NvcnkgTW9kZXMKICAqIEBmd25vZGU6IE9wdGlvbmFsIGZ3bm9kZSBv ZiB0aGUgcG9ydAogICogQHRyeV9yb2xlOiBTZXQgZGF0YSByb2xlIHByZWZlcmVuY2UgZm9yIERS UCBwb3J0CiAgKiBAZHJfc2V0OiBTZXQgRGF0YSBSb2xlCkBAIC0yMDIsNiArMjEwLDggQEAgc3Ry dWN0IHR5cGVjX2NhcGFiaWxpdHkgewogCWludAkJCXByZWZlcl9yb2xlOwogCWVudW0gdHlwZWNf YWNjZXNzb3J5CWFjY2Vzc29yeVtUWVBFQ19NQVhfQUNDRVNTT1JZXTsKIAorCXN0cnVjdCB0eXBl Y19zd2l0Y2gJKnN3OworCXN0cnVjdCB0eXBlY19tdXgJKm11eDsKIAlzdHJ1Y3QgZndub2RlX2hh bmRsZQkqZndub2RlOwogCiAJaW50CQkoKnRyeV9yb2xlKShjb25zdCBzdHJ1Y3QgdHlwZWNfY2Fw YWJpbGl0eSAqLApAQCAtMjQ1LDQgKzI1NSw4IEBAIHZvaWQgdHlwZWNfc2V0X3B3cl9yb2xlKHN0 cnVjdCB0eXBlY19wb3J0ICpwb3J0LCBlbnVtIHR5cGVjX3JvbGUgcm9sZSk7CiB2b2lkIHR5cGVj X3NldF92Y29ubl9yb2xlKHN0cnVjdCB0eXBlY19wb3J0ICpwb3J0LCBlbnVtIHR5cGVjX3JvbGUg cm9sZSk7CiB2b2lkIHR5cGVjX3NldF9wd3Jfb3Btb2RlKHN0cnVjdCB0eXBlY19wb3J0ICpwb3J0 LCBlbnVtIHR5cGVjX3B3cl9vcG1vZGUgbW9kZSk7CiAKK2ludCB0eXBlY19zZXRfb3JpZW50YXRp b24oc3RydWN0IHR5cGVjX3BvcnQgKnBvcnQsCisJCQkgIGVudW0gdHlwZWNfb3JpZW50YXRpb24g b3JpZW50YXRpb24pOworaW50IHR5cGVjX3NldF9tb2RlKHN0cnVjdCB0eXBlY19wb3J0ICpwb3J0 LCBpbnQgbW9kZSk7CisKICNlbmRpZiAvKiBfX0xJTlVYX1VTQl9UWVBFQ19IICovCmRpZmYgLS1n aXQgYS9pbmNsdWRlL2xpbnV4L3VzYi90eXBlY19tdXguaCBiL2luY2x1ZGUvbGludXgvdXNiL3R5 cGVjX211eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTJjMWIw NTc4MzRiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC91c2IvdHlwZWNfbXV4LmgK QEAgLTAsMCArMSw1NSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKwor I2lmbmRlZiBfX1VTQl9UWVBFQ19NVVgKKyNkZWZpbmUgX19VU0JfVFlQRUNfTVVYCisKKyNpbmNs dWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL3R5cGVjLmg+CisKK3N0cnVj dCBkZXZpY2U7CisKKy8qKgorICogc3RydWN0IHR5cGVjX3N3aXRjaCAtIFVTQiBUeXBlLUMgY2Fi bGUgb3JpZW50YXRpb24gc3dpdGNoCisgKiBAZGV2OiBTd2l0Y2ggZGV2aWNlCisgKiBAZW50cnk6 IExpc3QgZW50cnkKKyAqIEBzZXQ6IENhbGxiYWNrIHRvIHRoZSBkcml2ZXIgZm9yIHNldHRpbmcg dGhlIG9yaWVudGF0aW9uCisgKgorICogVVNCIFR5cGUtQyBwaW4gZmxpcHBlciBzd2l0Y2ggcm91 dGluZyB0aGUgY29ycmVjdCBkYXRhIHBhaXJzIGZyb20gdGhlCisgKiBjb25uZWN0b3IgdG8gdGhl IFVTQiBjb250cm9sbGVyIGRlcGVuZGluZyBvbiB0aGUgb3JpZW50YXRpb24gb2YgdGhlIGNhYmxl CisgKiBwbHVnLgorICovCitzdHJ1Y3QgdHlwZWNfc3dpdGNoIHsKKwlzdHJ1Y3QgZGV2aWNlICpk ZXY7CisJc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKKworCWludCAoKnNldCkoc3RydWN0IHR5cGVj X3N3aXRjaCAqc3csIGVudW0gdHlwZWNfb3JpZW50YXRpb24gb3JpZW50YXRpb24pOworfTsKKwor LyoqCisgKiBzdHJ1Y3QgdHlwZWNfc3dpdGNoIC0gVVNCIFR5cGUtQyBjb25uZWN0b3IgcGluIG11 eAorICogQGRldjogTXV4IGRldmljZQorICogQGVudHJ5OiBMaXN0IGVudHJ5CisgKiBAc2V0OiBD YWxsYmFjayB0byB0aGUgZHJpdmVyIGZvciBzZXR0aW5nIHRoZSBzdGF0ZSBvZiB0aGUgbXV4Cisg KgorICogUGluIE11bHRpcGxleGVyL0RlTXVsdGlwbGV4ZXIgc3dpdGNoIHJvdXRpbmcgdGhlIFVT QiBUeXBlLUMgY29ubmVjdG9yIHBpbnMgdG8KKyAqIGRpZmZlcmVudCBjb21wb25lbnRzIGRlcGVu ZGluZyBvbiB0aGUgcmVxdWVzdGVkIG1vZGUgb2Ygb3BlcmF0aW9uLiBVc2VkIHdpdGgKKyAqIEFj Y2Vzc29yeS9BbHRlcm5hdGUgbW9kZXMuCisgKi8KK3N0cnVjdCB0eXBlY19tdXggeworCXN0cnVj dCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGVudHJ5OworCisJaW50ICgqc2V0KShz dHJ1Y3QgdHlwZWNfbXV4ICptdXgsIGludCBzdGF0ZSk7Cit9OworCitzdHJ1Y3QgdHlwZWNfc3dp dGNoICp0eXBlY19zd2l0Y2hfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldik7Cit2b2lkIHR5cGVjX3N3 aXRjaF9wdXQoc3RydWN0IHR5cGVjX3N3aXRjaCAqc3cpOworaW50IHR5cGVjX3N3aXRjaF9yZWdp c3RlcihzdHJ1Y3QgdHlwZWNfc3dpdGNoICpzdyk7Cit2b2lkIHR5cGVjX3N3aXRjaF91bnJlZ2lz dGVyKHN0cnVjdCB0eXBlY19zd2l0Y2ggKnN3KTsKKworc3RydWN0IHR5cGVjX211eCAqdHlwZWNf bXV4X2dldChzdHJ1Y3QgZGV2aWNlICpkZXYpOwordm9pZCB0eXBlY19tdXhfcHV0KHN0cnVjdCB0 eXBlY19tdXggKm11eCk7CitpbnQgdHlwZWNfbXV4X3JlZ2lzdGVyKHN0cnVjdCB0eXBlY19tdXgg Km11eCk7Cit2b2lkIHR5cGVjX211eF91bnJlZ2lzdGVyKHN0cnVjdCB0eXBlY19tdXggKm11eCk7 CisKKyNlbmRpZiAvKiBfX1VTQl9UWVBFQ19NVVggKi8K