From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 73117C43613 for ; Thu, 20 Jun 2019 19:43:16 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 47A182084A for ; Thu, 20 Jun 2019 19:43:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="UKdTXmj7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 47A182084A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sigxcpu.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MoVnXsjfy64Z91GQdNsB8LJmBn5joEpaooSqIJmnxx8=; b=UKdTXmj7P39HSY DsX2CHV3IygvSNgZ9nPuC/VGsqxvIBIo82179iF6IISMDKN4bzaXb4oiaDDh3jPlRGBa1Nc8ZorCs 7OJ9MpuODObRuDK/bZFG5Kix8hl0ttPgmEySUgYz6GIHMvimisOweIGNeK868+CWVgot9DDqHtgY1 cCKYeyYuru/k5Sgz+DnPxF86PizvYvA8wzpfMYuIuIdCkagaHARtLy6EoUGdLBvHBTjDP4idmvyh5 2oIxfpM9RxW9zQAY0Eq3XjqsaMkrZJaDP6EqUMMZ9F2f1QUBj2cHuim4q4nzU8yAZe0ylK9GaPphh F2mbcSc7MlvOeQmJw3/A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1he2xd-0002X7-6R; Thu, 20 Jun 2019 19:43:05 +0000 Received: from honk.sigxcpu.org ([24.134.29.49]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1he2xK-0002LU-9e for linux-arm-kernel@lists.infradead.org; Thu, 20 Jun 2019 19:42:48 +0000 Received: from localhost (localhost [127.0.0.1]) by honk.sigxcpu.org (Postfix) with ESMTP id E6C56FB02; Thu, 20 Jun 2019 21:42:44 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at honk.sigxcpu.org Received: from honk.sigxcpu.org ([127.0.0.1]) by localhost (honk.sigxcpu.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id T5w5qZwAlB3z; Thu, 20 Jun 2019 21:42:40 +0200 (CEST) Received: by bogon.sigxcpu.org (Postfix, from userid 1000) id 4106E47323; Thu, 20 Jun 2019 21:42:38 +0200 (CEST) From: =?UTF-8?q?Guido=20G=C3=BCnther?= To: Kishon Vijay Abraham I , Rob Herring , Mark Rutland , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Thierry Reding , =?UTF-8?q?Andreas=20F=C3=A4rber?= , Martin Blumenstingl , Heiko Stuebner , Johan Hovold , Lucas Stach , Abel Vesa , Li Jun , linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, Robert Chiras , Sam Ravnborg , Maxime Ripard Subject: [PATCH v12 2/2] phy: Add driver for mixel mipi dphy found on NXP's i.MX8 SoCs Date: Thu, 20 Jun 2019 21:42:37 +0200 Message-Id: <2c285153bd5c954c52f0d80a7f4fa68b0ca04a65.1561059477.git.agx@sigxcpu.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190620_124246_673770_EB28D4F4 X-CRM114-Status: GOOD ( 24.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaXhlbCBEUEhZIGFzIGZvdW5kIG9uIGkuTVg4IENQ VXMgYnV0IHNpbmNlCnRoaXMgaXMgYW4gSVAgY29yZSBpdCB3aWxsIGxpa2VseSBiZSBmb3VuZCBv biBvdGhlcnMgaW4gdGhlIGZ1dHVyZS4gU28KaW5zdGVhZCBvZiBhZGRpbmcgdGhpcyB0byB0aGUg bndsIGhvc3QgZHJpdmVyIG1ha2UgaXQgYSBnZW5lcmljIFBIWQpkcml2ZXIuCgpUaGUgZHJpdmVy IHN1cHBvcnRzIHRoZSBpLk1YOE1RLiBTdXBwb3J0IGZvciBpLk1YOFFNIGFuZCBpLk1YOFFYUCBj YW4gYmUKYWRkZWQgb25jZSB0aGUgbmVjZXNzYXJ5IHN5c3RlbSBjb250cm9sbGVyIGJpdHMgYXJl IGluIHZpYQptaXhlbF9kcGh5X2RldmRhdGEuCgpTaWduZWQtb2ZmLWJ5OiBHdWlkbyBHw7xudGhl ciA8YWd4QHNpZ3hjcHUub3JnPgpDby1kZXZlbG9wZWQtYnk6IFJvYmVydCBDaGlyYXMgPHJvYmVy dC5jaGlyYXNAbnhwLmNvbT4KU2lnbmVkLW9mZi1ieTogUm9iZXJ0IENoaXJhcyA8cm9iZXJ0LmNo aXJhc0BueHAuY29tPgpSZXZpZXdlZC1ieTogRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogU2FtIFJhdm5ib3JnIDxzYW1AcmF2bmJvcmcub3JnPgotLS0KIGRy aXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAxMCArCiBkcml2 ZXJzL3BoeS9mcmVlc2NhbGUvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3Bo eS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4LW1pcGktZHBoeS5jICAgIHwgNDk3ICsrKysrKysrKysr KysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1MDggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDgtbWlwaS1kcGh5LmMKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZyBiL2RyaXZlcnMvcGh5L2Zy ZWVzY2FsZS9LY29uZmlnCmluZGV4IGY0MzVkNjQwNjk0My4uMzIwNjMwZmZlM2NkIDEwMDY0NAot LS0gYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZworKysgYi9kcml2ZXJzL3BoeS9mcmVl c2NhbGUvS2NvbmZpZwpAQCAtNCwzICs0LDEzIEBAIGNvbmZpZyBQSFlfRlNMX0lNWDhNUV9VU0IK IAlkZXBlbmRzIG9uIE9GICYmIEhBU19JT01FTQogCXNlbGVjdCBHRU5FUklDX1BIWQogCWRlZmF1 bHQgQVJDSF9NWEMgJiYgQVJNNjQKKworY29uZmlnIFBIWV9NSVhFTF9NSVBJX0RQSFkKKwl0cmlz dGF0ZSAiTWl4ZWwgTUlQSSBEU0kgUEhZIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBPRiAmJiBIQVNf SU9NRU0KKwlzZWxlY3QgR0VORVJJQ19QSFkKKwlzZWxlY3QgR0VORVJJQ19QSFlfTUlQSV9EUEhZ CisJc2VsZWN0IFJFR01BUF9NTUlPCisJaGVscAorCSAgRW5hYmxlIHRoaXMgdG8gYWRkIHN1cHBv cnQgZm9yIHRoZSBNaXhlbCBEU0kgUEhZIGFzIGZvdW5kCisJICBvbiBOWFAncyBpLk1YOCBmYW1p bHkgb2YgU09Dcy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZSBi L2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQppbmRleCBhNDU5YTQ0ZjZlY2QuLjFkMDJl Mzg2OWI0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9waHkvZnJlZXNjYWxlL01ha2VmaWxlCisrKyBi L2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQpAQCAtMSwyICsxLDMgQEAKICMgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogb2JqLSQoQ09ORklHX1BIWV9GU0xfSU1Y OE1RX1VTQikJKz0gcGh5LWZzbC1pbXg4bXEtdXNiLm8KK29iai0kKENPTkZJR19QSFlfTUlYRUxf TUlQSV9EUEhZKQkrPSBwaHktZnNsLWlteDgtbWlwaS1kcGh5Lm8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDgtbWlwaS1kcGh5LmMgYi9kcml2ZXJzL3BoeS9m cmVlc2NhbGUvcGh5LWZzbC1pbXg4LW1pcGktZHBoeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uOWYyYzFkYTE0ZjVhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OC1taXBpLWRwaHkuYwpAQCAtMCwwICsxLDQ5NyBA QAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCisvKgorICogQ29weXJpZ2h0 IDIwMTcsMjAxOCBOWFAKKyAqIENvcHlyaWdodCAyMDE5IFB1cmlzbSBTUEMKKyAqLworCisjaW5j bHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+CisjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4 L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxsaW51eC9w aHkvcGh5Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8 bGludXgvcmVnbWFwLmg+CisKKy8qIERQSFkgcmVnaXN0ZXJzICovCisjZGVmaW5lIERQSFlfUERf RFBIWQkJCTB4MDAKKyNkZWZpbmUgRFBIWV9NX1BSR19IU19QUkVQQVJFCQkweDA0CisjZGVmaW5l IERQSFlfTUNfUFJHX0hTX1BSRVBBUkUJCTB4MDgKKyNkZWZpbmUgRFBIWV9NX1BSR19IU19aRVJP CQkweDBjCisjZGVmaW5lIERQSFlfTUNfUFJHX0hTX1pFUk8JCTB4MTAKKyNkZWZpbmUgRFBIWV9N X1BSR19IU19UUkFJTAkJMHgxNAorI2RlZmluZSBEUEhZX01DX1BSR19IU19UUkFJTAkJMHgxOAor I2RlZmluZSBEUEhZX1BEX1BMTAkJCTB4MWMKKyNkZWZpbmUgRFBIWV9UU1QJCQkweDIwCisjZGVm aW5lIERQSFlfQ04JCQkJMHgyNAorI2RlZmluZSBEUEhZX0NNCQkJCTB4MjgKKyNkZWZpbmUgRFBI WV9DTwkJCQkweDJjCisjZGVmaW5lIERQSFlfTE9DSwkJCTB4MzAKKyNkZWZpbmUgRFBIWV9MT0NL X0JZUAkJCTB4MzQKKyNkZWZpbmUgRFBIWV9SRUdfQllQQVNTX1BMTAkJMHg0QworCisjZGVmaW5l IE1CUFMoeCkgKCh4KSAqIDEwMDAwMDApCisKKyNkZWZpbmUgREFUQV9SQVRFX01BWF9TUEVFRCBN QlBTKDE1MDApCisjZGVmaW5lIERBVEFfUkFURV9NSU5fU1BFRUQgTUJQUyg4MCkKKworI2RlZmlu ZSBQTExfTE9DS19TTEVFUCAxMAorI2RlZmluZSBQTExfTE9DS19USU1FT1VUIDEwMDAKKworI2Rl ZmluZSBDTl9CVUYJMHhjYjdhODljMAorI2RlZmluZSBDT19CVUYJMHg2MworI2RlZmluZSBDTSh4 KQkoCQkJCSAgXAorCQkoKHgpIDwJMzIpID8gMHhlMCB8ICgoeCkgLSAxNikgOiBcCisJCSgoeCkg PAk2NCkgPyAweGMwIHwgKCh4KSAtIDMyKSA6IFwKKwkJKCh4KSA8IDEyOCkgPyAweDgwIHwgKCh4 KSAtIDY0KSA6IFwKKwkJKCh4KSAtIDEyOCkpCisjZGVmaW5lIENOKHgpCSgoKHgpID09IDEpID8g MHgxZiA6ICgoKENOX0JVRikgPj4gKCh4KSAtIDEpKSAmIDB4MWYpKQorI2RlZmluZSBDTyh4KQko KENPX0JVRikgPj4gKDggLSAoeCkpICYgMHgwMykKKworLyogUEhZIHBvd2VyIG9uIGlzIGFjdGl2 ZSBsb3cgKi8KKyNkZWZpbmUgUFdSX09OCTAKKyNkZWZpbmUgUFdSX09GRgkxCisKK2VudW0gbWl4 ZWxfZHBoeV9kZXZ0eXBlIHsKKwlNSVhFTF9JTVg4TVEsCit9OworCitzdHJ1Y3QgbWl4ZWxfZHBo eV9kZXZkYXRhIHsKKwl1OCByZWdfdHhfcmNhbDsKKwl1OCByZWdfYXV0b19wZF9lbjsKKwl1OCBy ZWdfcnhscHJwOworCXU4IHJlZ19yeGNkcnA7CisJdTggcmVnX3J4aHNfc2V0dGxlOworfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBtaXhlbF9kcGh5X2RldmRhdGEgbWl4ZWxfZHBoeV9kZXZkYXRh W10gPSB7CisJW01JWEVMX0lNWDhNUV0gPSB7CisJCS5yZWdfdHhfcmNhbCA9IDB4MzgsCisJCS5y ZWdfYXV0b19wZF9lbiA9IDB4M2MsCisJCS5yZWdfcnhscHJwID0gMHg0MCwKKwkJLnJlZ19yeGNk cnAgPSAweDQ0LAorCQkucmVnX3J4aHNfc2V0dGxlID0gMHg0OCwKKwl9LAorfTsKKworc3RydWN0 IG1peGVsX2RwaHlfY2ZnIHsKKwkvKiBEUEhZIFBMTCBwYXJhbWV0ZXJzICovCisJdTMyIGNtOwor CXUzMiBjbjsKKwl1MzIgY287CisJLyogRFBIWSByZWdpc3RlciB2YWx1ZXMgKi8KKwl1OCBtY19w cmdfaHNfcHJlcGFyZTsKKwl1OCBtX3ByZ19oc19wcmVwYXJlOworCXU4IG1jX3ByZ19oc196ZXJv OworCXU4IG1fcHJnX2hzX3plcm87CisJdTggbWNfcHJnX2hzX3RyYWlsOworCXU4IG1fcHJnX2hz X3RyYWlsOworCXU4IHJ4aHNfc2V0dGxlOworfTsKKworc3RydWN0IG1peGVsX2RwaHlfcHJpdiB7 CisJc3RydWN0IG1peGVsX2RwaHlfY2ZnIGNmZzsKKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7CisJ c3RydWN0IGNsayAqcGh5X3JlZl9jbGs7CisJY29uc3Qgc3RydWN0IG1peGVsX2RwaHlfZGV2ZGF0 YSAqZGV2ZGF0YTsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBtaXhl bF9kcGh5X3JlZ21hcF9jb25maWcgPSB7CisJLnJlZ19iaXRzID0gOCwKKwkudmFsX2JpdHMgPSAz MiwKKwkucmVnX3N0cmlkZSA9IDQsCisJLm1heF9yZWdpc3RlciA9IERQSFlfUkVHX0JZUEFTU19Q TEwsCisJLm5hbWUgPSAibWlwaS1kcGh5IiwKK307CisKK3N0YXRpYyBpbnQgcGh5X3dyaXRlKHN0 cnVjdCBwaHkgKnBoeSwgdTMyIHZhbHVlLCB1bnNpZ25lZCBpbnQgcmVnKQoreworCXN0cnVjdCBt aXhlbF9kcGh5X3ByaXYgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKwlpbnQgcmV0Owor CisJcmV0ID0gcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgcmVnLCB2YWx1ZSk7CisJaWYgKHJl dCA8IDApCisJCWRldl9lcnIoJnBoeS0+ZGV2LCAiRmFpbGVkIHRvIHdyaXRlIERQSFkgcmVnICVk OiAlZFxuIiwgcmVnLAorCQkJcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRmluZCBh IHJhdGlvIGNsb3NlIHRvIHRoZSBkZXNpcmVkIG9uZSB1c2luZyBjb250aW51ZWQgZnJhY3Rpb24K KyAqIGFwcHJveGltYXRpb24gZW5kaW5nIGVpdGhlciBhdCBleGFjdCBtYXRjaCBvciBtYXhpbXVt IGFsbG93ZWQKKyAqIG5vbWluYXRvciwgZGVub21pbmF0b3IuCisgKi8KK3N0YXRpYyB2b2lkIGdl dF9iZXN0X3JhdGlvKHUzMiAqcG51bSwgdTMyICpwZGVub20sIHUzMiBtYXhfbiwgdTMyIG1heF9k KQoreworCXUzMiBhID0gKnBudW07CisJdTMyIGIgPSAqcGRlbm9tOworCXUzMiBjOworCXUzMiBu W10gPSB7MCwgMX07CisJdTMyIGRbXSA9IHsxLCAwfTsKKwl1MzIgd2hvbGU7CisJdW5zaWduZWQg aW50IGkgPSAxOworCisJd2hpbGUgKGIpIHsKKwkJaSBePSAxOworCQl3aG9sZSA9IGEgLyBiOwor CQluW2ldICs9IChuW2kgXiAxXSAqIHdob2xlKTsKKwkJZFtpXSArPSAoZFtpIF4gMV0gKiB3aG9s ZSk7CisJCWlmICgobltpXSA+IG1heF9uKSB8fCAoZFtpXSA+IG1heF9kKSkgeworCQkJaSBePSAx OworCQkJYnJlYWs7CisJCX0KKwkJYyA9IGEgLSAoYiAqIHdob2xlKTsKKwkJYSA9IGI7CisJCWIg PSBjOworCX0KKwkqcG51bSA9IG5baV07CisJKnBkZW5vbSA9IGRbaV07Cit9CisKK3N0YXRpYyBp bnQgbWl4ZWxfZHBoeV9jb25maWdfZnJvbV9vcHRzKHN0cnVjdCBwaHkgKnBoeSwKKwkgICAgICAg c3RydWN0IHBoeV9jb25maWd1cmVfb3B0c19taXBpX2RwaHkgKmRwaHlfb3B0cywKKwkgICAgICAg c3RydWN0IG1peGVsX2RwaHlfY2ZnICpjZmcpCit7CisJc3RydWN0IG1peGVsX2RwaHlfcHJpdiAq cHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShwaHktPmRldi5wYXJlbnQpOworCXVuc2lnbmVkIGxvbmcg cmVmX2NsayA9IGNsa19nZXRfcmF0ZShwcml2LT5waHlfcmVmX2Nsayk7CisJdTMyIGxwX3QsIG51 bWVyYXRvciwgZGVub21pbmF0b3I7CisJdW5zaWduZWQgbG9uZyBsb25nIHRtcDsKKwl1MzIgbjsK KwlpbnQgaTsKKworCWlmIChkcGh5X29wdHMtPmhzX2Nsa19yYXRlID4gREFUQV9SQVRFX01BWF9T UEVFRCB8fAorCSAgICBkcGh5X29wdHMtPmhzX2Nsa19yYXRlIDwgREFUQV9SQVRFX01JTl9TUEVF RCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwludW1lcmF0b3IgPSBkcGh5X29wdHMtPmhzX2Nsa19y YXRlOworCWRlbm9taW5hdG9yID0gcmVmX2NsazsKKwlnZXRfYmVzdF9yYXRpbygmbnVtZXJhdG9y LCAmZGVub21pbmF0b3IsIDI1NSwgMjU2KTsKKwlpZiAoIW51bWVyYXRvciB8fCAhZGVub21pbmF0 b3IpIHsKKwkJZGV2X2VycigmcGh5LT5kZXYsICJJbnZhbGlkICVkLyVkIGZvciAlbGQvJWxkXG4i LAorCQkJbnVtZXJhdG9yLCBkZW5vbWluYXRvciwKKwkJCWRwaHlfb3B0cy0+aHNfY2xrX3JhdGUs IHJlZl9jbGspOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwl3aGlsZSAoKG51bWVyYXRvciA8 IDE2KSAmJiAoZGVub21pbmF0b3IgPD0gMTI4KSkgeworCQludW1lcmF0b3IgPDw9IDE7CisJCWRl bm9taW5hdG9yIDw8PSAxOworCX0KKwkvKgorCSAqIENNIHJhbmdlcyBiZXR3ZWVuIDE2IGFuZCAy NTUKKwkgKiBDTiByYW5nZXMgYmV0d2VlbiAxIGFuZCAzMgorCSAqIENPIGlzIHBvd2VyIG9mIDI6 IDEsIDIsIDQsIDgKKwkgKi8KKwlpID0gX19mZnMoZGVub21pbmF0b3IpOworCWlmIChpID4gMykK KwkJaSA9IDM7CisJY2ZnLT5jbiA9IGRlbm9taW5hdG9yID4+IGk7CisJY2ZnLT5jbyA9IDEgPDwg aTsKKwljZmctPmNtID0gbnVtZXJhdG9yOworCisJaWYgKGNmZy0+Y20gPCAxNiB8fCBjZmctPmNt ID4gMjU1IHx8CisJICAgIGNmZy0+Y24gPCAxIHx8IGNmZy0+Y24gPiAzMiB8fAorCSAgICBjZmct PmNvIDwgMSB8fCBjZmctPmNvID4gOCkgeworCQlkZXZfZXJyKCZwaHktPmRldiwgIkludmFsaWQg Q00vQ04vQ08gdmFsdWVzOiAldS8ldS8ldVxuIiwKKwkJCWNmZy0+Y20sIGNmZy0+Y24sIGNmZy0+ Y28pOworCQlkZXZfZXJyKCZwaHktPmRldiwgImZvciBoc19jbGsvcmVmX2Nsaz0lbGQvJWxkIH4g JWQvJWRcbiIsCisJCQlkcGh5X29wdHMtPmhzX2Nsa19yYXRlLCByZWZfY2xrLAorCQkJbnVtZXJh dG9yLCBkZW5vbWluYXRvcik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWRldl9kYmcoJnBo eS0+ZGV2LCAiaHNfY2xrL3JlZl9jbGs9JWxkLyVsZCB+ICVkLyVkXG4iLAorCQlkcGh5X29wdHMt PmhzX2Nsa19yYXRlLCByZWZfY2xrLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKKworCS8qIExQ IGNsb2NrIHBlcmlvZCAqLworCXRtcCA9IDEwMDAwMDAwMDAwMDBMTDsKKwlkb19kaXYodG1wLCBk cGh5X29wdHMtPmxwX2Nsa19yYXRlKTsgLyogcHMgKi8KKwlpZiAodG1wID4gVUxPTkdfTUFYKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWxwX3QgPSB0bXA7CisJZGV2X2RiZygmcGh5LT5kZXYsICJM UCBjbG9jayAlbHUsIHBlcmlvZDogJXUgcHNcbiIsCisJCWRwaHlfb3B0cy0+bHBfY2xrX3JhdGUs IGxwX3QpOworCisJLyogaHNfcHJlcGFyZTogaW4gbHAgY2xvY2sgcGVyaW9kcyAqLworCWlmICgy ICogZHBoeV9vcHRzLT5oc19wcmVwYXJlID4gNSAqIGxwX3QpIHsKKwkJZGV2X2VycigmcGh5LT5k ZXYsCisJCQkiaHNfcHJlcGFyZSAoJXUpID4gMi41ICogbHAgY2xvY2sgcGVyaW9kICgldSlcbiIs CisJCQlkcGh5X29wdHMtPmhzX3ByZXBhcmUsIGxwX3QpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisJLyogMDA6IGxwX3QsIDAxOiAxLjUgKiBscF90LCAxMDogMiAqIGxwX3QsIDExOiAyLjUgKiBs cF90ICovCisJaWYgKGRwaHlfb3B0cy0+aHNfcHJlcGFyZSA8IGxwX3QpIHsKKwkJbiA9IDA7CisJ fSBlbHNlIHsKKwkJdG1wID0gMiAqIChkcGh5X29wdHMtPmhzX3ByZXBhcmUgLSBscF90KTsKKwkJ ZG9fZGl2KHRtcCwgbHBfdCk7CisJCW4gPSB0bXA7CisJfQorCWNmZy0+bV9wcmdfaHNfcHJlcGFy ZSA9IG47CisKKwkvKiBjbGtfcHJlcGFyZTogaW4gbHAgY2xvY2sgcGVyaW9kcyAqLworCWlmICgy ICogZHBoeV9vcHRzLT5jbGtfcHJlcGFyZSA+IDMgKiBscF90KSB7CisJCWRldl9lcnIoJnBoeS0+ ZGV2LAorCQkJImNsa19wcmVwYXJlICgldSkgPiAxLjUgKiBscCBjbG9jayBwZXJpb2QgKCV1KVxu IiwKKwkJCWRwaHlfb3B0cy0+Y2xrX3ByZXBhcmUsIGxwX3QpOworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisJLyogMDA6IGxwX3QsIDAxOiAxLjUgKiBscF90ICovCisJY2ZnLT5tY19wcmdfaHNfcHJl cGFyZSA9IGRwaHlfb3B0cy0+Y2xrX3ByZXBhcmUgPiBscF90ID8gMSA6IDA7CisKKwkvKiBoc196 ZXJvOiBmb3JtdWxhIGZyb20gTlhQIEJTUCAqLworCW4gPSAoMTQ0ICogKGRwaHlfb3B0cy0+aHNf Y2xrX3JhdGUgLyAxMDAwMDAwKSAtIDQ3NTAwKSAvIDEwMDAwOworCWNmZy0+bV9wcmdfaHNfemVy byA9IG4gPCAxID8gMSA6IG47CisKKwkvKiBjbGtfemVybzogZm9ybXVsYSBmcm9tIE5YUCBCU1Ag Ki8KKwluID0gKDM0ICogKGRwaHlfb3B0cy0+aHNfY2xrX3JhdGUgLyAxMDAwMDAwKSAtIDI1MDAp IC8gMTAwMDsKKwljZmctPm1jX3ByZ19oc196ZXJvID0gbiA8IDEgPyAxIDogbjsKKworCS8qIGNs a190cmFpbCwgaHNfdHJhaWw6IGZvcm11bGEgZnJvbSBOWFAgQlNQICovCisJbiA9ICgxMDMgKiAo ZHBoeV9vcHRzLT5oc19jbGtfcmF0ZSAvIDEwMDAwMDApICsgMTAwMDApIC8gMTAwMDA7CisJaWYg KG4gPiAxNSkKKwkJbiA9IDE1OworCWlmIChuIDwgMSkKKwkJbiA9IDE7CisJY2ZnLT5tX3ByZ19o c190cmFpbCA9IG47CisJY2ZnLT5tY19wcmdfaHNfdHJhaWwgPSBuOworCisJLyogcnhoc19zZXR0 bGU6IGZvcm11bGEgZnJvbSBOWFAgQlNQICovCisJaWYgKGRwaHlfb3B0cy0+aHNfY2xrX3JhdGUg PCBNQlBTKDgwKSkKKwkJY2ZnLT5yeGhzX3NldHRsZSA9IDB4MGQ7CisJZWxzZSBpZiAoZHBoeV9v cHRzLT5oc19jbGtfcmF0ZSA8IE1CUFMoOTApKQorCQljZmctPnJ4aHNfc2V0dGxlID0gMHgwYzsK KwllbHNlIGlmIChkcGh5X29wdHMtPmhzX2Nsa19yYXRlIDwgTUJQUygxMjUpKQorCQljZmctPnJ4 aHNfc2V0dGxlID0gMHgwYjsKKwllbHNlIGlmIChkcGh5X29wdHMtPmhzX2Nsa19yYXRlIDwgTUJQ UygxNTApKQorCQljZmctPnJ4aHNfc2V0dGxlID0gMHgwYTsKKwllbHNlIGlmIChkcGh5X29wdHMt PmhzX2Nsa19yYXRlIDwgTUJQUygyMjUpKQorCQljZmctPnJ4aHNfc2V0dGxlID0gMHgwOTsKKwll bHNlIGlmIChkcGh5X29wdHMtPmhzX2Nsa19yYXRlIDwgTUJQUyg1MDApKQorCQljZmctPnJ4aHNf c2V0dGxlID0gMHgwODsKKwllbHNlCisJCWNmZy0+cnhoc19zZXR0bGUgPSAweDA3OworCisJZGV2 X2RiZygmcGh5LT5kZXYsICJwaHlfY29uZmlnOiAldSAldSAldSAldSAldSAldSAldVxuIiwKKwkJ Y2ZnLT5tX3ByZ19oc19wcmVwYXJlLCBjZmctPm1jX3ByZ19oc19wcmVwYXJlLAorCQljZmctPm1f cHJnX2hzX3plcm8sIGNmZy0+bWNfcHJnX2hzX3plcm8sCisJCWNmZy0+bV9wcmdfaHNfdHJhaWws IGNmZy0+bWNfcHJnX2hzX3RyYWlsLAorCQljZmctPnJ4aHNfc2V0dGxlKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCBtaXhlbF9waHlfc2V0X2hzX3RpbWluZ3Moc3RydWN0IHBoeSAq cGh5KQoreworCXN0cnVjdCBtaXhlbF9kcGh5X3ByaXYgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEo cGh5KTsKKworCXBoeV93cml0ZShwaHksIHByaXYtPmNmZy5tX3ByZ19oc19wcmVwYXJlLCBEUEhZ X01fUFJHX0hTX1BSRVBBUkUpOworCXBoeV93cml0ZShwaHksIHByaXYtPmNmZy5tY19wcmdfaHNf cHJlcGFyZSwgRFBIWV9NQ19QUkdfSFNfUFJFUEFSRSk7CisJcGh5X3dyaXRlKHBoeSwgcHJpdi0+ Y2ZnLm1fcHJnX2hzX3plcm8sIERQSFlfTV9QUkdfSFNfWkVSTyk7CisJcGh5X3dyaXRlKHBoeSwg cHJpdi0+Y2ZnLm1jX3ByZ19oc196ZXJvLCBEUEhZX01DX1BSR19IU19aRVJPKTsKKwlwaHlfd3Jp dGUocGh5LCBwcml2LT5jZmcubV9wcmdfaHNfdHJhaWwsIERQSFlfTV9QUkdfSFNfVFJBSUwpOwor CXBoeV93cml0ZShwaHksIHByaXYtPmNmZy5tY19wcmdfaHNfdHJhaWwsIERQSFlfTUNfUFJHX0hT X1RSQUlMKTsKKwlwaHlfd3JpdGUocGh5LCBwcml2LT5jZmcucnhoc19zZXR0bGUsIHByaXYtPmRl dmRhdGEtPnJlZ19yeGhzX3NldHRsZSk7Cit9CisKK3N0YXRpYyBpbnQgbWl4ZWxfZHBoeV9zZXRf cGxsX3BhcmFtcyhzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IG1peGVsX2RwaHlfcHJpdiAq cHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShwaHktPmRldi5wYXJlbnQpOworCisJaWYgKHByaXYtPmNm Zy5jbSA8IDE2IHx8IHByaXYtPmNmZy5jbSA+IDI1NSB8fAorCSAgICBwcml2LT5jZmcuY24gPCAx IHx8IHByaXYtPmNmZy5jbiA+IDMyIHx8CisJICAgIHByaXYtPmNmZy5jbyA8IDEgfHwgcHJpdi0+ Y2ZnLmNvID4gOCkgeworCQlkZXZfZXJyKCZwaHktPmRldiwgIkludmFsaWQgQ00vQ04vQ08gdmFs dWVzISAoJXUvJXUvJXUpXG4iLAorCQkJcHJpdi0+Y2ZnLmNtLCBwcml2LT5jZmcuY24sIHByaXYt PmNmZy5jbyk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlkZXZfZGJnKCZwaHktPmRldiwgIlVz aW5nIENNOiV1IENOOiV1IENPOiV1XG4iLAorCQlwcml2LT5jZmcuY20sIHByaXYtPmNmZy5jbiwg cHJpdi0+Y2ZnLmNvKTsKKwlwaHlfd3JpdGUocGh5LCBDTShwcml2LT5jZmcuY20pLCBEUEhZX0NN KTsKKwlwaHlfd3JpdGUocGh5LCBDTihwcml2LT5jZmcuY24pLCBEUEhZX0NOKTsKKwlwaHlfd3Jp dGUocGh5LCBDTyhwcml2LT5jZmcuY28pLCBEUEhZX0NPKTsKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBtaXhlbF9kcGh5X2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksIHVuaW9uIHBoeV9j b25maWd1cmVfb3B0cyAqb3B0cykKK3sKKwlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpwcml2ID0g cGh5X2dldF9kcnZkYXRhKHBoeSk7CisJc3RydWN0IG1peGVsX2RwaHlfY2ZnIGNmZyA9IHsgMCB9 OworCWludCByZXQ7CisKKwlyZXQgPSBtaXhlbF9kcGh5X2NvbmZpZ19mcm9tX29wdHMocGh5LCAm b3B0cy0+bWlwaV9kcGh5LCAmY2ZnKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyog VXBkYXRlIHRoZSBjb25maWd1cmF0aW9uICovCisJbWVtY3B5KCZwcml2LT5jZmcsICZjZmcsIHNp emVvZihzdHJ1Y3QgbWl4ZWxfZHBoeV9jZmcpKTsKKworCXBoeV93cml0ZShwaHksIDB4MDAsIERQ SFlfTE9DS19CWVApOworCXBoeV93cml0ZShwaHksIDB4MDEsIHByaXYtPmRldmRhdGEtPnJlZ190 eF9yY2FsKTsKKwlwaHlfd3JpdGUocGh5LCAweDAwLCBwcml2LT5kZXZkYXRhLT5yZWdfYXV0b19w ZF9lbik7CisJcGh5X3dyaXRlKHBoeSwgMHgwMiwgcHJpdi0+ZGV2ZGF0YS0+cmVnX3J4bHBycCk7 CisJcGh5X3dyaXRlKHBoeSwgMHgwMiwgcHJpdi0+ZGV2ZGF0YS0+cmVnX3J4Y2RycCk7CisJcGh5 X3dyaXRlKHBoeSwgMHgyNSwgRFBIWV9UU1QpOworCisJbWl4ZWxfcGh5X3NldF9oc190aW1pbmdz KHBoeSk7CisJcmV0ID0gbWl4ZWxfZHBoeV9zZXRfcGxsX3BhcmFtcyhwaHkpOworCWlmIChyZXQg PCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWl4ZWxf ZHBoeV92YWxpZGF0ZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSwgaW50IHN1 Ym1vZGUsCisJCQkgICAgICAgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQoreworCXN0 cnVjdCBtaXhlbF9kcGh5X2NmZyBjZmcgPSB7IDAgfTsKKworCWlmIChtb2RlICE9IFBIWV9NT0RF X01JUElfRFBIWSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gbWl4ZWxfZHBoeV9jb25m aWdfZnJvbV9vcHRzKHBoeSwgJm9wdHMtPm1pcGlfZHBoeSwgJmNmZyk7Cit9CisKK3N0YXRpYyBp bnQgbWl4ZWxfZHBoeV9pbml0KHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlwaHlfd3JpdGUocGh5LCBQ V1JfT0ZGLCBEUEhZX1BEX1BMTCk7CisJcGh5X3dyaXRlKHBoeSwgUFdSX09GRiwgRFBIWV9QRF9E UEhZKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1peGVsX2RwaHlfZXhpdChzdHJ1 Y3QgcGh5ICpwaHkpCit7CisJcGh5X3dyaXRlKHBoeSwgMCwgRFBIWV9DTSk7CisJcGh5X3dyaXRl KHBoeSwgMCwgRFBIWV9DTik7CisJcGh5X3dyaXRlKHBoeSwgMCwgRFBIWV9DTyk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBtaXhlbF9kcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBo eSkKK3sKKwlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBo eSk7CisJdTMyIGxvY2tlZDsKKwlpbnQgcmV0OworCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxl KHByaXYtPnBoeV9yZWZfY2xrKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXBo eV93cml0ZShwaHksIFBXUl9PTiwgRFBIWV9QRF9QTEwpOworCXJldCA9IHJlZ21hcF9yZWFkX3Bv bGxfdGltZW91dChwcml2LT5yZWdtYXAsIERQSFlfTE9DSywgbG9ja2VkLAorCQkJCSAgICAgICBs b2NrZWQsIFBMTF9MT0NLX1NMRUVQLAorCQkJCSAgICAgICBQTExfTE9DS19USU1FT1VUKTsKKwlp ZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKCZwaHktPmRldiwgIkNvdWxkIG5vdCBnZXQgRFBIWSBs b2NrICglZCkhXG4iLCByZXQpOworCQlnb3RvIGNsb2NrX2Rpc2FibGU7CisJfQorCXBoeV93cml0 ZShwaHksIFBXUl9PTiwgRFBIWV9QRF9EUEhZKTsKKworCXJldHVybiAwOworY2xvY2tfZGlzYWJs ZToKKwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+cGh5X3JlZl9jbGspOworCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyBpbnQgbWl4ZWxfZHBoeV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5 KQoreworCXN0cnVjdCBtaXhlbF9kcGh5X3ByaXYgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5 KTsKKworCXBoeV93cml0ZShwaHksIFBXUl9PRkYsIERQSFlfUERfUExMKTsKKwlwaHlfd3JpdGUo cGh5LCBQV1JfT0ZGLCBEUEhZX1BEX0RQSFkpOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHBy aXYtPnBoeV9yZWZfY2xrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IHBoeV9vcHMgbWl4ZWxfZHBoeV9waHlfb3BzID0geworCS5pbml0ID0gbWl4ZWxfZHBoeV9pbml0 LAorCS5leGl0ID0gbWl4ZWxfZHBoeV9leGl0LAorCS5wb3dlcl9vbiA9IG1peGVsX2RwaHlfcG93 ZXJfb24sCisJLnBvd2VyX29mZiA9IG1peGVsX2RwaHlfcG93ZXJfb2ZmLAorCS5jb25maWd1cmUg PSBtaXhlbF9kcGh5X2NvbmZpZ3VyZSwKKwkudmFsaWRhdGUgPSBtaXhlbF9kcGh5X3ZhbGlkYXRl LAorCS5vd25lciA9IFRISVNfTU9EVUxFLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgbWl4ZWxfZHBoeV9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAiZnNs LGlteDhtcS1taXBpLWRwaHkiLAorCSAgLmRhdGEgPSAmbWl4ZWxfZHBoeV9kZXZkYXRhW01JWEVM X0lNWDhNUV0gfSwKKwl7IC8qIHNlbnRpbmVsICovIH0sCit9OworTU9EVUxFX0RFVklDRV9UQUJM RShvZiwgbWl4ZWxfZHBoeV9vZl9tYXRjaCk7CisKK3N0YXRpYyBpbnQgbWl4ZWxfZHBoeV9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9 ICZwZGV2LT5kZXY7CisJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKKwlz dHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7CisJc3RydWN0IG1peGVsX2RwaHlfcHJp diAqcHJpdjsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlzdHJ1Y3QgcGh5ICpwaHk7CisJdm9p ZCBfX2lvbWVtICpiYXNlOworCisJaWYgKCFucCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlwcml2 ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFw cml2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXByaXYtPmRldmRhdGEgPSBvZl9kZXZpY2VfZ2V0 X21hdGNoX2RhdGEoJnBkZXYtPmRldik7CisJaWYgKCFwcml2LT5kZXZkYXRhKQorCQlyZXR1cm4g LUVJTlZBTDsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNF X01FTSwgMCk7CisJYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7CisJaWYg KElTX0VSUihiYXNlKSkKKwkJcmV0dXJuIFBUUl9FUlIoYmFzZSk7CisKKwlwcml2LT5yZWdtYXAg PSBkZXZtX3JlZ21hcF9pbml0X21taW8oJnBkZXYtPmRldiwgYmFzZSwKKwkJCQkJICAgICAmbWl4 ZWxfZHBoeV9yZWdtYXBfY29uZmlnKTsKKwlpZiAoSVNfRVJSKHByaXYtPnJlZ21hcCkpIHsKKwkJ ZGV2X2VycihkZXYsICJDb3VsZG4ndCBjcmVhdGUgdGhlIERQSFkgcmVnbWFwXG4iKTsKKwkJcmV0 dXJuIFBUUl9FUlIocHJpdi0+cmVnbWFwKTsKKwl9CisKKwlwcml2LT5waHlfcmVmX2NsayA9IGRl dm1fY2xrX2dldCgmcGRldi0+ZGV2LCAicGh5X3JlZiIpOworCWlmIChJU19FUlIocHJpdi0+cGh5 X3JlZl9jbGspKSB7CisJCWRldl9lcnIoZGV2LCAiTm8gcGh5X3JlZiBjbG9jayBmb3VuZFxuIik7 CisJCXJldHVybiBQVFJfRVJSKHByaXYtPnBoeV9yZWZfY2xrKTsKKwl9CisJZGV2X2RiZyhkZXYs ICJwaHlfcmVmIGNsb2NrIHJhdGU6ICVsdVxuIiwKKwkJY2xrX2dldF9yYXRlKHByaXYtPnBoeV9y ZWZfY2xrKSk7CisKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBwcml2KTsKKworCXBoeSA9IGRldm1f cGh5X2NyZWF0ZShkZXYsIG5wLCAmbWl4ZWxfZHBoeV9waHlfb3BzKTsKKwlpZiAoSVNfRVJSKHBo eSkpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gY3JlYXRlIHBoeSAlbGRcbiIsIFBUUl9F UlIocGh5KSk7CisJCXJldHVybiBQVFJfRVJSKHBoeSk7CisJfQorCXBoeV9zZXRfZHJ2ZGF0YShw aHksIHByaXYpOworCisJcGh5X3Byb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0 ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTsKKworCXJldHVybiBQVFJfRVJSX09SX1pFUk8o cGh5X3Byb3ZpZGVyKTsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWl4ZWxf ZHBoeV9kcml2ZXIgPSB7CisJLnByb2JlCT0gbWl4ZWxfZHBoeV9wcm9iZSwKKwkuZHJpdmVyID0g eworCQkubmFtZSA9ICJtaXhlbC1taXBpLWRwaHkiLAorCQkub2ZfbWF0Y2hfdGFibGUJPSBtaXhl bF9kcGh5X29mX21hdGNoLAorCX0KK307Cittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1peGVsX2Rw aHlfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiTlhQIFNlbWljb25kdWN0b3IiKTsKK01PRFVM RV9ERVNDUklQVElPTigiTWl4ZWwgTUlQSS1EU0kgUEhZIGRyaXZlciIpOworTU9EVUxFX0xJQ0VO U0UoIkdQTCIpOwotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtl cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=