From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bibby Hsieh Subject: [PATCH v5 09/11] drm/mediatek: add hdmi driver for MT2701 and MT7623 Date: Wed, 3 Oct 2018 11:41:49 +0800 Message-ID: <20181003034151.31452-10-bibby.hsieh@mediatek.com> References: <20181003034151.31452-1-bibby.hsieh@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181003034151.31452-1-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: David Airlie , Matthias Brugger , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org Cc: chunhui dai , linux-kernel@vger.kernel.org, Cawa Cheng , Mao Huang , Thierry Reding , Yingjoe Chen , Sascha Hauer , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org RnJvbTogY2h1bmh1aSBkYWkgPGNodW5odWkuZGFpQG1lZGlhdGVrLmNvbT4KClRoaXMgcGF0Y2gg YWRkcyBoZG1pIGRpcnZlciBzdXBwb3QgZm9yIGJvdGggTVQyNzAxIGFuZCBNVDc2MjMuCkFuZCBh bHNvIHN1cHBvcnQgb3RoZXIgKGV4aXN0aW5nIG9yIGZ1dHVyZSkgY2hpcHMgdGhhdCB1c2UKdGhl IHNhbWUgYmluZGluZyBhbmQgZHJpdmVyLgoKU2lnbmVkLW9mZi1ieTogY2h1bmh1aSBkYWkgPGNo dW5odWkuZGFpQG1lZGlhdGVrLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFr ZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2hkbWkuYyAgICAgICAgICAgIHwgICA5ICstCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2hkbWlfcGh5LmMgICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf aGRtaV9waHkuaCAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19t dDI3MDFfaGRtaV9waHkuYyB8IDIxMiArKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVz IGNoYW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQyNzAxX2hkbWlfcGh5LmMKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKaW5kZXggNjFjZjBkMmFiMjhhLi44MmFlNDljNjQyMjEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKQEAgLTE5LDcgKzE5LDggQEAgb2JqLSQoQ09O RklHX0RSTV9NRURJQVRFSykgKz0gbWVkaWF0ZWstZHJtLm8KIG1lZGlhdGVrLWRybS1oZG1pLW9i anMgOj0gbXRrX2NlYy5vIFwKIAkJCSAgbXRrX2hkbWkubyBcCiAJCQkgIG10a19oZG1pX2RkYy5v IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXRrX210MjcwMV9oZG1pX3BoeS5vIFwKIAkJ CSAgbXRrX210ODE3M19oZG1pX3BoeS5vIFwKIAkJCSAgbXRrX2hkbWlfcGh5Lm8KIAotb2JqLSQo Q09ORklHX0RSTV9NRURJQVRFS19IRE1JKSArPSBtZWRpYXRlay1kcm0taGRtaS5vClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQorb2JqLSQoQ09ORklHX0RSTV9NRURJQVRFS19IRE1JKSArPSBt ZWRpYXRlay1kcm0taGRtaS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaS5jCmluZGV4IGQ2 MmU2ODVjZWM3My4uMTFlMzY0NGRhNzlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWku YwpAQCAtMjQxLDggKzI0MSwxMyBAQCBzdGF0aWMgdm9pZCBtdGtfaGRtaV9od19tYWtlX3JlZ193 cml0YWJsZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGJvb2wgZW5hYmxlKQogCSAqIFRoZSBBUk0g dHJ1c3RlZCBmaXJtd2FyZSBwcm92aWRlcyBhbiBBUEkgZm9yIHRoZSBIRE1JIGRyaXZlciB0byBz ZXQKIAkgKiB0aGlzIGNvbnRyb2wgYml0IHRvIGVuYWJsZSBIRE1JIG91dHB1dCBpbiBzdXBlcnZp c29yIG1vZGUuCiAJICovCi0JYXJtX3NtY2NjX3NtYyhNVEtfU0lQX1NFVF9BVVRIT1JJWkVEX1NF Q1VSRV9SRUcsIDB4MTQwMDA5MDQsIDB4ODAwMDAwMDAsCi0JCSAgICAgIDAsIDAsIDAsIDAsIDAs ICZyZXMpOworCWlmIChoZG1pX3BoeS0+Y29uZiAmJiBoZG1pX3BoeS0+Y29uZi0+dHpfZGlzYWJs ZWQpCisJCXJlZ21hcF91cGRhdGVfYml0cyhoZG1pLT5zeXNfcmVnbWFwLAorCQkJCSAgIGhkbWkt PnN5c19vZmZzZXQgKyBIRE1JX1NZU19DRkcyMCwKKwkJCQkgICAweDgwMDA4MDA1LCBlbmFibGUg PyAweDgwMDAwMDA1IDogMHg4MDAwKTsKKwllbHNlCisJCWFybV9zbWNjY19zbWMoTVRLX1NJUF9T RVRfQVVUSE9SSVpFRF9TRUNVUkVfUkVHLCAweDE0MDAwOTA0LAorCQkJICAgICAgMHg4MDAwMDAw MCwgMCwgMCwgMCwgMCwgMCwgJnJlcyk7CiAKIAlyZWdtYXBfdXBkYXRlX2JpdHMoaGRtaS0+c3lz X3JlZ21hcCwgaGRtaS0+c3lzX29mZnNldCArIEhETUlfU1lTX0NGRzIwLAogCQkJICAgSERNSV9Q Q0xLX0ZSRUVfUlVOLCBlbmFibGUgPyBIRE1JX1BDTEtfRlJFRV9SVU4gOiAwKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9waHkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfaGRtaV9waHkuYwppbmRleCA1MTRmM2U5YTg3NjcuLjRlZjljNTdm ZmQ0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9waHkuYwpAQCAtMjE0LDYg KzIxNCw5IEBAIHN0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19o ZG1pX3BoeV9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQyNzAxLWhk bWktcGh5IiwKKwkgIC5kYXRhID0gJm10a19oZG1pX3BoeV8yNzAxX2NvbmYsCisJfSwKIAl7IC5j b21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1oZG1pLXBoeSIsCiAJICAuZGF0YSA9ICZtdGtf aGRtaV9waHlfODE3M19jb25mLAogCX0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2hkbWlfcGh5LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlf cGh5LmgKaW5kZXggMDliOGY1MjVlNmI4Li5mMzliMWZjNjY2MTIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9waHkuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmgKQEAgLTIwLDYgKzIwLDcgQEAKIHN0cnVjdCBtdGtfaGRt aV9waHk7CiAKIHN0cnVjdCBtdGtfaGRtaV9waHlfY29uZiB7CisJYm9vbCB0el9kaXNhYmxlZDsK IAljb25zdCBzdHJ1Y3QgY2xrX29wcyAqaGRtaV9waHlfY2xrX29wczsKIAl2b2lkICgqaGRtaV9w aHlfZW5hYmxlX3RtZHMpKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5KTsKIAl2b2lkICgq aGRtaV9waHlfZGlzYWJsZV90bWRzKShzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSk7CkBA IC01NCw1ICs1NSw2IEBAIHVuc2lnbmVkIGxvbmcgbXRrX2hkbWlfcGxsX3JlY2FsY19yYXRlKHN0 cnVjdCBjbGtfaHcgKmh3LAogCiBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfaGRt aV9waHlfZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBtdGtfaGRtaV9waHlfY29uZiBtdGtfaGRtaV9w aHlfODE3M19jb25mOworZXh0ZXJuIHN0cnVjdCBtdGtfaGRtaV9waHlfY29uZiBtdGtfaGRtaV9w aHlfMjcwMV9jb25mOwogCiAjZW5kaWYgLyogX01US19IRE1JX1BIWV9IICovCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210MjcwMV9oZG1pX3BoeS5jIGIvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19tdDI3MDFfaGRtaV9waHkuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZjYzQyZGM2ZWE3ZgotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQyNzAxX2hkbWlfcGh5LmMKQEAgLTAsMCAr MSwyMTIgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogQ29w eXJpZ2h0IChjKSAyMDE4IE1lZGlhVGVrIEluYy4KKyAqIEF1dGhvcjogQ2h1bmh1aSBEYWkgPGNo dW5odWkuZGFpQG1lZGlhdGVrLmNvbT4KKyAqLworCisjaW5jbHVkZSAibXRrX2hkbWlfcGh5Lmgi CisKKyNkZWZpbmUgSERNSV9DT04wCTB4MDAKKyNkZWZpbmUgUkdfSERNSVRYX0RSVl9JQklBUwkJ MAorI2RlZmluZSBSR19IRE1JVFhfRFJWX0lCSUFTX01BU0sJKDB4M2YgPDwgMCkKKyNkZWZpbmUg UkdfSERNSVRYX0VOX1NFUgkJMTIKKyNkZWZpbmUgUkdfSERNSVRYX0VOX1NFUl9NQVNLCQkoMHgw ZiA8PCAxMikKKyNkZWZpbmUgUkdfSERNSVRYX0VOX1NMRE8JCTE2CisjZGVmaW5lIFJHX0hETUlU WF9FTl9TTERPX01BU0sJCSgweDBmIDw8IDE2KQorI2RlZmluZSBSR19IRE1JVFhfRU5fUFJFRAkJ MjAKKyNkZWZpbmUgUkdfSERNSVRYX0VOX1BSRURfTUFTSwkJKDB4MGYgPDwgMjApCisjZGVmaW5l IFJHX0hETUlUWF9FTl9JTVAJCTI0CisjZGVmaW5lIFJHX0hETUlUWF9FTl9JTVBfTUFTSwkJKDB4 MGYgPDwgMjQpCisjZGVmaW5lIFJHX0hETUlUWF9FTl9EUlYJCTI4CisjZGVmaW5lIFJHX0hETUlU WF9FTl9EUlZfTUFTSwkJKDB4MGYgPDwgMjgpCisKKyNkZWZpbmUgSERNSV9DT04xCTB4MDQKKyNk ZWZpbmUgUkdfSERNSVRYX1BSRURfSUJJQVMJCTE4CisjZGVmaW5lIFJHX0hETUlUWF9QUkVEX0lC SUFTX01BU0sJKDB4MGYgPDwgMTgpCisjZGVmaW5lIFJHX0hETUlUWF9QUkVEX0lNUAkJKDB4MDEg PDwgMjIpCisjZGVmaW5lIFJHX0hETUlUWF9EUlZfSU1QCQkyNgorI2RlZmluZSBSR19IRE1JVFhf RFJWX0lNUF9NQVNLCQkoMHgzZiA8PCAyNikKKworI2RlZmluZSBIRE1JX0NPTjIJMHgwOAorI2Rl ZmluZSBSR19IRE1JVFhfRU5fVFhfQ0tMRE8JCSgweDAxIDw8IDApCisjZGVmaW5lIFJHX0hETUlU WF9FTl9UWF9QT1NESVYJCSgweDAxIDw8IDEpCisjZGVmaW5lIFJHX0hETUlUWF9UWF9QT1NESVYJ CTMKKyNkZWZpbmUgUkdfSERNSVRYX1RYX1BPU0RJVl9NQVNLCSgweDAzIDw8IDMpCisjZGVmaW5l IFJHX0hETUlUWF9FTl9NQklBUwkJKDB4MDEgPDwgNikKKyNkZWZpbmUgUkdfSERNSVRYX01CSUFT X0xQRl9FTgkJKDB4MDEgPDwgNykKKworI2RlZmluZSBIRE1JX0NPTjQJMHgxMAorI2RlZmluZSBS R19IRE1JVFhfUkVTRVJWRV9NQVNLCQkoMHhmZmZmZmZmZiA8PCAwKQorCisjZGVmaW5lIEhETUlf Q09ONgkweDE4CisjZGVmaW5lIFJHX0hUUExMX0JSCQkJMAorI2RlZmluZSBSR19IVFBMTF9CUl9N QVNLCQkoMHgwMyA8PCAwKQorI2RlZmluZSBSR19IVFBMTF9CQwkJCTIKKyNkZWZpbmUgUkdfSFRQ TExfQkNfTUFTSwkJKDB4MDMgPDwgMikKKyNkZWZpbmUgUkdfSFRQTExfQlAJCQk0CisjZGVmaW5l IFJHX0hUUExMX0JQX01BU0sJCSgweDBmIDw8IDQpCisjZGVmaW5lIFJHX0hUUExMX0lSCQkJOAor I2RlZmluZSBSR19IVFBMTF9JUl9NQVNLCQkoMHgwZiA8PCA4KQorI2RlZmluZSBSR19IVFBMTF9J QwkJCTEyCisjZGVmaW5lIFJHX0hUUExMX0lDX01BU0sJCSgweDBmIDw8IDEyKQorI2RlZmluZSBS R19IVFBMTF9QT1NESVYJCQkxNgorI2RlZmluZSBSR19IVFBMTF9QT1NESVZfTUFTSwkJKDB4MDMg PDwgMTYpCisjZGVmaW5lIFJHX0hUUExMX1BSRURJVgkJCTE4CisjZGVmaW5lIFJHX0hUUExMX1BS RURJVl9NQVNLCQkoMHgwMyA8PCAxOCkKKyNkZWZpbmUgUkdfSFRQTExfRkJLU0VMCQkJMjAKKyNk ZWZpbmUgUkdfSFRQTExfRkJLU0VMX01BU0sJCSgweDAzIDw8IDIwKQorI2RlZmluZSBSR19IVFBM TF9STEhfRU4JCQkoMHgwMSA8PCAyMikKKyNkZWZpbmUgUkdfSFRQTExfRkJLRElWCQkJMjQKKyNk ZWZpbmUgUkdfSFRQTExfRkJLRElWX01BU0sJCSgweDdmIDw8IDI0KQorI2RlZmluZSBSR19IVFBM TF9FTgkJCSgweDAxIDw8IDMxKQorCisjZGVmaW5lIEhETUlfQ09ONwkweDFjCisjZGVmaW5lIFJH X0hUUExMX0FVVE9LX0VOCQkoMHgwMSA8PCAyMykKKyNkZWZpbmUgUkdfSFRQTExfRElWRU4JCQky OAorI2RlZmluZSBSR19IVFBMTF9ESVZFTl9NQVNLCQkoMHgwNyA8PCAyOCkKKworc3RhdGljIGlu dCBtdGtfaGRtaV9wbGxfcHJlcGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKK3sKKwlzdHJ1Y3QgbXRr X2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210a19oZG1pX3BoeShodyk7CisKKwltdGtfaGRtaV9w aHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09ONywgUkdfSFRQTExfQVVUT0tfRU4pOworCW10 a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1JMSF9F Tik7CisJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExM X1BPU0RJVl9NQVNLKTsKKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09O MiwgUkdfSERNSVRYX0VOX01CSUFTKTsKKwl1c2xlZXBfcmFuZ2UoODAsIDEwMCk7CisJbXRrX2hk bWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX0VOKTsKKwltdGtf aGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdfSERNSVRYX0VOX1RYX0NL TERPKTsKKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERN SVRYX0VOX1NMRE9fTUFTSyk7CisJdXNsZWVwX3JhbmdlKDgwLCAxMDApOworCW10a19oZG1pX3Bo eV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfTUJJQVNfTFBGX0VOKTsK KwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdfSERNSVRYX0VO X1RYX1BPU0RJVik7CisJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAs IFJHX0hETUlUWF9FTl9TRVJfTUFTSyk7CisJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5 LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9QUkVEX01BU0spOworCW10a19oZG1pX3BoeV9zZXRf Yml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfRU5fRFJWX01BU0spOworCXVzbGVl cF9yYW5nZSg4MCwgMTAwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbXRrX2hkbWlf cGxsX3VucHJlcGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKK3sKKwlzdHJ1Y3QgbXRrX2hkbWlfcGh5 ICpoZG1pX3BoeSA9IHRvX210a19oZG1pX3BoeShodyk7CisKKwltdGtfaGRtaV9waHlfY2xlYXJf Yml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfRU5fRFJWX01BU0spOworCW10a19o ZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9QUkVE X01BU0spOworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJH X0hETUlUWF9FTl9TRVJfTUFTSyk7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHks IEhETUlfQ09OMiwgUkdfSERNSVRYX0VOX1RYX1BPU0RJVik7CisJbXRrX2hkbWlfcGh5X2NsZWFy X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdfSERNSVRYX01CSUFTX0xQRl9FTik7CisJdXNs ZWVwX3JhbmdlKDgwLCAxMDApOworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBI RE1JX0NPTjAsIFJHX0hETUlUWF9FTl9TTERPX01BU0spOworCW10a19oZG1pX3BoeV9jbGVhcl9i aXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9FTl9UWF9DS0xETyk7CisJbXRrX2hk bWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfRU4pOworCXVz bGVlcF9yYW5nZSg4MCwgMTAwKTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwg SERNSV9DT04yLCBSR19IRE1JVFhfRU5fTUJJQVMpOworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRz KGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1BPU0RJVl9NQVNLKTsKKwltdGtfaGRtaV9w aHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9STEhfRU4pOworCW10 a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjcsIFJHX0hUUExMX0FVVE9L X0VOKTsKKwl1c2xlZXBfcmFuZ2UoODAsIDEwMCk7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2hkbWlf cGxsX3NldF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCisJCQkJ IHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpCit7CisJc3RydWN0IG10a19oZG1pX3BoeSAqaGRt aV9waHkgPSB0b19tdGtfaGRtaV9waHkoaHcpOworCXUzMiBwb3NfZGl2OworCisJaWYgKHJhdGUg PD0gNjQwMDAwMDApCisJCXBvc19kaXYgPSAzOworCWVsc2UgaWYgKHJhdGUgPD0gMTI4MDAwMDAp CisJCXBvc19kaXYgPSAxOworCWVsc2UKKwkJcG9zX2RpdiA9IDE7CisKKwltdGtfaGRtaV9waHlf c2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfUFJFRElWX01BU0spOworCW10 a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9QT1NESVZf TUFTSyk7CisJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09ONiwgKDB4MSA8PCBS R19IVFBMTF9JQyksCisJCQkgIFJHX0hUUExMX0lDX01BU0spOworCW10a19oZG1pX3BoeV9tYXNr KGhkbWlfcGh5LCBIRE1JX0NPTjYsICgweDEgPDwgUkdfSFRQTExfSVIpLAorCQkJICBSR19IVFBM TF9JUl9NQVNLKTsKKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04yLCAocG9z X2RpdiA8PCBSR19IRE1JVFhfVFhfUE9TRElWKSwKKwkJCSAgUkdfSERNSVRYX1RYX1BPU0RJVl9N QVNLKTsKKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT042LCAoMSA8PCBSR19I VFBMTF9GQktTRUwpLAorCQkJICBSR19IVFBMTF9GQktTRUxfTUFTSyk7CisJbXRrX2hkbWlfcGh5 X21hc2soaGRtaV9waHksIEhETUlfQ09ONiwgKDE5IDw8IFJHX0hUUExMX0ZCS0RJViksCisJCQkg IFJHX0hUUExMX0ZCS0RJVl9NQVNLKTsKKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERN SV9DT043LCAoMHgyIDw8IFJHX0hUUExMX0RJVkVOKSwKKwkJCSAgUkdfSFRQTExfRElWRU5fTUFT Syk7CisJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09ONiwgKDB4YyA8PCBSR19I VFBMTF9CUCksCisJCQkgIFJHX0hUUExMX0JQX01BU0spOworCW10a19oZG1pX3BoeV9tYXNrKGhk bWlfcGh5LCBIRE1JX0NPTjYsICgweDIgPDwgUkdfSFRQTExfQkMpLAorCQkJICBSR19IVFBMTF9C Q19NQVNLKTsKKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT042LCAoMHgxIDw8 IFJHX0hUUExMX0JSKSwKKwkJCSAgUkdfSFRQTExfQlJfTUFTSyk7CisKKwltdGtfaGRtaV9waHlf Y2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04xLCBSR19IRE1JVFhfUFJFRF9JTVApOworCW10 a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjEsICgweDMgPDwgUkdfSERNSVRYX1BS RURfSUJJQVMpLAorCQkJICBSR19IRE1JVFhfUFJFRF9JQklBU19NQVNLKTsKKwltdGtfaGRtaV9w aHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfRU5fSU1QX01BU0sp OworCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjEsICgweDI4IDw8IFJHX0hE TUlUWF9EUlZfSU1QKSwKKwkJCSAgUkdfSERNSVRYX0RSVl9JTVBfTUFTSyk7CisJbXRrX2hkbWlf cGh5X21hc2soaGRtaV9waHksIEhETUlfQ09ONCwgMHgyOCwgUkdfSERNSVRYX1JFU0VSVkVfTUFT Syk7CisJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09OMCwgKDB4YSA8PCBSR19I RE1JVFhfRFJWX0lCSUFTKSwKKwkJCSAgUkdfSERNSVRYX0RSVl9JQklBU19NQVNLKTsKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIG10a19oZG1pX3BoeV9wbGxf b3BzID0geworCS5wcmVwYXJlID0gbXRrX2hkbWlfcGxsX3ByZXBhcmUsCisJLnVucHJlcGFyZSA9 IG10a19oZG1pX3BsbF91bnByZXBhcmUsCisJLnNldF9yYXRlID0gbXRrX2hkbWlfcGxsX3NldF9y YXRlLAorCS5yb3VuZF9yYXRlID0gbXRrX2hkbWlfcGxsX3JvdW5kX3JhdGUsCisJLnJlY2FsY19y YXRlID0gbXRrX2hkbWlfcGxsX3JlY2FsY19yYXRlLAorfTsKKworc3RhdGljIHZvaWQgbXRrX2hk bWlfcGh5X2VuYWJsZV90bWRzKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5KQoreworCW10 a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT043LCBSR19IVFBMTF9BVVRPS19F Tik7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQ TExfUkxIX0VOKTsKKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwg UkdfSFRQTExfUE9TRElWX01BU0spOworCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwg SERNSV9DT04yLCBSR19IRE1JVFhfRU5fTUJJQVMpOworCXVzbGVlcF9yYW5nZSg4MCwgMTAwKTsK KwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfRU4p OworCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhf RU5fVFhfQ0tMRE8pOworCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04w LCBSR19IRE1JVFhfRU5fU0xET19NQVNLKTsKKwl1c2xlZXBfcmFuZ2UoODAsIDEwMCk7CisJbXRr X2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9NQklBU19M UEZfRU4pOworCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19I RE1JVFhfRU5fVFhfUE9TRElWKTsKKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhE TUlfQ09OMCwgUkdfSERNSVRYX0VOX1NFUl9NQVNLKTsKKwltdGtfaGRtaV9waHlfc2V0X2JpdHMo aGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX1BSRURfTUFTSyk7CisJbXRrX2hkbWlf cGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9EUlZfTUFTSyk7 CisJdXNsZWVwX3JhbmdlKDgwLCAxMDApOworfQorCitzdGF0aWMgdm9pZCBtdGtfaGRtaV9waHlf ZGlzYWJsZV90bWRzKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5KQoreworCW10a19oZG1p X3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9EUlZfTUFT Syk7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERN SVRYX0VOX1BSRURfTUFTSyk7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhE TUlfQ09OMCwgUkdfSERNSVRYX0VOX1NFUl9NQVNLKTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0 cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhfUE9TRElWKTsKKwltdGtfaGRt aV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfTUJJQVNfTFBG X0VOKTsKKwl1c2xlZXBfcmFuZ2UoODAsIDEwMCk7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMo aGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX1NMRE9fTUFTSyk7CisJbXRrX2hkbWlf cGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdfSERNSVRYX0VOX1RYX0NLTERP KTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBM TF9FTik7CisJdXNsZWVwX3JhbmdlKDgwLCAxMDApOworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRz KGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9FTl9NQklBUyk7CisJbXRrX2hkbWlfcGh5 X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfUE9TRElWX01BU0spOwor CW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1JM SF9FTik7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09ONywgUkdf SFRQTExfQVVUT0tfRU4pOworCXVzbGVlcF9yYW5nZSg4MCwgMTAwKTsKK30KKworc3RydWN0IG10 a19oZG1pX3BoeV9jb25mIG10a19oZG1pX3BoeV8yNzAxX2NvbmYgPSB7CisJLnR6X2Rpc2FibGVk ID0gdHJ1ZSwKKwkuaGRtaV9waHlfY2xrX29wcyA9ICZtdGtfaGRtaV9waHlfcGxsX29wcywKKwku aGRtaV9waHlfZW5hYmxlX3RtZHMgPSBtdGtfaGRtaV9waHlfZW5hYmxlX3RtZHMsCisJLmhkbWlf cGh5X2Rpc2FibGVfdG1kcyA9IG10a19oZG1pX3BoeV9kaXNhYmxlX3RtZHMsCit9OworCitNT0RV TEVfQVVUSE9SKCJDaHVuaHVpIERhaSA8Y2h1bmh1aS5kYWlAbWVkaWF0ZWsuY29tPiIpOworTU9E VUxFX0RFU0NSSVBUSU9OKCJNZWRpYVRlayBIRE1JIFBIWSBEcml2ZXIiKTsKK01PRFVMRV9MSUNF TlNFKCJHUEwgdjIiKTsKLS0gCjIuMTIuNS4yLmdiZGYyM2FiCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK