From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Armstrong Subject: [PATCH RFC v2 1/8] drm/bridge: dw-hdmi: Add SCDC and TMDS Scrambling support Date: Fri, 30 Nov 2018 14:42:54 +0100 Message-ID: <20181130134301.17963-2-narmstrong@baylibre.com> References: <20181130134301.17963-1-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6A8E56E5FA for ; Fri, 30 Nov 2018 13:43:07 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id q18so5336978wrx.9 for ; Fri, 30 Nov 2018 05:43:07 -0800 (PST) In-Reply-To: <20181130134301.17963-1-narmstrong@baylibre.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: architt@codeaurora.org, a.hajda@samsung.com, Laurent.pinchart@ideasonboard.com, Philipp Zabel , Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner?= , maxime.ripard@bootlin.com Cc: Neil Armstrong , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Nickey Yang , linux-amlogic@lists.infradead.org, Huicong Xu List-Id: dri-devel@lists.freedesktop.org QWRkIHN1cHBvcnQgZm9yIFNDREMgU2V0dXAgZm9yIFRNRFMgQ2xvY2sgPiAzLjRHSHogYW5kIGVu YWJsZSBUTURTClNjcmFtYmxpbmcgd2hlbiBzdXBwb3J0ZWQgb3IgbWFuZGF0b3J5LgoKVGhpcyBw YXRjaCBhbHNvIGFkZHMgYW4gaGVscGVyIHRvIHNldHVwIHRoZSBjb250cm9sIGJpdCB0byBzdXBw b3J0CnRoZSBoaWdoIFRNRFMgQml0IFBlcmlvZC9UTURTIENsb2NrLVBlcmlvZCBSYXRpbyBhcyBy ZXF1aXJlZCB3aXRoClRNRFMgQ2xvY2sgPiAzLjRHSHogZm9yIEhETUkyLjAgMzg0MHgyMTYwQDYw LzUwIG1vZGVzLgoKVGhlc2UgY2hhbmdlcyB3ZXJlIGJhc2VkIG9uIHdvcmsgZG9uZSBieSBIdWlj b25nIFh1IDx4aGNAcm9jay1jaGlwcy5jb20+CmFuZCBOaWNrZXkgWWFuZyA8bmlja2V5LnlhbmdA cm9jay1jaGlwcy5jb20+IHRvIHN1cHBvcnQgSERNSTIuMCBtb2RlcwpvbiB0aGUgUm9ja2NoaXAg NC40IEJTUCBrZXJuZWwgYXQgWzFdCgpbMV0gaHR0cHM6Ly9naXRodWIuY29tL3JvY2tjaGlwLWxp bnV4L2tlcm5lbC90cmVlL3JlbGVhc2UtNC40CgpDYzogTmlja2V5IFlhbmcgPG5pY2tleS55YW5n QHJvY2stY2hpcHMuY29tPgpDYzogSHVpY29uZyBYdSA8eGhjQHJvY2stY2hpcHMuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMgfCA4OCArKysrKysrKysr KysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmgg fCAgMSArCiBpbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRtaS5oICAgICAgICAgICAgICB8ICAxICsK IDMgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYyBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5jCmluZGV4IDY0YzNjZjAyNzUxOC4u ZmNkOTQxZDUyNzUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lz L2R3LWhkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWku YwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KICNp bmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXJfc2xhdmUu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX3NjZGNfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2JyaWRn ZS9kd19oZG1pLmg+CiAKICNpbmNsdWRlIDx1YXBpL2xpbnV4L21lZGlhLWJ1cy1mb3JtYXQuaD4K QEAgLTQzLDYgKzQ0LDExIEBACiAKICNkZWZpbmUgSERNSV9FRElEX0xFTgkJNTEyCiAKKy8qIERX LUhETUkgQ29udHJvbGxlciA+PSAweDIwMGEgYXJlIGF0IGxlYXN0IGNvbXBsaWFudCB3aXRoIFND REMgdmVyc2lvbiAxICovCisjZGVmaW5lIFNDRENfTUlOX1NPVVJDRV9WRVJTSU9OCTB4MQorCisj ZGVmaW5lIEhETUkxNF9NQVhfVE1EU0NMSwkzNDAwMDAwMDAKKwogZW51bSBoZG1pX2RhdGFtYXAg ewogCVJHQjQ0NF84QiA9IDB4MDEsCiAJUkdCNDQ0XzEwQiA9IDB4MDMsCkBAIC0xMDE1LDYgKzEw MjEsMzMgQEAgdm9pZCBkd19oZG1pX3BoeV9pMmNfd3JpdGUoc3RydWN0IGR3X2hkbWkgKmhkbWks IHVuc2lnbmVkIHNob3J0IGRhdGEsCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChkd19oZG1pX3BoeV9p MmNfd3JpdGUpOwogCisvKgorICogSERNSTIuMCBTcGVjaWZpZXMgdGhlIGZvbGxvd2luZyBwcm9j ZWR1cmUgZm9yIEhpZ2ggVE1EUyBCaXQgUmF0ZXM6CisgKiAtIFRoZSBTb3VyY2Ugc2hhbGwgc3Vz cGVuZCB0cmFuc21pc3Npb24gb2YgdGhlIFRNRFMgY2xvY2sgYW5kIGRhdGEKKyAqIC0gVGhlIFNv dXJjZSBzaGFsbCB3cml0ZSB0byB0aGUgVE1EU19CaXRfQ2xvY2tfUmF0aW8gYml0IHRvIGNoYW5n ZSBpdAorICogZnJvbSBhIDAgdG8gYSAxIG9yIGZyb20gYSAxIHRvIGEgMAorICogLSBUaGUgU291 cmNlIHNoYWxsIGFsbG93IGEgbWluaW11bSBvZiAxIG1zIGFuZCBhIG1heGltdW0gb2YgMTAwIG1z IGZyb20KKyAqIHRoZSB0aW1lIHRoZSBUTURTX0JpdF9DbG9ja19SYXRpbyBiaXQgaXMgd3JpdHRl biB1bnRpbCByZXN1bWluZworICogdHJhbnNtaXNzaW9uIG9mIFRNRFMgY2xvY2sgYW5kIGRhdGEK KyAqCisgKiBUbyByZXNwZWN0IHRoZSAxMDBtcyBtYXhpbXVtIGRlbGF5LCB0aGUgZHdfaGRtaV9z ZXRfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKCkKKyAqIGhlbHBlciBzaG91bGQgY2FsbGVkIHJpZ2h0 IGJlZm9yZSBlbmFibGluZyB0aGUgVE1EUyBDbG9jayBhbmQgRGF0YSBpbgorICogdGhlIFBIWSBj b25maWd1cmF0aW9uIGNhbGxiYWNrLgorICovCit2b2lkIGR3X2hkbWlfc2V0X2hpZ2hfdG1kc19j bG9ja19yYXRpbyhzdHJ1Y3QgZHdfaGRtaSAqaGRtaSkKK3sKKwl1bnNpZ25lZCBsb25nIG10bWRz Y2xvY2sgPSBoZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9kZS5tcGl4ZWxjbG9jazsKKworCS8qIENv bnRyb2wgZm9yIFRNRFMgQml0IFBlcmlvZC9UTURTIENsb2NrLVBlcmlvZCBSYXRpbyAqLworCWlm IChoZG1pLT5jb25uZWN0b3IuZGlzcGxheV9pbmZvLmhkbWkuc2NkYy5zdXBwb3J0ZWQpIHsKKwkJ aWYgKG10bWRzY2xvY2sgPiBIRE1JMTRfTUFYX1RNRFNDTEspCisJCQlkcm1fc2NkY19zZXRfaGln aF90bWRzX2Nsb2NrX3JhdGlvKGhkbWktPmRkYywgMSk7CisJCWVsc2UKKwkJCWRybV9zY2RjX3Nl dF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8oaGRtaS0+ZGRjLCAwKTsKKwl9Cit9CitFWFBPUlRfU1lN Qk9MX0dQTChkd19oZG1pX3NldF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8pOworCiBzdGF0aWMgdm9p ZCBkd19oZG1pX3BoeV9lbmFibGVfcG93ZXJkb3duKHN0cnVjdCBkd19oZG1pICpoZG1pLCBib29s IGVuYWJsZSkKIHsKIAloZG1pX21hc2tfd3JpdGViKGhkbWksICFlbmFibGUsIEhETUlfUEhZX0NP TkYwLApAQCAtMTIxNiw2ICsxMjQ5LDggQEAgc3RhdGljIGludCBoZG1pX3BoeV9jb25maWd1cmUo c3RydWN0IGR3X2hkbWkgKmhkbWkpCiAKIAlkd19oZG1pX3BoeV9wb3dlcl9vZmYoaGRtaSk7CiAK Kwlkd19oZG1pX3NldF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8oaGRtaSk7CisKIAkvKiBMZWF2ZSBs b3cgcG93ZXIgY29uc3VtcHRpb24gbW9kZSBieSBhc3NlcnRpbmcgU1ZTUkVULiAqLwogCWlmIChw aHktPmhhc19zdnNyZXQpCiAJCWR3X2hkbWlfcGh5X2VuYWJsZV9zdnNyZXQoaGRtaSwgMSk7CkBA IC0xMjM3LDYgKzEyNzIsMTAgQEAgc3RhdGljIGludCBoZG1pX3BoeV9jb25maWd1cmUoc3RydWN0 IGR3X2hkbWkgKmhkbWkpCiAJCXJldHVybiByZXQ7CiAJfQogCisJLyogV2FpdCBmb3IgcmVzdW1p bmcgdHJhbnNtaXNzaW9uIG9mIFRNRFMgY2xvY2sgYW5kIGRhdGEgKi8KKwlpZiAobXBpeGVsY2xv Y2sgPiBIRE1JMTRfTUFYX1RNRFNDTEspCisJCW1zbGVlcCgxMDApOworCiAJcmV0dXJuIGR3X2hk bWlfcGh5X3Bvd2VyX29uKGhkbWkpOwogfQogCkBAIC0xMzQwLDExICsxMzc5LDEyIEBAIHN0YXRp YyB2b2lkIGhkbWlfdHhfaGRjcF9jb25maWcoc3RydWN0IGR3X2hkbWkgKmhkbWkpCiAKIHN0YXRp YyB2b2lkIGhkbWlfY29uZmlnX0FWSShzdHJ1Y3QgZHdfaGRtaSAqaGRtaSwgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUpCiB7CisJYm9vbCBpc19oZG1pMl9zaW5rID0gaGRtaS0+Y29ubmVj dG9yLmRpc3BsYXlfaW5mby5oZG1pLnNjZGMuc3VwcG9ydGVkOwogCXN0cnVjdCBoZG1pX2F2aV9p bmZvZnJhbWUgZnJhbWU7CiAJdTggdmFsOwogCiAJLyogSW5pdGlhbGlzZSBpbmZvIGZyYW1lIGZy b20gRFJNIG1vZGUgKi8KLQlkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9tb2Rl KCZmcmFtZSwgbW9kZSwgZmFsc2UpOworCWRybV9oZG1pX2F2aV9pbmZvZnJhbWVfZnJvbV9kaXNw bGF5X21vZGUoJmZyYW1lLCBtb2RlLCBpc19oZG1pMl9zaW5rKTsKIAogCWlmIChoZG1pX2J1c19m bXRfaXNfeXV2NDQ0KGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKQogCQlmcmFt ZS5jb2xvcnNwYWNlID0gSERNSV9DT0xPUlNQQUNFX1lVVjQ0NDsKQEAgLTE1MDMsNyArMTU0Myw4 IEBAIHN0YXRpYyB2b2lkIGhkbWlfY29uZmlnX3ZlbmRvcl9zcGVjaWZpY19pbmZvZnJhbWUoc3Ry dWN0IGR3X2hkbWkgKmhkbWksCiBzdGF0aWMgdm9pZCBoZG1pX2F2X2NvbXBvc2VyKHN0cnVjdCBk d19oZG1pICpoZG1pLAogCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSkKIHsKLQl1OCBpbnZfdmFsOworCXU4IGludl92YWwsIGJ5dGVzOworCXN0cnVjdCBkcm1faGRt aV9pbmZvICpoZG1pX2luZm8gPSAmaGRtaS0+Y29ubmVjdG9yLmRpc3BsYXlfaW5mby5oZG1pOwog CXN0cnVjdCBoZG1pX3Ztb2RlICp2bW9kZSA9ICZoZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9kZTsK IAlpbnQgaGJsYW5rLCB2YmxhbmssIGhfZGVfaHMsIHZfZGVfdnMsIGhzeW5jX2xlbiwgdnN5bmNf bGVuOwogCXVuc2lnbmVkIGludCB2ZGlzcGxheTsKQEAgLTE1MTMsNyArMTU1NCw5IEBAIHN0YXRp YyB2b2lkIGhkbWlfYXZfY29tcG9zZXIoc3RydWN0IGR3X2hkbWkgKmhkbWksCiAJZGV2X2RiZyho ZG1pLT5kZXYsICJmaW5hbCBwaXhjbGsgPSAlZFxuIiwgdm1vZGUtPm1waXhlbGNsb2NrKTsKIAog CS8qIFNldCB1cCBIRE1JX0ZDX0lOVklEQ09ORiAqLwotCWludl92YWwgPSAoaGRtaS0+aGRtaV9k YXRhLmhkY3BfZW5hYmxlID8KKwlpbnZfdmFsID0gKGhkbWktPmhkbWlfZGF0YS5oZGNwX2VuYWJs ZSB8fAorCQkgICB2bW9kZS0+bXBpeGVsY2xvY2sgPiBIRE1JMTRfTUFYX1RNRFNDTEsgfHwKKwkJ ICAgaGRtaV9pbmZvLT5zY2RjLnNjcmFtYmxpbmcubG93X3JhdGVzID8KIAkJSERNSV9GQ19JTlZJ RENPTkZfSERDUF9LRUVQT1VUX0FDVElWRSA6CiAJCUhETUlfRkNfSU5WSURDT05GX0hEQ1BfS0VF UE9VVF9JTkFDVElWRSk7CiAKQEAgLTE1NjIsNiArMTYwNSw0NSBAQCBzdGF0aWMgdm9pZCBoZG1p X2F2X2NvbXBvc2VyKHN0cnVjdCBkd19oZG1pICpoZG1pLAogCQl2c3luY19sZW4gLz0gMjsKIAl9 CiAKKwkvKiBTY3JhbWJsaW5nIENvbnRyb2wgKi8KKwlpZiAoaGRtaV9pbmZvLT5zY2RjLnN1cHBv cnRlZCkgeworCQlpZiAodm1vZGUtPm1waXhlbGNsb2NrID4gSERNSTE0X01BWF9UTURTQ0xLIHx8 CisJCSAgICBoZG1pX2luZm8tPnNjZGMuc2NyYW1ibGluZy5sb3dfcmF0ZXMpIHsKKwkJCS8qCisJ CQkgKiBIRE1JMi4wIFNwZWNpZmllcyB0aGUgZm9sbG93aW5nIHByb2NlZHVyZToKKwkJCSAqIEFm dGVyIHRoZSBTb3VyY2UgRGV2aWNlIGhhcyBkZXRlcm1pbmVkIHRoYXQKKwkJCSAqIFNDRENfUHJl c2VudCBpcyBzZXQgKD0xKSwgdGhlIFNvdXJjZSBEZXZpY2Ugc2hvdWxkCisJCQkgKiB3cml0ZSB0 aGUgYWNjdXJhdGUgVmVyc2lvbiBvZiB0aGUgU291cmNlIERldmljZQorCQkJICogdG8gdGhlIFNv dXJjZSBWZXJzaW9uIGZpZWxkIGluIHRoZSBTQ0RDUy4KKwkJCSAqIFNvdXJjZSBEZXZpY2VzIGNv bXBsaWFudCBzaGFsbCBzZXQgdGhlCisJCQkgKiBTb3VyY2UgVmVyc2lvbiA9IDEuCisJCQkgKi8K KwkJCWRybV9zY2RjX3JlYWRiKCZoZG1pLT5pMmMtPmFkYXAsIFNDRENfU0lOS19WRVJTSU9OLAor CQkJCSAgICAgICAmYnl0ZXMpOworCQkJZHJtX3NjZGNfd3JpdGViKCZoZG1pLT5pMmMtPmFkYXAs IFNDRENfU09VUkNFX1ZFUlNJT04sCisJCQkJbWluX3QodTgsIGJ5dGVzLCBTQ0RDX01JTl9TT1VS Q0VfVkVSU0lPTikpOworCisJCQkvKiBFbmFibGVkIFNjcmFtYmxpbmcgaW4gdGhlIFNpbmsgKi8K KwkJCWRybV9zY2RjX3NldF9zY3JhbWJsaW5nKCZoZG1pLT5pMmMtPmFkYXAsIDEpOworCisJCQkv KgorCQkJICogVG8gYWN0aXZhdGUgdGhlIHNjcmFtYmxlciBmZWF0dXJlLCB5b3UgbXVzdCBlbnN1 cmUKKwkJCSAqIHRoYXQgdGhlIHF1YXNpLXN0YXRpYyBjb25maWd1cmF0aW9uIGJpdAorCQkJICog ZmNfaW52aWRjb25mLkhEQ1Bfa2VlcG91dCBpcyBzZXQgYXQgY29uZmlndXJhdGlvbgorCQkJICog dGltZSwgYmVmb3JlIHRoZSByZXF1aXJlZCBtY19zd3JzdHpyZXEudG1kc3N3cnN0X3JlcQorCQkJ ICogcmVzZXQgcmVxdWVzdCBpcyBpc3N1ZWQuCisJCQkgKi8KKwkJCWhkbWlfd3JpdGViKGhkbWks ICh1OCl+SERNSV9NQ19TV1JTVFpfVE1EU1NXUlNUX1JFUSwKKwkJCQkgICAgSERNSV9NQ19TV1JT VFopOworCQkJaGRtaV93cml0ZWIoaGRtaSwgMSwgSERNSV9GQ19TQ1JBTUJMRVJfQ1RSTCk7CisJ CX0gZWxzZSB7CisJCQloZG1pX3dyaXRlYihoZG1pLCAwLCBIRE1JX0ZDX1NDUkFNQkxFUl9DVFJM KTsKKwkJCWhkbWlfd3JpdGViKGhkbWksICh1OCl+SERNSV9NQ19TV1JTVFpfVE1EU1NXUlNUX1JF USwKKwkJCQkgICAgSERNSV9NQ19TV1JTVFopOworCQkJZHJtX3NjZGNfc2V0X3NjcmFtYmxpbmco JmhkbWktPmkyYy0+YWRhcCwgMCk7CisJCX0KKwl9CisKIAkvKiBTZXQgdXAgaG9yaXpvbnRhbCBh Y3RpdmUgcGl4ZWwgd2lkdGggKi8KIAloZG1pX3dyaXRlYihoZG1pLCBtb2RlLT5oZGlzcGxheSA+ PiA4LCBIRE1JX0ZDX0lOSEFDVFYxKTsKIAloZG1pX3dyaXRlYihoZG1pLCBtb2RlLT5oZGlzcGxh eSwgSERNSV9GQ19JTkhBQ1RWMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L3N5bm9wc3lzL2R3LWhkbWkuaCBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHct aGRtaS5oCmluZGV4IDlkOTBlYjljNDZlNS4uM2YzYzYxNmViYTk3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuaApAQCAtMjU1LDYgKzI1NSw3IEBACiAjZGVmaW5l IEhETUlfRkNfTUFTSzIgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwREEKICNkZWZpbmUg SERNSV9GQ19QT0wyICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTBEQgogI2RlZmluZSBI RE1JX0ZDX1BSQ09ORiAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMEUwCisjZGVmaW5lIEhE TUlfRkNfU0NSQU1CTEVSX0NUUkwgICAgICAgICAgICAgICAgICAweDEwRTEKIAogI2RlZmluZSBI RE1JX0ZDX0dNRF9TVEFUICAgICAgICAgICAgICAgICAgICAgICAgMHgxMTAwCiAjZGVmaW5lIEhE TUlfRkNfR01EX0VOICAgICAgICAgICAgICAgICAgICAgICAgICAweDExMDEKZGlmZiAtLWdpdCBh L2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmggYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRt aS5oCmluZGV4IDljNTY0MTJiYjJjZi4uN2EwMjc0NGNlMGJjIDEwMDY0NAotLS0gYS9pbmNsdWRl L2RybS9icmlkZ2UvZHdfaGRtaS5oCisrKyBiL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmgK QEAgLTE1Nyw2ICsxNTcsNyBAQCB2b2lkIGR3X2hkbWlfc2V0dXBfcnhfc2Vuc2Uoc3RydWN0IGR3 X2hkbWkgKmhkbWksIGJvb2wgaHBkLCBib29sIHJ4X3NlbnNlKTsKIHZvaWQgZHdfaGRtaV9zZXRf c2FtcGxlX3JhdGUoc3RydWN0IGR3X2hkbWkgKmhkbWksIHVuc2lnbmVkIGludCByYXRlKTsKIHZv aWQgZHdfaGRtaV9hdWRpb19lbmFibGUoc3RydWN0IGR3X2hkbWkgKmhkbWkpOwogdm9pZCBkd19o ZG1pX2F1ZGlvX2Rpc2FibGUoc3RydWN0IGR3X2hkbWkgKmhkbWkpOwordm9pZCBkd19oZG1pX3Nl dF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8oc3RydWN0IGR3X2hkbWkgKmhkbWkpOwogCiAvKiBQSFkg Y29uZmlndXJhdGlvbiAqLwogdm9pZCBkd19oZG1pX3BoeV9pMmNfc2V0X2FkZHIoc3RydWN0IGR3 X2hkbWkgKmhkbWksIHU4IGFkZHJlc3MpOwotLSAKMi4xOS4yCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK