From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Yang Subject: [RFC PATCH v2 3/4] drm: rockchip: hdmi: add RK3229 HDMI support Date: Thu, 7 Jan 2016 17:02:53 +0800 Message-ID: <1452157373-18783-1-git-send-email-ykk@rock-chips.com> References: <1452156811-18150-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1452156811-18150-1-git-send-email-ykk@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mark Yao , Heiko Stuebner , Russell King , Philipp Zabel , Andy Yan Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, Rob Herring , Kumar Gala , linux-arm-kernel@lists.infradead.org, Zheng Yang List-Id: devicetree@vger.kernel.org UkszMjI5IGludGVncmF0ZSBhbiBEZXNpZ25lZFdhcmUgSERNSTIuMCBjb250cm9sbGVyIGFuZCBh biBJTk5PIEhETUkyLjAgcGh5LAp0aGUgbWF4IG91dHB1dCByZXNvbHV0aW9uIGlzIDRLLgoKU2ln bmVkLW9mZi1ieTogWWFraXIgWWFuZyA8eWtrQHJvY2stY2hpcHMuY29tPgotLS0KQ2hhbmdlcyBp biB2MjoKLSBTcGxpdCBzb21lIGR3LWhkbWkgZHJpdmVyIGNoYW5nZXMgaW50byBzZXBhcmF0ZSBw YXRjaGVzIFswMS8wNF0gJiBbMDIvMDRdCgogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kdy1oZG1p LmMgICAgICAgICAgICB8ICAyNyArLQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3X2hkbWkt cm9ja2NoaXAuYyB8IDM2NyArKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvZHdfaGRtaS1yb2NrY2hpcC5oIHwgMTM3ICsrKysrKysrKysrCiBpbmNs dWRlL2RybS9icmlkZ2UvZHdfaGRtaS5oICAgICAgICAgICAgICAgIHwgICAzICsKIDQgZmlsZXMg Y2hhbmdlZCwgNTA3IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9kd19oZG1pLXJvY2tjaGlwLmgKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3LWhkbWkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvZHctaGRtaS5jCmluZGV4IDVhZDcyZWMuLjVlMDNkODMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvZHctaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvZHctaGRtaS5jCkBAIC03MzUsMTAgKzczNSwxMiBAQCBzdGF0aWMgaW50IGhkbWlfcGh5X2Nv bmZpZ3VyZShzdHJ1Y3QgZHdfaGRtaSAqaGRtaSwgdW5zaWduZWQgY2hhciBwcmVwLAogewogCXVu c2lnbmVkIHJlc19pZHg7CiAJdTggdmFsLCBtc2VjOworCWludCByZXQ7CiAJY29uc3Qgc3RydWN0 IGR3X2hkbWlfcGxhdF9kYXRhICpwZGF0YSA9IGhkbWktPnBsYXRfZGF0YTsKIAljb25zdCBzdHJ1 Y3QgZHdfaGRtaV9tcGxsX2NvbmZpZyAqbXBsbF9jb25maWcgPSBwZGF0YS0+bXBsbF9jZmc7CiAJ Y29uc3Qgc3RydWN0IGR3X2hkbWlfY3Vycl9jdHJsICpjdXJyX2N0cmwgPSBwZGF0YS0+Y3VyX2N0 cjsKIAljb25zdCBzdHJ1Y3QgZHdfaGRtaV9waHlfY29uZmlnICpwaHlfY29uZmlnID0gcGRhdGEt PnBoeV9jb25maWc7CisJaW50IG1waXhlbGNsb2NrID0gaGRtaS0+aGRtaV9kYXRhLnZpZGVvX21v ZGUubXBpeGVsY2xvY2s7CiAKIAlpZiAocHJlcCkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC03NTgs MjcgKzc2MCwzOCBAQCBzdGF0aWMgaW50IGhkbWlfcGh5X2NvbmZpZ3VyZShzdHJ1Y3QgZHdfaGRt aSAqaGRtaSwgdW5zaWduZWQgY2hhciBwcmVwLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKKwlp ZiAoaGRtaS0+cGxhdF9kYXRhLT5leHRwaHlfY29uZmlnKSB7CisJCS8qIGdlbjIgdHggcG93ZXIg b2ZmICovCisJCWR3X2hkbWlfcGh5X2dlbjJfdHhwd3JvbihoZG1pLCAwKTsKKwkJZHdfaGRtaV9w aHlfZ2VuMl9wZGRxKGhkbWksIDEpOworCisJCXJldCA9IGhkbWktPnBsYXRfZGF0YS0+ZXh0cGh5 X2NvbmZpZyhoZG1pLT5wbGF0X2RhdGEsIHJlc19pZHgsCisJCQkJCQkgICAgIG1waXhlbGNsb2Nr KTsKKwkJLyogZ2VuMiB0eCBwb3dlciBvbiAqLworCQlkd19oZG1pX3BoeV9nZW4yX3R4cHdyb24o aGRtaSwgMSk7CisJCWR3X2hkbWlfcGh5X2dlbjJfcGRkcShoZG1pLCAwKTsKKworCQlyZXR1cm4g cmV0OworCX0KKwogCS8qIFBMTC9NUExMIENmZyAtIGFsd2F5cyBtYXRjaCBvbiBmaW5hbCBlbnRy eSAqLwogCWZvciAoOyBtcGxsX2NvbmZpZy0+bXBpeGVsY2xvY2sgIT0gfjBVTDsgbXBsbF9jb25m aWcrKykKLQkJaWYgKGhkbWktPmhkbWlfZGF0YS52aWRlb19tb2RlLm1waXhlbGNsb2NrIDw9Ci0J CSAgICBtcGxsX2NvbmZpZy0+bXBpeGVsY2xvY2spCisJCWlmIChtcGl4ZWxjbG9jayA8PSBtcGxs X2NvbmZpZy0+bXBpeGVsY2xvY2spCiAJCQlicmVhazsKIAogCWZvciAoOyBjdXJyX2N0cmwtPm1w aXhlbGNsb2NrICE9IH4wVUw7IGN1cnJfY3RybCsrKQotCQlpZiAoaGRtaS0+aGRtaV9kYXRhLnZp ZGVvX21vZGUubXBpeGVsY2xvY2sgPD0KLQkJICAgIGN1cnJfY3RybC0+bXBpeGVsY2xvY2spCisJ CWlmIChtcGl4ZWxjbG9jayA8PSBjdXJyX2N0cmwtPm1waXhlbGNsb2NrKQogCQkJYnJlYWs7CiAK IAlmb3IgKDsgcGh5X2NvbmZpZy0+bXBpeGVsY2xvY2sgIT0gfjBVTDsgcGh5X2NvbmZpZysrKQot CQlpZiAoaGRtaS0+aGRtaV9kYXRhLnZpZGVvX21vZGUubXBpeGVsY2xvY2sgPD0KLQkJICAgIHBo eV9jb25maWctPm1waXhlbGNsb2NrKQorCQlpZiAobXBpeGVsY2xvY2sgPD0gcGh5X2NvbmZpZy0+ bXBpeGVsY2xvY2spCiAJCQlicmVhazsKIAogCWlmIChtcGxsX2NvbmZpZy0+bXBpeGVsY2xvY2sg PT0gfjBVTCB8fAogCSAgICBjdXJyX2N0cmwtPm1waXhlbGNsb2NrID09IH4wVUwgfHwKIAkgICAg cGh5X2NvbmZpZy0+bXBpeGVsY2xvY2sgPT0gfjBVTCkgewogCQlkZXZfZXJyKGhkbWktPmRldiwg IlBpeGVsIGNsb2NrICVkIC0gdW5zdXBwb3J0ZWQgYnkgSERNSVxuIiwKLQkJCWhkbWktPmhkbWlf ZGF0YS52aWRlb19tb2RlLm1waXhlbGNsb2NrKTsKKwkJCW1waXhlbGNsb2NrKTsKIAkJcmV0dXJu IC1FSU5WQUw7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHdf aGRtaS1yb2NrY2hpcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3X2hkbWktcm9ja2No aXAuYwppbmRleCA4MTY0ODIzLi4yNGZmZmFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvZHdfaGRtaS1yb2NrY2hpcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9kd19oZG1pLXJvY2tjaGlwLmMKQEAgLTcsNiArNyw3IEBACiAgKiAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgogICovCiAKKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KICNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4K ICNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+CkBAIC0yMSwxOCArMjIsMTM0IEBACiAjaW5j bHVkZSAicm9ja2NoaXBfZHJtX2Rydi5oIgogI2luY2x1ZGUgInJvY2tjaGlwX2RybV92b3AuaCIK IAotI2RlZmluZSBHUkZfU09DX0NPTjYgICAgICAgICAgICAgICAgICAgIDB4MDI1YwotI2RlZmlu ZSBIRE1JX1NFTF9WT1BfTElUICAgICAgICAgICAgICAgICgxIDw8IDQpCisjaW5jbHVkZSAiZHdf aGRtaS1yb2NrY2hpcC5oIgogCiBzdHJ1Y3Qgcm9ja2NoaXBfaGRtaSB7CiAJc3RydWN0IGRldmlj ZSAqZGV2OwogCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5j b2RlcjsKIAlzdHJ1Y3QgZHdfaGRtaV9wbGF0X2RhdGEgcGxhdF9kYXRhOworCisJdm9pZCBfX2lv bWVtICpleHRwaHlfcmVnYmFzZTsKKwlzdHJ1Y3QgY2xrICpleHRwaHlfcGNsazsKIH07CiAKICNk ZWZpbmUgdG9fcm9ja2NoaXBfaGRtaSh4KQljb250YWluZXJfb2YoeCwgc3RydWN0IHJvY2tjaGlw X2hkbWksIHgpCiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0cGh5X2NvbmZpZ190YWIgcm9ja2No aXBfZXh0cGh5X2NmZ1tdID0geworCXsgLm1waXhlbGNsb2NrID0gMTY1MDAwMDAwLAorCSAgLnBy ZV9lbXBoYXNpcyA9IDAsIC5zbG9wZWJvb3N0ID0gMCwgLmNsa19sZXZlbCA9IDQsCisJICAuZGF0 YTBfbGV2ZWwgPSA0LCA0LCA0LAorCX0sCisKKwl7IC5tcGl4ZWxjbG9jayA9IDIyNTAwMDAwMCwK KwkgIC5wcmVfZW1waGFzaXMgPSAwLCAuc2xvcGVib29zdCA9IDAsIC5jbGtfbGV2ZWwgPSA2LAor CSAgLmRhdGEwX2xldmVsID0gNiwgNiwgNiwKKwl9LAorCisJeyAubXBpeGVsY2xvY2sgPSAzNDAw MDAwMDAsCisJICAucHJlX2VtcGhhc2lzID0gMSwgLnNsb3BlYm9vc3QgPSAwLCAuY2xrX2xldmVs ID0gNiwKKwkgIC5kYXRhMF9sZXZlbCA9IDEwLCAxMCwgMTAsCisJfSwKKworCXsgLm1waXhlbGNs b2NrID0gNTk0MDAwMDAwLAorCSAgLnByZV9lbXBoYXNpcyA9IDEsIC5zbG9wZWJvb3N0ID0gMCwg LmNsa19sZXZlbCA9IDcsCisJICAuZGF0YTBfbGV2ZWwgPSAxMCwgMTAsIDEwLAorCX0sCisKKwl7 IC5tcGl4ZWxjbG9jayA9IH4wVUx9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBleHRwaHlf cGxsX2NvbmZpZ190YWIgcm9ja2NoaXBfZXh0cGh5X3BsbF9jZmdbXSA9IHsKKwl7CisJCS5tcGl4 ZWxjbG9jayA9IDI3MDAwMDAwLCAucGFyYW0gPSB7CisJCQl7IC5wbGxfbmQgPSAxLCAucGxsX25m ID0gNDUsCisJCQkgIC50bXNkX2RpdmlkZXJfYSA9IDMsIDEsIDEsCisJCQkgIC5wY2xrX2Rpdmlk ZXJfYSA9IDEsIDMsIDMsIDQsCisJCQkgIC52Y29fZGl2XzUgPSAwLAorCQkJICAucHBsbF9uZCA9 IDEsIC5wcGxsX25mID0gNDAsIC5wcGxsX25vID0gOCwKKwkJCX0sCisJCQl7IC5wbGxfbmQgPSAx LCAucGxsX25mID0gNDUsCisJCQkgIC50bXNkX2RpdmlkZXJfYSA9IDAsIDMsIDMsCisJCQkgIC5w Y2xrX2RpdmlkZXJfYSA9IDEsIDMsIDMsIDQsCisJCQkgIC52Y29fZGl2XzUgPSAwLAorCQkJICAu cHBsbF9uZCA9IDEsIC5wcGxsX25mID0gNDAsIC5wcGxsX25vID0gOCwKKwkJCX0sCisJCX0sCisJ fSwgeworCQkubXBpeGVsY2xvY2sgPSA1OTQwMDAwMCwgLnBhcmFtID0geworCQkJeyAucGxsX25k ID0gMiwgLnBsbF9uZiA9IDk5LAorCQkJICAudG1zZF9kaXZpZGVyX2EgPSAzLCAxLCAxLAorCQkJ ICAucGNsa19kaXZpZGVyX2EgPSAxLCAzLCAyLCAyLAorCQkJICAudmNvX2Rpdl81ID0gMCwKKwkJ CSAgLnBwbGxfbmQgPSAxLCAucHBsbF9uZiA9IDQwLCAucHBsbF9ubyA9IDgsCisJCQl9LAorCQkJ eyAucGxsX25kID0gMiwgLnBsbF9uZiA9IDk5LAorCQkJICAudG1zZF9kaXZpZGVyX2EgPSAxLCAx LCAxLAorCQkJICAucGNsa19kaXZpZGVyX2EgPSAxLCAzLCAyLCAyLAorCQkJICAudmNvX2Rpdl81 ID0gMCwKKwkJCSAgLnBwbGxfbmQgPSAxLCAucHBsbF9uZiA9IDQwLCAucHBsbF9ubyA9IDgsCisJ CQl9LAorCQl9LAorCX0sIHsKKwkJLm1waXhlbGNsb2NrID0gNzQyNTAwMDAsIC5wYXJhbSA9IHsK KwkJCXsgLnBsbF9uZCA9IDIsIC5wbGxfbmYgPSA5OSwKKwkJCSAgLnRtc2RfZGl2aWRlcl9hID0g MSwgMSwgMSwKKwkJCSAgLnBjbGtfZGl2aWRlcl9hID0gMSwgMiwgMiwgMiwKKwkJCSAgLnZjb19k aXZfNSA9IDAsCisJCQkgIC5wcGxsX25kID0gMSwgLnBwbGxfbmYgPSA0MCwgLnBwbGxfbm8gPSA4 LAorCQkJfSwKKwkJCXsgLnBsbF9uZCA9IDQsIC5wbGxfbmYgPSA0OTUsCisJCQkgIC50bXNkX2Rp dmlkZXJfYSA9IDEsIDIsIDIsCisJCQkgIC5wY2xrX2RpdmlkZXJfYSA9IDEsIDMsIDMsIDQsCisJ CQkgIC52Y29fZGl2XzUgPSAwLAorCQkJICAucHBsbF9uZCA9IDIsIC5wcGxsX25mID0gNDAsIC5w cGxsX25vID0gNCwKKwkJCX0sCisJCX0sCisJfSwgeworCQkubXBpeGVsY2xvY2sgPSAxNDg1MDAw MDAsIC5wYXJhbSA9IHsKKwkJCXsgLnBsbF9uZCA9IDIsIC5wbGxfbmYgPSA5OSwKKwkJCSAgLnRt c2RfZGl2aWRlcl9hID0gMSwgMCwgMCwKKwkJCSAgLnBjbGtfZGl2aWRlcl9hID0gMSwgMiwgMSwg MSwKKwkJCSAgLnZjb19kaXZfNSA9IDAsCisJCQkgIC5wcGxsX25kID0gMiwgLnBwbGxfbmYgPSA0 MCwgLnBwbGxfbm8gPSA0LAorCQkJfSwKKwkJCXsgLnBsbF9uZCA9IDQsIC5wbGxfbmYgPSA0OTUs CisJCQkgIC50bXNkX2RpdmlkZXJfYSA9IDAsIDIsIDIsCisJCQkgIC5wY2xrX2RpdmlkZXJfYSA9 IDEsIDMsIDIsIDIsCisJCQkgIC52Y29fZGl2XzUgPSAwLAorCQkJICAucHBsbF9uZCA9IDQsIC5w cGxsX25mID0gNDAsIC5wcGxsX25vID0gMiwKKwkJCX0sCisJCX0sCisJfSwgeworCQkubXBpeGVs Y2xvY2sgPSAyOTcwMDAwMDAsIC5wYXJhbSA9IHsKKwkJCXsgLnBsbF9uZCA9IDIsIC5wbGxfbmYg PSA5OSwKKwkJCSAgLnRtc2RfZGl2aWRlcl9hID0gMCwgMCwgMCwKKwkJCSAgLnBjbGtfZGl2aWRl cl9hID0gMSwgMCwgMSwgMSwKKwkJCSAgLnZjb19kaXZfNSA9IDAsCisJCQkgIC5wcGxsX25kID0g NCwgLnBwbGxfbmYgPSA0MCwgLnBwbGxfbm8gPSAyLAorCQkJfSwKKwkJCXsgLnBsbF9uZCA9IDQs IC5wbGxfbmYgPSA0OTUsCisJCQkgIC50bXNkX2RpdmlkZXJfYSA9IDEsIDIsIDAsCisJCQkgIC5w Y2xrX2RpdmlkZXJfYSA9IDEsIDMsIDEsIDEsCisJCQkgIC52Y29fZGl2XzUgPSAwLAorCQkJICAu cHBsbF9uZCA9IDgsIC5wcGxsX25mID0gNDAsIC5wcGxsX25vID0gMSwKKwkJCX0sCisJCX0sCisJ fSwgeworCQkubXBpeGVsY2xvY2sgPSA1OTQwMDAwMDAsIC5wYXJhbSA9IHsKKwkJCXsgLnBsbF9u ZCA9IDEsIC5wbGxfbmYgPSA5OSwKKwkJCSAgLnRtc2RfZGl2aWRlcl9hID0gMCwgMiwgMCwKKwkJ CSAgLnBjbGtfZGl2aWRlcl9hID0gMSwgMCwgMSwgMSwKKwkJCSAgLnZjb19kaXZfNSA9IDAsCisJ CQkgIC5wcGxsX25kID0gOCwgLnBwbGxfbmYgPSA0MCwgLnBwbGxfbm8gPSAxLAorCQkJfSwKKwkJ fQorCX0sIHsKKwkJLm1waXhlbGNsb2NrID0gfjBVTCwKKwl9Cit9OworCiBzdGF0aWMgY29uc3Qg c3RydWN0IGR3X2hkbWlfbXBsbF9jb25maWcgcm9ja2NoaXBfbXBsbF9jZmdbXSA9IHsKIAl7CiAJ CTI3MDAwMDAwLCB7CkBAIC0xNDIsOSArMjU5LDE2NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGR3 X2hkbWlfcGh5X2NvbmZpZyByb2NrY2hpcF9waHlfY29uZmlnW10gPSB7CiAJeyB+MFVMLAkgICAg IDB4MDAwMCwgMHgwMDAwLCAweDAwMDB9CiB9OwogCitzdGF0aWMgaW5saW5lIHZvaWQgaGRtaV9l eHRwaHlfd3JpdGUoc3RydWN0IHJvY2tjaGlwX2hkbWkgKmhkbWksCisJCQkJICAgICB1bnNpZ25l ZCBzaG9ydCBkYXRhLCB1bnNpZ25lZCBjaGFyIGFkZHIpCit7CisJd3JpdGVsX3JlbGF4ZWQoZGF0 YSwgaGRtaS0+ZXh0cGh5X3JlZ2Jhc2UgKyAoYWRkcikgKiAweDA0KTsKK30KKworc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgaGRtaV9leHRwaHlfcmVhZChzdHJ1Y3Qgcm9ja2NoaXBfaGRtaSAq aGRtaSwKKwkJCQkJICAgIHVuc2lnbmVkIGNoYXIgYWRkcikKK3sKKwlyZXR1cm4gcmVhZGxfcmVs YXhlZChoZG1pLT5leHRwaHlfcmVnYmFzZSArIChhZGRyKSAqIDB4MDQpOworfQorCitzdGF0aWMg aW50IHJvY2tjaGlwX2V4dHBoeV9jb25maWcoY29uc3Qgc3RydWN0IGR3X2hkbWlfcGxhdF9kYXRh ICpwbGF0X2RhdGEsCisJCQkJICBpbnQgcmVzLCBpbnQgcGl4ZWxjbG9jaykKK3sKKwlzdHJ1Y3Qg cm9ja2NoaXBfaGRtaSAqaGRtaSA9IHRvX3JvY2tjaGlwX2hkbWkocGxhdF9kYXRhKTsKKwljb25z dCBzdHJ1Y3QgZXh0cGh5X3BsbF9jb25maWdfdGFiICptcGxsID0gcm9ja2NoaXBfZXh0cGh5X3Bs bF9jZmc7CisJY29uc3Qgc3RydWN0IGV4dHBoeV9jb25maWdfdGFiICpjdHJsID0gcm9ja2NoaXBf ZXh0cGh5X2NmZzsKKwljb25zdCBzdHJ1Y3QgZXh0cGh5X3BsbF9jb25maWdfcGFyYW0gKnBhcmFt OworCXVuc2lnbmVkIGxvbmcgdGltZW91dDsKKwlpbnQgaSwgc3RhdDsKKworCWlmIChyZXMgPj0g RFdfSERNSV9SRVNfTUFYKSB7CisJCWRldl9lcnIoaGRtaS0+ZGV2LCAiRXh0cGh5IGNhbid0IHN1 cHBvcnQgcmVzICVkXG4iLCByZXMpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBGaW5k IG91dCB0aGUgZXh0cGh5IE1QTEwgY29uZmlndXJlIHBhcmFtZXRlcnMgKi8KKwlmb3IgKGkgPSAw OyBtcGxsW2ldLm1waXhlbGNsb2NrICE9IH4wVUw7IGkrKykKKwkJaWYgKHBpeGVsY2xvY2sgPT0g bXBsbFtpXS5tcGl4ZWxjbG9jaykKKwkJCWJyZWFrOworCWlmIChtcGxsW2ldLm1waXhlbGNsb2Nr ID09IH4wVUwpIHsKKwkJZGV2X2VycihoZG1pLT5kZXYsICJFeHRwaHkgY2FuJ3Qgc3VwcG9ydCAl ZEh6XG4iLCBwaXhlbGNsb2NrKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCXBhcmFtID0gJm1w bGxbaV0ucGFyYW1bcmVzXTsKKworCXJlZ21hcF93cml0ZShoZG1pLT5yZWdtYXAsIFJLMzIyOV9H UkZfU09DX0NPTjIsCisJCSAgICAgUkszMjI5X1BMTF9QT1dFUl9ET1dOIHwgUkszMjI5X1BMTF9Q REFUQV9ERU4pOworCisJLyoKKwkgKiBDb25maWd1cmUgZXh0ZXJuYWwgSERNSSBQSFkgUExMIHJl Z2lzdGVycy4KKwkgKi8KKwlzdGF0ID0gKChwYXJhbS0+cGxsX25mID4+IDEpICYgRVhUX1BIWV9Q TExfRkJfQklUOF9NQVNLKSB8CisJICAgICAgICgocGFyYW0tPnZjb19kaXZfNSAmIDEpIDw8IDUp IHwKKwkgICAgICAgKHBhcmFtLT5wbGxfbmQgJiBFWFRfUEhZX1BMTF9QUkVfRElWSURFUl9NQVNL KTsKKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCBzdGF0LCBFWFRfUEhZX1BMTF9QUkVfRElWSURF Uik7CisKKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCBwYXJhbS0+cGxsX25mLCBFWFRfUEhZX1BM TF9GQl9ESVZJREVSKTsKKworCXN0YXQgPSAocGFyYW0tPnBjbGtfZGl2aWRlcl9hICYgRVhUX1BI WV9QQ0xLX0RJVklERVJBX01BU0spIHwKKwkgICAgICAgKChwYXJhbS0+cGNsa19kaXZpZGVyX2Ig JiAzKSA8PCA1KTsKKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCBzdGF0LCBFWFRfUEhZX1BDTEtf RElWSURFUjEpOworCisJc3RhdCA9IChwYXJhbS0+cGNsa19kaXZpZGVyX2QgJiBFWFRfUEhZX1BD TEtfRElWSURFUkRfTUFTSykgfAorCSAgICAgICAoKHBhcmFtLT5wY2xrX2RpdmlkZXJfYyAmIDMp IDw8IDUpOworCWhkbWlfZXh0cGh5X3dyaXRlKGhkbWksIHN0YXQsIEVYVF9QSFlfUENMS19ESVZJ REVSMik7CisKKwlzdGF0ID0gKChwYXJhbS0+dG1zZF9kaXZpZGVyX2MgJiAzKSA8PCA0KSB8CisJ ICAgICAgICgocGFyYW0tPnRtc2RfZGl2aWRlcl9hICYgMykgPDwgMikgfAorCSAgICAgICAocGFy YW0tPnRtc2RfZGl2aWRlcl9iICYgMyk7CisJaGRtaV9leHRwaHlfd3JpdGUoaGRtaSwgc3RhdCwg RVhUX1BIWV9UTURTQ0xLX0RJVklERVIpOworCisJaGRtaV9leHRwaHlfd3JpdGUoaGRtaSwgcGFy YW0tPnBwbGxfbmYsIEVYVF9QSFlfUFBMTF9GQl9ESVZJREVSKTsKKworCWlmIChwYXJhbS0+cHBs bF9ubyA9PSAxKSB7CisJCWhkbWlfZXh0cGh5X3dyaXRlKGhkbWksIDAsIEVYVF9QSFlfUFBMTF9Q T1NUX0RJVklERVIpOworCisJCXN0YXQgPSAweDIwIHwgcGFyYW0tPnBwbGxfbmQ7CisJCWhkbWlf ZXh0cGh5X3dyaXRlKGhkbWksIHN0YXQsIEVYVF9QSFlfUFBMTF9QUkVfRElWSURFUik7CisJfSBl bHNlIHsKKwkJc3RhdCA9ICgocGFyYW0tPnBwbGxfbm8gLyAyKSAtIDEpIDw8IDQ7CisJCWhkbWlf ZXh0cGh5X3dyaXRlKGhkbWksIHN0YXQsIEVYVF9QSFlfUFBMTF9QT1NUX0RJVklERVIpOworCisJ CXN0YXQgPSAweGUwIHwgcGFyYW0tPnBwbGxfbmQ7CisJCWhkbWlfZXh0cGh5X3dyaXRlKGhkbWks IHN0YXQsIEVYVF9QSFlfUFBMTF9QUkVfRElWSURFUik7CisJfQorCisKKwkvKiBGaW5kIG91dCB0 aGUgZXh0ZXJuYWwgSERNSSBQSFkgZHJpdmVyIGNvbmZpZ3VyZSBwYXJhbWV0ZXJzICovCisJZm9y IChpID0gMDsgY3RybFtpXS5tcGl4ZWxjbG9jayAhPSB+MFVMOyBpKyspCisJCWlmIChwaXhlbGNs b2NrIDw9IGN0cmxbaV0ubXBpeGVsY2xvY2spCisJCQlicmVhazsKKwlpZiAoY3RybFtpXS5tcGl4 ZWxjbG9jayA9PSB+MFVMKSB7CisJCWRldl9lcnIoaGRtaS0+ZGV2LCAiRXh0cGh5IGNhbid0IHN1 cHBvcnQgJWRIelxuIiwgcGl4ZWxjbG9jayk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8q CisJICogQ29uZmlndXJlIHRoZSBleHRlcm5hbCBIRE1JIFBIWSBkcml2ZXIgcmVnaXN0ZXJzLgor CSAqLworCWlmIChjdHJsW2ldLnNsb3BlYm9vc3QpIHsKKwkJaGRtaV9leHRwaHlfd3JpdGUoaGRt aSwgMHhmZiwgRVhUX1BIWV9TSUdOQUxfQ1RSTCk7CisKKwkJc3RhdCA9IChjdHJsW2ldLnNsb3Bl Ym9vc3QgLSAxKSAmIDM7CisJCXN0YXQgPSAoc3RhdCA8PCA2KSB8IChzdGF0IDw8IDQpIHwgKHN0 YXQgPDwgMikgfCBzdGF0OworCQloZG1pX2V4dHBoeV93cml0ZShoZG1pLCBzdGF0LCBFWFRfUEhZ X1NMT1BFQk9PU1QpOworCX0gZWxzZQorCQloZG1pX2V4dHBoeV93cml0ZShoZG1pLCAweDBmLCBF WFRfUEhZX1NJR05BTF9DVFJMKTsKKworCXN0YXQgPSBjdHJsW2ldLnByZV9lbXBoYXNpcyAmIDM7 CisJc3RhdCA9IChzdGF0IDw8IDQpIHwgKHN0YXQgPDwgMikgfCBzdGF0OworCWhkbWlfZXh0cGh5 X3dyaXRlKGhkbWksIHN0YXQsIEVYVF9QSFlfUFJFRU1QSEFTSVMpOworCisJc3RhdCA9ICgoY3Ry bFtpXS5jbGtfbGV2ZWwgJiAweGYpIDw8IDQpIHwgKGN0cmxbaV0uZGF0YTJfbGV2ZWwgJiAweGYp OworCWhkbWlfZXh0cGh5X3dyaXRlKGhkbWksIHN0YXQsIEVYVF9QSFlfTEVWRUwxKTsKKworCXN0 YXQgPSAoKGN0cmxbaV0uZGF0YTFfbGV2ZWwgJiAweGYpIDw8IDQpIHwgKGN0cmxbaV0uZGF0YTBf bGV2ZWwgJiAweGYpOworCWhkbWlfZXh0cGh5X3dyaXRlKGhkbWksIHN0YXQsIEVYVF9QSFlfTEVW RUwyKTsKKworCWhkbWlfZXh0cGh5X3dyaXRlKGhkbWksIDB4MjIsIDB4ZjMpOworCisJc3RhdCA9 IGNsa19nZXRfcmF0ZShoZG1pLT5leHRwaHlfcGNsaykgLyAxMDAwMDA7CisJaGRtaV9leHRwaHlf d3JpdGUoaGRtaSwgKChzdGF0ID4+IDgpICYgMHhmZikgfCAweDgwLCBFWFRfUEhZX1RFUk1fQ0FM KTsKKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCAgc3RhdCAmIDB4ZmYsIEVYVF9QSFlfVEVSTV9D QUxfRElWX0wpOworCisJaWYgKHBpeGVsY2xvY2sgPiAzNDAwMDAwMDApCisJCXN0YXQgPSBFWFRf UEhZX0FVVE9fUjEwMF9PSE1TOworCWVsc2UgaWYgKHBpeGVsY2xvY2sgPiAyMDAwMDAwMDApCisJ CXN0YXQgPSBFWFRfUEhZX0FVVE9fUjUwX09ITVM7CisJZWxzZQorCQlzdGF0ID0gRVhUX1BIWV9B VVRPX1JPUEVOX0NJUkNVSVQ7CisJaGRtaV9leHRwaHlfd3JpdGUoaGRtaSwgc3RhdCB8IDB4MjAs IEVYVF9QSFlfVEVSTV9SRVNJU19BVVRPKTsKKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCAoc3Rh dCA+PiA4KSAmIDB4ZmYsIEVYVF9QSFlfVEVSTV9DQUwpOworCisJc3RhdCA9IChwaXhlbGNsb2Nr ID4gMjAwMDAwMDAwKSA/IDAgOiAweDExOworCWhkbWlfZXh0cGh5X3dyaXRlKGhkbWksIHN0YXQs IEVYVF9QSFlfUExMX0JXKTsKKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCAweDI3LCBFWFRfUEhZ X1BQTExfQlcpOworCisJcmVnbWFwX3dyaXRlKGhkbWktPnJlZ21hcCwgUkszMjI5X0dSRl9TT0Nf Q09OMiwgUkszMjI5X1BMTF9QT1dFUl9VUCk7CisKKwkvKiBEZXRlY3Qgd2hldGhlciBQTEwgaXMg bG9jayBvciBub3QgKi8KKwl0aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoMTAw KTsKKwl3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHsKKwkJdXNsZWVwX3Jh bmdlKDEwMDAsIDIwMDApOworCQlzdGF0ID0gaGRtaV9leHRwaHlfcmVhZChoZG1pLCBFWFRfUEhZ X1BQTExfUE9TVF9ESVZJREVSKTsKKwkJaWYgKHN0YXQgJiBFWFRfUEhZX1BQTExfTE9DS19TVEFU VVNfTUFTSykKKwkJCWJyZWFrOworCX0KKworCXJlZ21hcF93cml0ZShoZG1pLT5yZWdtYXAsIFJL MzIyOV9HUkZfU09DX0NPTjIsIFJLMzIyOV9QTExfUERBVEFfRU4pOworCisJaWYgKChzdGF0ICYg RVhUX1BIWV9QUExMX0xPQ0tfU1RBVFVTX01BU0spID09IDApIHsKKwkJZGV2X2VycihoZG1pLT5k ZXYsICJFWFQgUEhZIFBMTCBub3QgbG9ja2VkXG4iKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisK KwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCByb2NrY2hpcF9oZG1pX3BhcnNlX2R0KHN0cnVj dCByb2NrY2hpcF9oZG1pICpoZG1pKQogewogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBoZG1p LT5kZXYtPm9mX25vZGU7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKKwlzdHJ1Y3Qg cmVzb3VyY2UgKmlvcmVzOworCWludCByZXQ7CisKKwlwZGV2ID0gY29udGFpbmVyX29mKGhkbWkt PmRldiwgc3RydWN0IHBsYXRmb3JtX2RldmljZSwgZGV2KTsKIAogCWhkbWktPnJlZ21hcCA9IHN5 c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3BoYW5kbGUobnAsICJyb2NrY2hpcCxncmYiKTsKIAlpZiAo SVNfRVJSKGhkbWktPnJlZ21hcCkpIHsKQEAgLTE1Miw2ICs0MjQsMzcgQEAgc3RhdGljIGludCBy b2NrY2hpcF9oZG1pX3BhcnNlX2R0KHN0cnVjdCByb2NrY2hpcF9oZG1pICpoZG1pKQogCQlyZXR1 cm4gUFRSX0VSUihoZG1pLT5yZWdtYXApOwogCX0KIAorCWlmIChoZG1pLT5wbGF0X2RhdGEuZGV2 X3R5cGUgPT0gUkszMjI5X0hETUkpIHsKKwkJaW9yZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2Uo cGRldiwgSU9SRVNPVVJDRV9NRU0sIDEpOworCQlpZiAoIWlvcmVzKQorCQkJcmV0dXJuIC1FTlhJ TzsKKworCQloZG1pLT5leHRwaHlfcmVnYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShoZG1p LT5kZXYsIGlvcmVzKTsKKwkJaWYgKElTX0VSUihoZG1pLT5leHRwaHlfcmVnYmFzZSkpIHsKKwkJ CWRldl9lcnIoaGRtaS0+ZGV2LCAiZmFpbGVkIHRvIG1hcCBleHRwaHkgcmVnYmFzZVxuIik7CisJ CQlyZXR1cm4gUFRSX0VSUihoZG1pLT5leHRwaHlfcmVnYmFzZSk7CisJCX0KKworCQloZG1pLT5l eHRwaHlfcGNsayA9IGRldm1fY2xrX2dldChoZG1pLT5kZXYsICJleHRwaHkiKTsKKwkJaWYgKElT X0VSUihoZG1pLT5leHRwaHlfcGNsaykpIHsKKwkJCWRldl9lcnIoaGRtaS0+ZGV2LCAiZmFpbGVk IHRvIGdldCBleHRwaHkgY2xvY2tcbiIpOworCQkJcmV0dXJuIFBUUl9FUlIoaGRtaS0+ZXh0cGh5 X3BjbGspOworCQl9CisKKwkJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGhkbWktPmV4dHBoeV9w Y2xrKTsKKwkJaWYgKHJldCkgeworCQkJZGV2X2VycihoZG1pLT5kZXYsICJmYWlsZWQgdG8gZW5h YmxlIGV4dHBoeSBjbGs6ICVkXG4iLAorCQkJCXJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisK KwkJcmVnbWFwX3dyaXRlKGhkbWktPnJlZ21hcCwgUkszMjI5X0dSRl9TT0NfQ09ONiwKKwkJCSAg ICAgUkszMjI5X0lPXzNWX0RPTUFJTik7CisKKwkJcmVnbWFwX3dyaXRlKGhkbWktPnJlZ21hcCwg UkszMjI5X0dSRl9TT0NfQ09OMiwKKwkJCSAgICAgUkszMjI5X0REQ19NQVNLX0VOKTsKKwl9CisK IAlyZXR1cm4gMDsKIH0KIApAQCAtMTU5LDE3ICs0NjIsMjMgQEAgc3RhdGljIGVudW0gZHJtX21v ZGVfc3RhdHVzCiBkd19oZG1pX3JvY2tjaGlwX21vZGVfdmFsaWQoY29uc3Qgc3RydWN0IGR3X2hk bWlfcGxhdF9kYXRhICpwbGF0X2RhdGEsCiAJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUpCiB7Ci0JY29uc3Qgc3RydWN0IGR3X2hkbWlfbXBsbF9jb25maWcgKm1wbGxfY2ZnID0g cm9ja2NoaXBfbXBsbF9jZmc7CiAJaW50IHBjbGsgPSBtb2RlLT5jbG9jayAqIDEwMDA7CiAJYm9v bCB2YWxpZCA9IGZhbHNlOwogCWludCBpOwogCi0JZm9yIChpID0gMDsgbXBsbF9jZmdbaV0ubXBp eGVsY2xvY2sgIT0gKH4wVUwpOyBpKyspIHsKLQkJaWYgKHBjbGsgPT0gbXBsbF9jZmdbaV0ubXBp eGVsY2xvY2spIHsKLQkJCXZhbGlkID0gdHJ1ZTsKLQkJCWJyZWFrOwotCQl9Ci0JfQorCWlmIChw bGF0X2RhdGEtPmRldl90eXBlID09IFJLMzI4OF9IRE1JKQorCQlmb3IgKGkgPSAwOyByb2NrY2hp cF9tcGxsX2NmZ1tpXS5tcGl4ZWxjbG9jayAhPSB+MFVMOyBpKyspCisJCQlpZiAocGNsayA9PSBy b2NrY2hpcF9tcGxsX2NmZ1tpXS5tcGl4ZWxjbG9jaykgeworCQkJCXZhbGlkID0gdHJ1ZTsKKwkJ CQlicmVhazsKKwkJCX0KKworCWlmIChwbGF0X2RhdGEtPmRldl90eXBlID09IFJLMzIyOV9IRE1J KQorCQlmb3IgKGkgPSAwOyByb2NrY2hpcF9leHRwaHlfcGxsX2NmZ1tpXS5tcGl4ZWxjbG9jayAh PSB+MFVMOyBpKyspCisJCQlpZiAocGNsayA9PSByb2NrY2hpcF9leHRwaHlfcGxsX2NmZ1tpXS5t cGl4ZWxjbG9jaykgeworCQkJCXZhbGlkID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KIAogCXJl dHVybiAodmFsaWQpID8gTU9ERV9PSyA6IE1PREVfQkFEOwogfQpAQCAtMTk5LDIxICs1MDgsMzAg QEAgc3RhdGljIHZvaWQgZHdfaGRtaV9yb2NrY2hpcF9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKIHN0YXRpYyB2b2lkIGR3X2hkbWlfcm9ja2NoaXBfZW5jb2Rl cl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogewogCXN0cnVjdCByb2NrY2hp cF9oZG1pICpoZG1pID0gdG9fcm9ja2NoaXBfaGRtaShlbmNvZGVyKTsKKwlpbnQgb3V0X21vZGUg PSBST0NLQ0hJUF9PVVRfTU9ERV9BQUFBOwogCXUzMiB2YWw7CiAJaW50IG11eDsKIAorCWlmICho ZG1pLT5wbGF0X2RhdGEuZGV2X3R5cGUgPT0gUkszMjI5X0hETUkpCisJCW91dF9tb2RlID0gUk9D S0NISVBfT1VUX01PREVfUDg4ODsKKwogCXJvY2tjaGlwX2RybV9jcnRjX21vZGVfY29uZmlnKGVu Y29kZXItPmNydGMsIERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQSwKLQkJCQkgICAgICBST0NLQ0hJ UF9PVVRfTU9ERV9BQUFBKTsKKwkJCQkgICAgICBvdXRfbW9kZSk7CiAKLQltdXggPSByb2NrY2hp cF9kcm1fZW5jb2Rlcl9nZXRfbXV4X2lkKGhkbWktPmRldi0+b2Zfbm9kZSwgZW5jb2Rlcik7Ci0J aWYgKG11eCkKLQkJdmFsID0gSERNSV9TRUxfVk9QX0xJVCB8IChIRE1JX1NFTF9WT1BfTElUIDw8 IDE2KTsKLQllbHNlCi0JCXZhbCA9IEhETUlfU0VMX1ZPUF9MSVQgPDwgMTY7CisJaWYgKGhkbWkt PnBsYXRfZGF0YS5kZXZfdHlwZSA9PSBSSzMyODhfSERNSSkgeworCQltdXggPSByb2NrY2hpcF9k cm1fZW5jb2Rlcl9nZXRfbXV4X2lkKGhkbWktPmRldi0+b2Zfbm9kZSwKKwkJCQkJCSAgICAgIGVu Y29kZXIpOworCQlpZiAobXV4KQorCQkJdmFsID0gUkszMjg4X0hETUlfU0VMX1ZPUF9MSVQgfAor CQkJICAgICAgKFJLMzI4OF9IRE1JX1NFTF9WT1BfTElUIDw8IDE2KTsKKwkJZWxzZQorCQkJdmFs ID0gUkszMjg4X0hETUlfU0VMX1ZPUF9MSVQgPDwgMTY7CiAKLQlyZWdtYXBfd3JpdGUoaGRtaS0+ cmVnbWFwLCBHUkZfU09DX0NPTjYsIHZhbCk7Ci0JZGV2X2RiZyhoZG1pLT5kZXYsICJ2b3AgJXMg b3V0cHV0IHRvIGhkbWlcbiIsCi0JCShtdXgpID8gIkxJVCIgOiAiQklHIik7CisJCXJlZ21hcF93 cml0ZShoZG1pLT5yZWdtYXAsIFJLMzI4OF9HUkZfU09DX0NPTjYsIHZhbCk7CisKKwkJZGV2X2Ri ZyhoZG1pLT5kZXYsICJ2b3AgJXMgb3V0cHV0IHRvIGhkbWlcbiIsCisJCQkobXV4KSA/ICJMSVQi IDogIkJJRyIpOworCX0KIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxw ZXJfZnVuY3MgZHdfaGRtaV9yb2NrY2hpcF9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKQEAgLTIy Myw3ICs1NDEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5j cyBkd19oZG1pX3JvY2tjaGlwX2VuY29kZXJfaGVscGVyX2Z1bgogCS5kaXNhYmxlICAgID0gZHdf aGRtaV9yb2NrY2hpcF9lbmNvZGVyX2Rpc2FibGUsCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGR3X2hkbWlfcGxhdF9kYXRhIHJvY2tjaGlwX2hkbWlfZHJ2X2RhdGEgPSB7CitzdGF0aWMgY29u c3Qgc3RydWN0IGR3X2hkbWlfcGxhdF9kYXRhIHJrMzI4OF9oZG1pX2Rydl9kYXRhID0gewogCS5t b2RlX3ZhbGlkID0gZHdfaGRtaV9yb2NrY2hpcF9tb2RlX3ZhbGlkLAogCS5tcGxsX2NmZyAgID0g cm9ja2NoaXBfbXBsbF9jZmcsCiAJLmN1cl9jdHIgICAgPSByb2NrY2hpcF9jdXJfY3RyLApAQCAt MjMxLDkgKzU0OSwxOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGR3X2hkbWlfcGxhdF9kYXRhIHJv Y2tjaGlwX2hkbWlfZHJ2X2RhdGEgPSB7CiAJLmRldl90eXBlICAgPSBSSzMyODhfSERNSSwKIH07 CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHdfaGRtaV9wbGF0X2RhdGEgcmszMjI5X2hkbWlfZHJ2 X2RhdGEgPSB7CisJLm1vZGVfdmFsaWQgPSBkd19oZG1pX3JvY2tjaGlwX21vZGVfdmFsaWQsCisJ LmV4dHBoeV9jb25maWcgPSByb2NrY2hpcF9leHRwaHlfY29uZmlnLAorCS5kZXZfdHlwZSAgID0g UkszMjI5X0hETUksCit9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd19o ZG1pX3JvY2tjaGlwX2R0X2lkc1tdID0gewogCXsgLmNvbXBhdGlibGUgPSAicm9ja2NoaXAscmsz Mjg4LWR3LWhkbWkiLAotCSAgLmRhdGEgPSAmcm9ja2NoaXBfaGRtaV9kcnZfZGF0YQorCSAgLmRh dGEgPSAmcmszMjg4X2hkbWlfZHJ2X2RhdGEKKwl9LAorCXsgLmNvbXBhdGlibGUgPSAicm9ja2No aXAscmszMjI5LWR3LWhkbWkiLAorCSAgLmRhdGEgPSAmcmszMjI5X2hkbWlfZHJ2X2RhdGEKIAl9 LAogCXt9LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9kd19oZG1p LXJvY2tjaGlwLmggYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHdfaGRtaS1yb2NrY2hpcC5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZWM3MzMKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHdfaGRtaS1yb2NrY2hpcC5oCkBAIC0w LDAgKzEsMTM3IEBACisjaWZuZGVmIF9fRFdfSERNSV9ST0NLQ0hJUF9fCisjZGVmaW5lIF9fRFdf SERNSV9ST0NLQ0hJUF9fCisKK3N0cnVjdCBleHRwaHlfY29uZmlnX3RhYiB7CisJdTMyIG1waXhl bGNsb2NrOworCWludCBwcmVfZW1waGFzaXM7CisJaW50IHNsb3BlYm9vc3Q7CisJaW50IGNsa19s ZXZlbDsKKwlpbnQgZGF0YTBfbGV2ZWw7CisJaW50IGRhdGExX2xldmVsOworCWludCBkYXRhMl9s ZXZlbDsKK307CisKK3N0cnVjdCBleHRwaHlfcGxsX2NvbmZpZ190YWIgeworCXVuc2lnbmVkIGxv bmcgbXBpeGVsY2xvY2s7CisJc3RydWN0IGV4dHBoeV9wbGxfY29uZmlnX3BhcmFtIHsKKwkJdTgJ cGxsX25kOworCQl1MTYJcGxsX25mOworCQl1OAl0bXNkX2RpdmlkZXJfYTsKKwkJdTgJdG1zZF9k aXZpZGVyX2I7CisJCXU4CXRtc2RfZGl2aWRlcl9jOworCQl1OAlwY2xrX2RpdmlkZXJfYTsKKwkJ dTgJcGNsa19kaXZpZGVyX2I7CisJCXU4CXBjbGtfZGl2aWRlcl9jOworCQl1OAlwY2xrX2Rpdmlk ZXJfZDsKKwkJdTgJdmNvX2Rpdl81OworCQl1OAlwcGxsX25kOworCQl1OAlwcGxsX25mOworCQl1 OAlwcGxsX25vOworCX0gcGFyYW1bRFdfSERNSV9SRVNfTUFYXTsKK307CisKKyNkZWZpbmUgUksz Mjg4X0dSRl9TT0NfQ09ONgkJCTB4MDI1YworI2RlZmluZSBSSzMyODhfSERNSV9TRUxfVk9QX0xJ VAkJCSgxIDw8IDQpCisKKyNkZWZpbmUgUkszMjI5X0dSRl9TT0NfQ09ONgkJCTB4MDQxOAorI2Rl ZmluZSBSSzMyMjlfSU9fM1ZfRE9NQUlOCQkJKCg3IDw8IDQpIHwgKDcgPDwgKDQgKyAxNikpKQor CisjZGVmaW5lIFJLMzIyOV9HUkZfU09DX0NPTjIJCQkweDA0MDgKKyNkZWZpbmUgUkszMjI5X0RE Q19NQVNLX0VOCQkJKCgzIDw8IDEzKSB8ICgzIDw8ICgxMyArIDE2KSkpCisKKyNkZWZpbmUgUksz MjI5X1BMTF9QT1dFUl9ET1dOCQkJKEJJVCgxMikgfCBCSVQoMTIgKyAxNikpCisjZGVmaW5lIFJL MzIyOV9QTExfUE9XRVJfVVAJCQlCSVQoMTIgKyAxNikKKyNkZWZpbmUgUkszMjI5X1BMTF9QREFU QV9ERU4JCQlCSVQoMTEgKyAxNikKKyNkZWZpbmUgUkszMjI5X1BMTF9QREFUQV9FTgkJCShCSVQo MTEpIHwgQklUKDExICsgMTYpKQorCisvKiBQSFkgRGVmaW5lZCBmb3IgUkszMjJYICovCisjZGVm aW5lIEVYVF9QSFlfQ09OVFJPTAkJCQkwCisjZGVmaW5lIEVYVF9QSFlfQU5BTE9HX1JFU0VUX01B U0sJCTB4ODAKKyNkZWZpbmUgRVhUX1BIWV9ESUdJVEFMX1JFU0VUX01BU0sJCTB4NDAKKyNkZWZp bmUgRVhUX1BIWV9QQ0xLX0lOVkVSVF9NQVNLCQkweDA4CisjZGVmaW5lIEVYVF9QSFlfUFJFUENM S19JTlZFUlRfTUFTSwkJMHgwNAorI2RlZmluZSBFWFRfUEhZX1RNRFNDTEtfSU5WRVJUX01BU0sJ CTB4MDIKKyNkZWZpbmUgRVhUX1BIWV9TUkNfU0VMRUNUX01BU0sJCQkweDAxCisKKyNkZWZpbmUg RVhUX1BIWV9URVJNX0NBTAkJCTB4MDMKKyNkZWZpbmUgRVhUX1BIWV9URVJNX0NBTF9FTl9NQVNL CQkweDgwCisjZGVmaW5lIEVYVF9QSFlfVEVSTV9DQUxfRElWX0hfTUFTSwkJMHg3ZgorCisjZGVm aW5lIEVYVF9QSFlfVEVSTV9DQUxfRElWX0wJCQkweDA0CisKKyNkZWZpbmUgRVhUX1BIWV9QTExf UFJFX0RJVklERVIJCQkweGUyCisjZGVmaW5lIEVYVF9QSFlfUExMX0ZCX0JJVDhfTUFTSwkJMHg4 MAorI2RlZmluZSBFWFRfUEhZX1BMTF9QQ0xLX0RJVjVfRU5fTUFTSwkJMHgyMAorI2RlZmluZSBF WFRfUEhZX1BMTF9QUkVfRElWSURFUl9NQVNLCQkweDFmCisKKyNkZWZpbmUgRVhUX1BIWV9QTExf RkJfRElWSURFUgkJCTB4ZTMKKworI2RlZmluZSBFWFRfUEhZX1BDTEtfRElWSURFUjEJCQkweGU0 CisjZGVmaW5lIEVYVF9QSFlfUENMS19ESVZJREVSQl9NQVNLCQkweDYwCisjZGVmaW5lIEVYVF9Q SFlfUENMS19ESVZJREVSQV9NQVNLCQkweDFmCisKKyNkZWZpbmUgRVhUX1BIWV9QQ0xLX0RJVklE RVIyCQkJMHhlNQorI2RlZmluZSBFWFRfUEhZX1BDTEtfRElWSURFUkNfTUFTSwkJMHg2MAorI2Rl ZmluZSBFWFRfUEhZX1BDTEtfRElWSURFUkRfTUFTSwkJMHgxZgorCisjZGVmaW5lIEVYVF9QSFlf VE1EU0NMS19ESVZJREVSCQkJMHhlNgorI2RlZmluZSBFWFRfUEhZX1RNRFNDTEtfRElWSURFUkNf TUFTSwkJMHgzMAorI2RlZmluZSBFWFRfUEhZX1RNRFNDTEtfRElWSURFUkFfTUFTSwkJMHgwYwor I2RlZmluZSBFWFRfUEhZX1RNRFNDTEtfRElWSURFUkJfTUFTSwkJMHgwMworCisjZGVmaW5lIEVY VF9QSFlfUExMX0JXCQkJCTB4ZTcKKworI2RlZmluZSBFWFRfUEhZX1BQTExfUFJFX0RJVklERVIJ CTB4ZTkKKyNkZWZpbmUgRVhUX1BIWV9QUExMX0VOQUJMRV9NQVNLCQkweGMwCisjZGVmaW5lIEVY VF9QSFlfUFBMTF9QUkVfRElWSURFUl9NQVNLCQkweDFmCisKKyNkZWZpbmUgRVhUX1BIWV9QUExM X0ZCX0RJVklERVIJCQkweGVhCisKKyNkZWZpbmUgRVhUX1BIWV9QUExMX1BPU1RfRElWSURFUgkJ MHhlYgorI2RlZmluZSBFWFRfUEhZX1BQTExfRkJfRElWSURFUl9CSVQ4X01BU0sJMHg4MAorI2Rl ZmluZSBFWFRfUEhZX1BQTExfUE9TVF9ESVZJREVSX01BU0sJCTB4MzAKKyNkZWZpbmUgRVhUX1BI WV9QUExMX0xPQ0tfU1RBVFVTX01BU0sJCTB4MDEKKworI2RlZmluZSBFWFRfUEhZX1BQTExfQlcJ CQkJMHhlYworCisjZGVmaW5lIEVYVF9QSFlfU0lHTkFMX0NUUkwJCQkweGVlCisjZGVmaW5lIEVY VF9QSFlfVFJBTlNJVElPTl9DTEtfRU5fTUFTSwkJMHg4MAorI2RlZmluZSBFWFRfUEhZX1RSQU5T SVRJT05fRDBfRU5fTUFTSwkJMHg0MAorI2RlZmluZSBFWFRfUEhZX1RSQU5TSVRJT05fRDFfRU5f TUFTSwkJMHgyMAorI2RlZmluZSBFWFRfUEhZX1RSQU5TSVRJT05fRDJfRU5fTUFTSwkJMHgxMAor I2RlZmluZSBFWFRfUEhZX0xFVkVMX0NMS19FTl9NQVNLCQkweDA4CisjZGVmaW5lIEVYVF9QSFlf TEVWRUxfRDBfRU5fTUFTSwkJMHgwNAorI2RlZmluZSBFWFRfUEhZX0xFVkVMX0QxX0VOX01BU0sJ CTB4MDIKKyNkZWZpbmUgRVhUX1BIWV9MRVZFTF9EMl9FTl9NQVNLCQkweDAxCisKKyNkZWZpbmUg RVhUX1BIWV9TTE9QRUJPT1NUCQkJMHhlZgorI2RlZmluZSBFWFRfUEhZX1NMT1BFQk9PU1RfQ0xL X01BU0sJCTB4MDMKKyNkZWZpbmUgRVhUX1BIWV9TTE9QRUJPT1NUX0QwX01BU0sJCTB4MGMKKyNk ZWZpbmUgRVhUX1BIWV9TTE9QRUJPT1NUX0QxX01BU0sJCTB4MzAKKyNkZWZpbmUgRVhUX1BIWV9T TE9QRUJPT1NUX0QyX01BU0sJCTB4YzAKKworI2RlZmluZSBFWFRfUEhZX1BSRUVNUEhBU0lTCQkJ MHhmMAorI2RlZmluZSBFWFRfUEhZX1BSRUVNUEhBU0lTX0QwX01BU0sJCTB4MDMKKyNkZWZpbmUg RVhUX1BIWV9QUkVFTVBIQVNJU19EMV9NQVNLCQkweDBjCisjZGVmaW5lIEVYVF9QSFlfUFJFRU1Q SEFTSVNfRDJfTUFTSwkJMHgzMAorCisjZGVmaW5lIEVYVF9QSFlfTEVWRUwxCQkJCTB4ZjEKKyNk ZWZpbmUgRVhUX1BIWV9MRVZFTF9DTEtfTUFTSwkJCTB4ZjAKKyNkZWZpbmUgRVhUX1BIWV9MRVZF TF9EMl9NQVNLCQkJMHgwZgorCisjZGVmaW5lIEVYVF9QSFlfTEVWRUwyCQkJCTB4ZjIKKyNkZWZp bmUgRVhUX1BIWV9MRVZFTF9EMV9NQVNLCQkJMHhmMAorI2RlZmluZSBFWFRfUEhZX0xFVkVMX0Qw X01BU0sJCQkweDBmCisKKyNkZWZpbmUgRVhUX1BIWV9URVJNX1JFU0lTX0FVVE8JCQkweGY0Cisj ZGVmaW5lIEVYVF9QSFlfQVVUT19SNTBfT0hNUwkJCTAKKyNkZWZpbmUgRVhUX1BIWV9BVVRPX1I3 NV9PSE1TCQkJKDEgPDwgMikKKyNkZWZpbmUgRVhUX1BIWV9BVVRPX1IxMDBfT0hNUwkJCSgyIDw8 IDIpCisjZGVmaW5lIEVYVF9QSFlfQVVUT19ST1BFTl9DSVJDVUlUCQkoMyA8PCAyKQorCisjZGVm aW5lIEVYVF9QSFlfVEVSTV9SRVNJU19NQU5VQUxfQ0xLCQkweGZiCisjZGVmaW5lIEVYVF9QSFlf VEVSTV9SRVNJU19NQU5VQUxfRDIJCTB4ZmMKKyNkZWZpbmUgRVhUX1BIWV9URVJNX1JFU0lTX01B TlVBTF9EMQkJMHhmZAorI2RlZmluZSBFWFRfUEhZX1RFUk1fUkVTSVNfTUFOVUFMX0QwCQkweGZl CisKKyNlbmRpZiAvKiBfX0RXX0hETUlfUk9DS0NISVBfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vYnJpZGdlL2R3X2hkbWkuaCBiL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmgKaW5k ZXggZjhkZWM2NC4uNGU2MzE1OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vYnJpZGdlL2R3X2hk bWkuaAorKysgYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRtaS5oCkBAIC0yNCw2ICsyNCw3IEBA IGVudW0gewogZW51bSBkd19oZG1pX2RldnR5cGUgewogCUlNWDZRX0hETUksCiAJSU1YNkRMX0hE TUksCisJUkszMjI5X0hETUksCiAJUkszMjg4X0hETUksCiB9OwogCkBAIC01NCw2ICs1NSw4IEBA IHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0YSB7CiAJY29uc3Qgc3RydWN0IGR3X2hkbWlfcGh5X2Nv bmZpZyAqcGh5X2NvbmZpZzsKIAllbnVtIGRybV9tb2RlX3N0YXR1cyAoKm1vZGVfdmFsaWQpKGNv bnN0IHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0YSAqcGQsCiAJCQkJCSAgIHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlKTsKKwlpbnQgKCpleHRwaHlfY29uZmlnKShjb25zdCBzdHJ1Y3QgZHdf aGRtaV9wbGF0X2RhdGEgKnBsYXRfZGF0YSwKKwkJCSAgICAgaW50IHJlc19pZHgsIGludCBwaXhl bGNsb2NrKTsKIH07CiAKIHZvaWQgZHdfaGRtaV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpOwotLSAKMi4xLjIKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=