From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Armstrong Subject: [PATCH 4/8] drm/bridge: dw-hdmi: add support for YUV420 output Date: Tue, 15 Jan 2019 13:33:11 +0100 Message-ID: <20190115123315.11069-5-narmstrong@baylibre.com> References: <20190115123315.11069-1-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by gabe.freedesktop.org (Postfix) with ESMTPS id 928156E68C for ; Tue, 15 Jan 2019 12:33:26 +0000 (UTC) Received: by mail-wm1-x343.google.com with SMTP id b11so3117019wmj.1 for ; Tue, 15 Jan 2019 04:33:26 -0800 (PST) In-Reply-To: <20190115123315.11069-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: a.hajda@samsung.com, Laurent.pinchart@ideasonboard.com, Philipp Zabel , Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner?= , maxime.ripard@bootlin.com Cc: linux-amlogic@lists.infradead.org, Zheng Yang , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Neil Armstrong List-Id: dri-devel@lists.freedesktop.org SW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgSERNSTIuMCBZVVY0MjAgZGlzcGxheSBtb2RlcywgdGhp cyBwYXRjaAphZGRzIHN1cHBvcnQgZm9yIHRoZSBZVVY0MjAgVE1EUyBDbG9jayBkaXZpZGVkIGJ5 IDIgYW5kIHRoZSBjb250cm9sbGVyCnBhc3N0aHJvdWdoIG1vZGUuCgpZVVY0MjAgU3lub3BzeXMg UEhZIHN1cHBvcnQgd2lsbCBuZWVkIHNvbWUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0YWJsZQp0 byBzdXBwb3J0IHRoZXNlcyBtb2Rlcy4KClRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gd29yayBmcm9t IFpoZW5nIFlhbmcgPHpoZW5neWFuZ0Byb2NrLWNoaXBzLmNvbT4gaW4KdGhlIFJvY2tjaGlwIExp bnV4IDQuNCBCU1AgYXQgWzFdCgpbMV0gaHR0cHM6Ly9naXRodWIuY29tL3JvY2tjaGlwLWxpbnV4 L2tlcm5lbC90cmVlL3JlbGVhc2UtNC40CgpDYzogWmhlbmcgWWFuZyA8emhlbmd5YW5nQHJvY2st Y2hpcHMuY29tPgpTaWduZWQtb2ZmLWJ5OiBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXls aWJyZS5jb20+ClRlc3RlZC1ieTogSGVpa28gU3R1ZWJuZXIgPGhlaWtvQHNudGVjaC5kZT4KUmV2 aWV3ZWQtYnk6IEFuZHJ6ZWogSGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMgfCA2OCArKysrKysrKysrKysrKysr KystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5j IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMKaW5kZXggZmNkOTQx ZDUyNzUzLi40YTlhMjRlODU0ZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv c3lub3BzeXMvZHctaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMv ZHctaGRtaS5jCkBAIC05OSw2ICs5OSw3IEBAIHN0cnVjdCBoZG1pX3Ztb2RlIHsKIAl1bnNpZ25l ZCBpbnQgbXBpeGVsY2xvY2s7CiAJdW5zaWduZWQgaW50IG1waXhlbHJlcGV0aXRpb25pbnB1dDsK IAl1bnNpZ25lZCBpbnQgbXBpeGVscmVwZXRpdGlvbm91dHB1dDsKKwl1bnNpZ25lZCBpbnQgbXRt ZHNjbG9jazsKIH07CiAKIHN0cnVjdCBoZG1pX2RhdGFfaW5mbyB7CkBAIC01NDMsNyArNTQ0LDcg QEAgc3RhdGljIHZvaWQgaGRtaV9pbml0X2Nsa19yZWdlbmVyYXRvcihzdHJ1Y3QgZHdfaGRtaSAq aGRtaSkKIHN0YXRpYyB2b2lkIGhkbWlfY2xrX3JlZ2VuZXJhdG9yX3VwZGF0ZV9waXhlbF9jbG9j ayhzdHJ1Y3QgZHdfaGRtaSAqaGRtaSkKIHsKIAltdXRleF9sb2NrKCZoZG1pLT5hdWRpb19tdXRl eCk7Ci0JaGRtaV9zZXRfY2xrX3JlZ2VuZXJhdG9yKGhkbWksIGhkbWktPmhkbWlfZGF0YS52aWRl b19tb2RlLm1waXhlbGNsb2NrLAorCWhkbWlfc2V0X2Nsa19yZWdlbmVyYXRvcihoZG1pLCBoZG1p LT5oZG1pX2RhdGEudmlkZW9fbW9kZS5tdG1kc2Nsb2NrLAogCQkJCSBoZG1pLT5zYW1wbGVfcmF0 ZSk7CiAJbXV0ZXhfdW5sb2NrKCZoZG1pLT5hdWRpb19tdXRleCk7CiB9CkBAIC01NTIsNyArNTUz LDcgQEAgdm9pZCBkd19oZG1pX3NldF9zYW1wbGVfcmF0ZShzdHJ1Y3QgZHdfaGRtaSAqaGRtaSwg dW5zaWduZWQgaW50IHJhdGUpCiB7CiAJbXV0ZXhfbG9jaygmaGRtaS0+YXVkaW9fbXV0ZXgpOwog CWhkbWktPnNhbXBsZV9yYXRlID0gcmF0ZTsKLQloZG1pX3NldF9jbGtfcmVnZW5lcmF0b3IoaGRt aSwgaGRtaS0+aGRtaV9kYXRhLnZpZGVvX21vZGUubXBpeGVsY2xvY2ssCisJaGRtaV9zZXRfY2xr X3JlZ2VuZXJhdG9yKGhkbWksIGhkbWktPmhkbWlfZGF0YS52aWRlb19tb2RlLm10bWRzY2xvY2ss CiAJCQkJIGhkbWktPnNhbXBsZV9yYXRlKTsKIAltdXRleF91bmxvY2soJmhkbWktPmF1ZGlvX211 dGV4KTsKIH0KQEAgLTY1Myw2ICs2NTQsMjAgQEAgc3RhdGljIGJvb2wgaGRtaV9idXNfZm10X2lz X3l1djQyMih1bnNpZ25lZCBpbnQgYnVzX2Zvcm1hdCkKIAl9CiB9CiAKK3N0YXRpYyBib29sIGhk bWlfYnVzX2ZtdF9pc195dXY0MjAodW5zaWduZWQgaW50IGJ1c19mb3JtYXQpCit7CisJc3dpdGNo IChidXNfZm9ybWF0KSB7CisJY2FzZSBNRURJQV9CVVNfRk1UX1VZWVZZWThfMF81WDI0OgorCWNh c2UgTUVESUFfQlVTX0ZNVF9VWVlWWVkxMF8wXzVYMzA6CisJY2FzZSBNRURJQV9CVVNfRk1UX1VZ WVZZWTEyXzBfNVgzNjoKKwljYXNlIE1FRElBX0JVU19GTVRfVVlZVllZMTZfMF81WDQ4OgorCQly ZXR1cm4gdHJ1ZTsKKworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxzZTsKKwl9Cit9CisKIHN0YXRp YyBpbnQgaGRtaV9idXNfZm10X2NvbG9yX2RlcHRoKHVuc2lnbmVkIGludCBidXNfZm9ybWF0KQog ewogCXN3aXRjaCAoYnVzX2Zvcm1hdCkgewpAQCAtODgyLDcgKzg5Nyw4IEBAIHN0YXRpYyB2b2lk IGhkbWlfdmlkZW9fcGFja2V0aXplKHN0cnVjdCBkd19oZG1pICpoZG1pKQogCXU4IHZhbCwgdnBf Y29uZjsKIAogCWlmIChoZG1pX2J1c19mbXRfaXNfcmdiKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0 X2J1c19mb3JtYXQpIHx8Ci0JICAgIGhkbWlfYnVzX2ZtdF9pc195dXY0NDQoaGRtaS0+aGRtaV9k YXRhLmVuY19vdXRfYnVzX2Zvcm1hdCkpIHsKKwkgICAgaGRtaV9idXNfZm10X2lzX3l1djQ0NCho ZG1pLT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9ybWF0KSB8fAorCSAgICBoZG1pX2J1c19mbXRf aXNfeXV2NDIwKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKSB7CiAJCXN3aXRj aCAoaGRtaV9idXNfZm10X2NvbG9yX2RlcHRoKAogCQkJCQloZG1pLT5oZG1pX2RhdGEuZW5jX291 dF9idXNfZm9ybWF0KSkgewogCQljYXNlIDg6CkBAIC0xMDM2LDcgKzEwNTIsNyBAQCBFWFBPUlRf U1lNQk9MX0dQTChkd19oZG1pX3BoeV9pMmNfd3JpdGUpOwogICovCiB2b2lkIGR3X2hkbWlfc2V0 X2hpZ2hfdG1kc19jbG9ja19yYXRpbyhzdHJ1Y3QgZHdfaGRtaSAqaGRtaSkKIHsKLQl1bnNpZ25l ZCBsb25nIG10bWRzY2xvY2sgPSBoZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9kZS5tcGl4ZWxjbG9j azsKKwl1bnNpZ25lZCBsb25nIG10bWRzY2xvY2sgPSBoZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9k ZS5tdG1kc2Nsb2NrOwogCiAJLyogQ29udHJvbCBmb3IgVE1EUyBCaXQgUGVyaW9kL1RNRFMgQ2xv Y2stUGVyaW9kIFJhdGlvICovCiAJaWYgKGhkbWktPmNvbm5lY3Rvci5kaXNwbGF5X2luZm8uaGRt aS5zY2RjLnN1cHBvcnRlZCkgewpAQCAtMTE5OCw2ICsxMjE0LDggQEAgc3RhdGljIGludCBoZG1p X3BoeV9jb25maWd1cmVfZHdjX2hkbWlfM2RfdHgoc3RydWN0IGR3X2hkbWkgKmhkbWksCiAJY29u c3Qgc3RydWN0IGR3X2hkbWlfY3Vycl9jdHJsICpjdXJyX2N0cmwgPSBwZGF0YS0+Y3VyX2N0cjsK IAljb25zdCBzdHJ1Y3QgZHdfaGRtaV9waHlfY29uZmlnICpwaHlfY29uZmlnID0gcGRhdGEtPnBo eV9jb25maWc7CiAKKwkvKiBUT0ZJWCBXaWxsIG5lZWQgNDIwIHNwZWNpZmljIFBIWSBjb25maWd1 cmF0aW9uIHRhYmxlcyAqLworCiAJLyogUExML01QTEwgQ2ZnIC0gYWx3YXlzIG1hdGNoIG9uIGZp bmFsIGVudHJ5ICovCiAJZm9yICg7IG1wbGxfY29uZmlnLT5tcGl4ZWxjbG9jayAhPSB+MFVMOyBt cGxsX2NvbmZpZysrKQogCQlpZiAobXBpeGVsY2xvY2sgPD0gbXBsbF9jb25maWctPm1waXhlbGNs b2NrKQpAQCAtMTI0NSw2ICsxMjYzLDcgQEAgc3RhdGljIGludCBoZG1pX3BoeV9jb25maWd1cmUo c3RydWN0IGR3X2hkbWkgKmhkbWkpCiAJY29uc3Qgc3RydWN0IGR3X2hkbWlfcGh5X2RhdGEgKnBo eSA9IGhkbWktPnBoeS5kYXRhOwogCWNvbnN0IHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0YSAqcGRh dGEgPSBoZG1pLT5wbGF0X2RhdGE7CiAJdW5zaWduZWQgbG9uZyBtcGl4ZWxjbG9jayA9IGhkbWkt PmhkbWlfZGF0YS52aWRlb19tb2RlLm1waXhlbGNsb2NrOworCXVuc2lnbmVkIGxvbmcgbXRtZHNj bG9jayA9IGhkbWktPmhkbWlfZGF0YS52aWRlb19tb2RlLm10bWRzY2xvY2s7CiAJaW50IHJldDsK IAogCWR3X2hkbWlfcGh5X3Bvd2VyX29mZihoZG1pKTsKQEAgLTEyNzMsNyArMTI5Miw3IEBAIHN0 YXRpYyBpbnQgaGRtaV9waHlfY29uZmlndXJlKHN0cnVjdCBkd19oZG1pICpoZG1pKQogCX0KIAog CS8qIFdhaXQgZm9yIHJlc3VtaW5nIHRyYW5zbWlzc2lvbiBvZiBUTURTIGNsb2NrIGFuZCBkYXRh ICovCi0JaWYgKG1waXhlbGNsb2NrID4gSERNSTE0X01BWF9UTURTQ0xLKQorCWlmIChtdG1kc2Ns b2NrID4gSERNSTE0X01BWF9UTURTQ0xLKQogCQltc2xlZXAoMTAwKTsKIAogCXJldHVybiBkd19o ZG1pX3BoeV9wb3dlcl9vbihoZG1pKTsKQEAgLTEzODMsNiArMTQwMiw5IEBAIHN0YXRpYyB2b2lk IGhkbWlfY29uZmlnX0FWSShzdHJ1Y3QgZHdfaGRtaSAqaGRtaSwgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUpCiAJc3RydWN0IGhkbWlfYXZpX2luZm9mcmFtZSBmcmFtZTsKIAl1OCB2YWw7 CiAKKwlpZiAoaGRtaV9idXNfZm10X2lzX3l1djQyMChoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9i dXNfZm9ybWF0KSkKKwkJaXNfaGRtaTJfc2luayA9IHRydWU7CisKIAkvKiBJbml0aWFsaXNlIGlu Zm8gZnJhbWUgZnJvbSBEUk0gbW9kZSAqLwogCWRybV9oZG1pX2F2aV9pbmZvZnJhbWVfZnJvbV9k aXNwbGF5X21vZGUoJmZyYW1lLCBtb2RlLCBpc19oZG1pMl9zaW5rKTsKIApAQCAtMTM5MCw2ICsx NDEyLDggQEAgc3RhdGljIHZvaWQgaGRtaV9jb25maWdfQVZJKHN0cnVjdCBkd19oZG1pICpoZG1p LCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKIAkJZnJhbWUuY29sb3JzcGFjZSA9IEhE TUlfQ09MT1JTUEFDRV9ZVVY0NDQ7CiAJZWxzZSBpZiAoaGRtaV9idXNfZm10X2lzX3l1djQyMiho ZG1pLT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9ybWF0KSkKIAkJZnJhbWUuY29sb3JzcGFjZSA9 IEhETUlfQ09MT1JTUEFDRV9ZVVY0MjI7CisJZWxzZSBpZiAoaGRtaV9idXNfZm10X2lzX3l1djQy MChoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9ybWF0KSkKKwkJZnJhbWUuY29sb3JzcGFj ZSA9IEhETUlfQ09MT1JTUEFDRV9ZVVY0MjA7CiAJZWxzZQogCQlmcmFtZS5jb2xvcnNwYWNlID0g SERNSV9DT0xPUlNQQUNFX1JHQjsKIApAQCAtMTU0NywxNSArMTU3MSwxOCBAQCBzdGF0aWMgdm9p ZCBoZG1pX2F2X2NvbXBvc2VyKHN0cnVjdCBkd19oZG1pICpoZG1pLAogCXN0cnVjdCBkcm1faGRt aV9pbmZvICpoZG1pX2luZm8gPSAmaGRtaS0+Y29ubmVjdG9yLmRpc3BsYXlfaW5mby5oZG1pOwog CXN0cnVjdCBoZG1pX3Ztb2RlICp2bW9kZSA9ICZoZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9kZTsK IAlpbnQgaGJsYW5rLCB2YmxhbmssIGhfZGVfaHMsIHZfZGVfdnMsIGhzeW5jX2xlbiwgdnN5bmNf bGVuOwotCXVuc2lnbmVkIGludCB2ZGlzcGxheTsKKwl1bnNpZ25lZCBpbnQgdmRpc3BsYXksIGhk aXNwbGF5OwogCi0Jdm1vZGUtPm1waXhlbGNsb2NrID0gbW9kZS0+Y2xvY2sgKiAxMDAwOworCXZt b2RlLT5tdG1kc2Nsb2NrID0gdm1vZGUtPm1waXhlbGNsb2NrID0gbW9kZS0+Y2xvY2sgKiAxMDAw OwogCiAJZGV2X2RiZyhoZG1pLT5kZXYsICJmaW5hbCBwaXhjbGsgPSAlZFxuIiwgdm1vZGUtPm1w aXhlbGNsb2NrKTsKIAorCWlmIChoZG1pX2J1c19mbXRfaXNfeXV2NDIwKGhkbWktPmhkbWlfZGF0 YS5lbmNfb3V0X2J1c19mb3JtYXQpKQorCQl2bW9kZS0+bXRtZHNjbG9jayAvPSAyOworCiAJLyog U2V0IHVwIEhETUlfRkNfSU5WSURDT05GICovCiAJaW52X3ZhbCA9IChoZG1pLT5oZG1pX2RhdGEu aGRjcF9lbmFibGUgfHwKLQkJICAgdm1vZGUtPm1waXhlbGNsb2NrID4gSERNSTE0X01BWF9UTURT Q0xLIHx8CisJCSAgIHZtb2RlLT5tdG1kc2Nsb2NrID4gSERNSTE0X01BWF9UTURTQ0xLIHx8CiAJ CSAgIGhkbWlfaW5mby0+c2NkYy5zY3JhbWJsaW5nLmxvd19yYXRlcyA/CiAJCUhETUlfRkNfSU5W SURDT05GX0hEQ1BfS0VFUE9VVF9BQ1RJVkUgOgogCQlIRE1JX0ZDX0lOVklEQ09ORl9IRENQX0tF RVBPVVRfSU5BQ1RJVkUpOwpAQCAtMTU4OSw2ICsxNjE2LDIyIEBAIHN0YXRpYyB2b2lkIGhkbWlf YXZfY29tcG9zZXIoc3RydWN0IGR3X2hkbWkgKmhkbWksCiAKIAloZG1pX3dyaXRlYihoZG1pLCBp bnZfdmFsLCBIRE1JX0ZDX0lOVklEQ09ORik7CiAKKwloZGlzcGxheSA9IG1vZGUtPmhkaXNwbGF5 OworCWhibGFuayA9IG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhkaXNwbGF5OworCWhfZGVfaHMgPSBt b2RlLT5oc3luY19zdGFydCAtIG1vZGUtPmhkaXNwbGF5OworCWhzeW5jX2xlbiA9IG1vZGUtPmhz eW5jX2VuZCAtIG1vZGUtPmhzeW5jX3N0YXJ0OworCisJLyoKKwkgKiBXaGVuIHdlJ3JlIHNldHRp bmcgYSBZQ2JDcjQyMCBtb2RlLCB3ZSBuZWVkCisJICogdG8gYWRqdXN0IHRoZSBob3Jpem9udGFs IHRpbWluZyB0byBzdWl0LgorCSAqLworCWlmIChoZG1pX2J1c19mbXRfaXNfeXV2NDIwKGhkbWkt PmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKSB7CisJCWhkaXNwbGF5IC89IDI7CisJCWhi bGFuayAvPSAyOworCQloX2RlX2hzIC89IDI7CisJCWhzeW5jX2xlbiAvPSAyOworCX0KKwogCXZk aXNwbGF5ID0gbW9kZS0+dmRpc3BsYXk7CiAJdmJsYW5rID0gbW9kZS0+dnRvdGFsIC0gbW9kZS0+ dmRpc3BsYXk7CiAJdl9kZV92cyA9IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3BsYXk7 CkBAIC0xNjA3LDcgKzE2NTAsNyBAQCBzdGF0aWMgdm9pZCBoZG1pX2F2X2NvbXBvc2VyKHN0cnVj dCBkd19oZG1pICpoZG1pLAogCiAJLyogU2NyYW1ibGluZyBDb250cm9sICovCiAJaWYgKGhkbWlf aW5mby0+c2NkYy5zdXBwb3J0ZWQpIHsKLQkJaWYgKHZtb2RlLT5tcGl4ZWxjbG9jayA+IEhETUkx NF9NQVhfVE1EU0NMSyB8fAorCQlpZiAodm1vZGUtPm10bWRzY2xvY2sgPiBIRE1JMTRfTUFYX1RN RFNDTEsgfHwKIAkJICAgIGhkbWlfaW5mby0+c2NkYy5zY3JhbWJsaW5nLmxvd19yYXRlcykgewog CQkJLyoKIAkJCSAqIEhETUkyLjAgU3BlY2lmaWVzIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlOgpA QCAtMTY0NSwxNSArMTY4OCwxNCBAQCBzdGF0aWMgdm9pZCBoZG1pX2F2X2NvbXBvc2VyKHN0cnVj dCBkd19oZG1pICpoZG1pLAogCX0KIAogCS8qIFNldCB1cCBob3Jpem9udGFsIGFjdGl2ZSBwaXhl bCB3aWR0aCAqLwotCWhkbWlfd3JpdGViKGhkbWksIG1vZGUtPmhkaXNwbGF5ID4+IDgsIEhETUlf RkNfSU5IQUNUVjEpOwotCWhkbWlfd3JpdGViKGhkbWksIG1vZGUtPmhkaXNwbGF5LCBIRE1JX0ZD X0lOSEFDVFYwKTsKKwloZG1pX3dyaXRlYihoZG1pLCBoZGlzcGxheSA+PiA4LCBIRE1JX0ZDX0lO SEFDVFYxKTsKKwloZG1pX3dyaXRlYihoZG1pLCBoZGlzcGxheSwgSERNSV9GQ19JTkhBQ1RWMCk7 CiAKIAkvKiBTZXQgdXAgdmVydGljYWwgYWN0aXZlIGxpbmVzICovCiAJaGRtaV93cml0ZWIoaGRt aSwgdmRpc3BsYXkgPj4gOCwgSERNSV9GQ19JTlZBQ1RWMSk7CiAJaGRtaV93cml0ZWIoaGRtaSwg dmRpc3BsYXksIEhETUlfRkNfSU5WQUNUVjApOwogCiAJLyogU2V0IHVwIGhvcml6b250YWwgYmxh bmtpbmcgcGl4ZWwgcmVnaW9uIHdpZHRoICovCi0JaGJsYW5rID0gbW9kZS0+aHRvdGFsIC0gbW9k ZS0+aGRpc3BsYXk7CiAJaGRtaV93cml0ZWIoaGRtaSwgaGJsYW5rID4+IDgsIEhETUlfRkNfSU5I QkxBTksxKTsKIAloZG1pX3dyaXRlYihoZG1pLCBoYmxhbmssIEhETUlfRkNfSU5IQkxBTkswKTsK IApAQCAtMTY2MSw3ICsxNzAzLDYgQEAgc3RhdGljIHZvaWQgaGRtaV9hdl9jb21wb3NlcihzdHJ1 Y3QgZHdfaGRtaSAqaGRtaSwKIAloZG1pX3dyaXRlYihoZG1pLCB2YmxhbmssIEhETUlfRkNfSU5W QkxBTkspOwogCiAJLyogU2V0IHVwIEhTWU5DIGFjdGl2ZSBlZGdlIGRlbGF5IHdpZHRoIChpbiBw aXhlbCBjbGtzKSAqLwotCWhfZGVfaHMgPSBtb2RlLT5oc3luY19zdGFydCAtIG1vZGUtPmhkaXNw bGF5OwogCWhkbWlfd3JpdGViKGhkbWksIGhfZGVfaHMgPj4gOCwgSERNSV9GQ19IU1lOQ0lOREVM QVkxKTsKIAloZG1pX3dyaXRlYihoZG1pLCBoX2RlX2hzLCBIRE1JX0ZDX0hTWU5DSU5ERUxBWTAp OwogCkBAIC0xNjY5LDcgKzE3MTAsNiBAQCBzdGF0aWMgdm9pZCBoZG1pX2F2X2NvbXBvc2VyKHN0 cnVjdCBkd19oZG1pICpoZG1pLAogCWhkbWlfd3JpdGViKGhkbWksIHZfZGVfdnMsIEhETUlfRkNf VlNZTkNJTkRFTEFZKTsKIAogCS8qIFNldCB1cCBIU1lOQyBhY3RpdmUgcHVsc2Ugd2lkdGggKGlu IHBpeGVsIGNsa3MpICovCi0JaHN5bmNfbGVuID0gbW9kZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5 bmNfc3RhcnQ7CiAJaGRtaV93cml0ZWIoaGRtaSwgaHN5bmNfbGVuID4+IDgsIEhETUlfRkNfSFNZ TkNJTldJRFRIMSk7CiAJaGRtaV93cml0ZWIoaGRtaSwgaHN5bmNfbGVuLCBIRE1JX0ZDX0hTWU5D SU5XSURUSDApOwogCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=