From mboxrd@z Thu Jan 1 00:00:00 1970 From: CK Hu Subject: Re: [PATCH v3 09/12] drm/mediatek: add hdmi driver for MT2701 and MT7623 Date: Fri, 21 Sep 2018 18:10:31 +0800 Message-ID: <1537524631.20660.13.camel@mtksdaap41> References: <20180921032822.30771-1-bibby.hsieh@mediatek.com> <20180921032822.30771-10-bibby.hsieh@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180921032822.30771-10-bibby.hsieh@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Bibby Hsieh Cc: linux-kernel@vger.kernel.org, Sascha Hauer , chunhui dai , David Airlie , Daniel Vetter , Cawa Cheng , dri-devel@lists.freedesktop.org, Mao Huang , Thierry Reding , linux-mediatek@lists.infradead.org, Matthias Brugger , Yingjoe Chen , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org SGksIEJpYmJ5OgoKT24gRnJpLCAyMDE4LTA5LTIxIGF0IDExOjI4ICswODAwLCBCaWJieSBIc2ll aCB3cm90ZToKPiBGcm9tOiBjaHVuaHVpIGRhaSA8Y2h1bmh1aS5kYWlAbWVkaWF0ZWsuY29tPgo+ IAo+IFRoaXMgcGF0Y2ggYWRkcyBoZG1pIGRpcnZlciBzdXBwb3QgZm9yIGJvdGggTVQyNzAxIGFu ZCBNVDc2MjMuCj4gQW5kIGFsc28gc3VwcG9ydCBvdGhlciAoZXhpc3Rpbmcgb3IgZnV0dXJlKSBj aGlwcyB0aGF0IHVzZQo+IHRoZSBzYW1lIGJpbmRpbmcgYW5kIGRyaXZlci4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBjaHVuaHVpIGRhaSA8Y2h1bmh1aS5kYWlAbWVkaWF0ZWsuY29tPgo+IC0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCj4g IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaS5jICAgICAgICAgICAgfCAgIDkgKy0K PiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jICAgICAgICB8ICAgMyAr Cj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9waHkuaCAgICAgICAgfCAgIDIg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210MjcwMV9oZG1pX3BoeS5jIHwgMjM0 ICsrKysrKysrKysrKysrKysrKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCAyNDggaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfbXQyNzAxX2hkbWlfcGh5LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L01ha2VmaWxlCj4gaW5kZXggNjFjZjBkMmFiMjhhLi44MmFlNDljNjQyMjEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL01ha2VmaWxlCj4gQEAgLTE5LDcgKzE5LDggQEAgb2JqLSQoQ09ORklHX0RS TV9NRURJQVRFSykgKz0gbWVkaWF0ZWstZHJtLm8KPiAgbWVkaWF0ZWstZHJtLWhkbWktb2JqcyA6 PSBtdGtfY2VjLm8gXAo+ICAJCQkgIG10a19oZG1pLm8gXAo+ICAJCQkgIG10a19oZG1pX2RkYy5v IFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBtdGtfbXQyNzAxX2hkbWlfcGh5Lm8gXAo+ ICAJCQkgIG10a19tdDgxNzNfaGRtaV9waHkubyBcCj4gIAkJCSAgbXRrX2hkbWlfcGh5Lm8KPiAg Cj4gLW9iai0kKENPTkZJR19EUk1fTUVESUFURUtfSERNSSkgKz0gbWVkaWF0ZWstZHJtLWhkbWku bwo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+ICtvYmotJChDT05GSUdfRFJNX01FRElB VEVLX0hETUkpICs9IG1lZGlhdGVrLWRybS1oZG1pLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2hkbWkuYwo+IGluZGV4IGQ2MmU2ODVjZWM3My4uMTFlMzY0NGRhNzlhIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19oZG1pLmMKPiBAQCAtMjQxLDggKzI0MSwxMyBAQCBzdGF0aWMgdm9p ZCBtdGtfaGRtaV9od19tYWtlX3JlZ193cml0YWJsZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGJv b2wgZW5hYmxlKQo+ICAJICogVGhlIEFSTSB0cnVzdGVkIGZpcm13YXJlIHByb3ZpZGVzIGFuIEFQ SSBmb3IgdGhlIEhETUkgZHJpdmVyIHRvIHNldAo+ICAJICogdGhpcyBjb250cm9sIGJpdCB0byBl bmFibGUgSERNSSBvdXRwdXQgaW4gc3VwZXJ2aXNvciBtb2RlLgo+ICAJICovCj4gLQlhcm1fc21j Y2Nfc21jKE1US19TSVBfU0VUX0FVVEhPUklaRURfU0VDVVJFX1JFRywgMHgxNDAwMDkwNCwgMHg4 MDAwMDAwMCwKPiAtCQkgICAgICAwLCAwLCAwLCAwLCAwLCAmcmVzKTsKPiArCWlmIChoZG1pX3Bo eS0+Y29uZiAmJiBoZG1pX3BoeS0+Y29uZi0+dHpfZGlzYWJsZWQpCj4gKwkJcmVnbWFwX3VwZGF0 ZV9iaXRzKGhkbWktPnN5c19yZWdtYXAsCj4gKwkJCQkgICBoZG1pLT5zeXNfb2Zmc2V0ICsgSERN SV9TWVNfQ0ZHMjAsCj4gKwkJCQkgICAweDgwMDA4MDA1LCBlbmFibGUgPyAweDgwMDAwMDA1IDog MHg4MDAwKTsKPiArCWVsc2UKPiArCQlhcm1fc21jY2Nfc21jKE1US19TSVBfU0VUX0FVVEhPUkla RURfU0VDVVJFX1JFRywgMHgxNDAwMDkwNCwKPiArCQkJICAgICAgMHg4MDAwMDAwMCwgMCwgMCwg MCwgMCwgMCwgJnJlcyk7Cj4gIAo+ICAJcmVnbWFwX3VwZGF0ZV9iaXRzKGhkbWktPnN5c19yZWdt YXAsIGhkbWktPnN5c19vZmZzZXQgKyBIRE1JX1NZU19DRkcyMCwKPiAgCQkJICAgSERNSV9QQ0xL X0ZSRUVfUlVOLCBlbmFibGUgPyBIRE1JX1BDTEtfRlJFRV9SVU4gOiAwKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jCj4gaW5kZXggZDJkYzUwZGIxZmViLi41MmQzMTRk ZWFjZGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3Bo eS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jCj4gQEAg LTE5Miw2ICsxOTIsOSBAQCBzdGF0aWMgaW50IG10a19oZG1pX3BoeV9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBtdGtfaGRtaV9waHlfbWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAibWVk aWF0ZWssbXQyNzAxLWhkbWktcGh5IiwKPiArCSAgLmRhdGEgPSAmbXRrX2hkbWlfcGh5XzI3MDFf Y29uZiwKPiArCX0sCj4gIAl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1oZG1pLXBo eSIsCj4gIAkgIC5kYXRhID0gJm10a19oZG1pX3BoeV84MTczX2NvbmYsCj4gIAl9LAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmggYi9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmgKPiBpbmRleCBlMzQ2ZmUzMTk2MjEuLmE2 NTc3YzhmZGY4MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hk bWlfcGh5LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmgK PiBAQCAtMjAsNiArMjAsNyBAQAo+ICBzdHJ1Y3QgbXRrX2hkbWlfcGh5Owo+ICAKPiAgc3RydWN0 IG10a19oZG1pX3BoeV9jb25mIHsKPiArCWJvb2wgdHpfZGlzYWJsZWQ7Cj4gIAljb25zdCBzdHJ1 Y3QgY2xrX29wcyAqaGRtaV9waHlfY2xrX29wczsKPiAgCXZvaWQgKCpoZG1pX3BoeV9lbmFibGVf dG1kcykoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkpOwo+ICAJdm9pZCAoKmhkbWlfcGh5 X2Rpc2FibGVfdG1kcykoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkpOwo+IEBAIC01MCw1 ICs1MSw2IEBAIHN0cnVjdCBtdGtfaGRtaV9waHkgKnRvX210a19oZG1pX3BoeShzdHJ1Y3QgY2xr X2h3ICpodyk7Cj4gIAo+ICBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfaGRtaV9w aHlfZHJpdmVyOwo+ICBleHRlcm4gc3RydWN0IG10a19oZG1pX3BoeV9jb25mIG10a19oZG1pX3Bo eV84MTczX2NvbmY7Cj4gK2V4dGVybiBzdHJ1Y3QgbXRrX2hkbWlfcGh5X2NvbmYgbXRrX2hkbWlf cGh5XzI3MDFfY29uZjsKPiAgCj4gICNlbmRpZiAvKiBfTVRLX0hETUlfUEhZX0ggKi8KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDI3MDFfaGRtaV9waHkuYyBi L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQyNzAxX2hkbWlfcGh5LmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNDFmNWRjYzI0YzRlCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQyNzAxX2hkbWlf cGh5LmMKPiBAQCAtMCwwICsxLDIzNCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTggTWVkaWFUZWsgSW5jLgo+ICsg KiBBdXRob3I6IENodW5odWkgRGFpIDxjaHVuaHVpLmRhaUBtZWRpYXRlay5jb20+Cj4gKyAqLwo+ ICsKPiArI2luY2x1ZGUgIm10a19oZG1pX3BoeS5oIgo+ICsKPiArI2RlZmluZSBIRE1JX0NPTjAJ MHgwMAo+ICsjZGVmaW5lIFJHX0hETUlUWF9EUlZfSUJJQVMJCTAKPiArI2RlZmluZSBSR19IRE1J VFhfRFJWX0lCSUFTX01BU0sJKDB4M2YgPDwgMCkKPiArI2RlZmluZSBSR19IRE1JVFhfRU5fU0VS CQkxMgo+ICsjZGVmaW5lIFJHX0hETUlUWF9FTl9TRVJfTUFTSwkJKDB4MGYgPDwgMTIpCj4gKyNk ZWZpbmUgUkdfSERNSVRYX0VOX1NMRE8JCTE2Cj4gKyNkZWZpbmUgUkdfSERNSVRYX0VOX1NMRE9f TUFTSwkJKDB4MGYgPDwgMTYpCj4gKyNkZWZpbmUgUkdfSERNSVRYX0VOX1BSRUQJCTIwCj4gKyNk ZWZpbmUgUkdfSERNSVRYX0VOX1BSRURfTUFTSwkJKDB4MGYgPDwgMjApCj4gKyNkZWZpbmUgUkdf SERNSVRYX0VOX0lNUAkJMjQKPiArI2RlZmluZSBSR19IRE1JVFhfRU5fSU1QX01BU0sJCSgweDBm IDw8IDI0KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9FTl9EUlYJCTI4Cj4gKyNkZWZpbmUgUkdfSERN SVRYX0VOX0RSVl9NQVNLCQkoMHgwZiA8PCAyOCkKPiArCj4gKyNkZWZpbmUgSERNSV9DT04xCTB4 MDQKPiArI2RlZmluZSBSR19IRE1JVFhfUFJFRF9JQklBUwkJMTgKPiArI2RlZmluZSBSR19IRE1J VFhfUFJFRF9JQklBU19NQVNLCSgweDBmIDw8IDE4KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9QUkVE X0lNUAkJKDB4MDEgPDwgMjIpCj4gKyNkZWZpbmUgUkdfSERNSVRYX0RSVl9JTVAJCTI2Cj4gKyNk ZWZpbmUgUkdfSERNSVRYX0RSVl9JTVBfTUFTSwkJKDB4M2YgPDwgMjYpCj4gKwo+ICsjZGVmaW5l IEhETUlfQ09OMgkweDA4Cj4gKyNkZWZpbmUgUkdfSERNSVRYX0VOX1RYX0NLTERPCQkoMHgwMSA8 PCAwKQo+ICsjZGVmaW5lIFJHX0hETUlUWF9FTl9UWF9QT1NESVYJCSgweDAxIDw8IDEpCj4gKyNk ZWZpbmUgUkdfSERNSVRYX1RYX1BPU0RJVgkJMwo+ICsjZGVmaW5lIFJHX0hETUlUWF9UWF9QT1NE SVZfTUFTSwkoMHgwMyA8PCAzKQo+ICsjZGVmaW5lIFJHX0hETUlUWF9FTl9NQklBUwkJKDB4MDEg PDwgNikKPiArI2RlZmluZSBSR19IRE1JVFhfTUJJQVNfTFBGX0VOCQkoMHgwMSA8PCA3KQo+ICsK PiArI2RlZmluZSBIRE1JX0NPTjQJMHgxMAo+ICsjZGVmaW5lIFJHX0hETUlUWF9SRVNFUlZFX01B U0sJCSgweGZmZmZmZmZmIDw8IDApCj4gKwo+ICsjZGVmaW5lIEhETUlfQ09ONgkweDE4Cj4gKyNk ZWZpbmUgUkdfSFRQTExfQlIJCQkwCj4gKyNkZWZpbmUgUkdfSFRQTExfQlJfTUFTSwkJKDB4MDMg PDwgMCkKPiArI2RlZmluZSBSR19IVFBMTF9CQwkJCTIKPiArI2RlZmluZSBSR19IVFBMTF9CQ19N QVNLCQkoMHgwMyA8PCAyKQo+ICsjZGVmaW5lIFJHX0hUUExMX0JQCQkJNAo+ICsjZGVmaW5lIFJH X0hUUExMX0JQX01BU0sJCSgweDBmIDw8IDQpCj4gKyNkZWZpbmUgUkdfSFRQTExfSVIJCQk4Cj4g KyNkZWZpbmUgUkdfSFRQTExfSVJfTUFTSwkJKDB4MGYgPDwgOCkKPiArI2RlZmluZSBSR19IVFBM TF9JQwkJCTEyCj4gKyNkZWZpbmUgUkdfSFRQTExfSUNfTUFTSwkJKDB4MGYgPDwgMTIpCj4gKyNk ZWZpbmUgUkdfSFRQTExfUE9TRElWCQkJMTYKPiArI2RlZmluZSBSR19IVFBMTF9QT1NESVZfTUFT SwkJKDB4MDMgPDwgMTYpCj4gKyNkZWZpbmUgUkdfSFRQTExfUFJFRElWCQkJMTgKPiArI2RlZmlu ZSBSR19IVFBMTF9QUkVESVZfTUFTSwkJKDB4MDMgPDwgMTgpCj4gKyNkZWZpbmUgUkdfSFRQTExf RkJLU0VMCQkJMjAKPiArI2RlZmluZSBSR19IVFBMTF9GQktTRUxfTUFTSwkJKDB4MDMgPDwgMjAp Cj4gKyNkZWZpbmUgUkdfSFRQTExfUkxIX0VOCQkJKDB4MDEgPDwgMjIpCj4gKyNkZWZpbmUgUkdf SFRQTExfRkJLRElWCQkJMjQKPiArI2RlZmluZSBSR19IVFBMTF9GQktESVZfTUFTSwkJKDB4N2Yg PDwgMjQpCj4gKyNkZWZpbmUgUkdfSFRQTExfRU4JCQkoMHgwMSA8PCAzMSkKPiArCj4gKyNkZWZp bmUgSERNSV9DT043CTB4MWMKPiArI2RlZmluZSBSR19IVFBMTF9BVVRPS19FTgkJKDB4MDEgPDwg MjMpCj4gKyNkZWZpbmUgUkdfSFRQTExfRElWRU4JCQkyOAo+ICsjZGVmaW5lIFJHX0hUUExMX0RJ VkVOX01BU0sJCSgweDA3IDw8IDI4KQo+ICsKPiArc3RhdGljIGludCBtdGtfaGRtaV9wbGxfcHJl cGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKPiArewo+ICsJc3RydWN0IG10a19oZG1pX3BoeSAqaGRt aV9waHkgPSB0b19tdGtfaGRtaV9waHkoaHcpOwo+ICsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0 cyhoZG1pX3BoeSwgSERNSV9DT043LCBSR19IVFBMTF9BVVRPS19FTik7Cj4gKwltdGtfaGRtaV9w aHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9STEhfRU4pOwo+ICsJ bXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1BPU0RJ Vl9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBS R19IRE1JVFhfRU5fTUJJQVMpOwo+ICsJdXNsZWVwX3JhbmdlKDgwLCAxMDApOwo+ICsJbXRrX2hk bWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX0VOKTsKPiArCW10 a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhf Q0tMRE8pOwo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJH X0hETUlUWF9FTl9TTERPX01BU0spOwo+ICsJdXNsZWVwX3JhbmdlKDgwLCAxMDApOwo+ICsJbXRr X2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9NQklBU19M UEZfRU4pOwo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJH X0hETUlUWF9FTl9UWF9QT1NESVYpOwo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5 LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9TRVJfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfc2V0 X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX1BSRURfTUFTSyk7Cj4gKwlt dGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX0RS Vl9NQVNLKTsKPiArCXVzbGVlcF9yYW5nZSg4MCwgMTAwKTsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBtdGtfaGRtaV9wbGxfdW5wcmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3 KQo+ICt7Cj4gKwlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210a19oZG1pX3Bo eShodyk7Cj4gKwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09O MCwgUkdfSERNSVRYX0VOX0RSVl9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhk bWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9QUkVEX01BU0spOwo+ICsJbXRrX2hkbWlf cGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX1NFUl9NQVNL KTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hE TUlUWF9FTl9UWF9QT1NESVYpOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHks IEhETUlfQ09OMiwgUkdfSERNSVRYX01CSUFTX0xQRl9FTik7Cj4gKwl1c2xlZXBfcmFuZ2UoODAs IDEwMCk7Cj4gKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBS R19IRE1JVFhfRU5fU0xET19NQVNLKTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlf cGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9FTl9UWF9DS0xETyk7Cj4gKwltdGtfaGRtaV9waHlf Y2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9FTik7Cj4gKwl1c2xlZXBf cmFuZ2UoODAsIDEwMCk7Cj4gKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERN SV9DT04yLCBSR19IRE1JVFhfRU5fTUJJQVMpOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMo aGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfUE9TRElWX01BU0spOwo+ICsJbXRrX2hkbWlf cGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfUkxIX0VOKTsKPiAr CW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjcsIFJHX0hUUExMX0FV VE9LX0VOKTsKPiArCXVzbGVlcF9yYW5nZSg4MCwgMTAwKTsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBtdGtfaGRtaV9wbGxfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcg cmF0ZSwKPiArCQkJCSB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQo+ICt7Cj4gKwlzdHJ1Y3Qg bXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210a19oZG1pX3BoeShodyk7Cj4gKwl1MzIgcG9z X2RpdjsKPiArCj4gKwlpZiAocmF0ZSA8PSA2NDAwMDAwMCkKPiArCQlwb3NfZGl2ID0gMzsKPiAr CWVsc2UgaWYgKHJhdGUgPD0gMTI4MDAwMDApCj4gKwkJcG9zX2RpdiA9IDE7Cj4gKwllbHNlCj4g KwkJcG9zX2RpdiA9IDE7Cj4gKwo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBI RE1JX0NPTjYsIFJHX0hUUExMX1BSRURJVl9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0 cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9QT1NESVZfTUFTSyk7Cj4gKwltdGtfaGRt aV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT042LCAoMHgxIDw8IFJHX0hUUExMX0lDKSwKPiAr CQkJICBSR19IVFBMTF9JQ19NQVNLKTsKPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBI RE1JX0NPTjYsICgweDEgPDwgUkdfSFRQTExfSVIpLAo+ICsJCQkgIFJHX0hUUExMX0lSX01BU0sp Owo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09OMiwgKHBvc19kaXYgPDwg UkdfSERNSVRYX1RYX1BPU0RJViksCj4gKwkJCSAgUkdfSERNSVRYX1RYX1BPU0RJVl9NQVNLKTsK PiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjYsICgxIDw8IFJHX0hUUExM X0ZCS1NFTCksCj4gKwkJCSAgUkdfSFRQTExfRkJLU0VMX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5 X21hc2soaGRtaV9waHksIEhETUlfQ09ONiwgKDE5IDw8IFJHX0hUUExMX0ZCS0RJViksCj4gKwkJ CSAgUkdfSFRQTExfRkJLRElWX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHks IEhETUlfQ09ONywgKDB4MiA8PCBSR19IVFBMTF9ESVZFTiksCj4gKwkJCSAgUkdfSFRQTExfRElW RU5fTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT042LCAoMHhj IDw8IFJHX0hUUExMX0JQKSwKPiArCQkJICBSR19IVFBMTF9CUF9NQVNLKTsKPiArCW10a19oZG1p X3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjYsICgweDIgPDwgUkdfSFRQTExfQkMpLAo+ICsJ CQkgIFJHX0hUUExMX0JDX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhE TUlfQ09ONiwgKDB4MSA8PCBSR19IVFBMTF9CUiksCj4gKwkJCSAgUkdfSFRQTExfQlJfTUFTSyk7 Cj4gKwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMSwgUkdf SERNSVRYX1BSRURfSU1QKTsKPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NP TjEsICgweDMgPDwgUkdfSERNSVRYX1BSRURfSUJJQVMpLAo+ICsJCQkgIFJHX0hETUlUWF9QUkVE X0lCSUFTX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlf Q09OMCwgUkdfSERNSVRYX0VOX0lNUF9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlf cGh5LCBIRE1JX0NPTjEsICgweDI4IDw8IFJHX0hETUlUWF9EUlZfSU1QKSwKPiArCQkJICBSR19I RE1JVFhfRFJWX0lNUF9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1J X0NPTjQsIDB4MjgsIFJHX0hETUlUWF9SRVNFUlZFX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X21h c2soaGRtaV9waHksIEhETUlfQ09OMCwgKDB4YSA8PCBSR19IRE1JVFhfRFJWX0lCSUFTKSwKPiAr CQkJICBSR19IRE1JVFhfRFJWX0lCSUFTX01BU0spOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBsb25nIG10a19oZG1pX3BsbF9yb3VuZF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1 bnNpZ25lZCBsb25nIHJhdGUsCj4gKwkJCQkgICAgdW5zaWduZWQgbG9uZyAqcGFyZW50X3JhdGUp Cj4gK3sKPiArCXN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5ID0gdG9fbXRrX2hkbWlfcGh5 KGh3KTsKPiArCj4gKwloZG1pX3BoeS0+cGxsX3JhdGUgPSByYXRlOwo+ICsJaWYgKHJhdGUgPD0g NzQyNTAwMDApCj4gKwkJKnBhcmVudF9yYXRlID0gcmF0ZTsKPiArCWVsc2UKPiArCQkqcGFyZW50 X3JhdGUgPSByYXRlIC8gMjsKPiArCj4gKwlyZXR1cm4gcmF0ZTsKPiArfQoKVGhpcyBmdW5jdGlv biBpcyBpZGVudGljYWwgdG8gdGhlIG9uZSBpbiBtdGtfbXQ4MTczX2hkbWlfcGh5LmMsIHNvIHRy eQp0byBtZXJnZSB0aGVzZSB0d28gaWRlbnRpY2FsIGZ1bmN0aW9uIGludG8gb25lLgoKPiArCj4g K3N0YXRpYyB1bnNpZ25lZCBsb25nIG10a19oZG1pX3BsbF9yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xr X2h3ICpodywKPiArCQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQo+ICt7Cj4g KwlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210a19oZG1pX3BoeShodyk7Cj4g Kwo+ICsJcmV0dXJuIGhkbWlfcGh5LT5wbGxfcmF0ZTsKPiArfQoKRGl0dG8uCgpSZWdhcmRzLApD SwoKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBtdGtfaGRtaV9waHlfcGxsX29w cyA9IHsKPiArCS5wcmVwYXJlID0gbXRrX2hkbWlfcGxsX3ByZXBhcmUsCj4gKwkudW5wcmVwYXJl ID0gbXRrX2hkbWlfcGxsX3VucHJlcGFyZSwKPiArCS5zZXRfcmF0ZSA9IG10a19oZG1pX3BsbF9z ZXRfcmF0ZSwKPiArCS5yb3VuZF9yYXRlID0gbXRrX2hkbWlfcGxsX3JvdW5kX3JhdGUsCj4gKwku cmVjYWxjX3JhdGUgPSBtdGtfaGRtaV9wbGxfcmVjYWxjX3JhdGUsCj4gK307Cj4gKwo+ICtzdGF0 aWMgdm9pZCBtdGtfaGRtaV9waHlfZW5hYmxlX3RtZHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRt aV9waHkpCj4gK3sKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT043 LCBSR19IVFBMTF9BVVRPS19FTik7Cj4gKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3Bo eSwgSERNSV9DT042LCBSR19IVFBMTF9STEhfRU4pOwo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRz KGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1BPU0RJVl9NQVNLKTsKPiArCW10a19oZG1p X3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fTUJJQVMpOwo+ ICsJdXNsZWVwX3JhbmdlKDgwLCAxMDApOwo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlf cGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX0VOKTsKPiArCW10a19oZG1pX3BoeV9zZXRfYml0cyho ZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhfQ0tMRE8pOwo+ICsJbXRrX2hkbWlf cGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9TTERPX01BU0sp Owo+ICsJdXNsZWVwX3JhbmdlKDgwLCAxMDApOwo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhk bWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9NQklBU19MUEZfRU4pOwo+ICsJbXRrX2hkbWlf cGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9FTl9UWF9QT1NESVYp Owo+ICsJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlU WF9FTl9TRVJfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlf Q09OMCwgUkdfSERNSVRYX0VOX1BSRURfTUFTSyk7Cj4gKwltdGtfaGRtaV9waHlfc2V0X2JpdHMo aGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX0RSVl9NQVNLKTsKPiArCXVzbGVlcF9y YW5nZSg4MCwgMTAwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2hkbWlfcGh5X2Rpc2Fi bGVfdG1kcyhzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSkKPiArewo+ICsJbXRrX2hkbWlf cGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX0RSVl9NQVNL KTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hE TUlUWF9FTl9QUkVEX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHks IEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX1NFUl9NQVNLKTsKPiArCW10a19oZG1pX3BoeV9jbGVh cl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9FTl9UWF9QT1NESVYpOwo+ICsJ bXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdfSERNSVRYX01C SUFTX0xQRl9FTik7Cj4gKwl1c2xlZXBfcmFuZ2UoODAsIDEwMCk7Cj4gKwltdGtfaGRtaV9waHlf Y2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfRU5fU0xET19NQVNLKTsK PiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlU WF9FTl9UWF9DS0xETyk7Cj4gKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERN SV9DT042LCBSR19IVFBMTF9FTik7Cj4gKwl1c2xlZXBfcmFuZ2UoODAsIDEwMCk7Cj4gKwltdGtf aGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fTUJJ QVMpOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdf SFRQTExfUE9TRElWX01BU0spOwo+ICsJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHks IEhETUlfQ09ONiwgUkdfSFRQTExfUkxIX0VOKTsKPiArCW10a19oZG1pX3BoeV9jbGVhcl9iaXRz KGhkbWlfcGh5LCBIRE1JX0NPTjcsIFJHX0hUUExMX0FVVE9LX0VOKTsKPiArCXVzbGVlcF9yYW5n ZSg4MCwgMTAwKTsKPiArfQo+ICsKPiArc3RydWN0IG10a19oZG1pX3BoeV9jb25mIG10a19oZG1p X3BoeV8yNzAxX2NvbmYgPSB7Cj4gKwkudHpfZGlzYWJsZWQgPSB0cnVlLAo+ICsJLmhkbWlfcGh5 X2Nsa19vcHMgPSAmbXRrX2hkbWlfcGh5X3BsbF9vcHMsCj4gKwkuaGRtaV9waHlfZW5hYmxlX3Rt ZHMgPSBtdGtfaGRtaV9waHlfZW5hYmxlX3RtZHMsCj4gKwkuaGRtaV9waHlfZGlzYWJsZV90bWRz ID0gbXRrX2hkbWlfcGh5X2Rpc2FibGVfdG1kcywKPiArfTsKPiArCj4gK01PRFVMRV9BVVRIT1Io IkNodW5odWkgRGFpIDxjaHVuaHVpLmRhaUBtZWRpYXRlay5jb20+Iik7Cj4gK01PRFVMRV9ERVND UklQVElPTigiTWVkaWFUZWsgSERNSSBQSFkgRHJpdmVyIik7Cj4gK01PRFVMRV9MSUNFTlNFKCJH UEwgdjIiKTsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK