From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH v2 1/8] drm/rockchip/dsi: correct Feedback divider setting Date: Fri, 13 Oct 2017 13:39:23 +0530 Message-ID: <6633e1e8-3188-16f5-7b40-545b5ad97aac@codeaurora.org> References: <1506412523-1766-1-git-send-email-nickey.yang@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1506412523-1766-1-git-send-email-nickey.yang@rock-chips.com> 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: Nickey Yang , mark.yao@rock-chips.com, robh+dt@kernel.org, heiko@sntech.de, mark.rutland@arm.com, airlied@linux.ie Cc: bivvy.bi@rock-chips.com, hl@rock-chips.com, briannorris@chromium.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, zyw@rock-chips.com, xbl@rock-chips.com List-Id: linux-rockchip.vger.kernel.org SGksCgpPbiAwOS8yNi8yMDE3IDAxOjI1IFBNLCBOaWNrZXkgWWFuZyB3cm90ZToKPiBUaGlzIHBh dGNoIGNvcnJlY3QgRmVlZGJhY2sgZGl2aWRlciBzZXR0aW5nOgo+IDHjgIFTZXQgRmVlZGJhY2sg ZGl2aWRlciBbODo1XSB3aGVuIEhJR0hfUFJPR1JBTV9FTgo+IDLjgIFEdWUgdG8gdGhlIHVzZSBv ZiBhICJieSAyIHByZS1zY2FsZXIsIiB0aGUgcmFuZ2Ugb2YgdGhlCj4gZmVlZGJhY2sgbXVsdGlw bGljYXRpb24gRmVlZGJhY2sgZGl2aWRlciBpcyBsaW1pdGVkIHRvIGV2ZW4KPiBkaXZpc2lvbiBu dW1iZXJzLCBhbmQgRmVlZGJhY2sgZGl2aWRlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbgo+IDEyLCBs ZXNzIHRoYW4gMTAwMC4KPiAz44CBTWFrZSB0aGUgcHJldmlvdXNseSBjb25maWd1cmVkIEZlZWRi YWNrIGRpdmlkZXIoTFNCKQo+IGZhY3RvcnMgZWZmZWN0aXZlCj4gNOOAgUFkZCB0aGUgZGVmaW5p dGlvbiBvZiB0aGUgTUlQSSBQSFkgcmVnaXN0ZXIuCgpTbGlnaHRseSB1bnJlbGF0ZWQgdG9waWM6 IFdlIG5vdyBoYXZlIGEgZ2VuZXJpYyBkdy1taXBpLWRzaSBicmlkZ2UKZHJpdmVyLiBDYW4gd2Ug Y29uc2lkZXIgbW92aW5nIHRvIHRoYXQgaW5zdGVhZCBvZiBhZGRpbmcgbmV3IGZlYXR1cmVzCndp dGhpbiB0aGUgcm9ja2NoaXAga21zIGRyaXZlcj8KClRoYW5rcywKQXJjaGl0Cgo+IAo+IFNpZ25l ZC1vZmYtYnk6IE5pY2tleSBZYW5nIDxuaWNrZXkueWFuZ0Byb2NrLWNoaXBzLmNvbT4KPiAtLS0K PiAgIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9kdy1taXBpLWRzaS5jIHwgMjE5ICsrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDE0NiBpbnNlcnRp b25zKCspLCA3MyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL2R3LW1pcGktZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlw aS1kc2kuYwo+IGluZGV4IDlhMjBiOWQuLmM5MzNhM2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvZHctbWlwaS1kc2kuYwo+IEBAIC0yMjgsNyArMjI4LDcgQEAKPiAgICNkZWZpbmUgTE9X X1BST0dSQU1fRU4JCTAKPiAgICNkZWZpbmUgSElHSF9QUk9HUkFNX0VOCQlCSVQoNykKPiAgICNk ZWZpbmUgTE9PUF9ESVZfTE9XX1NFTCh2YWwpCSgoKHZhbCkgLSAxKSAmIDB4MWYpCj4gLSNkZWZp bmUgTE9PUF9ESVZfSElHSF9TRUwodmFsKQkoKCgodmFsKSAtIDEpID4+IDUpICYgMHgxZikKPiAr I2RlZmluZSBMT09QX0RJVl9ISUdIX1NFTCh2YWwpCSgoKCh2YWwpIC0gMSkgPj4gNSkgJiAweGYp Cj4gICAjZGVmaW5lIFBMTF9MT09QX0RJVl9FTgkJQklUKDUpCj4gICAjZGVmaW5lIFBMTF9JTlBV VF9ESVZfRU4JQklUKDQpCj4gICAKPiBAQCAtMjU0LDYgKzI1NCwyOCBAQAo+ICAgI2RlZmluZSBE V19NSVBJX05FRURTX1BIWV9DRkdfQ0xLCUJJVCgwKQo+ICAgI2RlZmluZSBEV19NSVBJX05FRURT X0dSRl9DTEsJCUJJVCgxKQo+ICAgCj4gKyNkZWZpbmUgUExMX0JJQVNfQ1VSX1NFTF9DQVBfVkNP X0NPTlRST0wgMHgxMAo+ICsjZGVmaW5lIFBMTF9DUF9DT05UUk9MX1BMTF9MT0NLX0JZUEFTUyAw eDExCj4gKyNkZWZpbmUgUExMX0xQRl9BTkRfQ1BfQ09OVFJPTCAweDEyCj4gKyNkZWZpbmUgUExM X0lOUFVUX0RJVklERVJfUkFUSU8gMHgxNwo+ICsjZGVmaW5lIFBMTF9MT09QX0RJVklERVJfUkFU SU8gMHgxOAo+ICsjZGVmaW5lIFBMTF9JTlBVVF9BTkRfTE9PUF9ESVZJREVSX1JBVElPU19DT05U Uk9MIDB4MTkKPiArI2RlZmluZSBCQU5ER0FQX0FORF9CSUFTX0NPTlRST0wgMHgyMAo+ICsjZGVm aW5lIFRFUk1JTkFUSU9OX1JFU0lTVEVSX0NPTlRST0wgMHgyMQo+ICsjZGVmaW5lIEFGRV9CSUFT X0JBTkRHQVBfQU5BTE9HX1BST0dSQU1NQUJJTElUWSAweDIyCj4gKyNkZWZpbmUgSFNfUlhfQ09O VFJPTF9PRl9MQU5FXzAgMHg0NAo+ICsjZGVmaW5lIEhTX1RYX0NMT0NLX0xBTkVfUkVRVUVTVF9T VEFURV9USU1FX0NPTlRST0wgMHg2MAo+ICsjZGVmaW5lIEhTX1RYX0NMT0NLX0xBTkVfUFJFUEFS RV9TVEFURV9USU1FX0NPTlRST0wgMHg2MQo+ICsjZGVmaW5lIEhTX1RYX0NMT0NLX0xBTkVfSFNf WkVST19TVEFURV9USU1FX0NPTlRST0wgMHg2Mgo+ICsjZGVmaW5lIEhTX1RYX0NMT0NLX0xBTkVf VFJBSUxfU1RBVEVfVElNRV9DT05UUk9MIDB4NjMKPiArI2RlZmluZSBIU19UWF9DTE9DS19MQU5F X0VYSVRfU1RBVEVfVElNRV9DT05UUk9MIDB4NjQKPiArI2RlZmluZSBIU19UWF9DTE9DS19MQU5F X1BPU1RfVElNRV9DT05UUk9MIDB4NjUKPiArI2RlZmluZSBIU19UWF9EQVRBX0xBTkVfUkVRVUVT VF9TVEFURV9USU1FX0NPTlRST0wgMHg3MAo+ICsjZGVmaW5lIEhTX1RYX0RBVEFfTEFORV9QUkVQ QVJFX1NUQVRFX1RJTUVfQ09OVFJPTCAweDcxCj4gKyNkZWZpbmUgSFNfVFhfREFUQV9MQU5FX0hT X1pFUk9fU1RBVEVfVElNRV9DT05UUk9MIDB4NzIKPiArI2RlZmluZSBIU19UWF9EQVRBX0xBTkVf VFJBSUxfU1RBVEVfVElNRV9DT05UUk9MIDB4NzMKPiArI2RlZmluZSBIU19UWF9EQVRBX0xBTkVf RVhJVF9TVEFURV9USU1FX0NPTlRST0wgMHg3NAo+ICsKPiAgIGVudW0gewo+ICAgCUJBTkRHQVBf OTdfMDcsCj4gICAJQkFOREdBUF85OF8wNSwKPiBAQCAtNDQ3LDUzICs0NjksNzkgQEAgc3RhdGlj IGludCBkd19taXBpX2RzaV9waHlfaW5pdChzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKPiAgIAkJ cmV0dXJuIHJldDsKPiAgIAl9Cj4gICAKPiAtCWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIDB4 MTAsIEJZUEFTU19WQ09fUkFOR0UgfAo+IC0JCQkJCSBWQ09fUkFOR0VfQ09OX1NFTCh2Y28pIHwK PiAtCQkJCQkgVkNPX0lOX0NBUF9DT05fTE9XIHwKPiAtCQkJCQkgUkVGX0JJQVNfQ1VSX1NFTCk7 Cj4gLQo+IC0JZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgMHgxMSwgQ1BfQ1VSUkVOVF8zTUEp Owo+IC0JZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgMHgxMiwgQ1BfUFJPR1JBTV9FTiB8IExQ Rl9QUk9HUkFNX0VOIHwKPiAtCQkJCQkgTFBGX1JFU0lTVE9SU18yMF9LT0hNKTsKPiAtCj4gLQlk d19taXBpX2RzaV9waHlfd3JpdGUoZHNpLCAweDQ0LCBIU0ZSRVFSQU5HRV9TRUwodGVzdGRpbikp Owo+IC0KPiAtCWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIDB4MTcsIElOUFVUX0RJVklERVIo ZHNpLT5pbnB1dF9kaXYpKTsKPiAtCWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIDB4MTgsIExP T1BfRElWX0xPV19TRUwoZHNpLT5mZWVkYmFja19kaXYpIHwKPiAtCQkJCQkgTE9XX1BST0dSQU1f RU4pOwo+IC0JZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgMHgxOCwgTE9PUF9ESVZfSElHSF9T RUwoZHNpLT5mZWVkYmFja19kaXYpIHwKPiAtCQkJCQkgSElHSF9QUk9HUkFNX0VOKTsKPiAtCWR3 X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIDB4MTksIFBMTF9MT09QX0RJVl9FTiB8IFBMTF9JTlBV VF9ESVZfRU4pOwo+IC0KPiAtCWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIDB4MjIsIExPV19Q Uk9HUkFNX0VOIHwKPiAtCQkJCQkgQklBU0VYVFJfU0VMKEJJQVNFWFRSXzEyN183KSk7Cj4gLQlk d19taXBpX2RzaV9waHlfd3JpdGUoZHNpLCAweDIyLCBISUdIX1BST0dSQU1fRU4gfAo+IC0JCQkJ CSBCQU5ER0FQX1NFTChCQU5ER0FQXzk2XzEwKSk7Cj4gLQo+IC0JZHdfbWlwaV9kc2lfcGh5X3dy aXRlKGRzaSwgMHgyMCwgUE9XRVJfQ09OVFJPTCB8IElOVEVSTkFMX1JFR19DVVJSRU5UIHwKPiAt CQkJCQkgQklBU19CTE9DS19PTiB8IEJBTkRHQVBfT04pOwo+IC0KPiAtCWR3X21pcGlfZHNpX3Bo eV93cml0ZShkc2ksIDB4MjEsIFRFUl9SRVNJU1RPUl9MT1cgfCBURVJfQ0FMX0RPTkUgfAo+IC0J CQkJCSBTRVRSRF9NQVggfCBURVJfUkVTSVNUT1JTX09OKTsKPiAtCWR3X21pcGlfZHNpX3BoeV93 cml0ZShkc2ksIDB4MjEsIFRFUl9SRVNJU1RPUl9ISUdIIHwgTEVWRUxfU0hJRlRFUlNfT04gfAo+ IC0JCQkJCSBTRVRSRF9NQVggfCBQT1dFUl9NQU5BR0UgfAo+IC0JCQkJCSBURVJfUkVTSVNUT1JT X09OKTsKPiAtCj4gLQlkd19taXBpX2RzaV9waHlfd3JpdGUoZHNpLCAweDYwLCBUTFBfUFJPR1JB TV9FTiB8IG5zMmJjKGRzaSwgNTAwKSk7Cj4gLQlkd19taXBpX2RzaV9waHlfd3JpdGUoZHNpLCAw eDYxLCBUSFNfUFJFX1BST0dSQU1fRU4gfCBuczJ1aShkc2ksIDQwKSk7Cj4gLQlkd19taXBpX2Rz aV9waHlfd3JpdGUoZHNpLCAweDYyLCBUSFNfWkVST19QUk9HUkFNX0VOIHwgbnMyYmMoZHNpLCAz MDApKTsKPiAtCWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIDB4NjMsIFRIU19QUkVfUFJPR1JB TV9FTiB8IG5zMnVpKGRzaSwgMTAwKSk7Cj4gLQlkd19taXBpX2RzaV9waHlfd3JpdGUoZHNpLCAw eDY0LCBCSVQoNSkgfCBuczJiYyhkc2ksIDEwMCkpOwo+IC0JZHdfbWlwaV9kc2lfcGh5X3dyaXRl KGRzaSwgMHg2NSwgQklUKDUpIHwgKG5zMmJjKGRzaSwgNjApICsgNykpOwo+IC0KPiAtCWR3X21p cGlfZHNpX3BoeV93cml0ZShkc2ksIDB4NzAsIFRMUF9QUk9HUkFNX0VOIHwgbnMyYmMoZHNpLCA1 MDApKTsKPiAtCWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIDB4NzEsCj4gKwlkd19taXBpX2Rz aV9waHlfd3JpdGUoZHNpLCBQTExfQklBU19DVVJfU0VMX0NBUF9WQ09fQ09OVFJPTCwKPiArCQkJ ICAgICAgQllQQVNTX1ZDT19SQU5HRSB8Cj4gKwkJCSAgICAgIFZDT19SQU5HRV9DT05fU0VMKHZj bykgfAo+ICsJCQkgICAgICBWQ09fSU5fQ0FQX0NPTl9MT1cgfAo+ICsJCQkgICAgICBSRUZfQklB U19DVVJfU0VMKTsKPiArCj4gKwlkd19taXBpX2RzaV9waHlfd3JpdGUoZHNpLCBQTExfQ1BfQ09O VFJPTF9QTExfTE9DS19CWVBBU1MsCj4gKwkJCSAgICAgIENQX0NVUlJFTlRfM01BKTsKPiArCWR3 X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIFBMTF9MUEZfQU5EX0NQX0NPTlRST0wsCj4gKwkJCSAg ICAgIENQX1BST0dSQU1fRU4gfCBMUEZfUFJPR1JBTV9FTiB8Cj4gKwkJCSAgICAgIExQRl9SRVNJ U1RPUlNfMjBfS09ITSk7Cj4gKwo+ICsJZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgSFNfUlhf Q09OVFJPTF9PRl9MQU5FXzAsCj4gKwkJCSAgICAgIEhTRlJFUVJBTkdFX1NFTCh0ZXN0ZGluKSk7 Cj4gKwo+ICsJZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgUExMX0lOUFVUX0RJVklERVJfUkFU SU8sCj4gKwkJCSAgICAgIElOUFVUX0RJVklERVIoZHNpLT5pbnB1dF9kaXYpKTsKPiArCWR3X21p cGlfZHNpX3BoeV93cml0ZShkc2ksIFBMTF9MT09QX0RJVklERVJfUkFUSU8sCj4gKwkJCSAgICAg IExPT1BfRElWX0xPV19TRUwoZHNpLT5mZWVkYmFja19kaXYpIHwKPiArCQkJICAgICAgTE9XX1BS T0dSQU1fRU4pOwo+ICsJLyoKPiArCSAqIHdlIG5lZWQgc2V0IDB4MTkgaW1tZWRpYXRlbHkgdG8g bWFrZSB0aGUgY29uZmlncnVlZCBMU0IKPiArCSAqIGVmZmVjdGl2ZSBhY2NvcmRpbmcgdG8gSVAg c2ltdWxhdGlvbiBhbmQgbGFiIHRlc3QgcmVzdWx0cy4KPiArCSAqIE9ubHkgaW4gdGhpcyB3YXkg Y2FuIHdlIGdldCBjb3JyZWN0IG1pcGkgcGh5IHBsbCBmcmVxdWVuY3kuCj4gKwkgKi8KPiArCWR3 X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIFBMTF9JTlBVVF9BTkRfTE9PUF9ESVZJREVSX1JBVElP U19DT05UUk9MLAo+ICsJCQkgICAgICBQTExfTE9PUF9ESVZfRU4gfCBQTExfSU5QVVRfRElWX0VO KTsKPiArCWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIFBMTF9MT09QX0RJVklERVJfUkFUSU8s Cj4gKwkJCSAgICAgIExPT1BfRElWX0hJR0hfU0VMKGRzaS0+ZmVlZGJhY2tfZGl2KSB8Cj4gKwkJ CSAgICAgIEhJR0hfUFJPR1JBTV9FTik7Cj4gKwlkd19taXBpX2RzaV9waHlfd3JpdGUoZHNpLCBQ TExfSU5QVVRfQU5EX0xPT1BfRElWSURFUl9SQVRJT1NfQ09OVFJPTCwKPiArCQkJICAgICAgUExM X0xPT1BfRElWX0VOIHwgUExMX0lOUFVUX0RJVl9FTik7Cj4gKwo+ICsJZHdfbWlwaV9kc2lfcGh5 X3dyaXRlKGRzaSwgQUZFX0JJQVNfQkFOREdBUF9BTkFMT0dfUFJPR1JBTU1BQklMSVRZLAo+ICsJ CQkgICAgICBMT1dfUFJPR1JBTV9FTiB8IEJJQVNFWFRSX1NFTChCSUFTRVhUUl8xMjdfNykpOwo+ ICsJZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgQUZFX0JJQVNfQkFOREdBUF9BTkFMT0dfUFJP R1JBTU1BQklMSVRZLAo+ICsJCQkgICAgICBISUdIX1BST0dSQU1fRU4gfCBCQU5ER0FQX1NFTChC QU5ER0FQXzk2XzEwKSk7Cj4gKwo+ICsJZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgQkFOREdB UF9BTkRfQklBU19DT05UUk9MLAo+ICsJCQkgICAgICBQT1dFUl9DT05UUk9MIHwgSU5URVJOQUxf UkVHX0NVUlJFTlQgfAo+ICsJCQkgICAgICBCSUFTX0JMT0NLX09OIHwgQkFOREdBUF9PTik7Cj4g Kwo+ICsJZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgVEVSTUlOQVRJT05fUkVTSVNURVJfQ09O VFJPTCwKPiArCQkJICAgICAgVEVSX1JFU0lTVE9SX0xPVyB8IFRFUl9DQUxfRE9ORSB8Cj4gKwkJ CSAgICAgIFNFVFJEX01BWCB8IFRFUl9SRVNJU1RPUlNfT04pOwo+ICsJZHdfbWlwaV9kc2lfcGh5 X3dyaXRlKGRzaSwgVEVSTUlOQVRJT05fUkVTSVNURVJfQ09OVFJPTCwKPiArCQkJICAgICAgVEVS X1JFU0lTVE9SX0hJR0ggfCBMRVZFTF9TSElGVEVSU19PTiB8Cj4gKwkJCSAgICAgIFNFVFJEX01B WCB8IFBPV0VSX01BTkFHRSB8Cj4gKwkJCSAgICAgIFRFUl9SRVNJU1RPUlNfT04pOwo+ICsKPiAr CWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIEhTX1RYX0NMT0NLX0xBTkVfUkVRVUVTVF9TVEFU RV9USU1FX0NPTlRST0wsCj4gKwkJCSAgICAgIFRMUF9QUk9HUkFNX0VOIHwgbnMyYmMoZHNpLCA1 MDApKTsKPiArCWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIEhTX1RYX0NMT0NLX0xBTkVfUFJF UEFSRV9TVEFURV9USU1FX0NPTlRST0wsCj4gKwkJCSAgICAgIFRIU19QUkVfUFJPR1JBTV9FTiB8 IG5zMnVpKGRzaSwgNDApKTsKPiArCWR3X21pcGlfZHNpX3BoeV93cml0ZShkc2ksIEhTX1RYX0NM T0NLX0xBTkVfSFNfWkVST19TVEFURV9USU1FX0NPTlRST0wsCj4gKwkJCSAgICAgIFRIU19aRVJP X1BST0dSQU1fRU4gfCBuczJiYyhkc2ksIDMwMCkpOwo+ICsJZHdfbWlwaV9kc2lfcGh5X3dyaXRl KGRzaSwgSFNfVFhfQ0xPQ0tfTEFORV9UUkFJTF9TVEFURV9USU1FX0NPTlRST0wsCj4gKwkJCSAg ICAgIFRIU19QUkVfUFJPR1JBTV9FTiB8IG5zMnVpKGRzaSwgMTAwKSk7Cj4gKwlkd19taXBpX2Rz aV9waHlfd3JpdGUoZHNpLCBIU19UWF9DTE9DS19MQU5FX0VYSVRfU1RBVEVfVElNRV9DT05UUk9M LAo+ICsJCQkgICAgICBCSVQoNSkgfCBuczJiYyhkc2ksIDEwMCkpOwo+ICsJZHdfbWlwaV9kc2lf cGh5X3dyaXRlKGRzaSwgSFNfVFhfQ0xPQ0tfTEFORV9QT1NUX1RJTUVfQ09OVFJPTCwKPiArCQkJ ICAgICAgQklUKDUpIHwgKG5zMmJjKGRzaSwgNjApICsgNykpOwo+ICsKPiArCWR3X21pcGlfZHNp X3BoeV93cml0ZShkc2ksIEhTX1RYX0RBVEFfTEFORV9SRVFVRVNUX1NUQVRFX1RJTUVfQ09OVFJP TCwKPiArCQkJICAgICAgVExQX1BST0dSQU1fRU4gfCBuczJiYyhkc2ksIDUwMCkpOwo+ICsJZHdf bWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgSFNfVFhfREFUQV9MQU5FX1BSRVBBUkVfU1RBVEVfVElN RV9DT05UUk9MLAo+ICAgCQkJICAgICAgVEhTX1BSRV9QUk9HUkFNX0VOIHwgKG5zMnVpKGRzaSwg NTApICsgNSkpOwo+IC0JZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgMHg3MiwKPiArCWR3X21p cGlfZHNpX3BoeV93cml0ZShkc2ksIEhTX1RYX0RBVEFfTEFORV9IU19aRVJPX1NUQVRFX1RJTUVf Q09OVFJPTCwKPiAgIAkJCSAgICAgIFRIU19aRVJPX1BST0dSQU1fRU4gfCAobnMyYmMoZHNpLCAx NDApICsgMikpOwo+IC0JZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgMHg3MywKPiArCWR3X21p cGlfZHNpX3BoeV93cml0ZShkc2ksIEhTX1RYX0RBVEFfTEFORV9UUkFJTF9TVEFURV9USU1FX0NP TlRST0wsCj4gICAJCQkgICAgICBUSFNfUFJFX1BST0dSQU1fRU4gfCAobnMydWkoZHNpLCA2MCkg KyA4KSk7Cj4gLQlkd19taXBpX2RzaV9waHlfd3JpdGUoZHNpLCAweDc0LCBCSVQoNSkgfCBuczJi Yyhkc2ksIDEwMCkpOwo+ICsJZHdfbWlwaV9kc2lfcGh5X3dyaXRlKGRzaSwgSFNfVFhfREFUQV9M QU5FX0VYSVRfU1RBVEVfVElNRV9DT05UUk9MLAo+ICsJCQkgICAgICBCSVQoNSkgfCBuczJiYyhk c2ksIDEwMCkpOwo+ICAgCj4gICAJZHNpX3dyaXRlKGRzaSwgRFNJX1BIWV9SU1RaLCBQSFlfRU5G T1JDRVBMTCB8IFBIWV9FTkFCTEVDTEsgfAo+ICAgCQkJCSAgICAgUEhZX1VOUlNUWiB8IFBIWV9V TlNIVVRET1dOWik7Cj4gQEAgLTUyMSwxMSArNTY5LDE2IEBAIHN0YXRpYyBpbnQgZHdfbWlwaV9k c2lfcGh5X2luaXQoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCj4gICBzdGF0aWMgaW50IGR3X21p cGlfZHNpX2dldF9sYW5lX2JwcyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwKPiAgIAkJCQkgICAg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gICB7Cj4gLQl1bnNpZ25lZCBpbnQgaSwg cHJlOwo+IC0JdW5zaWduZWQgbG9uZyBtcGNsaywgcGxscmVmLCB0bXA7Cj4gLQl1bnNpZ25lZCBp bnQgbSA9IDEsIG4gPSAxLCB0YXJnZXRfbWJwcyA9IDEwMDA7Cj4gKwl1bnNpZ25lZCBsb25nIG1w Y2xrLCB0bXA7Cj4gKwl1bnNpZ25lZCBpbnQgdGFyZ2V0X21icHMgPSAxMDAwOwo+ICAgCXVuc2ln bmVkIGludCBtYXhfbWJwcyA9IGRwdGRpbl9tYXBbQVJSQVlfU0laRShkcHRkaW5fbWFwKSAtIDFd Lm1heF9tYnBzOwo+ICAgCWludCBicHA7Cj4gKwl1bnNpZ25lZCBsb25nIGJlc3RfZnJlcSA9IDA7 Cj4gKwl1bnNpZ25lZCBsb25nIGZ2Y29fbWluLCBmdmNvX21heCwgZmluLCBmb3V0Owo+ICsJdW5z aWduZWQgaW50IG1pbl9wcmVkaXYsIG1heF9wcmVkaXY7Cj4gKwl1bnNpZ25lZCBpbnQgX3ByZWRp diwgdW5pbml0aWFsaXplZF92YXIoYmVzdF9wcmVkaXYpOwo+ICsJdW5zaWduZWQgbG9uZyBfZmJk aXYsIHVuaW5pdGlhbGl6ZWRfdmFyKGJlc3RfZmJkaXYpOwo+ICsJdW5zaWduZWQgbG9uZyBtaW5f ZGVsdGEgPSBVTE9OR19NQVg7Cj4gICAKPiAgIAlicHAgPSBtaXBpX2RzaV9waXhlbF9mb3JtYXRf dG9fYnBwKGRzaS0+Zm9ybWF0KTsKPiAgIAlpZiAoYnBwIDwgMCkgewo+IEBAIC01NDQsMzQgKzU5 Nyw1NCBAQCBzdGF0aWMgaW50IGR3X21pcGlfZHNpX2dldF9sYW5lX2JwcyhzdHJ1Y3QgZHdfbWlw aV9kc2kgKmRzaSwKPiAgIAkJCWRldl9lcnIoZHNpLT5kZXYsICJEUEhZIGNsb2NrIGZyZXF1ZW5j eSBpcyBvdXQgb2YgcmFuZ2VcbiIpOwo+ICAgCX0KPiAgIAo+IC0JcGxscmVmID0gRElWX1JPVU5E X1VQKGNsa19nZXRfcmF0ZShkc2ktPnBsbHJlZl9jbGspLCBVU0VDX1BFUl9TRUMpOwo+IC0JdG1w ID0gcGxscmVmOwo+IC0KPiAtCS8qCj4gLQkgKiBUaGUgbGltaXRzIG9uIHRoZSBQTEwgZGl2aXNv ciBhcmU6Cj4gLQkgKgo+IC0JICoJNU1IeiA8PSAocGxscmVmIC8gbikgPD0gNDBNSHoKPiAtCSAq Cj4gLQkgKiB3ZSB3YWxrIG92ZXIgdGhlc2UgdmFsdWVzIGluIGRlc2NyZWFzaW5nIG9yZGVyIHNv IHRoYXQgaWYgd2UgaGl0Cj4gLQkgKiBhbiBleGFjdCBtYXRjaCBmb3IgdGFyZ2V0X21icHMgaXQg aXMgbW9yZSBsaWtlbHkgdGhhdCAibSIgd2lsbCBiZQo+IC0JICogZXZlbi4KPiAtCSAqCj4gLQkg KiBUT0RPOiBlbnN1cmUgdGhhdCAibSIgaXMgZXZlbiBhZnRlciB0aGlzIGxvb3AuCj4gLQkgKi8K PiAtCWZvciAoaSA9IHBsbHJlZiAvIDU7IGkgPiAocGxscmVmIC8gNDApOyBpLS0pIHsKPiAtCQlw cmUgPSBwbGxyZWYgLyBpOwo+IC0JCWlmICgodG1wID4gKHRhcmdldF9tYnBzICUgcHJlKSkgJiYg KHRhcmdldF9tYnBzIC8gcHJlIDwgNTEyKSkgewo+IC0JCQl0bXAgPSB0YXJnZXRfbWJwcyAlIHBy ZTsKPiAtCQkJbiA9IGk7Cj4gLQkJCW0gPSB0YXJnZXRfbWJwcyAvIHByZTsKPiArCWZpbiA9IGNs a19nZXRfcmF0ZShkc2ktPnBsbHJlZl9jbGspOwo+ICsJZm91dCA9IHRhcmdldF9tYnBzICogVVNF Q19QRVJfU0VDOwo+ICsKPiArCS8qIGNvbnN0cmFpbnQ6IDVNaHogPD0gRnJlZiAvIE4gPD0gNDBN SHogKi8KPiArCW1pbl9wcmVkaXYgPSBESVZfUk9VTkRfVVAoZmluLCA0MCAqIFVTRUNfUEVSX1NF Qyk7Cj4gKwltYXhfcHJlZGl2ID0gZmluIC8gKDUgKiBVU0VDX1BFUl9TRUMpOwo+ICsKPiArCS8q IGNvbnN0cmFpbnQ6IDgwTUh6IDw9IEZ2Y28gPD0gMTUwME1oeiAqLwo+ICsJZnZjb19taW4gPSA4 MCAqIFVTRUNfUEVSX1NFQzsKPiArCWZ2Y29fbWF4ID0gMTUwMCAqIFVTRUNfUEVSX1NFQzsKPiAr Cj4gKwlmb3IgKF9wcmVkaXYgPSBtaW5fcHJlZGl2OyBfcHJlZGl2IDw9IG1heF9wcmVkaXY7IF9w cmVkaXYrKykgewo+ICsJCXU2NCB0bXA7Cj4gKwkJdTMyIGRlbHRhOwo+ICsJCS8qIEZ2Y28gPSBG cmVmICogTSAvIE4gKi8KPiArCQl0bXAgPSAodTY0KWZvdXQgKiBfcHJlZGl2Owo+ICsJCWRvX2Rp dih0bXAsIGZpbik7Cj4gKwkJX2ZiZGl2ID0gdG1wOwo+ICsJCS8qCj4gKwkJICogRHVlIHRvIHRo ZSB1c2Ugb2YgYSAiYnkgMiBwcmUtc2NhbGVyLCIgdGhlIHJhbmdlIG9mIHRoZQo+ICsJCSAqIGZl ZWRiYWNrIG11bHRpcGxpY2F0aW9uIHZhbHVlIE0gaXMgbGltaXRlZCB0byBldmVuIGRpdmlzaW9u Cj4gKwkJICogbnVtYmVycywgYW5kIG0gbXVzdCBiZSBncmVhdGVyIHRoYW4gMTIsIGxlc3MgdGhh biAxMDAwLgo+ICsJCSAqLwo+ICsJCWlmIChfZmJkaXYgPD0gMTIgfHwgX2ZiZGl2ID49IDEwMDAp Cj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlfZmJkaXYgKz0gX2ZiZGl2ICUgMjsKPiArCj4gKwkJ dG1wID0gKHU2NClfZmJkaXYgKiBmaW47Cj4gKwkJZG9fZGl2KHRtcCwgX3ByZWRpdik7Cj4gKwkJ aWYgKHRtcCA8IGZ2Y29fbWluIHx8IHRtcCA+IGZ2Y29fbWF4KQo+ICsJCQljb250aW51ZTsKPiAr Cj4gKwkJZGVsdGEgPSBhYnMoZm91dCAtIHRtcCk7Cj4gKwkJaWYgKGRlbHRhIDwgbWluX2RlbHRh KSB7Cj4gKwkJCWJlc3RfcHJlZGl2ID0gX3ByZWRpdjsKPiArCQkJYmVzdF9mYmRpdiA9IF9mYmRp djsKPiArCQkJbWluX2RlbHRhID0gZGVsdGE7Cj4gKwkJCWJlc3RfZnJlcSA9IHRtcDsKPiAgIAkJ fQo+IC0JCWlmICh0bXAgPT0gMCkKPiAtCQkJYnJlYWs7Cj4gICAJfQo+ICAgCj4gLQlkc2ktPmxh bmVfbWJwcyA9IHBsbHJlZiAvIG4gKiBtOwo+IC0JZHNpLT5pbnB1dF9kaXYgPSBuOwo+IC0JZHNp LT5mZWVkYmFja19kaXYgPSBtOwo+ICsJaWYgKGJlc3RfZnJlcSkgewo+ICsJCWRzaS0+bGFuZV9t YnBzID0gRElWX1JPVU5EX1VQKGJlc3RfZnJlcSwgVVNFQ19QRVJfU0VDKTsKPiArCQlkc2ktPmlu cHV0X2RpdiA9IGJlc3RfcHJlZGl2Owo+ICsJCWRzaS0+ZmVlZGJhY2tfZGl2ID0gYmVzdF9mYmRp djsKPiArCX0gZWxzZQo+ICsJCWRldl9lcnIoZHNpLT5kZXYsICJDYW4gbm90IGZpbmQgYmVzdF9m cmVxIGZvciBEUEhZXG4iKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+ICAgfQo+IAoKLS0gClF1YWxj b21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZv cnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=