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=-9.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, 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 4591FC433DF for ; Fri, 19 Jun 2020 10:00:56 +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 10C9620739 for ; Fri, 19 Jun 2020 10:00:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="uzQg21JK"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VY7o0Hmu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 10C9620739 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com 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:Cc: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:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XZythCq/etXuLdnhHtqRlWqweYCasPRa8fphcMrIjYU=; b=uzQg21JK8qXUG2 26BmPkVrybljsplWyoAMuYAYBS2dHK90aA636BaUPafSEOsgX4xGxVHnctQthjtZziWhpiiyBwKgK gRykF/juMPRxU5zd16Y5BRnYT9AV4EjdDlUMnC6u6u8R1RtR4ymSwJeyzJXZ6HXzQsS35OrmrKjG/ xkymODXzalwA8Jrucy4l2Yf1+jI1r8Hsr1gxSAkhf0JLO8ZLAtKCmk8+C+wNBVOEVQUA15UVqWPkY LIsqx5heoAtb343/kt+mj2+QExijgeepUqabdcZfAs/u+tn+DXTEss6ISCIL7O2+vuPcxebkEuIlP POAUUjp0nLJmOgWQm5yw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jmDpO-0003eA-KQ; Fri, 19 Jun 2020 10:00:54 +0000 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jmDpC-0003UL-K8 for linux-arm-kernel@lists.infradead.org; Fri, 19 Jun 2020 10:00:44 +0000 Received: by mail-wr1-x442.google.com with SMTP id l10so9066268wrr.10 for ; Fri, 19 Jun 2020 03:00:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DktOc35ZNzDaAl6dQRFfvrmKAvQpcNwqi+/fclIu7Wo=; b=VY7o0Hmurzaj/OcVSLz1fyu35jIKf3MJVAi2JfzYiVmS674Q8m+6xg+uQDaZxc0WFp S6OzSbdFzbmS9RKdo27jevg6UNx5suSbL0kL/HyWqZxyLdKo76j9xd5HXwMAdW1SbtrN mYzk+FyksAV/q0tfFxiVlwljjlXce6JlFTdkZrmZafP8Yi+fKzKDSzYRQep/hkYPyM+R WXwZ/0f9n/5y6EFAO0Y95zFsvbxTfmma7MJDAhqPVGiynSy0RFi3ZgdqsKIhwclVCzBN jSDu5B8NV6NwEG95ZjPhaU+xQB9HCtsc33SFGMwYG5I3pcEauZtapKkoFV++KibGHZd1 BO/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DktOc35ZNzDaAl6dQRFfvrmKAvQpcNwqi+/fclIu7Wo=; b=m1Nm3hPz3gJmlCHppxV/xZ1HfCFq/75Y1+PWWMV/Sbv3UVV4igRAHuKiNTwFg2pPJK mF6gdWkT9J0wEkTfffR57h/x9V6TQjRy3cXXC93x2RmsQodj6gPgTo1s+kbfpmrv0G3n H+H1/Yv3Mo4+sVnY+8i0A+7hQ0q4mpAYsfFZpvVuLGtaY6c0KLzwF6N1IDE5OiSUyVxh vioD+ygC8NOQ0ta3Km9wWBNRUblO+M+e4f9IgIWbX7cW0xmZr2cp7bm4SoIVjJEOcXVR WKc32Fuh7GB4IVJZ5PMzRwvojpNkdO06vdoHDeQT8j0xkGV31QOnKeWUzo3hv4cmXnk9 iybw== X-Gm-Message-State: AOAM531GkMsUf7BVSEFdZim1etbv3Bd/SU0NnOfe02nTo/M5Sqy1neHh J+6bpdfb1b8JDbsqNakYjjM= X-Google-Smtp-Source: ABdhPJyG63tNODe1XWiqnNfQ7DaWq0tGbHOLWiSRX+qF+zSNy6YL/AzUFuTm4pfbTdPK2uNJpyXxCQ== X-Received: by 2002:adf:c382:: with SMTP id p2mr3148699wrf.283.1592560841210; Fri, 19 Jun 2020 03:00:41 -0700 (PDT) Received: from skynet.lan (90.red-88-20-62.staticip.rima-tde.net. [88.20.62.90]) by smtp.gmail.com with ESMTPSA id v6sm7164961wrf.61.2020.06.19.03.00.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Jun 2020 03:00:40 -0700 (PDT) From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= To: simon@fire.lp0.eu, jonas.gorski@gmail.com, kishon@ti.com, vkoul@kernel.org, robh+dt@kernel.org, f.fainelli@gmail.com, bcm-kernel-feedback-list@broadcom.com, p.zabel@pengutronix.de, krzk@kernel.org, gregkh@linuxfoundation.org, alcooperx@gmail.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 2/2] phy: bcm63xx-usbh: Add BCM63xx USBH driver Date: Fri, 19 Jun 2020 12:00:35 +0200 Message-Id: <20200619100035.4032596-3-noltari@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619100035.4032596-1-noltari@gmail.com> References: <20200619100035.4032596-1-noltari@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200619_030042_836718_2E56D7E4 X-CRM114-Status: GOOD ( 19.26 ) 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: , Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= 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 QWRkIEJDTTYzeHggVVNCSCBQSFkgZHJpdmVyIGZvciBCTUlQUy4KClNpZ25lZC1vZmYtYnk6IMOB bHZhcm8gRmVybsOhbmRleiBSb2phcyA8bm9sdGFyaUBnbWFpbC5jb20+Ci0tLQogdjU6IHVzZSBk ZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZS4KIHY0OiBzZXZlcmFsIGltcHJvdmVtZW50 czoKICAtIFVzZSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UuCiAgLSBDb2RlIGNsZWFu dXBzLgogIC0gSW1wcm92ZSBkZXZpY2UgbW9kZSBjb25maWc6CiAgICAtIE1vdmUgVVNCSF9TV0FQ X0NPTlRST0wgZGV2aWNlIG1vZGUgdmFsdWUgdG8gdmFyaWFudCB2YXJpYWJsZS4KICAgIC0gU2V0 IFVTQkhfVVRNSV9DT05UUk9MMSByZWdpc3RlciB2YWx1ZSAodmFyaWFudCB2YXJpYWJsZSkuCiB2 MzogaW50cm9kdWNlIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IEZsb3JpYW46CiAgLSBBZGQgc3VwcG9y dCBmb3IgZGV2aWNlIG1vZGUuCiB2MjogaW50cm9kdWNlIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IEZs b3JpYW46CiAgLSBEcm9wIE9GIGRlcGVuZGVuY3kgKHVzZSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEp LgogIC0gRHJvcCBfX2luaXRjb25zdCBmcm9tIHZhcmlhbnQgdGFibGVzLgogIC0gVXNlIGRldm1f Y2xrX2dldF9vcHRpb25hbC4KCiBkcml2ZXJzL3BoeS9icm9hZGNvbS9LY29uZmlnICAgICAgICAg ICAgfCAgIDkgKwogZHJpdmVycy9waHkvYnJvYWRjb20vTWFrZWZpbGUgICAgICAgICAgIHwgICAx ICsKIGRyaXZlcnMvcGh5L2Jyb2FkY29tL3BoeS1iY202M3h4LXVzYmguYyB8IDQ1NyArKysrKysr KysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNDY3IGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BoeS9icm9hZGNvbS9waHktYmNtNjN4eC11c2JoLmMK CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9icm9hZGNvbS9LY29uZmlnIGIvZHJpdmVycy9waHkv YnJvYWRjb20vS2NvbmZpZwppbmRleCBiMjlmMTFjMTkxNTUuLmE3ODg5ZGY4YzU0MSAxMDA2NDQK LS0tIGEvZHJpdmVycy9waHkvYnJvYWRjb20vS2NvbmZpZworKysgYi9kcml2ZXJzL3BoeS9icm9h ZGNvbS9LY29uZmlnCkBAIC0yLDYgKzIsMTUgQEAKICMKICMgUGh5IGRyaXZlcnMgZm9yIEJyb2Fk Y29tIHBsYXRmb3JtcwogIworY29uZmlnIFBIWV9CQ002M1hYX1VTQkgKKwl0cmlzdGF0ZSAiQkNN NjN4eCBVU0JIIFBIWSBkcml2ZXIiCisJZGVwZW5kcyBvbiBCTUlQU19HRU5FUklDIHx8IENPTVBJ TEVfVEVTVAorCXNlbGVjdCBHRU5FUklDX1BIWQorCWRlZmF1bHQgQk1JUFNfR0VORVJJQworCWhl bHAKKwkgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIEJDTTYzeHggVVNCSCBQSFkgZHJpdmVy LgorCSAgSWYgdW5zdXJlLCBzYXkgTi4KKwogY29uZmlnIFBIWV9DWUdOVVNfUENJRQogCXRyaXN0 YXRlICJCcm9hZGNvbSBDeWdudXMgUENJZSBQSFkgZHJpdmVyIgogCWRlcGVuZHMgb24gT0YgJiYg KEFSQ0hfQkNNX0NZR05VUyB8fCBDT01QSUxFX1RFU1QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bo eS9icm9hZGNvbS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L2Jyb2FkY29tL01ha2VmaWxlCmluZGV4 IGM3OGRlNTQ2MTM1Yy4uNzAyNDEyN2Y4NmFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9icm9h ZGNvbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3BoeS9icm9hZGNvbS9NYWtlZmlsZQpAQCAtMSw0 ICsxLDUgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKK29iai0kKENPTkZJ R19QSFlfQkNNNjNYWF9VU0JIKQkJKz0gcGh5LWJjbTYzeHgtdXNiaC5vCiBvYmotJChDT05GSUdf UEhZX0NZR05VU19QQ0lFKQkJKz0gcGh5LWJjbS1jeWdudXMtcGNpZS5vCiBvYmotJChDT05GSUdf QkNNX0tPTkFfVVNCMl9QSFkpCQkrPSBwaHktYmNtLWtvbmEtdXNiMi5vCiBvYmotJChDT05GSUdf UEhZX0JDTV9OU19VU0IyKQkJKz0gcGh5LWJjbS1ucy11c2IyLm8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGh5L2Jyb2FkY29tL3BoeS1iY202M3h4LXVzYmguYyBiL2RyaXZlcnMvcGh5L2Jyb2FkY29t L3BoeS1iY202M3h4LXVzYmguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjc5ZjkxM2Q4NmRlZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvcGh5L2Jyb2FkY29t L3BoeS1iY202M3h4LXVzYmguYwpAQCAtMCwwICsxLDQ1NyBAQAorLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKKy8qCisgKiBCQ002MzI4IFVTQkggUEhZIENvbnRy b2xsZXIgRHJpdmVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwIMOBbHZhcm8gRmVybsOhbmRl eiBSb2phcyA8bm9sdGFyaUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgU2ltb24g QXJsb3R0IDxzaW1vbkBmaXJlLmxwMC5ldT4KKyAqCisgKiBEZXJpdmVkIGZyb20gYmNtOTYzeHhf NC4xMkwuMDZCX2NvbnN1bWVyL2tlcm5lbC9saW51eC9hcmNoL21pcHMvYmNtOTYzeHgvc2V0dXAu YzoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBCcm9hZGNvbSBDb3Jwb3JhdGlvbgorICoKKyAqIERl cml2ZWQgZnJvbSBPcGVuV3J0IHBhdGNoZXM6CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSm9uYXMg R29yc2tpIDxqb25hcy5nb3Jza2lAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEzIEZs b3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAy MDA4IE1heGltZSBCaXpvbiA8bWJpem9uQGZyZWVib3guZnI+CisgKi8KKworI2luY2x1ZGUgPGxp bnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3Jt X2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+CisKKy8qIFVTQkggY29udHJvbCBy ZWdpc3RlciBvZmZzZXRzICovCitlbnVtIHVzYmhfcmVncyB7CisJVVNCSF9CUlRfQ09OVFJPTDEg PSAwLAorCVVTQkhfQlJUX0NPTlRST0wyLAorCVVTQkhfQlJUX1NUQVRVUzEsCisJVVNCSF9CUlRf U1RBVFVTMiwKKwlVU0JIX1VUTUlfQ09OVFJPTDEsCisjZGVmaW5lICAgVVNCSF9VQzFfREVWX01P REVfU0VMCQlCSVQoMCkKKwlVU0JIX1RFU1RfUE9SVF9DT05UUk9MLAorCVVTQkhfUExMX0NPTlRS T0wxLAorI2RlZmluZSAgIFVTQkhfUExMQ19SRUZDTEtTRUxfU0hJRlQJMAorI2RlZmluZSAgIFVT QkhfUExMQ19SRUZDTEtTRUxfTUFTSwkoMHgzIDw8IFVTQkhfUExMQ19SRUZDTEtTRUxfU0hJRlQp CisjZGVmaW5lICAgVVNCSF9QTExDX0NMS1NFTF9TSElGVAkyCisjZGVmaW5lICAgVVNCSF9QTExD X0NMS1NFTF9NQVNLCQkoMHgzIDw8IFVTQkhfUExMQ19DTEtTRUxfTUFTSykKKyNkZWZpbmUgICBV U0JIX1BMTENfWFRBTF9QV1JEV05CCUJJVCg0KQorI2RlZmluZSAgIFVTQkhfUExMQ19QTExfUFdS RFdOQgkJQklUKDUpCisjZGVmaW5lICAgVVNCSF9QTExDX1BMTF9DQUxFTgkJQklUKDYpCisjZGVm aW5lICAgVVNCSF9QTExDX1BIWVBMTF9CWVAJCUJJVCg3KQorI2RlZmluZSAgIFVTQkhfUExMQ19Q TExfUkVTRVQJCUJJVCg4KQorI2RlZmluZSAgIFVTQkhfUExMQ19QTExfSUREUV9QV1JETglCSVQo OSkKKyNkZWZpbmUgICBVU0JIX1BMTENfUExMX1BXUkROX0RFTEFZCUJJVCgxMCkKKyNkZWZpbmUg ICBVU0JIXzYzMThfUExMQ19QTExfU1VTUEVORF9FTglCSVQoMjcpCisjZGVmaW5lICAgVVNCSF82 MzE4X1BMTENfUEhZUExMX0JZUAlCSVQoMjkpCisjZGVmaW5lICAgVVNCSF82MzE4X1BMTENfUExM X1JFU0VUCUJJVCgzMCkKKyNkZWZpbmUgICBVU0JIXzYzMThfUExMQ19QTExfSUREUV9QV1JETglC SVQoMzEpCisJVVNCSF9TV0FQX0NPTlRST0wsCisjZGVmaW5lICAgVVNCSF9TQ19PSENJX0RBVEFf U1dBUAlCSVQoMCkKKyNkZWZpbmUgICBVU0JIX1NDX09IQ0lfRU5ESUFOX1NXQVAJQklUKDEpCisj ZGVmaW5lICAgVVNCSF9TQ19PSENJX0xPR0lDQUxfQUREUl9FTglCSVQoMikKKyNkZWZpbmUgICBV U0JIX1NDX0VIQ0lfREFUQV9TV0FQCUJJVCgzKQorI2RlZmluZSAgIFVTQkhfU0NfRUhDSV9FTkRJ QU5fU1dBUAlCSVQoNCkKKyNkZWZpbmUgICBVU0JIX1NDX0VIQ0lfTE9HSUNBTF9BRERSX0VOCUJJ VCg1KQorI2RlZmluZSAgIFVTQkhfU0NfVVNCX0RFVklDRV9TRUwJQklUKDYpCisJVVNCSF9HRU5F UklDX0NPTlRST0wsCisjZGVmaW5lICAgVVNCSF9HQ19QTExfU1VTUEVORF9FTglCSVQoMSkKKwlV U0JIX0ZSQU1FX0FESlVTVF9WQUxVRSwKKwlVU0JIX1NFVFVQLAorI2RlZmluZSAgIFVTQkhfU19J T0MJCQlCSVQoNCkKKyNkZWZpbmUgICBVU0JIX1NfSVBQCQkJQklUKDUpCisJVVNCSF9NRElPLAor CVVTQkhfTURJTzMyLAorCVVTQkhfVVNCX1NJTV9DT05UUk9MLAorI2RlZmluZSAgIFVTQkhfVVND X0xBRERSX1NFTAkJQklUKDUpCisKKwlfX1VTQkhfRU5VTV9TSVpFCit9OworCitzdHJ1Y3QgYmNt NjN4eF91c2JoX3BoeV92YXJpYW50IHsKKwkvKiBSZWdpc3RlcnMgKi8KKwlsb25nIHJlZ3NbX19V U0JIX0VOVU1fU0laRV07CisKKwkvKiBQTExDIGJpdHMgdG8gc2V0L2NsZWFyIGZvciBwb3dlciBv biAqLworCXUzMiBwb3dlcl9wbGxjX2NscjsKKwl1MzIgcG93ZXJfcGxsY19zZXQ7CisKKwkvKiBT ZXR1cCBiaXRzIHRvIHNldC9jbGVhciBmb3IgcG93ZXIgb24gKi8KKwl1MzIgc2V0dXBfY2xyOwor CXUzMiBzZXR1cF9zZXQ7CisKKwkvKiBTd2FwIENvbnRyb2wgYml0cyB0byBzZXQgKi8KKwl1MzIg c3dhcGN0bF9kZXZfc2V0OworCisJLyogVGVzdCBQb3J0IENvbnRyb2wgdmFsdWUgdG8gc2V0IGlm IG5vbi16ZXJvICovCisJdTMyIHRwY192YWw7CisKKwkvKiBVU0IgU2ltIENvbnRyb2wgYml0cyB0 byBzZXQgKi8KKwl1MzIgdXNjX3NldDsKKworCS8qIFVUTUkgQ29udHJvbCAxIGJpdHMgdG8gc2V0 ICovCisJdTMyIHV0bWljdGwxX2Rldl9zZXQ7Cit9OworCitzdHJ1Y3QgYmNtNjN4eF91c2JoX3Bo eSB7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCXN0cnVjdCBjbGsgKnVzYmhfY2xrOworCXN0cnVj dCBjbGsgKnVzYl9yZWZfY2xrOworCXN0cnVjdCByZXNldF9jb250cm9sICpyZXNldDsKKwljb25z dCBzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50ICp2YXJpYW50OworCWJvb2wgZGV2aWNl X21vZGU7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhfdXNiaF9waHlfdmFyaWFu dCB1c2JoX2JjbTYzMTggPSB7CisJLnJlZ3MgPSB7CisJCVtVU0JIX0JSVF9DT05UUk9MMV0gPSAt MSwKKwkJW1VTQkhfQlJUX0NPTlRST0wyXSA9IC0xLAorCQlbVVNCSF9CUlRfU1RBVFVTMV0gPSAt MSwKKwkJW1VTQkhfQlJUX1NUQVRVUzJdID0gLTEsCisJCVtVU0JIX1VUTUlfQ09OVFJPTDFdID0g MHgyYywKKwkJW1VTQkhfVEVTVF9QT1JUX0NPTlRST0xdID0gMHgxYywKKwkJW1VTQkhfUExMX0NP TlRST0wxXSA9IDB4MDQsCisJCVtVU0JIX1NXQVBfQ09OVFJPTF0gPSAweDBjLAorCQlbVVNCSF9H RU5FUklDX0NPTlRST0xdID0gLTEsCisJCVtVU0JIX0ZSQU1FX0FESlVTVF9WQUxVRV0gPSAweDA4 LAorCQlbVVNCSF9TRVRVUF0gPSAweDAwLAorCQlbVVNCSF9NRElPXSA9IDB4MTQsCisJCVtVU0JI X01ESU8zMl0gPSAweDE4LAorCQlbVVNCSF9VU0JfU0lNX0NPTlRST0xdID0gMHgyMCwKKwl9LAor CS5wb3dlcl9wbGxjX2NsciA9IFVTQkhfNjMxOF9QTExDX1BMTF9JRERRX1BXUkROLAorCS5wb3dl cl9wbGxjX3NldCA9IFVTQkhfNjMxOF9QTExDX1BMTF9TVVNQRU5EX0VOLAorCS5zZXR1cF9zZXQg PSBVU0JIX1NfSU9DLAorCS5zd2FwY3RsX2Rldl9zZXQgPSBVU0JIX1NDX1VTQl9ERVZJQ0VfU0VM LAorCS51c2Nfc2V0ID0gVVNCSF9VU0NfTEFERFJfU0VMLAorCS51dG1pY3RsMV9kZXZfc2V0ID0g VVNCSF9VQzFfREVWX01PREVfU0VMLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBiY202M3h4 X3VzYmhfcGh5X3ZhcmlhbnQgdXNiaF9iY202MzI4ID0geworCS5yZWdzID0geworCQlbVVNCSF9C UlRfQ09OVFJPTDFdID0gMHgwMCwKKwkJW1VTQkhfQlJUX0NPTlRST0wyXSA9IDB4MDQsCisJCVtV U0JIX0JSVF9TVEFUVVMxXSA9IDB4MDgsCisJCVtVU0JIX0JSVF9TVEFUVVMyXSA9IDB4MGMsCisJ CVtVU0JIX1VUTUlfQ09OVFJPTDFdID0gMHgxMCwKKwkJW1VTQkhfVEVTVF9QT1JUX0NPTlRST0xd ID0gMHgxNCwKKwkJW1VTQkhfUExMX0NPTlRST0wxXSA9IDB4MTgsCisJCVtVU0JIX1NXQVBfQ09O VFJPTF0gPSAweDFjLAorCQlbVVNCSF9HRU5FUklDX0NPTlRST0xdID0gMHgyMCwKKwkJW1VTQkhf RlJBTUVfQURKVVNUX1ZBTFVFXSA9IDB4MjQsCisJCVtVU0JIX1NFVFVQXSA9IDB4MjgsCisJCVtV U0JIX01ESU9dID0gMHgyYywKKwkJW1VTQkhfTURJTzMyXSA9IDB4MzAsCisJCVtVU0JIX1VTQl9T SU1fQ09OVFJPTF0gPSAweDM0LAorCX0sCisJLnNldHVwX3NldCA9IFVTQkhfU19JT0MsCisJLnN3 YXBjdGxfZGV2X3NldCA9IFVTQkhfU0NfVVNCX0RFVklDRV9TRUwsCisJLnV0bWljdGwxX2Rldl9z ZXQgPSBVU0JIX1VDMV9ERVZfTU9ERV9TRUwsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJj bTYzeHhfdXNiaF9waHlfdmFyaWFudCB1c2JoX2JjbTYzNTggPSB7CisJLnJlZ3MgPSB7CisJCVtV U0JIX0JSVF9DT05UUk9MMV0gPSAtMSwKKwkJW1VTQkhfQlJUX0NPTlRST0wyXSA9IC0xLAorCQlb VVNCSF9CUlRfU1RBVFVTMV0gPSAtMSwKKwkJW1VTQkhfQlJUX1NUQVRVUzJdID0gLTEsCisJCVtV U0JIX1VUTUlfQ09OVFJPTDFdID0gLTEsCisJCVtVU0JIX1RFU1RfUE9SVF9DT05UUk9MXSA9IDB4 MjQsCisJCVtVU0JIX1BMTF9DT05UUk9MMV0gPSAtMSwKKwkJW1VTQkhfU1dBUF9DT05UUk9MXSA9 IDB4MDAsCisJCVtVU0JIX0dFTkVSSUNfQ09OVFJPTF0gPSAtMSwKKwkJW1VTQkhfRlJBTUVfQURK VVNUX1ZBTFVFXSA9IC0xLAorCQlbVVNCSF9TRVRVUF0gPSAtMSwKKwkJW1VTQkhfTURJT10gPSAt MSwKKwkJW1VTQkhfTURJTzMyXSA9IC0xLAorCQlbVVNCSF9VU0JfU0lNX0NPTlRST0xdID0gLTEs CisJfSwKKwkvKgorCSAqIFRoZSBtYWdpYyB2YWx1ZSBjb21lcyBmb3IgdGhlIG9yaWdpbmFsIHZl bmRvciBCU1AKKwkgKiBhbmQgaXMgbmVlZGVkIGZvciBVU0IgdG8gd29yay4gRGF0YXNoZWV0IGRv ZXMgbm90CisJICogaGVscCwgc28gdGhlIG1hZ2ljIHZhbHVlIGlzIHVzZWQgYXMtaXMuCisJICov CisJLnRwY192YWwgPSAweDFjMDAyMCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNjN4 eF91c2JoX3BoeV92YXJpYW50IHVzYmhfYmNtNjM2OCA9IHsKKwkucmVncyA9IHsKKwkJW1VTQkhf QlJUX0NPTlRST0wxXSA9IDB4MDAsCisJCVtVU0JIX0JSVF9DT05UUk9MMl0gPSAweDA0LAorCQlb VVNCSF9CUlRfU1RBVFVTMV0gPSAweDA4LAorCQlbVVNCSF9CUlRfU1RBVFVTMl0gPSAweDBjLAor CQlbVVNCSF9VVE1JX0NPTlRST0wxXSA9IDB4MTAsCisJCVtVU0JIX1RFU1RfUE9SVF9DT05UUk9M XSA9IDB4MTQsCisJCVtVU0JIX1BMTF9DT05UUk9MMV0gPSAweDE4LAorCQlbVVNCSF9TV0FQX0NP TlRST0xdID0gMHgxYywKKwkJW1VTQkhfR0VORVJJQ19DT05UUk9MXSA9IC0xLAorCQlbVVNCSF9G UkFNRV9BREpVU1RfVkFMVUVdID0gMHgyNCwKKwkJW1VTQkhfU0VUVVBdID0gMHgyOCwKKwkJW1VT QkhfTURJT10gPSAweDJjLAorCQlbVVNCSF9NRElPMzJdID0gMHgzMCwKKwkJW1VTQkhfVVNCX1NJ TV9DT05UUk9MXSA9IDB4MzQsCisJfSwKKwkucG93ZXJfcGxsY19jbHIgPSBVU0JIX1BMTENfUExM X0lERFFfUFdSRE4gfCBVU0JIX1BMTENfUExMX1BXUkROX0RFTEFZLAorCS5zZXR1cF9zZXQgPSBV U0JIX1NfSU9DLAorCS5zd2FwY3RsX2Rldl9zZXQgPSBVU0JIX1NDX1VTQl9ERVZJQ0VfU0VMLAor CS51dG1pY3RsMV9kZXZfc2V0ID0gVVNCSF9VQzFfREVWX01PREVfU0VMLAorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmhfcGh5X3ZhcmlhbnQgdXNiaF9iY202MzI2OCA9IHsK KwkucmVncyA9IHsKKwkJW1VTQkhfQlJUX0NPTlRST0wxXSA9IDB4MDAsCisJCVtVU0JIX0JSVF9D T05UUk9MMl0gPSAweDA0LAorCQlbVVNCSF9CUlRfU1RBVFVTMV0gPSAweDA4LAorCQlbVVNCSF9C UlRfU1RBVFVTMl0gPSAweDBjLAorCQlbVVNCSF9VVE1JX0NPTlRST0wxXSA9IDB4MTAsCisJCVtV U0JIX1RFU1RfUE9SVF9DT05UUk9MXSA9IDB4MTQsCisJCVtVU0JIX1BMTF9DT05UUk9MMV0gPSAw eDE4LAorCQlbVVNCSF9TV0FQX0NPTlRST0xdID0gMHgxYywKKwkJW1VTQkhfR0VORVJJQ19DT05U Uk9MXSA9IDB4MjAsCisJCVtVU0JIX0ZSQU1FX0FESlVTVF9WQUxVRV0gPSAweDI0LAorCQlbVVNC SF9TRVRVUF0gPSAweDI4LAorCQlbVVNCSF9NRElPXSA9IDB4MmMsCisJCVtVU0JIX01ESU8zMl0g PSAweDMwLAorCQlbVVNCSF9VU0JfU0lNX0NPTlRST0xdID0gMHgzNCwKKwl9LAorCS5wb3dlcl9w bGxjX2NsciA9IFVTQkhfUExMQ19QTExfSUREUV9QV1JETiB8IFVTQkhfUExMQ19QTExfUFdSRE5f REVMQVksCisJLnNldHVwX2NsciA9IFVTQkhfU19JUFAsCisJLnNldHVwX3NldCA9IFVTQkhfU19J T0MsCisJLnN3YXBjdGxfZGV2X3NldCA9IFVTQkhfU0NfVVNCX0RFVklDRV9TRUwsCisJLnV0bWlj dGwxX2Rldl9zZXQgPSBVU0JIX1VDMV9ERVZfTU9ERV9TRUwsCit9OworCitzdGF0aWMgaW5saW5l IGJvb2wgdXNiaF9oYXNfcmVnKHN0cnVjdCBiY202M3h4X3VzYmhfcGh5ICp1c2JoLCBpbnQgcmVn KQoreworCXJldHVybiAodXNiaC0+dmFyaWFudC0+cmVnc1tyZWddID49IDApOworfQorCitzdGF0 aWMgaW5saW5lIHUzMiB1c2JoX3JlYWRsKHN0cnVjdCBiY202M3h4X3VzYmhfcGh5ICp1c2JoLCBp bnQgcmVnKQoreworCXJldHVybiBfX3Jhd19yZWFkbCh1c2JoLT5iYXNlICsgdXNiaC0+dmFyaWFu dC0+cmVnc1tyZWddKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHVzYmhfd3JpdGVsKHN0cnVj dCBiY202M3h4X3VzYmhfcGh5ICp1c2JoLCBpbnQgcmVnLAorCQkJICAgICAgIHUzMiB2YWx1ZSkK K3sKKwlfX3Jhd193cml0ZWwodmFsdWUsIHVzYmgtPmJhc2UgKyB1c2JoLT52YXJpYW50LT5yZWdz W3JlZ10pOworfQorCitzdGF0aWMgaW50IGJjbTYzeHhfdXNiaF9waHlfaW5pdChzdHJ1Y3QgcGh5 ICpwaHkpCit7CisJc3RydWN0IGJjbTYzeHhfdXNiaF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRh dGEocGh5KTsKKwlpbnQgcmV0OworCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHVzYmgtPnVz YmhfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJnBoeS0+ZGV2LCAidW5hYmxlIHRvIGVu YWJsZSB1c2JoIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQg PSBjbGtfcHJlcGFyZV9lbmFibGUodXNiaC0+dXNiX3JlZl9jbGspOworCWlmIChyZXQpIHsKKwkJ ZGV2X2VycigmcGh5LT5kZXYsICJ1bmFibGUgdG8gZW5hYmxlIHVzYl9yZWYgY2xvY2s6ICVkXG4i LCByZXQpOworCQljbGtfZGlzYWJsZV91bnByZXBhcmUodXNiaC0+dXNiaF9jbGspOworCQlyZXR1 cm4gcmV0OworCX0KKworCXJldCA9IHJlc2V0X2NvbnRyb2xfcmVzZXQodXNiaC0+cmVzZXQpOwor CWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGh5LT5kZXYsICJ1bmFibGUgdG8gcmVzZXQgZGV2aWNl OiAlZFxuIiwgcmV0KTsKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHVzYmgtPnVzYl9yZWZfY2xr KTsKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHVzYmgtPnVzYmhfY2xrKTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwkvKiBDb25maWd1cmUgdG8gd29yayBpbiBuYXRpdmUgQ1BVIGVuZGlhbiAqLwor CWlmICh1c2JoX2hhc19yZWcodXNiaCwgVVNCSF9TV0FQX0NPTlRST0wpKSB7CisJCXUzMiB2YWwg PSB1c2JoX3JlYWRsKHVzYmgsIFVTQkhfU1dBUF9DT05UUk9MKTsKKworCQl2YWwgfD0gVVNCSF9T Q19FSENJX0RBVEFfU1dBUDsKKwkJdmFsICY9IH5VU0JIX1NDX0VIQ0lfRU5ESUFOX1NXQVA7CisK KwkJdmFsIHw9IFVTQkhfU0NfT0hDSV9EQVRBX1NXQVA7CisJCXZhbCAmPSB+VVNCSF9TQ19PSENJ X0VORElBTl9TV0FQOworCisJCWlmICh1c2JoLT5kZXZpY2VfbW9kZSAmJiB1c2JoLT52YXJpYW50 LT5zd2FwY3RsX2Rldl9zZXQpCisJCQl2YWwgfD0gdXNiaC0+dmFyaWFudC0+c3dhcGN0bF9kZXZf c2V0OworCisJCXVzYmhfd3JpdGVsKHVzYmgsIFVTQkhfU1dBUF9DT05UUk9MLCB2YWwpOworCX0K KworCWlmICh1c2JoX2hhc19yZWcodXNiaCwgVVNCSF9TRVRVUCkpIHsKKwkJdTMyIHZhbCA9IHVz YmhfcmVhZGwodXNiaCwgVVNCSF9TRVRVUCk7CisKKwkJdmFsIHw9IHVzYmgtPnZhcmlhbnQtPnNl dHVwX3NldDsKKwkJdmFsICY9IH51c2JoLT52YXJpYW50LT5zZXR1cF9jbHI7CisKKwkJdXNiaF93 cml0ZWwodXNiaCwgVVNCSF9TRVRVUCwgdmFsKTsKKwl9CisKKwlpZiAodXNiaF9oYXNfcmVnKHVz YmgsIFVTQkhfVVNCX1NJTV9DT05UUk9MKSkgeworCQl1MzIgdmFsID0gdXNiaF9yZWFkbCh1c2Jo LCBVU0JIX1VTQl9TSU1fQ09OVFJPTCk7CisKKwkJdmFsIHw9IHVzYmgtPnZhcmlhbnQtPnVzY19z ZXQ7CisKKwkJdXNiaF93cml0ZWwodXNiaCwgVVNCSF9VU0JfU0lNX0NPTlRST0wsIHZhbCk7CisJ fQorCisJaWYgKHVzYmgtPnZhcmlhbnQtPnRwY192YWwgJiYKKwkgICAgdXNiaF9oYXNfcmVnKHVz YmgsIFVTQkhfVEVTVF9QT1JUX0NPTlRST0wpKQorCQl1c2JoX3dyaXRlbCh1c2JoLCBVU0JIX1RF U1RfUE9SVF9DT05UUk9MLAorCQkJICAgIHVzYmgtPnZhcmlhbnQtPnRwY192YWwpOworCisJaWYg KHVzYmgtPmRldmljZV9tb2RlICYmCisJICAgIHVzYmhfaGFzX3JlZyh1c2JoLCBVU0JIX1VUTUlf Q09OVFJPTDEpICYmCisJICAgIHVzYmgtPnZhcmlhbnQtPnV0bWljdGwxX2Rldl9zZXQpIHsKKwkJ dTMyIHZhbCA9IHVzYmhfcmVhZGwodXNiaCwgVVNCSF9VVE1JX0NPTlRST0wxKTsKKworCQl2YWwg fD0gdXNiaC0+dmFyaWFudC0+dXRtaWN0bDFfZGV2X3NldDsKKworCQl1c2JoX3dyaXRlbCh1c2Jo LCBVU0JIX1VUTUlfQ09OVFJPTDEsIHZhbCk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgYmNtNjN4eF91c2JoX3BoeV9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3Ry dWN0IGJjbTYzeHhfdXNiaF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKworCWlm ICh1c2JoX2hhc19yZWcodXNiaCwgVVNCSF9QTExfQ09OVFJPTDEpKSB7CisJCXUzMiB2YWwgPSB1 c2JoX3JlYWRsKHVzYmgsIFVTQkhfUExMX0NPTlRST0wxKTsKKworCQl2YWwgfD0gdXNiaC0+dmFy aWFudC0+cG93ZXJfcGxsY19zZXQ7CisJCXZhbCAmPSB+dXNiaC0+dmFyaWFudC0+cG93ZXJfcGxs Y19jbHI7CisKKwkJdXNiaF93cml0ZWwodXNiaCwgVVNCSF9QTExfQ09OVFJPTDEsIHZhbCk7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmNtNjN4eF91c2JoX3BoeV9wb3dlcl9v ZmYoc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBiY202M3h4X3VzYmhfcGh5ICp1c2JoID0g cGh5X2dldF9kcnZkYXRhKHBoeSk7CisKKwlpZiAodXNiaF9oYXNfcmVnKHVzYmgsIFVTQkhfUExM X0NPTlRST0wxKSkgeworCQl1MzIgdmFsID0gdXNiaF9yZWFkbCh1c2JoLCBVU0JIX1BMTF9DT05U Uk9MMSk7CisKKwkJdmFsICY9IH51c2JoLT52YXJpYW50LT5wb3dlcl9wbGxjX3NldDsKKwkJdmFs IHw9IHVzYmgtPnZhcmlhbnQtPnBvd2VyX3BsbGNfY2xyOworCisJCXVzYmhfd3JpdGVsKHVzYmgs IFVTQkhfUExMX0NPTlRST0wxLCB2YWwpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IGJjbTYzeHhfdXNiaF9waHlfZXhpdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGJj bTYzeHhfdXNiaF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKworCWNsa19kaXNh YmxlX3VucHJlcGFyZSh1c2JoLT51c2JoX2Nsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHVz YmgtPnVzYl9yZWZfY2xrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IHBoeV9vcHMgYmNtNjN4eF91c2JoX3BoeV9vcHMgPSB7CisJLmV4aXQgPSBiY202M3h4X3VzYmhf cGh5X2V4aXQsCisJLmluaXQgPSBiY202M3h4X3VzYmhfcGh5X2luaXQsCisJLnBvd2VyX29mZiA9 IGJjbTYzeHhfdXNiaF9waHlfcG93ZXJfb2ZmLAorCS5wb3dlcl9vbiA9IGJjbTYzeHhfdXNiaF9w aHlfcG93ZXJfb24sCisJLm93bmVyID0gVEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgc3RydWN0 IHBoeSAqYmNtNjN4eF91c2JoX3BoeV94bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCSAg c3RydWN0IG9mX3BoYW5kbGVfYXJncyAqYXJncykKK3sKKwlzdHJ1Y3QgYmNtNjN4eF91c2JoX3Bo eSAqdXNiaCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJdXNiaC0+ZGV2aWNlX21vZGUgPSAh IWFyZ3MtPmFyZ3NbMF07CisKKwlyZXR1cm4gb2ZfcGh5X3NpbXBsZV94bGF0ZShkZXYsIGFyZ3Mp OworfQorCitzdGF0aWMgaW50IF9faW5pdCBiY202M3h4X3VzYmhfcGh5X3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRl djsKKwlzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeQkqdXNiaDsKKwljb25zdCBzdHJ1Y3QgYmNtNjN4 eF91c2JoX3BoeV92YXJpYW50ICp2YXJpYW50OworCXN0cnVjdCBwaHkgKnBoeTsKKwlzdHJ1Y3Qg cGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7CisKKwl1c2JoID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKCp1c2JoKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF1c2JoKQorCQlyZXR1cm4gLUVOT01F TTsKKworCXZhcmlhbnQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKKwlpZiAoIXZhcmlh bnQpCisJCXJldHVybiAtRUlOVkFMOworCXVzYmgtPnZhcmlhbnQgPSB2YXJpYW50OworCisJdXNi aC0+YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKKwlpZiAo SVNfRVJSKHVzYmgtPmJhc2UpKQorCQlyZXR1cm4gUFRSX0VSUih1c2JoLT5iYXNlKTsKKworCXVz YmgtPnJlc2V0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9leGNsdXNpdmUoZGV2LCBOVUxMKTsK KwlpZiAoSVNfRVJSKHVzYmgtPnJlc2V0KSkgeworCQlpZiAoUFRSX0VSUih1c2JoLT5yZXNldCkg IT0gLUVQUk9CRV9ERUZFUikKKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCByZXNldFxu Iik7CisJCXJldHVybiBQVFJfRVJSKHVzYmgtPnJlc2V0KTsKKwl9CisKKwl1c2JoLT51c2JoX2Ns ayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsICJ1c2JoIik7CisJaWYgKElTX0VSUih1c2Jo LT51c2JoX2NsaykpCisJCXJldHVybiBQVFJfRVJSKHVzYmgtPnVzYmhfY2xrKTsKKworCXVzYmgt PnVzYl9yZWZfY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsKGRldiwgInVzYl9yZWYiKTsKKwlp ZiAoSVNfRVJSKHVzYmgtPnVzYl9yZWZfY2xrKSkKKwkJcmV0dXJuIFBUUl9FUlIodXNiaC0+dXNi X3JlZl9jbGspOworCisJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgTlVMTCwgJmJjbTYzeHhf dXNiaF9waHlfb3BzKTsKKwlpZiAoSVNfRVJSKHBoeSkpIHsKKwkJZGV2X2VycihkZXYsICJmYWls ZWQgdG8gY3JlYXRlIFBIWVxuIik7CisJCXJldHVybiBQVFJfRVJSKHBoeSk7CisJfQorCisJcGxh dGZvcm1fc2V0X2RydmRhdGEocGRldiwgdXNiaCk7CisJcGh5X3NldF9kcnZkYXRhKHBoeSwgdXNi aCk7CisKKwlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYs CisJCQkJCQkgICAgIGJjbTYzeHhfdXNiaF9waHlfeGxhdGUpOworCWlmIChJU19FUlIocGh5X3By b3ZpZGVyKSkgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZWdpc3RlciBQSFkgcHJvdmlk ZXJcbiIpOworCQlyZXR1cm4gUFRSX0VSUihwaHlfcHJvdmlkZXIpOworCX0KKworCWRldl9pbmZv KGRldiwgIlJlZ2lzdGVyZWQgQkNNNjN4eCBVU0IgUEhZIGRyaXZlclxuIik7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYmNtNjN4eF91c2JoX3Bo eV9pZHNbXSBfX2luaXRjb25zdCA9IHsKKwl7IC5jb21wYXRpYmxlID0gImJyY20sYmNtNjMxOC11 c2JoLXBoeSIsIC5kYXRhID0gJnVzYmhfYmNtNjMxOCB9LAorCXsgLmNvbXBhdGlibGUgPSAiYnJj bSxiY202MzI4LXVzYmgtcGh5IiwgLmRhdGEgPSAmdXNiaF9iY202MzI4IH0sCisJeyAuY29tcGF0 aWJsZSA9ICJicmNtLGJjbTYzNTgtdXNiaC1waHkiLCAuZGF0YSA9ICZ1c2JoX2JjbTYzNTggfSwK Kwl7IC5jb21wYXRpYmxlID0gImJyY20sYmNtNjM2Mi11c2JoLXBoeSIsIC5kYXRhID0gJnVzYmhf YmNtNjM2OCB9LAorCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxiY202MzY4LXVzYmgtcGh5IiwgLmRh dGEgPSAmdXNiaF9iY202MzY4IH0sCisJeyAuY29tcGF0aWJsZSA9ICJicmNtLGJjbTYzMjY4LXVz YmgtcGh5IiwgLmRhdGEgPSAmdXNiaF9iY202MzI2OCB9LAorCXsgLyogc2VudGluZWwgKi8gfQor fTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGJjbTYzeHhfdXNiaF9waHlfaWRzKTsKKworc3Rh dGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmNtNjN4eF91c2JoX3BoeV9kcml2ZXIgX19yZWZk YXRhID0geworCS5kcml2ZXIJPSB7CisJCS5uYW1lID0gImJjbTYzeHgtdXNiaC1waHkiLAorCQku b2ZfbWF0Y2hfdGFibGUgPSBiY202M3h4X3VzYmhfcGh5X2lkcywKKwl9LAorCS5wcm9iZQk9IGJj bTYzeHhfdXNiaF9waHlfcHJvYmUsCit9OworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiY202M3h4 X3VzYmhfcGh5X2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiQkNNNjN4eCBVU0JIIFBI WSBkcml2ZXIiKTsKK01PRFVMRV9BVVRIT1IoIsOBbHZhcm8gRmVybsOhbmRleiBSb2phcyA8bm9s dGFyaUBnbWFpbC5jb20+Iik7CitNT0RVTEVfQVVUSE9SKCJTaW1vbiBBcmxvdHQgPHNpbW9uQGZp cmUubHAwLmV1PiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotLSAKMi4yNy4wCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=