From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fabrizio Castro Subject: RE: [RFC] drm/bridge/sii902x: Fix EDID readback Date: Thu, 1 Nov 2018 11:04:57 +0000 Message-ID: References: <1540990667-14109-1-git-send-email-fabrizio.castro@bp.renesas.com> <755e644c-d734-0bde-6908-36dd681de50e@axentia.se> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <755e644c-d734-0bde-6908-36dd681de50e@axentia.se> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Peter Rosin , Linus Walleij , Mark Brown Cc: Geert Uytterhoeven , Wolfram Sang , Dave Airlie , Boris BREZILLON , Chris Paterson , "open list:DRM PANEL DRIVERS" , Biju Das , Linux-Renesas , Simon Horman , Laurent Pinchart , "linux-i2c@vger.kernel.org" List-Id: linux-i2c@vger.kernel.org SGVsbG8gUGV0ZXIsDQoNClRoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjayENCg0Kc25pcA0KDQo+ ID4gWWVhaCwgdGhlcmUgaXMgc29tZSBpc3N1ZSB3aXRoIGxvY2tpbmcgaGVyZSwgYW5kIHRoYXQn cyBjb21pbmcgZG93bg0KPiA+IGZyb20gdGhlIGZhY3QgdGhhdCB3aGVuIHdlIGNhbGwgaW50byBk cm1fZ2V0X2VkaWQsIHdlIGltcGxpY2l0bHkgY2FsbA0KPiA+IGkyY190cmFuc2ZlciB3aGljaCB1 bHRpbWF0ZWx5IGxvY2tzIHRoZSBpMmMgYWRhcHRlciwgYW5kIHRoZW4gY2FsbHMNCj4gPiBpbnRv IG91ciBzaWk5MDJ4X2kyY19ieXBhc3Nfc2VsZWN0LCB3aGljaCBpbiB0dXJuIGNhbGxzIGludG8g dGhlIHJlZ21hcA0KPiA+IGZ1bmN0aW9ucyBhbmQgdGhlcmVmb3JlIHdlIHRyeSBhbmQgbG9jayB0 aGUgc2FtZSBpMmMgYWRhcHRlciBhZ2FpbiwNCj4gPiBkcml2aW5nIHRoZSBzeXN0ZW0gaW50byBh IGRlYWRsb2NrLg0KPiA+IEhhdmluZyB0aGUgb3B0aW9uIG9mIHVzaW5nICJ1bmxvY2tlZCIgZmxh dm91cnMgb2YgcmVhZHMgYW5kIHdyaXRlcw0KPiA+IGlzIHdoYXQgd2UgbmVlZCBoZXJlLCBidXQg bG9va2luZyBhdCBkcml2ZXJzL2Jhc2UvcmVnbWFwL3JlZ21hcC1pMmMuYw0KPiA+IEkgY291bGRu J3QgZmluZCBhbnl0aGluZyBzdWl0YWJsZSBmb3IgbXkgY2FzZSwgbWF5YmUgTWFyayBjb3VsZCBh ZHZpc2UNCj4gPiBvbiB0aGlzIG9uZT8gSSBhbSBzdXJlIEkgb3Zlcmxvb2tlZCBzb21ldGhpbmcg aGVyZSwgaXMgdGhlcmUgYSBiZXR0ZXINCj4gPiB3YXkgdG8gYWRkcmVzcyB0aGlzPw0KPg0KPiBU aGlzIHJlY3Vyc2l2ZSBsb2NraW5nIHByb2JsZW0gc3VyZmFjZXMgd2hlbiBhbiBpMmMgbXV4IGlz IG9wZXJhdGVkDQo+IGJ5IHdyaXRpbmcgY29tbWFuZHMgb24gdGhlIHNhbWUgaTJjIGJ1cyB0aGF0 IGlzIG11eGVkLiBXaGVuIHRoaXMNCj4gaGFwcGVucyBmb3IgYSB0eXBpY2FsIGkyYyBtdXggY2hp cCBsaWtlIG54cCxwY2E5NTQ4IHRoaXMgY2FuIGJlIGtlcHQNCj4gbG9jYWwgdG8gdGhhdCBkcml2 ZXIuIEhvd2V2ZXIsIHdoZW4gdGhlcmUgYXJlIGludGVyYWN0aW9ucyB3aXRoIG90aGVyDQo+IHBh cnRzIG9mIHRoZSBrZXJuZWwgKGUuZy4gaWYgdGhlIGkyYy1tdXggaXMgb3BlcmF0ZWQgYnkgZ3Bp byBwaW5zLA0KPiBhbmQgdGhvc2UgZ3BpbyBwaW5zIGluIHR1cm4gYXJlIG9wZXJhdGVkIGJ5IGFj Y2Vzc2VzIHRvIHRoZSBpMmMgYnVzDQo+IHRoYXQgaXMgbXV4ZWQpIHRoaXMgbG9ja2VkIHZzLiB1 bmxvY2tlZCB0aGluZyB3b3VsZCBzcHJlYWQgbGlrZQ0KPiB3aWxkZmlyZS4NCj4NCj4gU2luY2Ug SSBkaWQgbm90IGxpa2UgdGhhdCB3aWxkZmlyZSwgSSBjYW1lIHVwIHdpdGggdGhlICJtdXgtbG9j a2VkIg0KPiBzY2hlbWUuIEl0IGlzIG5vdCBhcHByb3ByaWF0ZSBldmVyeXdoZXJlLCBidXQgaW4g dGhpcyBjYXNlIEkgdGhpbmsgaXQNCj4gaXMgYSBwZXJmZWN0IGZpdC4gQnkgdXNpbmcgaXQsIHlv dSBzaG91bGQgYmUgYWJsZSB0byBkb2RnZSBhbGwgbG9ja2luZw0KPiBpc3N1ZXMgYW5kIGl0IHNo b3VsZCBiZSBwb3NzaWJsZSB0byBrZWVwIHRoZSByZWdtYXAgdXNhZ2UgYXMtaXMgYW5kIHRoZQ0K PiBwYXRjaCB3b3VsZCBpbiBhbGwgbGlrZWxpaG9vZCBiZSBtdWNoIGxlc3MgaW50cnVzaXZlLg0K Pg0KPiBGb3Igc29tZSBiYWNrZ3JvdW5kIG9uICJtdXgtbG9ja2VkIiB2cy4gInBhcmVudC1sb2Nr ZWQiICh3aGljaCBpcyB3aGF0DQo+IHlvdSBoYXZlIHVzZWQgaW4gdGhpcyBSRkMgcGF0Y2gpLCBz ZWUgRG9jdW1lbnRhdGlvbi9pMmMvaTJjLXRvcG9sb2d5Lg0KDQpUaGUgIm11eC1sb2NrZWQiIGlt cGxlbWVudGF0aW9uIHdhcyB0aGUgb25lIEkgZmlyc3QgdHJpZWQgYW5kIEkgZGlzY292ZXJlZA0K aXQgZG9lc24ndCB3b3JrIGZvciBtZSwgYXMgb3RoZXIgdHJhZmZpYyBvbiB0aGUgcGFyZW50IGFk YXB0ZXIgY2FuIGdldCBpbiB0aGUNCndheS4gV2hhdCB3ZSBuZWVkIGZvciB0aGlzIGRldmljZSBp cyBubyBvdGhlciB0cmFmZmljIG9uIHRoZSBidXMgZHVyaW5nIHRoZQ0KInNlbGVjdCB0cmFuc2Fj dGlvbiBkZXNlbGVjdCIgcHJvY2VkdXJlLCB0aGF0J3Mgd2h5IEkgd2VudCB3aXRoIHRoZSBwYXJl bnQNCmxvY2tpbmcuIEFsc28gdGhpcyBkZXZpY2UgbmVlZHMgYSBkZWxheSBiZXR3ZWVuIHN0b3Ag YW5kIHN0YXJ0IGNvbmRpdGlvbnMNCndoaWxlIGFkZHJlc3NpbmcgdGhlIG1vbml0b3IuDQoNCj4N Cj4gVGhlcmUgYXJlIGEgY291cGxlIG9mIG1vcmUgY29tbWVudHMgYmVsb3csIGlubGluZS4NCj4N Cg0Kc25pcA0KDQo+ID4+Pg0KPiA+Pj4gK3N0YXRpYyBpbnQgc2lpOTAyeF9pMmNfYnlwYXNzX3Nl bGVjdChzdHJ1Y3QgaTJjX211eF9jb3JlICptdXgsIHUzMiBjaGFuX2lkKQ0KPiA+Pj4gK3sNCj4g Pj4+ICsgICAgICAgc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBpMmNfbXV4X3ByaXYobXV4KTsN Cj4gPj4+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnNpaTkwMngtPmkyYy0+ZGV2Ow0K PiA+Pj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQ7DQo+ID4+PiArICAgICAgIHU4IHN0 YXR1czsNCj4gPj4+ICsgICAgICAgaW50IHJldDsNCj4gPj4+ICsNCj4gPj4+ICsgICAgICAgcmV0 ID0gX19zaWk5MDJ4X3VwZGF0ZV9iaXRzKHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNfQ1RSTF9E QVRBLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9T WVNfQ1RSTF9ERENfQlVTX1JFUSwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19SRVEpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAg ICAgICB0aW1lb3V0ID0gamlmZmllcyArDQo+ID4+PiArICAgICAgICAgICAgICAgICBtc2Vjc190 b19qaWZmaWVzKFNJSTkwMlhfSTJDX0JVU19BQ1FVSVNJVElPTl9USU1FT1VUX01TKTsNCj4gPj4+ ICsgICAgICAgZG8gew0KPiA+Pj4gKyAgICAgICAgICAgICAgIHJldCA9IF9fc2lpOTAyeF9yZWFk KHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiA+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0dXMpOw0KPiA+Pj4gKyAgICAgICAgICAgICAg IGlmIChyZXQpDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ Pj4gKyAgICAgICB9IHdoaWxlICghKHN0YXR1cyAmIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19H UlREKSAmJg0KPiA+Pj4gKyAgICAgICAgICAgICAgICB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1l b3V0KSk7DQo+ID4+PiArDQo+ID4+PiArICAgICAgIGlmICghKHN0YXR1cyAmIFNJSTkwMlhfU1lT X0NUUkxfRERDX0JVU19HUlREKSkgew0KPiA+Pj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIGFjcXVpcmUgdGhlIGkyYyBidXNcbiIpOw0KPiA+Pj4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRVRJTUVET1VUOw0KPiA+Pj4gKyAgICAgICB9DQo+ID4+PiArDQo+ID4+PiAr ICAgICAgIHJldCA9IF9fc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5pMmMsIFNJSTkwMlhfU1lTX0NU UkxfREFUQSwgc3RhdHVzKTsNCj4gPj4+ICsgICAgICAgaWYgKHJldCkNCj4gPj4+ICsgICAgICAg ICAgICAgICByZXR1cm4gcmV0Ow0KPg0KPiBXaHkgZG8gSSBub3Qgc2VlIGEgZGVsYXkgaGVyZT8g SSB0aG91Z2h0IHRoZSB3aG9sZSBwb2ludCBvZiBhZGRpbmcgdGhlIGkyYyBnYXRlDQo+IHdhcyB0 aGF0IGl0IGVuYWJsZWQgdGhlIGludHJvZHVjdGlvbiBvZiBhIGRlbGF5IGJldHdlZW4gb3Blbmlu ZyBmb3IgZWRpZCByZWFkaW5nDQo+IGFuZCB0aGUgYWN0dWFsIGVkaWQgcmVhZGluZz8NCg0KVGhl IGRlbGF5IGlzIG5lZWRlZCBiZXR3ZWVuIFNUT1AgYW5kIFNUQVJUIGNvbmRpdGlvbiB3aGlsZSBp biBwYXNzdGhyb3VnaCBtb2RlLg0KX19pMmNfdHJhbnNmZXIgZ2V0cyBjYWxsZWQgYWZ0ZXIgdGhl IHNlbGVjdCBjYWxsYmFjayAod2hpY2ggZW5hYmxlcyB0aGUgcGFzc3Rocm91Z2gNCm1vZGUpLCB3 aGVuIF9faTJjX3RyYW5zZmVyIGlzIGRvbmUgaXQgZ2VuZXJhdGVzIGEgU1RPUCBjb25kaXRpb24g YW5kIHRoZW4gd2UgY2FsbCBpbnRvDQp0aGUgZGVzZWxlY3QgY2FsbGJhY2suIFdlIG5lZWQgYSBk ZWxheSBiZXR3ZWVuIF9faTJjX3RyYW5zZmVyIGFuZCBkZXNlbGVjdC4NCg0KPg0KPiA+Pj4gKyAg ICAgICByZXR1cm4gMDsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIGludCBzaWk5 MDJ4X2kyY19ieXBhc3NfZGVzZWxlY3Qoc3RydWN0IGkyY19tdXhfY29yZSAqbXV4LCB1MzIgY2hh bl9pZCkNCj4gPj4+ICt7DQo+ID4+PiArICAgICAgIHN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0g aTJjX211eF9wcml2KG11eCk7DQo+ID4+PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZz aWk5MDJ4LT5pMmMtPmRldjsNCj4gPj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0Ow0K PiA+Pj4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmV0cmllczsNCj4gPj4+ICsgICAgICAgdTggc3Rh dHVzOw0KPiA+Pj4gKyAgICAgICBpbnQgcmV0Ow0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAgICB1ZGVs YXkoMzApOw0KDQpIZXJlIGlzIHdoZXJlIHdlIG5lZWQgdGhlIGRlbGF5DQoNCnNuaXANCg0KPiA+ Pj4gQEAgLTQzMyw2ICs1NTgsMjIgQEAgc3RhdGljIGludCBzaWk5MDJ4X3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQsDQo+ID4+Pg0KPiA+Pj4gICAgICAgICBpMmNfc2V0X2NsaWVudGRh dGEoY2xpZW50LCBzaWk5MDJ4KTsNCj4gPj4+DQo+ID4+PiArICAgICAgIHNpaTkwMngtPmkyY211 eCA9IGkyY19tdXhfYWxsb2MoY2xpZW50LT5hZGFwdGVyLCBkZXYsDQo+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMCwgSTJDX01VWF9HQVRFLA0KPg0KPiBK dXN0IHVzZSBJMkNfTVVYX0dBVEUgfCBJMkNfTVVYX0xPQ0tFRCBmb3IgdGhlIGZsYWdzIGFyZ3Vt ZW50LCBhbmQgeW91IHNob3VsZCBiZQ0KPiBhYmxlIHRvIG1ha2Ugbm9ybWFsIGkyYyBhY2Nlc3Nl cy4NCg0KVGhpcyBpcyBwcmVjaXNlbHkgd2hhdCBJIHRyaWVkIGluIHRoZSBmaXJzdCBwbGFjZSwg YnV0IGJ5IGdlbmVyYXRpbmcgdHJhZmZpYyBvbiB0aGUgcGFyZW50IGFkYXB0ZXINCihzaW5jZSBJ IGRvbid0IGhhdmUgYW55IG90aGVyIHNsYXZlIG9uIHRoZSBzYW1lIGkyYyBidXMgSSBoYXZlIGJl ZW4gdXNpbmcgaTJjZGV0ZWN0KSB3aGlsZSB0YWxraW5nDQp0byB0aGUgbW9uaXRvciBJIGhhdmUg YmVlbiBhYmxlIHRvIGJyZWFrIGNvbW11bmljYXRpb25zLCBhbmQgc29tZXRpbWVzIHN0YWxsIHRo ZSBidXMsIHRoZXJlZm9yZQ0KSSBoYXZlIHRha2VuIG91dCBJMkNfTVVYX0xPQ0tFRC4NCg0KQWgs IGRvIHlvdSB0aGluayB0aGUgZm9sbG93aW5nIGlzIGdvaW5nIHRvIGNhdXNlIGFueSBpc3N1ZSBp biB0aGUgZnV0dXJlPw0KLWVkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBzaWk5MDJ4LT5p MmMtPmFkYXB0ZXIpOw0KK2VkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBzaWk5MDJ4LT5p MmNtdXgtPmFkYXB0ZXJbMF0pOw0KDQpUaGFua3MsDQpGYWINCg0KPg0KPiBDaGVlcnMsDQo+IFBl dGVyDQo+DQoNCg0KDQpSZW5lc2FzIEVsZWN0cm9uaWNzIEV1cm9wZSBMdGQsIER1a2VzIE1lYWRv dywgTWlsbGJvYXJkIFJvYWQsIEJvdXJuZSBFbmQsIEJ1Y2tpbmdoYW1zaGlyZSwgU0w4IDVGSCwg VUsuIFJlZ2lzdGVyZWQgaW4gRW5nbGFuZCAmIFdhbGVzIHVuZGVyIFJlZ2lzdGVyZWQgTm8uIDA0 NTg2NzA5Lg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Fabrizio Castro To: Peter Rosin , Linus Walleij , Mark Brown CC: Archit Taneja , Andrzej Hajda , Dave Airlie , Wolfram Sang , Laurent Pinchart , "open list:DRM PANEL DRIVERS" , Simon Horman , Geert Uytterhoeven , Chris Paterson , Biju Das , Linux-Renesas , "linux-i2c@vger.kernel.org" , Inki Dae , Boris BREZILLON Subject: RE: [RFC] drm/bridge/sii902x: Fix EDID readback Date: Thu, 1 Nov 2018 11:04:57 +0000 Message-ID: References: <1540990667-14109-1-git-send-email-fabrizio.castro@bp.renesas.com> <755e644c-d734-0bde-6908-36dd681de50e@axentia.se> In-Reply-To: <755e644c-d734-0bde-6908-36dd681de50e@axentia.se> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-i2c-owner@vger.kernel.org List-ID: SGVsbG8gUGV0ZXIsDQoNClRoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjayENCg0Kc25pcA0KDQo+ ID4gWWVhaCwgdGhlcmUgaXMgc29tZSBpc3N1ZSB3aXRoIGxvY2tpbmcgaGVyZSwgYW5kIHRoYXQn cyBjb21pbmcgZG93bg0KPiA+IGZyb20gdGhlIGZhY3QgdGhhdCB3aGVuIHdlIGNhbGwgaW50byBk cm1fZ2V0X2VkaWQsIHdlIGltcGxpY2l0bHkgY2FsbA0KPiA+IGkyY190cmFuc2ZlciB3aGljaCB1 bHRpbWF0ZWx5IGxvY2tzIHRoZSBpMmMgYWRhcHRlciwgYW5kIHRoZW4gY2FsbHMNCj4gPiBpbnRv IG91ciBzaWk5MDJ4X2kyY19ieXBhc3Nfc2VsZWN0LCB3aGljaCBpbiB0dXJuIGNhbGxzIGludG8g dGhlIHJlZ21hcA0KPiA+IGZ1bmN0aW9ucyBhbmQgdGhlcmVmb3JlIHdlIHRyeSBhbmQgbG9jayB0 aGUgc2FtZSBpMmMgYWRhcHRlciBhZ2FpbiwNCj4gPiBkcml2aW5nIHRoZSBzeXN0ZW0gaW50byBh IGRlYWRsb2NrLg0KPiA+IEhhdmluZyB0aGUgb3B0aW9uIG9mIHVzaW5nICJ1bmxvY2tlZCIgZmxh dm91cnMgb2YgcmVhZHMgYW5kIHdyaXRlcw0KPiA+IGlzIHdoYXQgd2UgbmVlZCBoZXJlLCBidXQg bG9va2luZyBhdCBkcml2ZXJzL2Jhc2UvcmVnbWFwL3JlZ21hcC1pMmMuYw0KPiA+IEkgY291bGRu J3QgZmluZCBhbnl0aGluZyBzdWl0YWJsZSBmb3IgbXkgY2FzZSwgbWF5YmUgTWFyayBjb3VsZCBh ZHZpc2UNCj4gPiBvbiB0aGlzIG9uZT8gSSBhbSBzdXJlIEkgb3Zlcmxvb2tlZCBzb21ldGhpbmcg aGVyZSwgaXMgdGhlcmUgYSBiZXR0ZXINCj4gPiB3YXkgdG8gYWRkcmVzcyB0aGlzPw0KPg0KPiBU aGlzIHJlY3Vyc2l2ZSBsb2NraW5nIHByb2JsZW0gc3VyZmFjZXMgd2hlbiBhbiBpMmMgbXV4IGlz IG9wZXJhdGVkDQo+IGJ5IHdyaXRpbmcgY29tbWFuZHMgb24gdGhlIHNhbWUgaTJjIGJ1cyB0aGF0 IGlzIG11eGVkLiBXaGVuIHRoaXMNCj4gaGFwcGVucyBmb3IgYSB0eXBpY2FsIGkyYyBtdXggY2hp cCBsaWtlIG54cCxwY2E5NTQ4IHRoaXMgY2FuIGJlIGtlcHQNCj4gbG9jYWwgdG8gdGhhdCBkcml2 ZXIuIEhvd2V2ZXIsIHdoZW4gdGhlcmUgYXJlIGludGVyYWN0aW9ucyB3aXRoIG90aGVyDQo+IHBh cnRzIG9mIHRoZSBrZXJuZWwgKGUuZy4gaWYgdGhlIGkyYy1tdXggaXMgb3BlcmF0ZWQgYnkgZ3Bp byBwaW5zLA0KPiBhbmQgdGhvc2UgZ3BpbyBwaW5zIGluIHR1cm4gYXJlIG9wZXJhdGVkIGJ5IGFj Y2Vzc2VzIHRvIHRoZSBpMmMgYnVzDQo+IHRoYXQgaXMgbXV4ZWQpIHRoaXMgbG9ja2VkIHZzLiB1 bmxvY2tlZCB0aGluZyB3b3VsZCBzcHJlYWQgbGlrZQ0KPiB3aWxkZmlyZS4NCj4NCj4gU2luY2Ug SSBkaWQgbm90IGxpa2UgdGhhdCB3aWxkZmlyZSwgSSBjYW1lIHVwIHdpdGggdGhlICJtdXgtbG9j a2VkIg0KPiBzY2hlbWUuIEl0IGlzIG5vdCBhcHByb3ByaWF0ZSBldmVyeXdoZXJlLCBidXQgaW4g dGhpcyBjYXNlIEkgdGhpbmsgaXQNCj4gaXMgYSBwZXJmZWN0IGZpdC4gQnkgdXNpbmcgaXQsIHlv dSBzaG91bGQgYmUgYWJsZSB0byBkb2RnZSBhbGwgbG9ja2luZw0KPiBpc3N1ZXMgYW5kIGl0IHNo b3VsZCBiZSBwb3NzaWJsZSB0byBrZWVwIHRoZSByZWdtYXAgdXNhZ2UgYXMtaXMgYW5kIHRoZQ0K PiBwYXRjaCB3b3VsZCBpbiBhbGwgbGlrZWxpaG9vZCBiZSBtdWNoIGxlc3MgaW50cnVzaXZlLg0K Pg0KPiBGb3Igc29tZSBiYWNrZ3JvdW5kIG9uICJtdXgtbG9ja2VkIiB2cy4gInBhcmVudC1sb2Nr ZWQiICh3aGljaCBpcyB3aGF0DQo+IHlvdSBoYXZlIHVzZWQgaW4gdGhpcyBSRkMgcGF0Y2gpLCBz ZWUgRG9jdW1lbnRhdGlvbi9pMmMvaTJjLXRvcG9sb2d5Lg0KDQpUaGUgIm11eC1sb2NrZWQiIGlt cGxlbWVudGF0aW9uIHdhcyB0aGUgb25lIEkgZmlyc3QgdHJpZWQgYW5kIEkgZGlzY292ZXJlZA0K aXQgZG9lc24ndCB3b3JrIGZvciBtZSwgYXMgb3RoZXIgdHJhZmZpYyBvbiB0aGUgcGFyZW50IGFk YXB0ZXIgY2FuIGdldCBpbiB0aGUNCndheS4gV2hhdCB3ZSBuZWVkIGZvciB0aGlzIGRldmljZSBp cyBubyBvdGhlciB0cmFmZmljIG9uIHRoZSBidXMgZHVyaW5nIHRoZQ0KInNlbGVjdCB0cmFuc2Fj dGlvbiBkZXNlbGVjdCIgcHJvY2VkdXJlLCB0aGF0J3Mgd2h5IEkgd2VudCB3aXRoIHRoZSBwYXJl bnQNCmxvY2tpbmcuIEFsc28gdGhpcyBkZXZpY2UgbmVlZHMgYSBkZWxheSBiZXR3ZWVuIHN0b3Ag YW5kIHN0YXJ0IGNvbmRpdGlvbnMNCndoaWxlIGFkZHJlc3NpbmcgdGhlIG1vbml0b3IuDQoNCj4N Cj4gVGhlcmUgYXJlIGEgY291cGxlIG9mIG1vcmUgY29tbWVudHMgYmVsb3csIGlubGluZS4NCj4N Cg0Kc25pcA0KDQo+ID4+Pg0KPiA+Pj4gK3N0YXRpYyBpbnQgc2lpOTAyeF9pMmNfYnlwYXNzX3Nl bGVjdChzdHJ1Y3QgaTJjX211eF9jb3JlICptdXgsIHUzMiBjaGFuX2lkKQ0KPiA+Pj4gK3sNCj4g Pj4+ICsgICAgICAgc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBpMmNfbXV4X3ByaXYobXV4KTsN Cj4gPj4+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnNpaTkwMngtPmkyYy0+ZGV2Ow0K PiA+Pj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQ7DQo+ID4+PiArICAgICAgIHU4IHN0 YXR1czsNCj4gPj4+ICsgICAgICAgaW50IHJldDsNCj4gPj4+ICsNCj4gPj4+ICsgICAgICAgcmV0 ID0gX19zaWk5MDJ4X3VwZGF0ZV9iaXRzKHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNfQ1RSTF9E QVRBLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9T WVNfQ1RSTF9ERENfQlVTX1JFUSwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19SRVEpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAg ICAgICB0aW1lb3V0ID0gamlmZmllcyArDQo+ID4+PiArICAgICAgICAgICAgICAgICBtc2Vjc190 b19qaWZmaWVzKFNJSTkwMlhfSTJDX0JVU19BQ1FVSVNJVElPTl9USU1FT1VUX01TKTsNCj4gPj4+ ICsgICAgICAgZG8gew0KPiA+Pj4gKyAgICAgICAgICAgICAgIHJldCA9IF9fc2lpOTAyeF9yZWFk KHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiA+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0dXMpOw0KPiA+Pj4gKyAgICAgICAgICAgICAg IGlmIChyZXQpDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ Pj4gKyAgICAgICB9IHdoaWxlICghKHN0YXR1cyAmIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19H UlREKSAmJg0KPiA+Pj4gKyAgICAgICAgICAgICAgICB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1l b3V0KSk7DQo+ID4+PiArDQo+ID4+PiArICAgICAgIGlmICghKHN0YXR1cyAmIFNJSTkwMlhfU1lT X0NUUkxfRERDX0JVU19HUlREKSkgew0KPiA+Pj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIGFjcXVpcmUgdGhlIGkyYyBidXNcbiIpOw0KPiA+Pj4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRVRJTUVET1VUOw0KPiA+Pj4gKyAgICAgICB9DQo+ID4+PiArDQo+ID4+PiAr ICAgICAgIHJldCA9IF9fc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5pMmMsIFNJSTkwMlhfU1lTX0NU UkxfREFUQSwgc3RhdHVzKTsNCj4gPj4+ICsgICAgICAgaWYgKHJldCkNCj4gPj4+ICsgICAgICAg ICAgICAgICByZXR1cm4gcmV0Ow0KPg0KPiBXaHkgZG8gSSBub3Qgc2VlIGEgZGVsYXkgaGVyZT8g SSB0aG91Z2h0IHRoZSB3aG9sZSBwb2ludCBvZiBhZGRpbmcgdGhlIGkyYyBnYXRlDQo+IHdhcyB0 aGF0IGl0IGVuYWJsZWQgdGhlIGludHJvZHVjdGlvbiBvZiBhIGRlbGF5IGJldHdlZW4gb3Blbmlu ZyBmb3IgZWRpZCByZWFkaW5nDQo+IGFuZCB0aGUgYWN0dWFsIGVkaWQgcmVhZGluZz8NCg0KVGhl IGRlbGF5IGlzIG5lZWRlZCBiZXR3ZWVuIFNUT1AgYW5kIFNUQVJUIGNvbmRpdGlvbiB3aGlsZSBp biBwYXNzdGhyb3VnaCBtb2RlLg0KX19pMmNfdHJhbnNmZXIgZ2V0cyBjYWxsZWQgYWZ0ZXIgdGhl IHNlbGVjdCBjYWxsYmFjayAod2hpY2ggZW5hYmxlcyB0aGUgcGFzc3Rocm91Z2gNCm1vZGUpLCB3 aGVuIF9faTJjX3RyYW5zZmVyIGlzIGRvbmUgaXQgZ2VuZXJhdGVzIGEgU1RPUCBjb25kaXRpb24g YW5kIHRoZW4gd2UgY2FsbCBpbnRvDQp0aGUgZGVzZWxlY3QgY2FsbGJhY2suIFdlIG5lZWQgYSBk ZWxheSBiZXR3ZWVuIF9faTJjX3RyYW5zZmVyIGFuZCBkZXNlbGVjdC4NCg0KPg0KPiA+Pj4gKyAg ICAgICByZXR1cm4gMDsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIGludCBzaWk5 MDJ4X2kyY19ieXBhc3NfZGVzZWxlY3Qoc3RydWN0IGkyY19tdXhfY29yZSAqbXV4LCB1MzIgY2hh bl9pZCkNCj4gPj4+ICt7DQo+ID4+PiArICAgICAgIHN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0g aTJjX211eF9wcml2KG11eCk7DQo+ID4+PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZz aWk5MDJ4LT5pMmMtPmRldjsNCj4gPj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0Ow0K PiA+Pj4gKyAgICAgICB1bnNpZ25lZCBpbnQgcmV0cmllczsNCj4gPj4+ICsgICAgICAgdTggc3Rh dHVzOw0KPiA+Pj4gKyAgICAgICBpbnQgcmV0Ow0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAgICB1ZGVs YXkoMzApOw0KDQpIZXJlIGlzIHdoZXJlIHdlIG5lZWQgdGhlIGRlbGF5DQoNCnNuaXANCg0KPiA+ Pj4gQEAgLTQzMyw2ICs1NTgsMjIgQEAgc3RhdGljIGludCBzaWk5MDJ4X3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQsDQo+ID4+Pg0KPiA+Pj4gICAgICAgICBpMmNfc2V0X2NsaWVudGRh dGEoY2xpZW50LCBzaWk5MDJ4KTsNCj4gPj4+DQo+ID4+PiArICAgICAgIHNpaTkwMngtPmkyY211 eCA9IGkyY19tdXhfYWxsb2MoY2xpZW50LT5hZGFwdGVyLCBkZXYsDQo+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMCwgSTJDX01VWF9HQVRFLA0KPg0KPiBK dXN0IHVzZSBJMkNfTVVYX0dBVEUgfCBJMkNfTVVYX0xPQ0tFRCBmb3IgdGhlIGZsYWdzIGFyZ3Vt ZW50LCBhbmQgeW91IHNob3VsZCBiZQ0KPiBhYmxlIHRvIG1ha2Ugbm9ybWFsIGkyYyBhY2Nlc3Nl cy4NCg0KVGhpcyBpcyBwcmVjaXNlbHkgd2hhdCBJIHRyaWVkIGluIHRoZSBmaXJzdCBwbGFjZSwg YnV0IGJ5IGdlbmVyYXRpbmcgdHJhZmZpYyBvbiB0aGUgcGFyZW50IGFkYXB0ZXINCihzaW5jZSBJ IGRvbid0IGhhdmUgYW55IG90aGVyIHNsYXZlIG9uIHRoZSBzYW1lIGkyYyBidXMgSSBoYXZlIGJl ZW4gdXNpbmcgaTJjZGV0ZWN0KSB3aGlsZSB0YWxraW5nDQp0byB0aGUgbW9uaXRvciBJIGhhdmUg YmVlbiBhYmxlIHRvIGJyZWFrIGNvbW11bmljYXRpb25zLCBhbmQgc29tZXRpbWVzIHN0YWxsIHRo ZSBidXMsIHRoZXJlZm9yZQ0KSSBoYXZlIHRha2VuIG91dCBJMkNfTVVYX0xPQ0tFRC4NCg0KQWgs IGRvIHlvdSB0aGluayB0aGUgZm9sbG93aW5nIGlzIGdvaW5nIHRvIGNhdXNlIGFueSBpc3N1ZSBp biB0aGUgZnV0dXJlPw0KLWVkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBzaWk5MDJ4LT5p MmMtPmFkYXB0ZXIpOw0KK2VkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBzaWk5MDJ4LT5p MmNtdXgtPmFkYXB0ZXJbMF0pOw0KDQpUaGFua3MsDQpGYWINCg0KPg0KPiBDaGVlcnMsDQo+IFBl dGVyDQo+DQoNCg0KDQpSZW5lc2FzIEVsZWN0cm9uaWNzIEV1cm9wZSBMdGQsIER1a2VzIE1lYWRv dywgTWlsbGJvYXJkIFJvYWQsIEJvdXJuZSBFbmQsIEJ1Y2tpbmdoYW1zaGlyZSwgU0w4IDVGSCwg VUsuIFJlZ2lzdGVyZWQgaW4gRW5nbGFuZCAmIFdhbGVzIHVuZGVyIFJlZ2lzdGVyZWQgTm8uIDA0 NTg2NzA5Lg0K