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=-13.0 required=3.0 tests=BAYES_00, 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=unavailable 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 67F67C433E0 for ; Mon, 20 Jul 2020 13:14:02 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 23D3C20729 for ; Mon, 20 Jul 2020 13:14:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="It5ZXC7Z"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qC/CVlGl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 23D3C20729 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+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=merlin.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=i3ckl1EyTgPn5bWkgTyCpne1bRVlpCAuniGBkMBQK7Y=; b=It5ZXC7Z+xqg97a/4aeyMILzc ikik50BgTuuWhWp3SD2HQXr326TIClt8I5tw+jKm/Gydq+06SYuzHiyxFWMjOr5CSy7/Cfm4RFHVj Zp4TIdimfXSu2to3N5uf31j1oGjLvzvo4pphjGQ8YbSjBnl4toYg19VxoKHvGSzrxjSaNUPpvqeNL XH6Xzg0DVY0YWnZ2vnWJ4fRCb5w/nAl74H9VpuF0e94KhSy7YnGTC1iCwU7InnvrcHnrEoF33VQuf 657wCDtCJG4eqhHk9NqNgFwIIDSbSOPm3fxCzkSIVssSLjB5+8YC57IFphVSMmRvfFr8UZ7ell9zR ou/JcgeSA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jxVam-0006IX-RC; Mon, 20 Jul 2020 13:12:28 +0000 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jxVad-0006Fc-Tm for linux-arm-kernel@lists.infradead.org; Mon, 20 Jul 2020 13:12:21 +0000 Received: by mail-wr1-x442.google.com with SMTP id y3so450758wrl.4 for ; Mon, 20 Jul 2020 06:12:19 -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=B5qKLJ+tkyNoiIYvNCceCAKgETivXbgE351HNu9vJLM=; b=qC/CVlGlsT+vw727bcIQ5i5W7npkkN0SbzGzQouZiEK47YELMUL2McW+5aIuA8poOy 7o4JumtmuTP1aHAwmTKEHdoLpQZLhuQbd38xeHImAib8dUM3hlC3hu7QSb86rPVE+pFb 8jth+n0GAcbVNkBbxQXyEx5s6V81VOSlop4Vmhmo68hQg1Di+L4Aqbk6iBC6nISuiN/c RVU6h/gwP86t/6oivpgCJ2GumEHg9E0wKjrUd8WIpufvpZR+IgLWtkd6y00gcrzUh40s rITIq/I16ZWcSEmJQNVDP2W4CEad8uVXUmUhll8e/PD4fTSWp8Q1EmohxBCml+Fa1aMU F5+A== 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=B5qKLJ+tkyNoiIYvNCceCAKgETivXbgE351HNu9vJLM=; b=X+p2EhAaPBad0T1/SJ2Y5C9w7OXP8w+mV6zK72wjEd3dfJ4pXJl1+5pTmGzi8pKXIG JpyQOkevIDsE3tXrqzp+GTrADfmp0odjcXp9i1KgGiovgy8dnCOe8MBm8b5d7nPOzwzC Yvzyzlsn7kNzmH++Ei547h8s4LbjQwrtB+5a9eoXQOThzUzq+9rJc1NNzW9hSgxY+l6c +hMUV/pnqttdP9IybK9mz71bDS5j4lwogWa3rG0jUyUQBkqoN0wShFCxtPb7ArSLwMLK mdwjP3P2MYxfZuV9Z+5KesFUkaY8gd75e0ssWk6qWwLPD2ljAvTnRnQbCw4jxhuc4pSb s/ig== X-Gm-Message-State: AOAM533VqHA+HZSZRL1bzmfQr6feG/Kwehhle853h9b0L+i0APOtXltB V8jwA5+frSMVXd/GrwvWk9M= X-Google-Smtp-Source: ABdhPJz/zCijYOXe8ooLTu6RUQyDyJ8FILk5l4+o5J+ygDU+iM/a/KEbIzE8bUYhuBz97QwBp5srbg== X-Received: by 2002:adf:f682:: with SMTP id v2mr10670665wrp.90.1595250738858; Mon, 20 Jul 2020 06:12:18 -0700 (PDT) Received: from skynet.lan (67.red-88-15-120.dynamicip.rima-tde.net. [88.15.120.67]) by smtp.gmail.com with ESMTPSA id j24sm2725293wrb.49.2020.07.20.06.12.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2020 06:12:18 -0700 (PDT) From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= To: 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 v8 2/2] phy: bcm63xx-usbh: Add BCM63xx USBH driver Date: Mon, 20 Jul 2020 15:12:09 +0200 Message-Id: <20200720131209.1236590-3-noltari@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200720131209.1236590-1-noltari@gmail.com> References: <20200720131209.1236590-1-noltari@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200720_091220_088153_13632E2F X-CRM114-Status: GOOD ( 23.39 ) 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?= , Simon Arlott Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org QWRkIEJDTTYzeHggVVNCSCBQSFkgZHJpdmVyIGZvciBCTUlQUy4KClNpZ25lZC1vZmYtYnk6IMOB bHZhcm8gRmVybsOhbmRleiBSb2phcyA8bm9sdGFyaUBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6 IFNpbW9uIEFybG90dCA8c2ltb25Ab2N0aXJvbi5uZXQ+Ci0tLQogdjg6IHJlYWRkIFNpbW9uIGFz IGF1dGhvciBhbmQgcmVtb3ZlIGhpcyBlbWFpbCBhZGRyZXNzIGZyb20gdGhlIHNvdXJjZSBjb2Rl Lgogdjc6IHJlbW92ZSBTaW1vbiBmcm9tIGF1dGhvcnMuCiB2NjogaW50cm9kdWNlIGNoYW5nZXMg c3VnZ2VzdGVkIGJ5IFZpbm9kOgogIC0gUmVtb3ZlIEJNSVBTX0dFTkVSSUMgZGVmYXVsdCBmcm9t IGtjb25maWcuCiAgLSBQcmludCByZWdpc3RlcmVkIG1lc3NhZ2UgYXMgZGVidWcuCiB2NTogdXNl IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlLgogdjQ6IHNldmVyYWwgaW1wcm92ZW1l bnRzOgogIC0gVXNlIGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZS4KICAtIENvZGUgY2xl YW51cHMuCiAgLSBJbXByb3ZlIGRldmljZSBtb2RlIGNvbmZpZzoKICAgIC0gTW92ZSBVU0JIX1NX QVBfQ09OVFJPTCBkZXZpY2UgbW9kZSB2YWx1ZSB0byB2YXJpYW50IHZhcmlhYmxlLgogICAgLSBT ZXQgVVNCSF9VVE1JX0NPTlRST0wxIHJlZ2lzdGVyIHZhbHVlICh2YXJpYW50IHZhcmlhYmxlKS4K IHYzOiBpbnRyb2R1Y2UgY2hhbmdlcyBzdWdnZXN0ZWQgYnkgRmxvcmlhbjoKICAtIEFkZCBzdXBw b3J0IGZvciBkZXZpY2UgbW9kZS4KIHYyOiBpbnRyb2R1Y2UgY2hhbmdlcyBzdWdnZXN0ZWQgYnkg RmxvcmlhbjoKICAtIERyb3AgT0YgZGVwZW5kZW5jeSAodXNlIGRldmljZV9nZXRfbWF0Y2hfZGF0 YSkuCiAgLSBEcm9wIF9faW5pdGNvbnN0IGZyb20gdmFyaWFudCB0YWJsZXMuCiAgLSBVc2UgZGV2 bV9jbGtfZ2V0X29wdGlvbmFsLgoKIGRyaXZlcnMvcGh5L2Jyb2FkY29tL0tjb25maWcgICAgICAg ICAgICB8ICAgOCArCiBkcml2ZXJzL3BoeS9icm9hZGNvbS9NYWtlZmlsZSAgICAgICAgICAgfCAg IDEgKwogZHJpdmVycy9waHkvYnJvYWRjb20vcGh5LWJjbTYzeHgtdXNiaC5jIHwgNDU3ICsrKysr KysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0NjYgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2Jyb2FkY29tL3BoeS1iY202M3h4LXVzYmgu YwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2Jyb2FkY29tL0tjb25maWcgYi9kcml2ZXJzL3Bo eS9icm9hZGNvbS9LY29uZmlnCmluZGV4IGIyOWYxMWMxOTE1NS4uYTFmMWE5YzkwZDBkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3BoeS9icm9hZGNvbS9LY29uZmlnCisrKyBiL2RyaXZlcnMvcGh5L2Jy b2FkY29tL0tjb25maWcKQEAgLTIsNiArMiwxNCBAQAogIwogIyBQaHkgZHJpdmVycyBmb3IgQnJv YWRjb20gcGxhdGZvcm1zCiAjCitjb25maWcgUEhZX0JDTTYzWFhfVVNCSAorCXRyaXN0YXRlICJC Q002M3h4IFVTQkggUEhZIGRyaXZlciIKKwlkZXBlbmRzIG9uIEJNSVBTX0dFTkVSSUMgfHwgQ09N UElMRV9URVNUCisJc2VsZWN0IEdFTkVSSUNfUEhZCisJaGVscAorCSAgRW5hYmxlIHRoaXMgdG8g c3VwcG9ydCB0aGUgQkNNNjN4eCBVU0JIIFBIWSBkcml2ZXIuCisJICBJZiB1bnN1cmUsIHNheSBO LgorCiBjb25maWcgUEhZX0NZR05VU19QQ0lFCiAJdHJpc3RhdGUgIkJyb2FkY29tIEN5Z251cyBQ Q0llIFBIWSBkcml2ZXIiCiAJZGVwZW5kcyBvbiBPRiAmJiAoQVJDSF9CQ01fQ1lHTlVTIHx8IENP TVBJTEVfVEVTVCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2Jyb2FkY29tL01ha2VmaWxlIGIv ZHJpdmVycy9waHkvYnJvYWRjb20vTWFrZWZpbGUKaW5kZXggYzc4ZGU1NDYxMzVjLi43MDI0MTI3 Zjg2YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L2Jyb2FkY29tL01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvcGh5L2Jyb2FkY29tL01ha2VmaWxlCkBAIC0xLDQgKzEsNSBAQAogIyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAorb2JqLSQoQ09ORklHX1BIWV9CQ002M1hYX1VTQkgpCQkr PSBwaHktYmNtNjN4eC11c2JoLm8KIG9iai0kKENPTkZJR19QSFlfQ1lHTlVTX1BDSUUpCQkrPSBw aHktYmNtLWN5Z251cy1wY2llLm8KIG9iai0kKENPTkZJR19CQ01fS09OQV9VU0IyX1BIWSkJCSs9 IHBoeS1iY20ta29uYS11c2IyLm8KIG9iai0kKENPTkZJR19QSFlfQkNNX05TX1VTQjIpCQkrPSBw aHktYmNtLW5zLXVzYjIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvYnJvYWRjb20vcGh5LWJj bTYzeHgtdXNiaC5jIGIvZHJpdmVycy9waHkvYnJvYWRjb20vcGh5LWJjbTYzeHgtdXNiaC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmMwNWJhOGIwOGJlCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkvYnJvYWRjb20vcGh5LWJjbTYzeHgtdXNiaC5jCkBA IC0wLDAgKzEsNDU3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1s YXRlcgorLyoKKyAqIEJDTTYzMjggVVNCSCBQSFkgQ29udHJvbGxlciBEcml2ZXIKKyAqCisgKiBD b3B5cmlnaHQgKEMpIDIwMjAgw4FsdmFybyBGZXJuw6FuZGV6IFJvamFzIDxub2x0YXJpQGdtYWls LmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBTaW1vbiBBcmxvdHQKKyAqCisgKiBEZXJpdmVk IGZyb20gYmNtOTYzeHhfNC4xMkwuMDZCX2NvbnN1bWVyL2tlcm5lbC9saW51eC9hcmNoL21pcHMv YmNtOTYzeHgvc2V0dXAuYzoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBCcm9hZGNvbSBDb3Jwb3Jh dGlvbgorICoKKyAqIERlcml2ZWQgZnJvbSBPcGVuV3J0IHBhdGNoZXM6CisgKiBDb3B5cmlnaHQg KEMpIDIwMTMgSm9uYXMgR29yc2tpIDxqb25hcy5nb3Jza2lAZ21haWwuY29tPgorICogQ29weXJp Z2h0IChDKSAyMDEzIEZsb3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29tPgorICog Q29weXJpZ2h0IChDKSAyMDA4IE1heGltZSBCaXpvbiA8bWJpem9uQGZyZWVib3guZnI+CisgKi8K KworI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgorI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+CisKKy8q IFVTQkggY29udHJvbCByZWdpc3RlciBvZmZzZXRzICovCitlbnVtIHVzYmhfcmVncyB7CisJVVNC SF9CUlRfQ09OVFJPTDEgPSAwLAorCVVTQkhfQlJUX0NPTlRST0wyLAorCVVTQkhfQlJUX1NUQVRV UzEsCisJVVNCSF9CUlRfU1RBVFVTMiwKKwlVU0JIX1VUTUlfQ09OVFJPTDEsCisjZGVmaW5lICAg VVNCSF9VQzFfREVWX01PREVfU0VMCQlCSVQoMCkKKwlVU0JIX1RFU1RfUE9SVF9DT05UUk9MLAor CVVTQkhfUExMX0NPTlRST0wxLAorI2RlZmluZSAgIFVTQkhfUExMQ19SRUZDTEtTRUxfU0hJRlQJ MAorI2RlZmluZSAgIFVTQkhfUExMQ19SRUZDTEtTRUxfTUFTSwkoMHgzIDw8IFVTQkhfUExMQ19S RUZDTEtTRUxfU0hJRlQpCisjZGVmaW5lICAgVVNCSF9QTExDX0NMS1NFTF9TSElGVAkyCisjZGVm aW5lICAgVVNCSF9QTExDX0NMS1NFTF9NQVNLCQkoMHgzIDw8IFVTQkhfUExMQ19DTEtTRUxfTUFT SykKKyNkZWZpbmUgICBVU0JIX1BMTENfWFRBTF9QV1JEV05CCUJJVCg0KQorI2RlZmluZSAgIFVT QkhfUExMQ19QTExfUFdSRFdOQgkJQklUKDUpCisjZGVmaW5lICAgVVNCSF9QTExDX1BMTF9DQUxF TgkJQklUKDYpCisjZGVmaW5lICAgVVNCSF9QTExDX1BIWVBMTF9CWVAJCUJJVCg3KQorI2RlZmlu ZSAgIFVTQkhfUExMQ19QTExfUkVTRVQJCUJJVCg4KQorI2RlZmluZSAgIFVTQkhfUExMQ19QTExf SUREUV9QV1JETglCSVQoOSkKKyNkZWZpbmUgICBVU0JIX1BMTENfUExMX1BXUkROX0RFTEFZCUJJ VCgxMCkKKyNkZWZpbmUgICBVU0JIXzYzMThfUExMQ19QTExfU1VTUEVORF9FTglCSVQoMjcpCisj ZGVmaW5lICAgVVNCSF82MzE4X1BMTENfUEhZUExMX0JZUAlCSVQoMjkpCisjZGVmaW5lICAgVVNC SF82MzE4X1BMTENfUExMX1JFU0VUCUJJVCgzMCkKKyNkZWZpbmUgICBVU0JIXzYzMThfUExMQ19Q TExfSUREUV9QV1JETglCSVQoMzEpCisJVVNCSF9TV0FQX0NPTlRST0wsCisjZGVmaW5lICAgVVNC SF9TQ19PSENJX0RBVEFfU1dBUAlCSVQoMCkKKyNkZWZpbmUgICBVU0JIX1NDX09IQ0lfRU5ESUFO X1NXQVAJQklUKDEpCisjZGVmaW5lICAgVVNCSF9TQ19PSENJX0xPR0lDQUxfQUREUl9FTglCSVQo MikKKyNkZWZpbmUgICBVU0JIX1NDX0VIQ0lfREFUQV9TV0FQCUJJVCgzKQorI2RlZmluZSAgIFVT QkhfU0NfRUhDSV9FTkRJQU5fU1dBUAlCSVQoNCkKKyNkZWZpbmUgICBVU0JIX1NDX0VIQ0lfTE9H SUNBTF9BRERSX0VOCUJJVCg1KQorI2RlZmluZSAgIFVTQkhfU0NfVVNCX0RFVklDRV9TRUwJQklU KDYpCisJVVNCSF9HRU5FUklDX0NPTlRST0wsCisjZGVmaW5lICAgVVNCSF9HQ19QTExfU1VTUEVO RF9FTglCSVQoMSkKKwlVU0JIX0ZSQU1FX0FESlVTVF9WQUxVRSwKKwlVU0JIX1NFVFVQLAorI2Rl ZmluZSAgIFVTQkhfU19JT0MJCQlCSVQoNCkKKyNkZWZpbmUgICBVU0JIX1NfSVBQCQkJQklUKDUp CisJVVNCSF9NRElPLAorCVVTQkhfTURJTzMyLAorCVVTQkhfVVNCX1NJTV9DT05UUk9MLAorI2Rl ZmluZSAgIFVTQkhfVVNDX0xBRERSX1NFTAkJQklUKDUpCisKKwlfX1VTQkhfRU5VTV9TSVpFCit9 OworCitzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50IHsKKwkvKiBSZWdpc3RlcnMgKi8K Kwlsb25nIHJlZ3NbX19VU0JIX0VOVU1fU0laRV07CisKKwkvKiBQTExDIGJpdHMgdG8gc2V0L2Ns ZWFyIGZvciBwb3dlciBvbiAqLworCXUzMiBwb3dlcl9wbGxjX2NscjsKKwl1MzIgcG93ZXJfcGxs Y19zZXQ7CisKKwkvKiBTZXR1cCBiaXRzIHRvIHNldC9jbGVhciBmb3IgcG93ZXIgb24gKi8KKwl1 MzIgc2V0dXBfY2xyOworCXUzMiBzZXR1cF9zZXQ7CisKKwkvKiBTd2FwIENvbnRyb2wgYml0cyB0 byBzZXQgKi8KKwl1MzIgc3dhcGN0bF9kZXZfc2V0OworCisJLyogVGVzdCBQb3J0IENvbnRyb2wg dmFsdWUgdG8gc2V0IGlmIG5vbi16ZXJvICovCisJdTMyIHRwY192YWw7CisKKwkvKiBVU0IgU2lt IENvbnRyb2wgYml0cyB0byBzZXQgKi8KKwl1MzIgdXNjX3NldDsKKworCS8qIFVUTUkgQ29udHJv bCAxIGJpdHMgdG8gc2V0ICovCisJdTMyIHV0bWljdGwxX2Rldl9zZXQ7Cit9OworCitzdHJ1Y3Qg YmNtNjN4eF91c2JoX3BoeSB7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCXN0cnVjdCBjbGsgKnVz YmhfY2xrOworCXN0cnVjdCBjbGsgKnVzYl9yZWZfY2xrOworCXN0cnVjdCByZXNldF9jb250cm9s ICpyZXNldDsKKwljb25zdCBzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50ICp2YXJpYW50 OworCWJvb2wgZGV2aWNlX21vZGU7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTYzeHhf dXNiaF9waHlfdmFyaWFudCB1c2JoX2JjbTYzMTggPSB7CisJLnJlZ3MgPSB7CisJCVtVU0JIX0JS VF9DT05UUk9MMV0gPSAtMSwKKwkJW1VTQkhfQlJUX0NPTlRST0wyXSA9IC0xLAorCQlbVVNCSF9C UlRfU1RBVFVTMV0gPSAtMSwKKwkJW1VTQkhfQlJUX1NUQVRVUzJdID0gLTEsCisJCVtVU0JIX1VU TUlfQ09OVFJPTDFdID0gMHgyYywKKwkJW1VTQkhfVEVTVF9QT1JUX0NPTlRST0xdID0gMHgxYywK KwkJW1VTQkhfUExMX0NPTlRST0wxXSA9IDB4MDQsCisJCVtVU0JIX1NXQVBfQ09OVFJPTF0gPSAw eDBjLAorCQlbVVNCSF9HRU5FUklDX0NPTlRST0xdID0gLTEsCisJCVtVU0JIX0ZSQU1FX0FESlVT VF9WQUxVRV0gPSAweDA4LAorCQlbVVNCSF9TRVRVUF0gPSAweDAwLAorCQlbVVNCSF9NRElPXSA9 IDB4MTQsCisJCVtVU0JIX01ESU8zMl0gPSAweDE4LAorCQlbVVNCSF9VU0JfU0lNX0NPTlRST0xd ID0gMHgyMCwKKwl9LAorCS5wb3dlcl9wbGxjX2NsciA9IFVTQkhfNjMxOF9QTExDX1BMTF9JRERR X1BXUkROLAorCS5wb3dlcl9wbGxjX3NldCA9IFVTQkhfNjMxOF9QTExDX1BMTF9TVVNQRU5EX0VO LAorCS5zZXR1cF9zZXQgPSBVU0JIX1NfSU9DLAorCS5zd2FwY3RsX2Rldl9zZXQgPSBVU0JIX1ND X1VTQl9ERVZJQ0VfU0VMLAorCS51c2Nfc2V0ID0gVVNCSF9VU0NfTEFERFJfU0VMLAorCS51dG1p Y3RsMV9kZXZfc2V0ID0gVVNCSF9VQzFfREVWX01PREVfU0VMLAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBiY202M3h4X3VzYmhfcGh5X3ZhcmlhbnQgdXNiaF9iY202MzI4ID0geworCS5yZWdz ID0geworCQlbVVNCSF9CUlRfQ09OVFJPTDFdID0gMHgwMCwKKwkJW1VTQkhfQlJUX0NPTlRST0wy XSA9IDB4MDQsCisJCVtVU0JIX0JSVF9TVEFUVVMxXSA9IDB4MDgsCisJCVtVU0JIX0JSVF9TVEFU VVMyXSA9IDB4MGMsCisJCVtVU0JIX1VUTUlfQ09OVFJPTDFdID0gMHgxMCwKKwkJW1VTQkhfVEVT VF9QT1JUX0NPTlRST0xdID0gMHgxNCwKKwkJW1VTQkhfUExMX0NPTlRST0wxXSA9IDB4MTgsCisJ CVtVU0JIX1NXQVBfQ09OVFJPTF0gPSAweDFjLAorCQlbVVNCSF9HRU5FUklDX0NPTlRST0xdID0g MHgyMCwKKwkJW1VTQkhfRlJBTUVfQURKVVNUX1ZBTFVFXSA9IDB4MjQsCisJCVtVU0JIX1NFVFVQ XSA9IDB4MjgsCisJCVtVU0JIX01ESU9dID0gMHgyYywKKwkJW1VTQkhfTURJTzMyXSA9IDB4MzAs CisJCVtVU0JIX1VTQl9TSU1fQ09OVFJPTF0gPSAweDM0LAorCX0sCisJLnNldHVwX3NldCA9IFVT QkhfU19JT0MsCisJLnN3YXBjdGxfZGV2X3NldCA9IFVTQkhfU0NfVVNCX0RFVklDRV9TRUwsCisJ LnV0bWljdGwxX2Rldl9zZXQgPSBVU0JIX1VDMV9ERVZfTU9ERV9TRUwsCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGJjbTYzeHhfdXNiaF9waHlfdmFyaWFudCB1c2JoX2JjbTYzNTggPSB7CisJ LnJlZ3MgPSB7CisJCVtVU0JIX0JSVF9DT05UUk9MMV0gPSAtMSwKKwkJW1VTQkhfQlJUX0NPTlRS T0wyXSA9IC0xLAorCQlbVVNCSF9CUlRfU1RBVFVTMV0gPSAtMSwKKwkJW1VTQkhfQlJUX1NUQVRV UzJdID0gLTEsCisJCVtVU0JIX1VUTUlfQ09OVFJPTDFdID0gLTEsCisJCVtVU0JIX1RFU1RfUE9S VF9DT05UUk9MXSA9IDB4MjQsCisJCVtVU0JIX1BMTF9DT05UUk9MMV0gPSAtMSwKKwkJW1VTQkhf U1dBUF9DT05UUk9MXSA9IDB4MDAsCisJCVtVU0JIX0dFTkVSSUNfQ09OVFJPTF0gPSAtMSwKKwkJ W1VTQkhfRlJBTUVfQURKVVNUX1ZBTFVFXSA9IC0xLAorCQlbVVNCSF9TRVRVUF0gPSAtMSwKKwkJ W1VTQkhfTURJT10gPSAtMSwKKwkJW1VTQkhfTURJTzMyXSA9IC0xLAorCQlbVVNCSF9VU0JfU0lN X0NPTlRST0xdID0gLTEsCisJfSwKKwkvKgorCSAqIFRoZSBtYWdpYyB2YWx1ZSBjb21lcyBmb3Ig dGhlIG9yaWdpbmFsIHZlbmRvciBCU1AKKwkgKiBhbmQgaXMgbmVlZGVkIGZvciBVU0IgdG8gd29y ay4gRGF0YXNoZWV0IGRvZXMgbm90CisJICogaGVscCwgc28gdGhlIG1hZ2ljIHZhbHVlIGlzIHVz ZWQgYXMtaXMuCisJICovCisJLnRwY192YWwgPSAweDFjMDAyMCwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50IHVzYmhfYmNtNjM2OCA9IHsKKwkucmVn cyA9IHsKKwkJW1VTQkhfQlJUX0NPTlRST0wxXSA9IDB4MDAsCisJCVtVU0JIX0JSVF9DT05UUk9M Ml0gPSAweDA0LAorCQlbVVNCSF9CUlRfU1RBVFVTMV0gPSAweDA4LAorCQlbVVNCSF9CUlRfU1RB VFVTMl0gPSAweDBjLAorCQlbVVNCSF9VVE1JX0NPTlRST0wxXSA9IDB4MTAsCisJCVtVU0JIX1RF U1RfUE9SVF9DT05UUk9MXSA9IDB4MTQsCisJCVtVU0JIX1BMTF9DT05UUk9MMV0gPSAweDE4LAor CQlbVVNCSF9TV0FQX0NPTlRST0xdID0gMHgxYywKKwkJW1VTQkhfR0VORVJJQ19DT05UUk9MXSA9 IC0xLAorCQlbVVNCSF9GUkFNRV9BREpVU1RfVkFMVUVdID0gMHgyNCwKKwkJW1VTQkhfU0VUVVBd ID0gMHgyOCwKKwkJW1VTQkhfTURJT10gPSAweDJjLAorCQlbVVNCSF9NRElPMzJdID0gMHgzMCwK KwkJW1VTQkhfVVNCX1NJTV9DT05UUk9MXSA9IDB4MzQsCisJfSwKKwkucG93ZXJfcGxsY19jbHIg PSBVU0JIX1BMTENfUExMX0lERFFfUFdSRE4gfCBVU0JIX1BMTENfUExMX1BXUkROX0RFTEFZLAor CS5zZXR1cF9zZXQgPSBVU0JIX1NfSU9DLAorCS5zd2FwY3RsX2Rldl9zZXQgPSBVU0JIX1NDX1VT Ql9ERVZJQ0VfU0VMLAorCS51dG1pY3RsMV9kZXZfc2V0ID0gVVNCSF9VQzFfREVWX01PREVfU0VM LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBiY202M3h4X3VzYmhfcGh5X3ZhcmlhbnQgdXNi aF9iY202MzI2OCA9IHsKKwkucmVncyA9IHsKKwkJW1VTQkhfQlJUX0NPTlRST0wxXSA9IDB4MDAs CisJCVtVU0JIX0JSVF9DT05UUk9MMl0gPSAweDA0LAorCQlbVVNCSF9CUlRfU1RBVFVTMV0gPSAw eDA4LAorCQlbVVNCSF9CUlRfU1RBVFVTMl0gPSAweDBjLAorCQlbVVNCSF9VVE1JX0NPTlRST0wx XSA9IDB4MTAsCisJCVtVU0JIX1RFU1RfUE9SVF9DT05UUk9MXSA9IDB4MTQsCisJCVtVU0JIX1BM TF9DT05UUk9MMV0gPSAweDE4LAorCQlbVVNCSF9TV0FQX0NPTlRST0xdID0gMHgxYywKKwkJW1VT QkhfR0VORVJJQ19DT05UUk9MXSA9IDB4MjAsCisJCVtVU0JIX0ZSQU1FX0FESlVTVF9WQUxVRV0g PSAweDI0LAorCQlbVVNCSF9TRVRVUF0gPSAweDI4LAorCQlbVVNCSF9NRElPXSA9IDB4MmMsCisJ CVtVU0JIX01ESU8zMl0gPSAweDMwLAorCQlbVVNCSF9VU0JfU0lNX0NPTlRST0xdID0gMHgzNCwK Kwl9LAorCS5wb3dlcl9wbGxjX2NsciA9IFVTQkhfUExMQ19QTExfSUREUV9QV1JETiB8IFVTQkhf UExMQ19QTExfUFdSRE5fREVMQVksCisJLnNldHVwX2NsciA9IFVTQkhfU19JUFAsCisJLnNldHVw X3NldCA9IFVTQkhfU19JT0MsCisJLnN3YXBjdGxfZGV2X3NldCA9IFVTQkhfU0NfVVNCX0RFVklD RV9TRUwsCisJLnV0bWljdGwxX2Rldl9zZXQgPSBVU0JIX1VDMV9ERVZfTU9ERV9TRUwsCit9Owor CitzdGF0aWMgaW5saW5lIGJvb2wgdXNiaF9oYXNfcmVnKHN0cnVjdCBiY202M3h4X3VzYmhfcGh5 ICp1c2JoLCBpbnQgcmVnKQoreworCXJldHVybiAodXNiaC0+dmFyaWFudC0+cmVnc1tyZWddID49 IDApOworfQorCitzdGF0aWMgaW5saW5lIHUzMiB1c2JoX3JlYWRsKHN0cnVjdCBiY202M3h4X3Vz YmhfcGh5ICp1c2JoLCBpbnQgcmVnKQoreworCXJldHVybiBfX3Jhd19yZWFkbCh1c2JoLT5iYXNl ICsgdXNiaC0+dmFyaWFudC0+cmVnc1tyZWddKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHVz Ymhfd3JpdGVsKHN0cnVjdCBiY202M3h4X3VzYmhfcGh5ICp1c2JoLCBpbnQgcmVnLAorCQkJICAg ICAgIHUzMiB2YWx1ZSkKK3sKKwlfX3Jhd193cml0ZWwodmFsdWUsIHVzYmgtPmJhc2UgKyB1c2Jo LT52YXJpYW50LT5yZWdzW3JlZ10pOworfQorCitzdGF0aWMgaW50IGJjbTYzeHhfdXNiaF9waHlf aW5pdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGJjbTYzeHhfdXNiaF9waHkgKnVzYmgg PSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKwlpbnQgcmV0OworCisJcmV0ID0gY2xrX3ByZXBhcmVf ZW5hYmxlKHVzYmgtPnVzYmhfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJnBoeS0+ZGV2 LCAidW5hYmxlIHRvIGVuYWJsZSB1c2JoIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUodXNiaC0+dXNiX3JlZl9jbGspOwor CWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGh5LT5kZXYsICJ1bmFibGUgdG8gZW5hYmxlIHVzYl9y ZWYgY2xvY2s6ICVkXG4iLCByZXQpOworCQljbGtfZGlzYWJsZV91bnByZXBhcmUodXNiaC0+dXNi aF9jbGspOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IHJlc2V0X2NvbnRyb2xfcmVzZXQo dXNiaC0+cmVzZXQpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGh5LT5kZXYsICJ1bmFibGUg dG8gcmVzZXQgZGV2aWNlOiAlZFxuIiwgcmV0KTsKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHVz YmgtPnVzYl9yZWZfY2xrKTsKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHVzYmgtPnVzYmhfY2xr KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBDb25maWd1cmUgdG8gd29yayBpbiBuYXRpdmUg Q1BVIGVuZGlhbiAqLworCWlmICh1c2JoX2hhc19yZWcodXNiaCwgVVNCSF9TV0FQX0NPTlRST0wp KSB7CisJCXUzMiB2YWwgPSB1c2JoX3JlYWRsKHVzYmgsIFVTQkhfU1dBUF9DT05UUk9MKTsKKwor CQl2YWwgfD0gVVNCSF9TQ19FSENJX0RBVEFfU1dBUDsKKwkJdmFsICY9IH5VU0JIX1NDX0VIQ0lf RU5ESUFOX1NXQVA7CisKKwkJdmFsIHw9IFVTQkhfU0NfT0hDSV9EQVRBX1NXQVA7CisJCXZhbCAm PSB+VVNCSF9TQ19PSENJX0VORElBTl9TV0FQOworCisJCWlmICh1c2JoLT5kZXZpY2VfbW9kZSAm JiB1c2JoLT52YXJpYW50LT5zd2FwY3RsX2Rldl9zZXQpCisJCQl2YWwgfD0gdXNiaC0+dmFyaWFu dC0+c3dhcGN0bF9kZXZfc2V0OworCisJCXVzYmhfd3JpdGVsKHVzYmgsIFVTQkhfU1dBUF9DT05U Uk9MLCB2YWwpOworCX0KKworCWlmICh1c2JoX2hhc19yZWcodXNiaCwgVVNCSF9TRVRVUCkpIHsK KwkJdTMyIHZhbCA9IHVzYmhfcmVhZGwodXNiaCwgVVNCSF9TRVRVUCk7CisKKwkJdmFsIHw9IHVz YmgtPnZhcmlhbnQtPnNldHVwX3NldDsKKwkJdmFsICY9IH51c2JoLT52YXJpYW50LT5zZXR1cF9j bHI7CisKKwkJdXNiaF93cml0ZWwodXNiaCwgVVNCSF9TRVRVUCwgdmFsKTsKKwl9CisKKwlpZiAo dXNiaF9oYXNfcmVnKHVzYmgsIFVTQkhfVVNCX1NJTV9DT05UUk9MKSkgeworCQl1MzIgdmFsID0g dXNiaF9yZWFkbCh1c2JoLCBVU0JIX1VTQl9TSU1fQ09OVFJPTCk7CisKKwkJdmFsIHw9IHVzYmgt PnZhcmlhbnQtPnVzY19zZXQ7CisKKwkJdXNiaF93cml0ZWwodXNiaCwgVVNCSF9VU0JfU0lNX0NP TlRST0wsIHZhbCk7CisJfQorCisJaWYgKHVzYmgtPnZhcmlhbnQtPnRwY192YWwgJiYKKwkgICAg dXNiaF9oYXNfcmVnKHVzYmgsIFVTQkhfVEVTVF9QT1JUX0NPTlRST0wpKQorCQl1c2JoX3dyaXRl bCh1c2JoLCBVU0JIX1RFU1RfUE9SVF9DT05UUk9MLAorCQkJICAgIHVzYmgtPnZhcmlhbnQtPnRw Y192YWwpOworCisJaWYgKHVzYmgtPmRldmljZV9tb2RlICYmCisJICAgIHVzYmhfaGFzX3JlZyh1 c2JoLCBVU0JIX1VUTUlfQ09OVFJPTDEpICYmCisJICAgIHVzYmgtPnZhcmlhbnQtPnV0bWljdGwx X2Rldl9zZXQpIHsKKwkJdTMyIHZhbCA9IHVzYmhfcmVhZGwodXNiaCwgVVNCSF9VVE1JX0NPTlRS T0wxKTsKKworCQl2YWwgfD0gdXNiaC0+dmFyaWFudC0+dXRtaWN0bDFfZGV2X3NldDsKKworCQl1 c2JoX3dyaXRlbCh1c2JoLCBVU0JIX1VUTUlfQ09OVFJPTDEsIHZhbCk7CisJfQorCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgYmNtNjN4eF91c2JoX3BoeV9wb3dlcl9vbihzdHJ1Y3QgcGh5 ICpwaHkpCit7CisJc3RydWN0IGJjbTYzeHhfdXNiaF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRh dGEocGh5KTsKKworCWlmICh1c2JoX2hhc19yZWcodXNiaCwgVVNCSF9QTExfQ09OVFJPTDEpKSB7 CisJCXUzMiB2YWwgPSB1c2JoX3JlYWRsKHVzYmgsIFVTQkhfUExMX0NPTlRST0wxKTsKKworCQl2 YWwgfD0gdXNiaC0+dmFyaWFudC0+cG93ZXJfcGxsY19zZXQ7CisJCXZhbCAmPSB+dXNiaC0+dmFy aWFudC0+cG93ZXJfcGxsY19jbHI7CisKKwkJdXNiaF93cml0ZWwodXNiaCwgVVNCSF9QTExfQ09O VFJPTDEsIHZhbCk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmNtNjN4eF91 c2JoX3BoeV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBiY202M3h4X3Vz YmhfcGh5ICp1c2JoID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisKKwlpZiAodXNiaF9oYXNfcmVn KHVzYmgsIFVTQkhfUExMX0NPTlRST0wxKSkgeworCQl1MzIgdmFsID0gdXNiaF9yZWFkbCh1c2Jo LCBVU0JIX1BMTF9DT05UUk9MMSk7CisKKwkJdmFsICY9IH51c2JoLT52YXJpYW50LT5wb3dlcl9w bGxjX3NldDsKKwkJdmFsIHw9IHVzYmgtPnZhcmlhbnQtPnBvd2VyX3BsbGNfY2xyOworCisJCXVz Ymhfd3JpdGVsKHVzYmgsIFVTQkhfUExMX0NPTlRST0wxLCB2YWwpOworCX0KKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGJjbTYzeHhfdXNiaF9waHlfZXhpdChzdHJ1Y3QgcGh5ICpwaHkp Cit7CisJc3RydWN0IGJjbTYzeHhfdXNiaF9waHkgKnVzYmggPSBwaHlfZ2V0X2RydmRhdGEocGh5 KTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFyZSh1c2JoLT51c2JoX2Nsayk7CisJY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKHVzYmgtPnVzYl9yZWZfY2xrKTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgYmNtNjN4eF91c2JoX3BoeV9vcHMgPSB7CisJLmV4aXQg PSBiY202M3h4X3VzYmhfcGh5X2V4aXQsCisJLmluaXQgPSBiY202M3h4X3VzYmhfcGh5X2luaXQs CisJLnBvd2VyX29mZiA9IGJjbTYzeHhfdXNiaF9waHlfcG93ZXJfb2ZmLAorCS5wb3dlcl9vbiA9 IGJjbTYzeHhfdXNiaF9waHlfcG93ZXJfb24sCisJLm93bmVyID0gVEhJU19NT0RVTEUsCit9Owor CitzdGF0aWMgc3RydWN0IHBoeSAqYmNtNjN4eF91c2JoX3BoeV94bGF0ZShzdHJ1Y3QgZGV2aWNl ICpkZXYsCisJCQkJCSAgc3RydWN0IG9mX3BoYW5kbGVfYXJncyAqYXJncykKK3sKKwlzdHJ1Y3Qg YmNtNjN4eF91c2JoX3BoeSAqdXNiaCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJdXNiaC0+ ZGV2aWNlX21vZGUgPSAhIWFyZ3MtPmFyZ3NbMF07CisKKwlyZXR1cm4gb2ZfcGh5X3NpbXBsZV94 bGF0ZShkZXYsIGFyZ3MpOworfQorCitzdGF0aWMgaW50IF9faW5pdCBiY202M3h4X3VzYmhfcGh5 X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAq ZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeQkqdXNiaDsKKwljb25z dCBzdHJ1Y3QgYmNtNjN4eF91c2JoX3BoeV92YXJpYW50ICp2YXJpYW50OworCXN0cnVjdCBwaHkg KnBoeTsKKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7CisKKwl1c2JoID0gZGV2 bV9remFsbG9jKGRldiwgc2l6ZW9mKCp1c2JoKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF1c2JoKQor CQlyZXR1cm4gLUVOT01FTTsKKworCXZhcmlhbnQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2 KTsKKwlpZiAoIXZhcmlhbnQpCisJCXJldHVybiAtRUlOVkFMOworCXVzYmgtPnZhcmlhbnQgPSB2 YXJpYW50OworCisJdXNiaC0+YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShw ZGV2LCAwKTsKKwlpZiAoSVNfRVJSKHVzYmgtPmJhc2UpKQorCQlyZXR1cm4gUFRSX0VSUih1c2Jo LT5iYXNlKTsKKworCXVzYmgtPnJlc2V0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9leGNsdXNp dmUoZGV2LCBOVUxMKTsKKwlpZiAoSVNfRVJSKHVzYmgtPnJlc2V0KSkgeworCQlpZiAoUFRSX0VS Uih1c2JoLT5yZXNldCkgIT0gLUVQUk9CRV9ERUZFUikKKwkJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIGdldCByZXNldFxuIik7CisJCXJldHVybiBQVFJfRVJSKHVzYmgtPnJlc2V0KTsKKwl9CisK Kwl1c2JoLT51c2JoX2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsICJ1c2JoIik7CisJ aWYgKElTX0VSUih1c2JoLT51c2JoX2NsaykpCisJCXJldHVybiBQVFJfRVJSKHVzYmgtPnVzYmhf Y2xrKTsKKworCXVzYmgtPnVzYl9yZWZfY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsKGRldiwg InVzYl9yZWYiKTsKKwlpZiAoSVNfRVJSKHVzYmgtPnVzYl9yZWZfY2xrKSkKKwkJcmV0dXJuIFBU Ul9FUlIodXNiaC0+dXNiX3JlZl9jbGspOworCisJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwg TlVMTCwgJmJjbTYzeHhfdXNiaF9waHlfb3BzKTsKKwlpZiAoSVNfRVJSKHBoeSkpIHsKKwkJZGV2 X2VycihkZXYsICJmYWlsZWQgdG8gY3JlYXRlIFBIWVxuIik7CisJCXJldHVybiBQVFJfRVJSKHBo eSk7CisJfQorCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgdXNiaCk7CisJcGh5X3NldF9k cnZkYXRhKHBoeSwgdXNiaCk7CisKKwlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRl cl9yZWdpc3RlcihkZXYsCisJCQkJCQkgICAgIGJjbTYzeHhfdXNiaF9waHlfeGxhdGUpOworCWlm IChJU19FUlIocGh5X3Byb3ZpZGVyKSkgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZWdp c3RlciBQSFkgcHJvdmlkZXJcbiIpOworCQlyZXR1cm4gUFRSX0VSUihwaHlfcHJvdmlkZXIpOwor CX0KKworCWRldl9kYmcoZGV2LCAiUmVnaXN0ZXJlZCBCQ002M3h4IFVTQiBQSFkgZHJpdmVyXG4i KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBi Y202M3h4X3VzYmhfcGh5X2lkc1tdIF9faW5pdGNvbnN0ID0geworCXsgLmNvbXBhdGlibGUgPSAi YnJjbSxiY202MzE4LXVzYmgtcGh5IiwgLmRhdGEgPSAmdXNiaF9iY202MzE4IH0sCisJeyAuY29t cGF0aWJsZSA9ICJicmNtLGJjbTYzMjgtdXNiaC1waHkiLCAuZGF0YSA9ICZ1c2JoX2JjbTYzMjgg fSwKKwl7IC5jb21wYXRpYmxlID0gImJyY20sYmNtNjM1OC11c2JoLXBoeSIsIC5kYXRhID0gJnVz YmhfYmNtNjM1OCB9LAorCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxiY202MzYyLXVzYmgtcGh5Iiwg LmRhdGEgPSAmdXNiaF9iY202MzY4IH0sCisJeyAuY29tcGF0aWJsZSA9ICJicmNtLGJjbTYzNjgt dXNiaC1waHkiLCAuZGF0YSA9ICZ1c2JoX2JjbTYzNjggfSwKKwl7IC5jb21wYXRpYmxlID0gImJy Y20sYmNtNjMyNjgtdXNiaC1waHkiLCAuZGF0YSA9ICZ1c2JoX2JjbTYzMjY4IH0sCisJeyAvKiBz ZW50aW5lbCAqLyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYmNtNjN4eF91c2JoX3Bo eV9pZHMpOworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiY202M3h4X3VzYmhfcGh5 X2RyaXZlciBfX3JlZmRhdGEgPSB7CisJLmRyaXZlcgk9IHsKKwkJLm5hbWUgPSAiYmNtNjN4eC11 c2JoLXBoeSIsCisJCS5vZl9tYXRjaF90YWJsZSA9IGJjbTYzeHhfdXNiaF9waHlfaWRzLAorCX0s CisJLnByb2JlCT0gYmNtNjN4eF91c2JoX3BoeV9wcm9iZSwKK307Cittb2R1bGVfcGxhdGZvcm1f ZHJpdmVyKGJjbTYzeHhfdXNiaF9waHlfZHJpdmVyKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJC Q002M3h4IFVTQkggUEhZIGRyaXZlciIpOworTU9EVUxFX0FVVEhPUigiw4FsdmFybyBGZXJuw6Fu ZGV6IFJvamFzIDxub2x0YXJpQGdtYWlsLmNvbT4iKTsKK01PRFVMRV9BVVRIT1IoIlNpbW9uIEFy bG90dCIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotLSAKMi4yNy4wCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=