From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Sat, 11 Jun 2022 23:30:50 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1o08h0-00BFiv-0z for lore@lore.pengutronix.de; Sat, 11 Jun 2022 23:30:50 +0200 Received: from bombadil.infradead.org ([2607:7c80:54:3::133]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o08gy-0000mf-3G for lore@pengutronix.de; Sat, 11 Jun 2022 23:30:49 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=RGF6dIAhaPBRjjPt3PfDJWTDDEnYGDEQkXKZkI5xMHg=; b=CswnmNn0vLp8w9 M7oxP8TORNmDkmu1rodGiAKZSeUa77qihmFMBM/QgkvvggWIC1dRYQ9p6C0BrZCXhXpVEDy+QUmvo Y7+z0LYZfBRgVOr/L/1UdclDWIYN050l7zsA2q+iuzGZYghMMx3/0J2SdmetCUsOvekjVn5p7cMX5 k+hyIRu/N47rVWnChGgrmyg5qmy1dz5iJpRI5F9QN7saH8uXCFbVNjeADioCqEzrUTqD91shP7429 DdHxidXrxv78ynpv+EImWCZF6bPNRi92cPVpHWovQkuPmP4mGAQWAGor99gdgfI6rnebPdNOjYIZi fkWhxYEtOxQmiZEM68cQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o08f4-00EaW9-Ok; Sat, 11 Jun 2022 21:28:50 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o08ey-00EaVp-Lh for barebox@lists.infradead.org; Sat, 11 Jun 2022 21:28:46 +0000 Received: by mail-ej1-x634.google.com with SMTP id m20so4212539ejj.10 for ; Sat, 11 Jun 2022 14:28:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Le2svfuYWAwwZgH+eH0ckhmaS8fazMhQOU8b4ngcOUw=; b=B58slcevt7IN4x0wnTu9GWffGuvoTxfFdk1p0ZzaaJmhpACiXj9Pybk5qHOgTSjvt3 AbJOwl5Dj52hVrBCcM6oWTC9MeF/TJYSz+5pxmmXja4PvAG8Wusli3PS8sURG4bpGd5R lworqbeyIjgtFkvQMLEQM31Ftx14Qcaym3cKz525uU5jsiSl4E7RR5v8mGIOGTGeDzSc anVyPUiaohBvnX2RzZfkRhEfrdMUniiWAWboQgbWEoSySm3Qemy9hvfB+uUz6iavfDmp 9QWC7hEnYsk+n444sjHsNfSiZSLFV8ToD3hFy10x3pnYS3jNFloUIE9BOonfzCOUyIl2 ZEZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Le2svfuYWAwwZgH+eH0ckhmaS8fazMhQOU8b4ngcOUw=; b=HT45Fj6edrqbH6gdjE/vDSbSHdZbbza/WTk9prz4+EIkJw8pvh5r6XgRW7LAOmLQyl aWFOsqX97WL2cs2x6eSov6JvABiO+I0Rtr1S2iv/ugafICLM/BMArmiLmS3Ut6y54ATq LKUjoj1PS0frTg+fGAVQA/H02qozvDoQiKwe6668GBG+9u67Qkcf6yVetjToKeXSFCKr PfeOzAOuM3BnyNa4VmPyq04W8qXWPpSnEu80/fwwWPVaz7FdHxlJ7EA7DJ6ziBblO4vf fFaQQoHnQTjtWw39dns2PWQkBU4yftLmzbs0M87uTEtuAKoHrUSK+gkvrRw0jSnjpRQz XC6A== X-Gm-Message-State: AOAM5334ZAWYHbsrSadh+AfjwZB+Oyqe4dmTVDwsblxbHg3rWifrpxZX AFlfD+t47UWGZlXSemvrLTBN6p4UPuvPtg== X-Google-Smtp-Source: ABdhPJxeHbXk37PqjnnR2pND9qwj6jA65GH1L8bnxW0RDNbGMedocMWGZ+FZbpn0ammEOxew9eexDg== X-Received: by 2002:a17:906:74cc:b0:712:381:9c5a with SMTP id z12-20020a17090674cc00b0071203819c5amr13592912ejl.466.1654982922603; Sat, 11 Jun 2022 14:28:42 -0700 (PDT) Received: from DESKTOP-KJS3OJ9.localdomain (ip-78-45-69-229.net.upcbroadband.cz. [78.45.69.229]) by smtp.gmail.com with ESMTPSA id v20-20020a1709060b5400b0070662b3b792sm1489829ejg.222.2022.06.11.14.28.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jun 2022 14:28:42 -0700 (PDT) From: =?UTF-8?q?Daniel=20Br=C3=A1t?= To: barebox@lists.infradead.org Cc: =?UTF-8?q?Daniel=20Br=C3=A1t?= Date: Sat, 11 Jun 2022 23:28:42 +0200 Message-Id: <20220611212842.6413-1-danek.brat@gmail.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220611_142844_761209_237F375F X-CRM114-Status: GOOD ( 26.64 ) X-BeenThere: barebox@lists.infradead.org X-Mailman-Version: 2.1.34 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: "barebox" X-SA-Exim-Connect-IP: 2607:7c80:54:3::133 X-SA-Exim-Mail-From: barebox-bounces+lore=pengutronix.de@lists.infradead.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.ext.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-2.7 required=4.0 tests=AWL,BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.2 Subject: [PATCH] i2c: add bcm283x i2c host controller support X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on metis.ext.pengutronix.de) QWRkIGEgZHJpdmVyIHRvIHN1cHBvcnQgdGhlIGkyYyBob3N0IGNvbnRyb2xsZXIgKEJTQykKZm91 bmQgb24gYmNtMjgzeCBmYW1pbHkgb3MgU29Dcy4KClNpZ25lZC1vZmYtYnk6IERhbmllbCBCcsOh dCA8ZGFuZWsuYnJhdEBnbWFpbC5jb20+Ci0tLQogYXJjaC9hcm0vY29uZmlncy9ycGlfdjhhX2Rl ZmNvbmZpZyB8ICAgMyArLQogZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcgICAgICAgICB8ICAg NCArCiBkcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGUgICAgICAgIHwgICAxICsKIGRyaXZlcnMv aTJjL2J1c3Nlcy9pMmMtYmNtMjgzeC5jICAgfCAzNzIgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzc5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJjbTI4M3guYwoKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3MvcnBpX3Y4YV9kZWZjb25maWcgYi9hcmNoL2FybS9j b25maWdzL3JwaV92OGFfZGVmY29uZmlnCmluZGV4IDY4Y2QyNDM4Yi4uZTIxODMxMWE3IDEwMDY0 NAotLS0gYS9hcmNoL2FybS9jb25maWdzL3JwaV92OGFfZGVmY29uZmlnCisrKyBiL2FyY2gvYXJt L2NvbmZpZ3MvcnBpX3Y4YV9kZWZjb25maWcKQEAgLTgxLDYgKzgxLDggQEAgQ09ORklHX1NFUklB TF9BTUJBX1BMMDExPXkKIENPTkZJR19EUklWRVJfU0VSSUFMX05TMTY1NTA9eQogQ09ORklHX05F VF9VU0I9eQogQ09ORklHX05FVF9VU0JfU01TQzk1WFg9eQorQ09ORklHX0kyQz15CitDT05GSUdf STJDX0JDTTI4M1g9eQogQ09ORklHX1VTQl9IT1NUPXkKIENPTkZJR19VU0JfRFdDMl9IT1NUPXkK IENPTkZJR19VU0JfRFdDMl9HQURHRVQ9eQpAQCAtMTA4LDQgKzExMCwzIEBAIENPTkZJR19GU19G QVQ9eQogQ09ORklHX0ZTX0ZBVF9XUklURT15CiBDT05GSUdfRlNfRkFUX0xGTj15CiBDT05GSUdf WkxJQj15Ci1DT05GSUdfTFpPX0RFQ09NUFJFU1M9eQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMv YnVzc2VzL0tjb25maWcgYi9kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZwppbmRleCA1OGY4NjU2 MDYuLjQyOWY1YmE0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKKysr IGIvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKQEAgLTE3LDYgKzE3LDEwIEBAIGNvbmZpZyBJ MkNfQVQ5MQogCWJvb2wgIkFUOTEgSTJDIE1hc3RlciBkcml2ZXIiCiAJZGVwZW5kcyBvbiBBUkNI X0FUOTEKIAorY29uZmlnIEkyQ19CQ00yODNYCisJYm9vbCAiQkNNMjgzWCBJMkMgTWFzdGVyIGRy aXZlciIKKwlkZXBlbmRzIG9uIEFSQ0hfQkNNMjgzWAorCiBjb25maWcgSTJDX0lNWAogCWJvb2wg Ik1QQzg1eHgvTVBDNTIwMC9pLk1YIEkyQyBNYXN0ZXIgZHJpdmVyIgogCWRlcGVuZHMgb24gQVJD SF9JTVggfHwgQVJDSF9NUEM4NVhYIHx8IEFSQ0hfTVBDNTIwMCB8fCBBUkNIX0xBWUVSU0NBUEUK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZSBiL2RyaXZlcnMvaTJjL2J1 c3Nlcy9NYWtlZmlsZQppbmRleCBhODY2MWY2MDUuLmExYWI0NmZiMiAxMDA2NDQKLS0tIGEvZHJp dmVycy9pMmMvYnVzc2VzL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmls ZQpAQCAtMSw1ICsxLDYgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25s eQogb2JqLSQoQ09ORklHX0kyQ19BVDkxKQkJKz0gaTJjLWF0OTEubworb2JqLSQoQ09ORklHX0ky Q19CQ00yODNYKQkrPSBpMmMtYmNtMjgzeC5vCiBvYmotJChDT05GSUdfSTJDX0dQSU8pCQkrPSBp MmMtZ3Bpby5vCiBvYmotJChDT05GSUdfSTJDX0lNWCkJCSs9IGkyYy1pbXgubwogbHdsLSQoQ09O RklHX0kyQ19JTVhfRUFSTFkpCSs9IGkyYy1pbXgtZWFybHkubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9pMmMvYnVzc2VzL2kyYy1iY20yODN4LmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJjbTI4 M3guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmRjOWEyZWExMQotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYmNtMjgzeC5jCkBAIC0wLDAg KzEsMzcyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgor ICogSTJDIGJ1cyBkcml2ZXIgZm9yIHRoZSBCU0MgcGVyaXBoZXJhbCBvbiBCcm9hZGNvbSdzIGJj bTI4M3ggZmFtaWx5IG9mIFNvQ3MKKyAqCisgKiBCYXNlZCBvbiBkb2N1bWVudGF0aW9uIHB1Ymxp c2hlZCBieSBSYXNwYmVycnkgUGkgZm91bmRhdGlvbiBhbmQgdGhlIGtlcm5lbAorICogZHJpdmVy IHdyaXR0ZW4gYnkgU3RlcGhlbiBXYXJyZW4uCisgKgorICogQ29weXJpZ2h0IChDKSBTdGVwaGVu IFdhcnJlbgorICogQ29weXJpZ2h0IChDKSAyMDIyIERhbmllbCBCcsOhdAorICovCisKKyNpbmNs dWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxkcml2ZXIuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4K KyNpbmNsdWRlIDxpMmMvaTJjLmg+CisjaW5jbHVkZSA8aTJjL2kyYy1hbGdvLWJpdC5oPgorI2lu Y2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUg PGluaXQuaD4KKyNpbmNsdWRlIDxvZl9hZGRyZXNzLmg+CisKKy8vI2RlZmluZSBERUJVRworLy8j ZGVmaW5lIExPR0xFVkVMIDcKKworLy8gQlNDIEMgKENvbnRyb2wpIHJlZ2lzdGVyCisjZGVmaW5l IEJTQ19DX1JFQUQJCUJJVCgwKQorI2RlZmluZSBCU0NfQ19DTEVBUjEJCUJJVCg0KQorI2RlZmlu ZSBCU0NfQ19DTEVBUjIJCUJJVCg1KQorI2RlZmluZSBCU0NfQ19TVAkJQklUKDcpCisjZGVmaW5l IEJTQ19DX0lOVEQJCUJJVCg4KQorI2RlZmluZSBCU0NfQ19JTlRUCQlCSVQoOSkKKyNkZWZpbmUg QlNDX0NfSU5UUgkJQklUKDEwKQorI2RlZmluZSBCU0NfQ19JMkNFTgkJQklUKDE1KQorCisvLyBC U0MgUyAoU3RhdHVzKSByZWdpc3RlcgorI2RlZmluZSBCU0NfU19UQQkJQklUKDApCisjZGVmaW5l IEJTQ19TX0RPTkUJCUJJVCgxKQorI2RlZmluZSBCU0NfU19UWFcJCUJJVCgyKQorI2RlZmluZSBC U0NfU19SWFIJCUJJVCgzKQorI2RlZmluZSBCU0NfU19UWEQJCUJJVCg0KQorI2RlZmluZSBCU0Nf U19SWEQJCUJJVCg1KQorI2RlZmluZSBCU0NfU19UWEUJCUJJVCg2KQorI2RlZmluZSBCU0NfU19S WEYJCUJJVCg3KQorI2RlZmluZSBCU0NfU19FUlIJCUJJVCg4KQorI2RlZmluZSBCU0NfU19DTEtU CQlCSVQoOSkKKworLy8gQlNDIEEgKEFkZHJlc3MpIHJlZ2lzdGVyCisjZGVmaW5lIEJTQ19BX01B U0sJCTB4N2YKKworLy8gQ29uc3RhbnRzCisjZGVmaW5lIEJTQ19DRElWX01JTgkJMHgwMDAyCisj ZGVmaW5lIEJTQ19DRElWX01BWAkJMHhmZmZlCisjZGVmaW5lIEJTQ19GSUZPX1NJWkUJCTE2VQor CitzdHJ1Y3QgX19wYWNrZWQgYmNtMjgzeF9pMmNfcmVncyB7CisJdTMyIGM7CisJdTMyIHM7CisJ dTMyIGRsZW47CisJdTMyIGE7CisJdTMyIGZpZm87CisJdTMyIGRpdjsKKwl1MzIgZGVsOworCXUz MiBjbGt0OworfTsKKworc3RydWN0IGJjbTI4M3hfaTJjIHsKKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIg YWRhcHRlcjsKKwlzdHJ1Y3QgY2xrICptY2xrOworCXN0cnVjdCBiY20yODN4X2kyY19yZWdzIF9f aW9tZW0gKnJlZ3M7CisJdTMyIGJpdHJhdGU7Cit9OworCisjZGVmaW5lIHRvX2JjbTI4M3hfaTJj KGEpIGNvbnRhaW5lcl9vZihhLCBzdHJ1Y3QgYmNtMjgzeF9pMmMsIGFkYXB0ZXIpCisKK3N0YXRp YyBpbmxpbmUgaW50IGJjbTI4M3hfaTJjX2luaXQoc3RydWN0IGJjbTI4M3hfaTJjICpiY21faTJj KQoreworCXN0cnVjdCBkZXZpY2VfZCAqZGV2ID0gJmJjbV9pMmMtPmFkYXB0ZXIuZGV2OworCXUz MiBtY2xrX3JhdGUsIGNkaXYsIHJlZGwsIGZlZGw7CisKKwkvKgorCSAqIFJlc2V0IGNvbnRyb2wg cmVnLCBmbHVzaCBGSUZPLCBjbGVhciBhbGwgZmxhZ3MgYW5kIGRpc2FibGUKKwkgKiBjbG9jayBz dHJldGNoaW5nCisJICovCisJd3JpdGVsKDBVTCwgJmJjbV9pMmMtPnJlZ3MtPmMpOworCXdyaXRl bChCU0NfQ19DTEVBUjEsICZiY21faTJjLT5yZWdzLT5jKTsKKwl3cml0ZWwoQlNDX1NfRE9ORSB8 IEJTQ19TX0VSUiB8IEJTQ19TX0NMS1QsICZiY21faTJjLT5yZWdzLT5zKTsKKwl3cml0ZWwoMFVM LCAmYmNtX2kyYy0+cmVncy0+Y2xrdCk7CisKKwkvKgorCSAqIFNldCB0aGUgZGl2aWRlciBiYXNl ZCBvbiB0aGUgbWFzdGVyIGNsb2NrIGZyZXF1ZW5jeSBhbmQgdGhlCisJICogcmVxdWVzdGVkIGky YyBiaXRyYXRlCisJICovCisJbWNsa19yYXRlID0gY2xrX2dldF9yYXRlKGJjbV9pMmMtPm1jbGsp OworCWNkaXYgPSBESVZfUk9VTkRfVVAobWNsa19yYXRlLCBiY21faTJjLT5iaXRyYXRlKTsKKwlk ZXZfZGJnKGRldiwgImJjbTI4M3hfaTJjX2luaXQ6IG1jbGtfcmF0ZT0ldSwgY2Rpdj0lMDh4XG4i LAorCQltY2xrX3JhdGUsIGNkaXYpOworCS8qIE5vdGUgZnJvbSBrZXJuZWwgZHJpdmVyOgorCSAq ICAgUGVyIHRoZSBkYXRhc2hlZXQsIHRoZSByZWdpc3RlciBpcyBhbHdheXMgaW50ZXJwcmV0ZWQg YXMgYW4gZXZlbgorCSAqICAgbnVtYmVyLCBieSByb3VuZGluZyBkb3duLiBJbiBvdGhlciB3b3Jk cywgdGhlIExTQiBpcyBpZ25vcmVkLiBTbywKKwkgKiAgIGlmIHRoZSBMU0IgaXMgc2V0LCBpbmNy ZW1lbnQgdGhlIGRpdmlkZXIgdG8gYXZvaWQgYW55IGlzc3VlLgorCSAqLworCWlmIChjZGl2ICYg MSkKKwkJY2RpdisrOworCWlmICgoY2RpdiA8IEJTQ19DRElWX01JTikgfHwgKGNkaXYgPiBCU0Nf Q0RJVl9NQVgpKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNhbGN1bGF0ZSB2YWxpZCBj bG9jayBkaXZpZGVyIHZhbHVlXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCWRldl9kYmco ZGV2LCAiYmNtMjgzeF9pMmNfaW5pdDogY2RpdiBhZGp1c3RlZCB0byAlMDR4XG4iLCBjZGl2KTsK KwlmZWRsID0gbWF4KGNkaXYgLyAxNiwgMVUpOworCXJlZGwgPSBtYXgoY2RpdiAvIDQsIDFVKTsK KwlkZXZfZGJnKGRldiwgImJjbTI4M3hfaTJjX2luaXQ6IGZlZGw9JTA0eCwgcmVkbD0lMDR4XG4i LCBmZWRsLCByZWRsKTsKKwl3cml0ZWwoY2RpdiAmIDB4ZmZmZiwgJmJjbV9pMmMtPnJlZ3MtPmRp dik7CisJd3JpdGVsKChmZWRsIDw8IDE2KSB8IHJlZGwsICZiY21faTJjLT5yZWdzLT5kZWwpOwor CWRldl9kYmcoZGV2LCAiYmNtMjgzeF9pMmNfaW5pdDogcmVncy0+ZGl2PSUwOHgsIHJlZ3MtPmRl bD0lMDh4XG4iLAorCQlyZWFkbCgmYmNtX2kyYy0+cmVncy0+ZGl2KSwgcmVhZGwoJmJjbV9pMmMt PnJlZ3MtPmRlbCkpOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBNYWNybyB0byBjYWxjdWxh dGUgZ2VuZXJvdXMgdGltZW91dCBmb3IgZ2l2ZW4gYml0cmF0ZSBhbmQgbnVtYmVyIG9mIGJ5dGVz CisgKi8KKyNkZWZpbmUgY2FsY19ieXRlX3RpbWVvdXRfdXMoYml0cmF0ZSkgXAorCSgzICogOSAq IERJVl9ST1VORF9VUCgxMDAwMDAwLCBiaXRyYXRlKSkKKyNkZWZpbmUgY2FsY19tc2dfdGltZW91 dF91cyhiaXRyYXRlLCBieXRlcykgXAorCSgoYnl0ZXMgKyAxKSAqIGNhbGNfYnl0ZV90aW1lb3V0 X3VzKGJpdHJhdGUpKQorCitzdGF0aWMgaW50IGJjbTI4M3hfaTJjX3hmZXIoc3RydWN0IGkyY19h ZGFwdGVyICphZGFwdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpMmNf bXNnICptc2dzLCBpbnQgY291bnQpCit7CisJaW50IHJldCwgaTsKKwlib29sIG1zZ19yZWFkLCBt c2dfMTBiaXQ7CisJc3RydWN0IGkyY19tc2cgKm1zZzsKKwl1MTYgYnVmX3BvczsKKwl1MzIgcmVn X2MsIHJlZ19zLCByZWdfZGxlbiwgYnl0ZXNfbGVmdCwgdGltZW91dCwgYnVsa193cml0dGVuOwor CXN0cnVjdCBkZXZpY2VfZCAqZGV2ID0gJmFkYXB0ZXItPmRldjsKKwlzdHJ1Y3QgYmNtMjgzeF9p MmMgKmJjbV9pMmMgPSB0b19iY20yODN4X2kyYyhhZGFwdGVyKTsKKwlkZXZfZGJnKGRldiwgImJj bTI4M3hfaTJjX3hmZXI6IGNvdW50PSVkXG4iLCBjb3VudCk7CisKKwkvKgorCSAqIFJlc2V0IGNv bnRyb2wgcmVnLCBmbHVzaCBGSUZPLCBjbGVhciBmbGFncyBhbmQgZW5hYmxlIHRoZSBCU0MKKwkg Ki8KKwl3cml0ZWwoMFVMLCAmYmNtX2kyYy0+cmVncy0+Yyk7CisJd3JpdGVsKEJTQ19DX0NMRUFS MSwgJmJjbV9pMmMtPnJlZ3MtPmMpOworCXdyaXRlbChCU0NfU19ET05FIHwgQlNDX1NfRVJSIHwg QlNDX1NfQ0xLVCwgJmJjbV9pMmMtPnJlZ3MtPnMpOworCXdyaXRlbChCU0NfQ19JMkNFTiwgJmJj bV9pMmMtPnJlZ3MtPmMpOworCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJbXNn ID0gJm1zZ3NbaV07CisJCW1zZ19yZWFkID0gKG1zZy0+ZmxhZ3MgJiBJMkNfTV9SRCkgPiAwOwor CQltc2dfMTBiaXQgPSAobXNnLT5mbGFncyAmIEkyQ19NX1RFTikgPiAwOworCQlyZWdfZGxlbiA9 IGJ5dGVzX2xlZnQgPSBtc2ctPmxlbjsKKwkJYnVmX3BvcyA9IDA7CisJCWRldl9kYmcoZGV2LCAi YmNtMjgzeF9pMmNfeGZlcjogbXNnICMlZDogIgorCQkJICAgICAibXNnX3JlYWQ9JWQsIG1zZ18x MGJpdD0lZCwgIgorCQkJICAgICAicmVnX2RsZW49JXUsIGJ1Zl9wb3M9JXVcbiIsCisJCQlpLCBt c2dfcmVhZCwgbXNnXzEwYml0LCByZWdfZGxlbiwgYnVmX3Bvcyk7CisKKwkJaWYgKG1zZ18xMGJp dCAmJiBtc2dfcmVhZCkgeworCQkJdGltZW91dCA9IGNhbGNfYnl0ZV90aW1lb3V0X3VzKGJjbV9p MmMtPmJpdHJhdGUpOworCQkJd3JpdGVsKDFVTCwgJmJjbV9pMmMtPnJlZ3MtPmRsZW4pOworCQkJ d3JpdGVsKG1zZy0+YWRkciAmIDB4ZmYsICZiY21faTJjLT5yZWdzLT5maWZvKTsKKwkJCXdyaXRl bCgoKG1zZy0+YWRkciA+PiA4KSB8IDB4NzgpICYgQlNDX0FfTUFTSywKKwkJCSAgICAgICAmYmNt X2kyYy0+cmVncy0+YSk7CisJCQl3cml0ZWwoQlNDX0NfU1QgfCBCU0NfQ19JMkNFTiwgJmJjbV9p MmMtPnJlZ3MtPmMpOworCQkJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KCZiY21faTJjLT5yZWdz LT5zLCByZWdfcywKKwkJCQkJCSByZWdfcyAmIChCU0NfU19UQSB8IEJTQ19TX0VSUiksCisJCQkJ CQkgdGltZW91dCk7CisJCQlpZiAocmV0KSB7CisJCQkJZGV2X2VycihkZXYsICJ0aW1lb3V0OiAx MGJpdCBhZGRyICIKKwkJCQkJICAgICAicmVhZCBpbml0aWxpemF0aW9uXG4iKTsKKwkJCQlnb3Rv IG91dDsKKwkJCX0KKwkJCWlmIChyZWdfcyAmIEJTQ19TX0VSUikgeworCQkJCWRldl9kYmcoZGV2 LCAiZGV2aWNlIHdpdGggYWRkciAleCBkaWRudCBBQ0tcbiIsCisJCQkJCW1zZy0+YWRkcik7CisJ CQkJcmV0ID0gLUVSRU1PVEVJTzsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJfSBlbHNlIGlmICht c2dfMTBiaXQpIHsKKwkJCXJlZ19kbGVuKys7CisJCQl3cml0ZWwobXNnLT5hZGRyICYgMHhmZiwg JmJjbV9pMmMtPnJlZ3MtPmZpZm8pOworCQkJd3JpdGVsKCgobXNnLT5hZGRyID4+IDgpIHwgMHg3 OCkgJiBCU0NfQV9NQVNLLAorCQkJICAgICAgICZiY21faTJjLT5yZWdzLT5hKTsKKwkJfSBlbHNl IHsKKwkJCXdyaXRlbChtc2ctPmFkZHIgJiBCU0NfQV9NQVNLLCAmYmNtX2kyYy0+cmVncy0+YSk7 CisJCX0KKworCQl3cml0ZWwocmVnX2RsZW4sICZiY21faTJjLT5yZWdzLT5kbGVuKTsKKwkJcmVn X2MgPSBCU0NfQ19TVCB8IEJTQ19DX0kyQ0VOOworCQlpZiAobXNnX3JlYWQpCisJCQlyZWdfYyB8 PSBCU0NfQ19SRUFEOworCQl3cml0ZWwocmVnX2MsICZiY21faTJjLT5yZWdzLT5jKTsKKwkJZGV2 X2RiZyhkZXYsICJiY20yODN4X2kyY194ZmVyOiBtc2cgIyVkOiByZWdfYz0lMDh4XG4iLAorCQkJ aSwgcmVnX2MpOworCisJCWlmIChtc2dfcmVhZCkgeworCQkJLyoKKwkJCSAqIFJlYWQgb3V0IGRh dGEgZnJvbSBGSUZPIGFzIHNvb24gYXMgaXQgaXMgYXZhaWxhYmxlCisJCQkgKi8KKwkJCXRpbWVv dXQgPSBjYWxjX2J5dGVfdGltZW91dF91cyhiY21faTJjLT5iaXRyYXRlKTsKKwkJCWRldl9kYmco ZGV2LCAiYmNtMjgzeF9pMmNfeGZlcjogbXNnICMlZDogIgorCQkJCSAgICAgInJlYWRpbmcgZGF0 YSBmcm9tIEZJRk8sIHRpbWVvdXQ9JXUsICIKKwkJCQkgICAgICJieXRlc19sZWZ0PSV1XG4iLAor CQkJCSAgaSwgdGltZW91dCwgYnl0ZXNfbGVmdCk7CisJCQlmb3IgKDsgYnl0ZXNfbGVmdDsgYnl0 ZXNfbGVmdC0tKSB7CisJCQkJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KCZiY21faTJjLT5yZWdz LT5zLAorCQkJCQkJCSByZWdfcywgcmVnX3MgJgorCQkJCQkJCSAoQlNDX1NfUlhEIHwgQlNDX1Nf RVJSKSwKKwkJCQkJCQkgdGltZW91dCk7CisJCQkJaWYgKHJldCkgeworCQkJCQlkZXZfZXJyKGRl diwgInRpbWVvdXQ6ICIKKwkJCQkJCSJ3YWl0aW5nIGZvciBkYXRhIGluIEZJRk9cbiIpOworCQkJ CQlnb3RvIG91dDsKKwkJCQl9CisJCQkJaWYgKHJlZ19zICYgQlNDX1NfRVJSKSB7CisJCQkJCXJl dCA9IC1FUkVNT1RFSU87CisJCQkJCWdvdG8gb3V0OworCQkJCX0KKwkJCQltc2ctPmJ1ZltidWZf cG9zKytdID0KKwkJCQkJKHU4KSByZWFkbCgmYmNtX2kyYy0+cmVncy0+Zmlmbyk7CisJCQkJZGV2 X2RiZyhkZXYsICJyZWFkICUwMnggZnJvbSBGSUZPIiwKKwkJCQkJbXNnLT5idWZbYnVmX3Bvcy0x XSk7CisJCQl9CisJCX0gZWxzZSB7CisJCQkvKgorCQkJICogRml0IGFzIG11Y2ggZGF0YSB0byB0 aGUgRklGTyBhcyB3ZSBjYW4gaW4gb25lIGdvCisJCQkgKi8KKwkJCWZvciAoYnVsa193cml0dGVu ID0gbWluKGJ5dGVzX2xlZnQsIChtc2dfMTBiaXQgPworCQkJICAgICAoQlNDX0ZJRk9fU0laRSAt IDFVKSA6IEJTQ19GSUZPX1NJWkUpKTsKKwkJCSAgICAgYnVsa193cml0dGVuOyBidWxrX3dyaXR0 ZW4tLSwgYnl0ZXNfbGVmdC0tKQorCQkJeworCQkJCWRldl9kYmcoZGV2LCAid3JpdGluZyAlMDJ4 IHRvIEZJRk9cbiIsCisJCQkJCW1zZy0+YnVmW2J1Zl9wb3NdKTsKKwkJCQl3cml0ZWwobXNnLT5i dWZbYnVmX3BvcysrXSwKKwkJCQkJJmJjbV9pMmMtPnJlZ3MtPmZpZm8pOworCQkJfQorCQkJdGlt ZW91dCA9IGNhbGNfYnl0ZV90aW1lb3V0X3VzKGJjbV9pMmMtPmJpdHJhdGUpOworCQkJLyoKKwkJ CSAqIEZlZWQgYW55IHJlbWFpbmluZyBkYXRhIHRvIEZJRk8gYXMgc29vbiBhcyB0aGVyZQorCQkJ ICogaXMgc3BhY2UgZm9yIHRoZW0KKwkJCSAqLworCQkJZGV2X2RiZyhkZXYsICJyZW1haW5pbmcg Ynl0ZXMgYWZ0ZXIgYnVsayB3cml0ZTogJXVcbiIsCisJCQkJYnl0ZXNfbGVmdCk7CisJCQlmb3Ig KDsgYnl0ZXNfbGVmdDsgYnl0ZXNfbGVmdC0tKSB7CisJCQkJcmV0ID0gcmVhZGxfcG9sbF90aW1l b3V0KCZiY21faTJjLT5yZWdzLT5zLAorCQkJCQkJCSByZWdfcywgcmVnX3MgJgorCQkJCQkJCSAo QlNDX1NfVFhEIHwgQlNDX1NfRVJSKSwKKwkJCQkJCQkgdGltZW91dCk7CisJCQkJaWYgKHJldCkg eworCQkJCQlkZXZfZXJyKGRldiwgInRpbWVvdXQ6ICIKKwkJCQkJCSJ3YWl0aW5nIGZvciBzcGFj ZSBpbiBGSUZPXG4iKTsKKwkJCQkJZ290byBvdXQ7CisJCQkJfQorCQkJCWlmIChyZWdfcyAmIEJT Q19TX0VSUikgeworCQkJCQlkZXZfZGJnKGRldiwgImRldmljZSB3aXRoIGFkZHIgJXggIgorCQkJ CQkJImRpZG50IEFDS1xuIiwgbXNnLT5hZGRyKTsKKwkJCQkJcmV0ID0gLUVSRU1PVEVJTzsKKwkJ CQkJZ290byBvdXQ7CisJCQkJfQorCQkJCWRldl9kYmcoZGV2LCAid3JpdGluZyAlMDJ4IHRvIEZJ Rk9cbiIsCisJCQkJCW1zZy0+YnVmW2J1Zl9wb3NdKTsKKwkJCQl3cml0ZWwobXNnLT5idWZbYnVm X3BvcysrXSwKKwkJCQkJJmJjbV9pMmMtPnJlZ3MtPmZpZm8pOworCQkJfQorCQl9CisJCS8qCisJ CSAqIFdhaXQgZm9yIHRoZSBjdXJyZW50IHRyYW5zZmVyIHRvIGZpbmlzaCBhbmQgdGhlbiBmbHVz aCBGSUZPCisJCSAqIGFuZCBjbGVhciBhbnkgZmxhZ3Mgc28gdGhhdCB3ZSBhcmUgcmVhZHkgZm9y IG5leHQgbXNnCisJCSAqLworCQl0aW1lb3V0ID0gY2FsY19tc2dfdGltZW91dF91cyhiY21faTJj LT5iaXRyYXRlLCByZWdfZGxlbik7CisJCXJldCA9IHJlYWRsX3BvbGxfdGltZW91dCgmYmNtX2ky Yy0+cmVncy0+cywgcmVnX3MsCisJCQkJcmVnX3MgJiAoQlNDX1NfRE9ORSB8IEJTQ19TX0VSUiks IHRpbWVvdXQpOworCQlpZiAocmV0KSB7CisJCQlkZXZfZXJyKGRldiwgInRpbWVvdXQ6IHdhaXRp bmcgZm9yIHRyYW5zZmVyIHRvIGVuZFxuIik7CisJCQlnb3RvIG91dDsKKwkJfQorCQlpZiAocmVn X3MgJiBCU0NfU19FUlIpIHsKKwkJCWRldl9kYmcoZGV2LCAiZGV2aWNlIHdpdGggYWRkciAleCBk aWRudCBBQ0tcbiIsCisJCQkJbXNnLT5hZGRyKTsKKwkJCXJldCA9IC1FUkVNT1RFSU87CisJCQln b3RvIG91dDsKKwkJfQorCQl3cml0ZWwoQlNDX1NfRE9ORSB8IEJTQ19TX0VSUiB8IEJTQ19TX0NM S1QsICZiY21faTJjLT5yZWdzLT5zKTsKKwkJd3JpdGVsKEJTQ19DX0NMRUFSMSB8IEJTQ19DX0ky Q0VOLCAmYmNtX2kyYy0+cmVncy0+Yyk7CisJfQorCXdyaXRlbCgwVUwsICZiY21faTJjLT5yZWdz LT5jKTsKKwlkZXZfZGJnKGRldiwgImJjbTI4M3hfaTJjX3hmZXI6IHJldHVybmluZyBzdWNjZXNz ZnVsbHlcbiIpOworCXJldHVybiBjb3VudDsKK291dDoKKwl3cml0ZWwoMFVMLCAmYmNtX2kyYy0+ cmVncy0+Yyk7CisJd3JpdGVsKEJTQ19DX0NMRUFSMSwgJmJjbV9pMmMtPnJlZ3MtPmMpOworCXdy aXRlbChCU0NfU19ET05FIHwgQlNDX1NfRVJSIHwgQlNDX1NfQ0xLVCwgJmJjbV9pMmMtPnJlZ3Mt PnMpOworCWRldl9kYmcoZGV2LCAiYmNtMjgzeF9pMmNfeGZlcjogcmV0dXJuaW5nIHZpYSBlcnIs IHJldDogJWRcbiIsIHJldCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBiY20yODN4 X2kyY19wcm9iZShzdHJ1Y3QgZGV2aWNlX2QgKmRldikKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBy ZXNvdXJjZSAqaW9yZXM7CisJc3RydWN0IGJjbTI4M3hfaTJjICpiY21faTJjOworCXN0cnVjdCBk ZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPmRldmljZV9ub2RlOworCisJYmNtX2kyYyA9IHh6YWxsb2Mo c2l6ZW9mKCpiY21faTJjKSk7CisKKwlpZiAoIW5wKSB7CisJCXJldCA9IC1FTlhJTzsKKwkJZ290 byBlcnI7CisJfQorCisJaWYgKCFJU19FTkFCTEVEKENPTkZJR19PRkRFVklDRSkpIHsKKwkJcmV0 ID0gLUVOT0RFVjsKKwkJZ290byBlcnI7CisJfQorCisJaW9yZXMgPSBkZXZfcmVxdWVzdF9tZW1f cmVzb3VyY2UoZGV2LCAwKTsKKwlpZiAoSVNfRVJSKGlvcmVzKSkgeworCQlkZXZfZXJyKGRldiwg ImNvdWxkIG5vdCBnZXQgaW9tZW0gcmVnaW9uXG4iKTsKKwkJcmV0ID0gUFRSX0VSUihpb3Jlcyk7 CisJCWdvdG8gZXJyOworCX0KKwliY21faTJjLT5yZWdzID0gSU9NRU0oaW9yZXMtPnN0YXJ0KTsK KwlkZXZfZGJnKGRldiwgImJjbTI4M3hfaTJjX3Byb2JlOiByZWdzIGF0ICVwXG4iLCBiY21faTJj LT5yZWdzKTsKKworCWJjbV9pMmMtPm1jbGsgPSBjbGtfZ2V0KGRldiwgTlVMTCk7CisJaWYgKElT X0VSUihiY21faTJjLT5tY2xrKSkgeworCQlkZXZfZXJyKGRldiwgImNvdWxkIG5vdCBhcXVpcmUg Y2xvY2tcbiIpOworCQlyZXQgPSBQVFJfRVJSKGJjbV9pMmMtPm1jbGspOworCQlnb3RvIGVycjsK Kwl9CisJY2xrX2VuYWJsZShiY21faTJjLT5tY2xrKTsKKwlkZXZfZGJnKGRldiwgImJjbTI4M3hf aTJjX3Byb2JlOiBlbmFibGVkIG1jbGtcbiIpOworCisJYmNtX2kyYy0+Yml0cmF0ZSA9IEkyQ19N QVhfU1RBTkRBUkRfTU9ERV9GUkVROworCW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiY2xvY2st ZnJlcXVlbmN5IiwgJmJjbV9pMmMtPmJpdHJhdGUpOworCWlmIChiY21faTJjLT5iaXRyYXRlID4g STJDX01BWF9GQVNUX01PREVfRlJFUSkgeworCQlkZXZfZXJyKGRldiwgImNsb2NrIGZyZXF1ZW5j eSBvZiAldSBpcyBub3Qgc3VwcG9ydGVkXG4iLAorCQkJYmNtX2kyYy0+Yml0cmF0ZSk7CisJCXJl dCA9IC1FSU5WQUw7CisJCWdvdG8gZXJyOworCX0KKwlkZXZfZGJnKGRldiwgImJjbTI4M3hfaTJj X3Byb2JlOiBpMmNfYml0cmF0ZTogJXVcbiIsIGJjbV9pMmMtPmJpdHJhdGUpOworCisJYmNtX2ky Yy0+YWRhcHRlci5tYXN0ZXJfeGZlciA9IGJjbTI4M3hfaTJjX3hmZXI7CisJYmNtX2kyYy0+YWRh cHRlci5uciA9IGRldi0+aWQ7CisJYmNtX2kyYy0+YWRhcHRlci5kZXYucGFyZW50ID0gZGV2Owor CWJjbV9pMmMtPmFkYXB0ZXIuZGV2LmRldmljZV9ub2RlID0gbnA7CisKKwlyZXQgPSBiY20yODN4 X2kyY19pbml0KGJjbV9pMmMpOworCWlmIChyZXQpCisJCWdvdG8gZXJyOworCisJcmV0dXJuIGky Y19hZGRfbnVtYmVyZWRfYWRhcHRlcigmYmNtX2kyYy0+YWRhcHRlcik7CitlcnI6CisJZnJlZShi Y21faTJjKTsKKwlkZXZfZGJnKGRldiwgImJjbTI4M3hfaTJjX3Byb2JlOiBleGl0aW5nIHZpYSBl cnIsIHJldDogJWRcbiIsIHJldCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBv Zl9kZXZpY2VfaWQgYmNtMjgzeF9pMmNfZHRfaWRzW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJi cmNtLGJjbTI4MzUtaTJjIiwgfSwKKwl7IC5jb21wYXRpYmxlID0gImJyY20sYmNtMjcxMS1pMmMi LCB9LAorCXsgLyogc2VudGluZWwgKi8gfQorfTsKKworc3RhdGljIHN0cnVjdCBkcml2ZXJfZCBi Y20yODN4X2kyY19kcml2ZXIgPSB7CisJLm5hbWUJCT0gImkyYy1iY20yODN4IiwKKwkucHJvYmUJ CT0gYmNtMjgzeF9pMmNfcHJvYmUsCisJLm9mX2NvbXBhdGlibGUJPSBEUlZfT0ZfQ09NUEFUKGJj bTI4M3hfaTJjX2R0X2lkcyksCit9OworZGV2aWNlX3BsYXRmb3JtX2RyaXZlcihiY20yODN4X2ky Y19kcml2ZXIpOwotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KYmFyZWJveCBtYWlsaW5nIGxpc3QKYmFyZWJveEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYmFyZWJv eAo=