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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 265C1C55174 for ; Sun, 2 Aug 2026 20:34:39 +0000 (UTC) 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:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=JbTZ/DKLVc62FstGynewpzTSg9FAi6bpIieCR5u/d/Y=; b=utOfgdE34MKKGJ LraYYGgZ0jVNHDZgtMzu73koFGTbk/L92SvDpDMEt5jnpKWHpFQ8RRcJadd9+7wOjn/KIcF1/7HLz KXczti7BoiSjlHPM4+/D58auVqDuJrPxF4lCbm9nO1ePnoax+XORSGs4Cxr4+6eKEdDMxL5An5BTm PG6P53Pa176ct7F48sGNMH1+b7Krp54LjMCs9mWqI5yYCWzIwEKm6LxfFr0tqIREjv/3S6nXyD+fz mVzRKluvjTBZKDQuvp81dYqCnZ1dV6DX+vdzZtLpXprG0LsQQ75W4PHSPYig83AztdZgNA3B5uvGG eE0fY7HGpm8EbxC2jV/g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wqctK-0000000G1hT-3hSx; Sun, 02 Aug 2026 20:34:38 +0000 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wqctI-0000000G1dC-3Fw2 for linux-phy@lists.infradead.org; Sun, 02 Aug 2026 20:34:37 +0000 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-4954a9e8490so11674175e9.1 for ; Sun, 02 Aug 2026 13:34:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785702875; x=1786307675; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=LkbxqvrSP7FNKqOtnrygIoBIqlq6kCfy6ei6tYOO/2c=; b=EV0MPp6iSswOCIv8ARzyOen0Hh5wMErK+RcTGHoAgSO/JQl35fm+wz4NXsnk2hXymZ gfutsv0KG3DjYkNSo6mX5o6YcZdF/ZOcDZau6eKgFBXNqQ8jViU5/hkcJwkxWyEf0cGV TS1jN9W1a75/IDZp902dwbAoEzn7Qxoo+rxepqsXtd6nD5RAi3PswXaOCKgZYZ69YjhF aeRyoz5HzOE9qdoqVRtP9wll79ZWJFSnCJajrb+DdHcLhH0QchvSVylsgaFT5yWTri9p m0h/uuESO5HNHX1sL+rDl4CAx/0WbIOo3/DAHvjuQ/jHTtMHUI7tpDbzVywjY9p9J7Dd hNtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785702875; x=1786307675; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LkbxqvrSP7FNKqOtnrygIoBIqlq6kCfy6ei6tYOO/2c=; b=sxVqexPVXl4OFlJCnjw9uwU9nTTzSH9avYTSAz9LOg1yj5I42+CN9aUlXOQ+UIn0lV qAptswno4O9yK0sD8iIY5msMgK31155FR34UUdF9lkoy7cfh1XIKrD8hpfIRVurLv2Zx kZfe+MlPjTjikgfVIaAU+eFbkGJmxwOFRUuEeqdFyUcYcOWR+vUh2d2fIw3b2DuSL/fF CuwYvKuUaqsh6YQbeSDzJ78pPcfB5QGdoOIB+K3rj8UaXtTOAzTm3GXuQKib9Pbb1C7m Z2Nn/TlfVNHvTGImnQ/sICk8AP+DotA0utZnRlb1kVcwgOH+AP+KOGhUEdZZ162vXSrF fADw== X-Forwarded-Encrypted: i=1; AHgh+RrQLZq/WNZIV47olC3fE2RSSAT1Z2sQPkApVhs3WvyP5ulQq8QMeE15wyq/OlseuCOjoLNwkLl5XZ8=@lists.infradead.org X-Gm-Message-State: AOJu0Yz06DZmOF5+9Cr/qoMUhrm2CeOvs0wSSccq6ereu+JbrhPo8znw cWP3DflhIXZJ/jm0Yi/FQCesbgKB5x/Y1FU76k9rpxCLARK4M8QpQZQP X-Gm-Gg: AR+sD10po1+qE+j1rN+yhFv433Vs51yQuZNaE9MoJNPrrVbBp3qp+Iq9xT9J9CVI/gY h5QO2/ZQoCG6Mg68irOsEivSv6qjU4MkDPahm+fJCAwka0EP1/t7Cq/LHZeG4tVffZq7VPiZ/Zg 24SGrwemgE6BdxyeUV3nwSKwXCxuZFotayHpifo2hHE3QlgPl+yToyBgBhog/7rblCns437XBUY eaINoXAMNHnDYU5dPdlVSEwl+8aWt3wtnzOPt4iuG1tXlFSBG6zqY1RCS6uDVbZnWkzt4Ik2HFZ jnanptfugUyFcIJzgWct/e/YXBNEEysQqw8Es6LC56nELjEXJDgrtXRBWqogFSLPvyxA8JSGGQ9 Ifu/SCvHBjcKXngnz4AdNZdkPwIF5RuxPHy4ZDZG5R7hc1gCcRCfUVmshXrslDrNmdKOuK9tgiA W0dMEtYKiJeH0Gk6JDeS6A4hX6wJMXWZNj7Y+USu+9EQdJ76dHxWDiDxRBU3YvoevtsjRB5Ad/ X-Received: by 2002:a05:600c:6298:b0:497:ff5a:38b9 with SMTP id 5b1f17b1804b1-4980ebc216amr136043935e9.9.1785702874569; Sun, 02 Aug 2026 13:34:34 -0700 (PDT) Received: from [192.168.0.2] ([197.250.226.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49807bb45ebsm118499905e9.4.2026.08.02.13.34.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 13:34:33 -0700 (PDT) From: =?utf-8?q?Stefan_D=C3=B6singer?= Date: Sun, 02 Aug 2026 23:33:38 +0300 Subject: [PATCH v9 06/12] clk: zte: Add regmap-based clocks MIME-Version: 1.0 Message-Id: <20260802-zx29clk-v9-6-d05530d85d28@gmail.com> References: <20260802-zx29clk-v9-0-d05530d85d28@gmail.com> In-Reply-To: <20260802-zx29clk-v9-0-d05530d85d28@gmail.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Brian Masney , Vinod Koul , Neil Armstrong , Russell King , Lee Jones Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-phy@lists.infradead.org, mfd@lists.linux.dev, =?utf-8?q?Stefan_D=C3=B6singer?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=7881; i=stefandoesinger@gmail.com; h=from:subject:message-id; bh=hwocxe5+u6ehkp1tzrBoab02wtvHlqFQtFOPzVR5cRA=; b=kA0DAAgBPRO8yFRPGiIByyZiAGpvqbLIugDYVd/qJHlvaMqXemgRyFkWffskH7DS7eUe5stJh 4kCTwQAAQgAORYhBEMW9LaqBVsnlTJdbD0TvMhUTxoiBQJqb6myGxSAAAAAAAQADm1hbnUyLDIu NSsxLjEyLDIsMgAKCRA9E7zIVE8aIoNPD/94Qr+VzDNoe4cx4Roq2IynmbVoaR4tXLuaea48bgg /GdYV+iVXrv90AxkFbnYE1Vtni2NTVQjnLOIUlU8E8ThHTNaBTTmbokhwNals0RAXymiknmDZTJ r8sCB77VJoKofuszKxQ4587XXQTdZb9rncLubvZzxPOY5R3+1OPYuluk8PDitHFgfgYLqAFGspQ XsLdzFBvo1kE0RsTsV7BskK+uqSn5eKtc/ut5/ydUKeu9xMyRiceN9MSChzxcBoBl7bjjZyAw+d xx5y5+H7us6/AsZ8U0bELZfD38nICBNN/9oyxlHyo0odC+ithC+cn2daPTSNN59/Oqrjzim9b7d wrweTLaQOjsZyGSrLfyfd95GDev6e1CkYmz23MEtmmIWN7a18YF7wYUglpl4Mlw41TFI+zvKszw MK8fmSQPcJ/DdA/VaK1jyJnYSmwEXU0Bttf+VcDPqU3h+Cv2bnpda7X6Y1ekam2vMbT3LdKNAyp 5xYqxMhBbak70vQz73K65cnO9PJnIxonf0mVE5LZ6XyYLx0h9bpzSKbPHLyK+LmgSC5adi+l8hI B5NPzpLLwIYspB/1cifD5AtioUFV/YZxPGVJf5nLeey08juVB7syGM6kSwIyELm8t3zR4ltL3eP gscMXYCYladS5bF5SebGuBVzwDic908k/iKw38geT1A== X-Developer-Key: i=stefandoesinger@gmail.com; a=openpgp; fpr=4F9C2C8728019633893EBBB98CB81F9A72BBA155 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260802_133436_865237_05BF2BFE X-CRM114-Status: GOOD ( 19.26 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhpcyBpcyBiYXNlZCBvbiBtZXNvbi9jbGstcmVnbWFwLmMsIGFsdGhvdWdoIHNsaWdodGx5IHNp bXBsaWZpZWQuIEkKaGF2ZSBrZXB0IHRoZSBjb3B5cmlnaHQgbGluZXMgYXQgdGhlIHRvcCBvZiB0 aGUgZmlsZSB0byBpbmRpY2F0ZSBpdHMKb3JpZ2luLgoKSSBzZWUgdGhhdCBudW1lcm91cyBjbG9j ayBkcml2ZXJzIGhhdmUgdGhlaXIgb3duIGluY2FybmF0aW9uIG9mIHJlZ21hcC0KYmFzZWQgbXV4 L2Rpdi9nYXRlIGNsb2Nrcy4gSWYgdGhlcmUgaXMgYW55IHZlcnNpb24gb2YgaXQgdGhhdCBpcyBs aWtlbHkKdG8gYmUgZWxldmF0ZWQgdG8gc2hhcmVkIGNvZGUgbGlrZSBjbGstZ2F0ZS5jIEknbGwg Y29weSB0aGF0IGFuZCB0cnkgdG8KdXNlIGl0IGFzIHVubW9kaWZpZWQgYXMgcG9zc2libGUuCgpT aWduZWQtb2ZmLWJ5OiBTdGVmYW4gRMO2c2luZ2VyIDxzdGVmYW5kb2VzaW5nZXJAZ21haWwuY29t PgoKLS0tCgpWZXJzaW9uIDk6ClJlZ2lzdGVyIHNpbmdsZSBjbG9ja3MgcGVyIGZ1bmN0aW9uIGlu dm9jYXRpb24sIHJlbW92ZQpaWDI5NzUyMFYzX0NMS19OT19FWFBPUlQgYWdhaW4KClZlcnNpb24g ODogVXNlIFpYMjk3NTIwVjNfQ0xLX05PX0VYUE9SVCBpbnN0ZWFkIG9mIDAgZm9yIHVuZXhwb3J0 ZWQgY2xvY2tzLgoKVmVyc2lvbiA2OiBSZW1vdmUgc3RyYXkgcmVnbWFwIChTYXNoaWtvKQoKVmVy c2lvbiA1OiBVc2UgcmVnbWFwX3Rlc3RfYml0cyBpbiB6dGVfY2xrX3JlZ21hcF9nYXRlX2lzX2Vu YWJsZWQKLS0tCiBkcml2ZXJzL2Nsay96dGUvY2xrLXJlZ21hcC5jIHwgMjE5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMTIgaW5z ZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay96dGUv Y2xrLXJlZ21hcC5jIGIvZHJpdmVycy9jbGsvenRlL2Nsay1yZWdtYXAuYwppbmRleCA4MDMzMmRi YTk3ZjYuLjAyMmIyYmU3YmIzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvenRlL2Nsay1yZWdt YXAuYworKysgYi9kcml2ZXJzL2Nsay96dGUvY2xrLXJlZ21hcC5jCkBAIC0xLDMyICsxLDIzNyBA QAogLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKIC8qCisgKiBDb3B5cmlnaHQg KGMpIDIwMTggQmF5TGlicmUsIFNBUy4KICAqIENvcHlyaWdodCAoYykgMjAyNiBTdGVmYW4gRMO2 c2luZ2VyCiAgKi8KIAorI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4KICNpbmNsdWRlIDxsaW51eC9j bGstcHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9jb250YWluZXJfb2YuaD4KICNpbmNsdWRl IDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KICNpbmNsdWRlIDxsaW51 eC9lcnJuby5oPgogI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5 cGVzLmg+CiAKICNpbmNsdWRlICJjbGstenguaCIKIAorc3RydWN0IHp0ZV9jbGtfcmVnbWFwIHsK KwlzdHJ1Y3QgY2xrX2h3CWh3OworCXN0cnVjdCByZWdtYXAJKm1hcDsKKwl1MTYJCXJlZzsKKwl1 OAkJc2hpZnQ7CisJdTgJCXNpemU7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCB6dGVfY2xr X3JlZ21hcCAqdG9fenRlX2Nsa19yZWdtYXAoc3RydWN0IGNsa19odyAqaHcpCit7CisJcmV0dXJu IGNvbnRhaW5lcl9vZihodywgc3RydWN0IHp0ZV9jbGtfcmVnbWFwLCBodyk7Cit9CisKK3N0YXRp YyBpbnQgenRlX2Nsa19yZWdtYXBfZ2F0ZV9lbmFibGUoc3RydWN0IGNsa19odyAqaHcpCit7CisJ c3RydWN0IHp0ZV9jbGtfcmVnbWFwICpjbGsgPSB0b196dGVfY2xrX3JlZ21hcChodyk7CisKKwly ZXR1cm4gcmVnbWFwX3NldF9iaXRzKGNsay0+bWFwLCBjbGstPnJlZywgQklUKGNsay0+c2hpZnQp KTsKK30KKworc3RhdGljIHZvaWQgenRlX2Nsa19yZWdtYXBfZ2F0ZV9kaXNhYmxlKHN0cnVjdCBj bGtfaHcgKmh3KQoreworCXN0cnVjdCB6dGVfY2xrX3JlZ21hcCAqY2xrID0gdG9fenRlX2Nsa19y ZWdtYXAoaHcpOworCisJcmVnbWFwX2NsZWFyX2JpdHMoY2xrLT5tYXAsIGNsay0+cmVnLCBCSVQo Y2xrLT5zaGlmdCkpOworfQorCitzdGF0aWMgaW50IHp0ZV9jbGtfcmVnbWFwX2dhdGVfaXNfZW5h YmxlZChzdHJ1Y3QgY2xrX2h3ICpodykKK3sKKwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9 IHRvX3p0ZV9jbGtfcmVnbWFwKGh3KTsKKworCXJldHVybiByZWdtYXBfdGVzdF9iaXRzKGNsay0+ bWFwLCBjbGstPnJlZywgQklUKGNsay0+c2hpZnQpKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBjbGtfb3BzIHp0ZV9jbGtfcmVnbWFwX2dhdGVfb3BzID0geworCS5lbmFibGUJCT0genRlX2Ns a19yZWdtYXBfZ2F0ZV9lbmFibGUsCisJLmRpc2FibGUJPSB6dGVfY2xrX3JlZ21hcF9nYXRlX2Rp c2FibGUsCisJLmlzX2VuYWJsZWQJPSB6dGVfY2xrX3JlZ21hcF9nYXRlX2lzX2VuYWJsZWQsCit9 OworCiBzdHJ1Y3QgY2xrX2h3ICp6eF9jbGtfcmVnaXN0ZXJfZ2F0ZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCByZWdtYXAgKnJlZ21hcCwKLQkJCQkgICAgY29uc3Qgc3RydWN0IHp4X2dhdGVf ZGVzYyAqZGVzYywKLQkJCQkgICAgc3RydWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpCisJCQkJ ICAgIGNvbnN0IHN0cnVjdCB6eF9nYXRlX2Rlc2MgKmRlc2MsIHN0cnVjdCBjbGtfaHcgKiBjb25z dCAqY2xvY2tzKQoreworCXN0cnVjdCBjbGtfcGFyZW50X2RhdGEgcGFyZW50ID0genhfZ2V0X3Bh cmVudCgmZGVzYy0+cGFyZW50LCBjbG9ja3MpOworCXN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQg PSB7fTsKKwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsazsKKwlpbnQgcmVzOworCisJY2xrID0g ZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjbGspLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWNsaykK KwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlpbml0Lm5hbWUgPSBkZXNjLT5uYW1lOwor CWluaXQub3BzID0gJnp0ZV9jbGtfcmVnbWFwX2dhdGVfb3BzOworCWluaXQucGFyZW50X2RhdGEg PSAmcGFyZW50OworCWluaXQubnVtX3BhcmVudHMgPSAxOworCWluaXQuZmxhZ3MgPSBDTEtfU0VU X1JBVEVfUEFSRU5UIHwgZGVzYy0+ZmxhZ3M7CisJY2xrLT5ody5pbml0ID0gJmluaXQ7CisJY2xr LT5tYXAgPSByZWdtYXA7CisJY2xrLT5yZWcgPSBkZXNjLT5yZWc7CisJY2xrLT5zaGlmdCA9IGRl c2MtPnNoaWZ0OworCWNsay0+c2l6ZSA9IDE7CisKKwlyZXMgPSBkZXZtX2Nsa19od19yZWdpc3Rl cihkZXYsICZjbGstPmh3KTsKKwlpZiAocmVzKQorCQlyZXR1cm4gRVJSX1BUUihyZXMpOworCisJ cmV0dXJuICZjbGstPmh3OworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyB6dGVfY2xrX3JlZ21h cF9kaXZfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcsCisJCQkJCQkgICAgdW5zaWduZWQg bG9uZyBwcmF0ZSkKK3sKKwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9IHRvX3p0ZV9jbGtf cmVnbWFwKGh3KTsKKwl1bnNpZ25lZCBpbnQgdmFsOworCWludCByZXQ7CisKKwlyZXQgPSByZWdt YXBfcmVhZChjbGstPm1hcCwgY2xrLT5yZWcsICZ2YWwpOworCWlmIChyZXQpCisJCXJldHVybiAw OyAvKiBHaXZlcyBhIGhpbnQgdGhhdCBzb21ldGhpbmcgaXMgd3JvbmcgKi8KKworCXZhbCA+Pj0g Y2xrLT5zaGlmdDsKKwl2YWwgJj0gY2xrX2Rpdl9tYXNrKGNsay0+c2l6ZSk7CisKKwlyZXR1cm4g ZGl2aWRlcl9yZWNhbGNfcmF0ZShodywgcHJhdGUsIHZhbCwgTlVMTCwgMCwgY2xrLT5zaXplKTsK K30KKworc3RhdGljIGludCB6dGVfY2xrX3JlZ21hcF9kaXZfZGV0ZXJtaW5lX3JhdGUoc3RydWN0 IGNsa19odyAqaHcsCisJCQkJCSAgICAgc3RydWN0IGNsa19yYXRlX3JlcXVlc3QgKnJlcSkKK3sK KwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9IHRvX3p0ZV9jbGtfcmVnbWFwKGh3KTsKKwor CXJldHVybiBkaXZpZGVyX2RldGVybWluZV9yYXRlKGh3LCByZXEsIE5VTEwsIGNsay0+c2l6ZSwg MCk7Cit9CisKK3N0YXRpYyBpbnQgenRlX2Nsa19yZWdtYXBfZGl2X3NldF9yYXRlKHN0cnVjdCBj bGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcg cGFyZW50X3JhdGUpCiB7Ci0JcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisJc3RydWN0IHp0ZV9j bGtfcmVnbWFwICpjbGsgPSB0b196dGVfY2xrX3JlZ21hcChodyk7CisJdW5zaWduZWQgaW50IHZh bDsKKwlpbnQgcmV0OworCisJcmV0ID0gZGl2aWRlcl9nZXRfdmFsKHJhdGUsIHBhcmVudF9yYXRl LCBOVUxMLCBjbGstPnNpemUsIDApOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJ dmFsID0gKHVuc2lnbmVkIGludClyZXQgPDwgY2xrLT5zaGlmdDsKKworCXJldHVybiByZWdtYXBf dXBkYXRlX2JpdHMoY2xrLT5tYXAsIGNsay0+cmVnLCBjbGtfZGl2X21hc2soY2xrLT5zaXplKSA8 PCBjbGstPnNoaWZ0LCB2YWwpOwogfQogCitzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgenRl X2Nsa19yZWdtYXBfZGl2aWRlcl9vcHMgPSB7CisJLnJlY2FsY19yYXRlID0genRlX2Nsa19yZWdt YXBfZGl2X3JlY2FsY19yYXRlLAorCS5kZXRlcm1pbmVfcmF0ZSA9IHp0ZV9jbGtfcmVnbWFwX2Rp dl9kZXRlcm1pbmVfcmF0ZSwKKwkuc2V0X3JhdGUgPSB6dGVfY2xrX3JlZ21hcF9kaXZfc2V0X3Jh dGUsCit9OworCiBzdHJ1Y3QgY2xrX2h3ICp6eF9jbGtfcmVnaXN0ZXJfZGl2aWRlcihzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJlZ21hcCwKIAkJCQkgICAgICAgY29uc3Qgc3Ry dWN0IHp4X2Rpdl9kZXNjICpkZXNjLAogCQkJCSAgICAgICBzdHJ1Y3QgY2xrX2h3ICogY29uc3Qg KmNsb2NrcykKIHsKLQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKKwlzdHJ1Y3QgY2xrX3BhcmVu dF9kYXRhIHBhcmVudCA9IHp4X2dldF9wYXJlbnQoJmRlc2MtPnBhcmVudCwgY2xvY2tzKTsKKwlz dHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge307CisJc3RydWN0IHp0ZV9jbGtfcmVnbWFwICpj bGs7CisJaW50IHJlczsKKworCWNsayA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2xrKSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFjbGspCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJ aW5pdC5uYW1lID0gZGVzYy0+bmFtZTsKKwlpbml0Lm9wcyA9ICZ6dGVfY2xrX3JlZ21hcF9kaXZp ZGVyX29wczsKKwlpbml0LnBhcmVudF9kYXRhID0gJnBhcmVudDsKKwlpbml0Lm51bV9wYXJlbnRz ID0gMTsKKwlpbml0LmZsYWdzID0gQ0xLX1NFVF9SQVRFX1BBUkVOVDsKKwljbGstPmh3LmluaXQg PSAmaW5pdDsKKwljbGstPm1hcCA9IHJlZ21hcDsKKwljbGstPnJlZyA9IGRlc2MtPnJlZzsKKwlj bGstPnNoaWZ0ID0gZGVzYy0+c2hpZnQ7CisJY2xrLT5zaXplID0gZGVzYy0+c2l6ZTsKKworCXJl cyA9IGRldm1fY2xrX2h3X3JlZ2lzdGVyKGRldiwgJmNsay0+aHcpOworCWlmIChyZXMpCisJCXJl dHVybiBFUlJfUFRSKHJlcyk7CisKKwlyZXR1cm4gJmNsay0+aHc7CiB9CiAKK3N0YXRpYyB1OCB6 dGVfY2xrX3JlZ21hcF9tdXhfZ2V0X3BhcmVudChzdHJ1Y3QgY2xrX2h3ICpodykKK3sKKwlzdHJ1 Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9IHRvX3p0ZV9jbGtfcmVnbWFwKGh3KTsKKwl1bnNpZ25l ZCBpbnQgdmFsOworCWludCByZXQ7CisKKwlyZXQgPSByZWdtYXBfcmVhZChjbGstPm1hcCwgY2xr LT5yZWcsICZ2YWwpOworCWlmIChyZXQpCisJCXJldHVybiAweGZmOworCisJdmFsID4+PSBjbGst PnNoaWZ0OworCXZhbCAmPSBHRU5NQVNLKGNsay0+c2l6ZSAtIDEsIDApOworCisJcmV0dXJuIGNs a19tdXhfdmFsX3RvX2luZGV4KGh3LCBOVUxMLCAwLCB2YWwpOworfQorCitzdGF0aWMgaW50IHp0 ZV9jbGtfcmVnbWFwX211eF9zZXRfcGFyZW50KHN0cnVjdCBjbGtfaHcgKmh3LCB1OCBpbmRleCkK K3sKKwlzdHJ1Y3QgenRlX2Nsa19yZWdtYXAgKmNsayA9IHRvX3p0ZV9jbGtfcmVnbWFwKGh3KTsK Kwl1bnNpZ25lZCBpbnQgdmFsID0gY2xrX211eF9pbmRleF90b192YWwoTlVMTCwgMCwgaW5kZXgp OworCisJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhjbGstPm1hcCwgY2xrLT5yZWcsCisJCQkJ ICBHRU5NQVNLKGNsay0+c2l6ZSAtIDEsIDApIDw8IGNsay0+c2hpZnQsCisJCQkJICB2YWwgPDwg Y2xrLT5zaGlmdCk7Cit9CisKK3N0YXRpYyBpbnQgenRlX2Nsa19yZWdtYXBfbXV4X2RldGVybWlu ZV9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCBzdHJ1Y3QgY2xrX3JhdGVfcmVxdWVzdCAqcmVxKQor eworCXJldHVybiBjbGtfbXV4X2RldGVybWluZV9yYXRlX2ZsYWdzKGh3LCByZXEsIDApOworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgenRlX2Nsa19yZWdtYXBfbXV4X29wcyA9IHsK KwkuZ2V0X3BhcmVudCA9IHp0ZV9jbGtfcmVnbWFwX211eF9nZXRfcGFyZW50LAorCS5zZXRfcGFy ZW50ID0genRlX2Nsa19yZWdtYXBfbXV4X3NldF9wYXJlbnQsCisJLmRldGVybWluZV9yYXRlID0g enRlX2Nsa19yZWdtYXBfbXV4X2RldGVybWluZV9yYXRlLAorfTsKKwogc3RydWN0IGNsa19odyAq enhfY2xrX3JlZ2lzdGVyX211eChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJl Z21hcCwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgenhfbXV4X2Rlc2MgKmRlc2MsCi0JCQkJICAgc3Ry dWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpCisJCQkgIGNvbnN0IHN0cnVjdCB6eF9tdXhfZGVz YyAqZGVzYywgc3RydWN0IGNsa19odyAqIGNvbnN0ICpjbG9ja3MpCiB7Ci0JcmV0dXJuIEVSUl9Q VFIoLUVOT0RFVik7CisJc3RydWN0IGNsa19wYXJlbnRfZGF0YSBwYXJlbnRzW0NMS19aWF9NQVhf UEFSRU5UU107CisJc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHt9OworCXN0cnVjdCB6dGVf Y2xrX3JlZ21hcCAqY2xrOworCXVuc2lnbmVkIGludCBpOworCWludCByZXM7CisKKwlpZiAoV0FS Tl9PTihkZXNjLT5udW1fcGFyZW50cyA+IEFSUkFZX1NJWkUocGFyZW50cykpKQorCQlyZXR1cm4g RVJSX1BUUigtRUlOVkFMKTsKKworCWZvciAoaSA9IDA7IGkgPCBkZXNjLT5udW1fcGFyZW50czsg KytpKQorCQlwYXJlbnRzW2ldID0genhfZ2V0X3BhcmVudCgmZGVzYy0+cGFyZW50c1tpXSwgY2xv Y2tzKTsKKworCWNsayA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2xrKSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFjbGspCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJaW5pdC5uYW1l ID0gZGVzYy0+bmFtZTsKKwlpbml0Lm9wcyA9ICZ6dGVfY2xrX3JlZ21hcF9tdXhfb3BzOworCWlu aXQucGFyZW50X2RhdGEgPSBwYXJlbnRzOworCWluaXQubnVtX3BhcmVudHMgPSBkZXNjLT5udW1f cGFyZW50czsKKwljbGstPmh3LmluaXQgPSAmaW5pdDsKKwljbGstPm1hcCA9IHJlZ21hcDsKKwlj bGstPnJlZyA9IGRlc2MtPnJlZzsKKwljbGstPnNoaWZ0ID0gZGVzYy0+c2hpZnQ7CisJY2xrLT5z aXplID0gZGVzYy0+c2l6ZTsKKworCXJlcyA9IGRldm1fY2xrX2h3X3JlZ2lzdGVyKGRldiwgJmNs ay0+aHcpOworCWlmIChyZXMpCisJCXJldHVybiBFUlJfUFRSKHJlcyk7CisKKwlyZXR1cm4gJmNs ay0+aHc7CiB9CgotLSAKMi41NC4wCgoKLS0gCmxpbnV4LXBoeSBtYWlsaW5nIGxpc3QKbGludXgt cGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtcGh5Cg==