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=-5.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT 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 EC97BC4360F for ; Wed, 3 Apr 2019 10:01:18 +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 B4AB420830 for ; Wed, 3 Apr 2019 10:01:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="aWeyVFX8"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="vQGr/uzD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B4AB420830 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Y6k1LtkyAt3A8TD8bZSEKLyKOTPaCYrxyU0xFYuIpz0=; b=aWeyVFX8b8qohA Wluq4zAwPYKz32AfAH7vVcsDxJ6mnehjIaQbUYhOq5lq/kzgvNMs+bZe/R7/M7kSVrQ7bFe32TTtT qVm/m1zsGKSYFjDs7SOJRioDgjohc4oM0+AsC6y5GSqekC5FYCuRSgR5XVCjO3066mmyluvaJ2MxR 43FuJcPAatX4okAPmG/nu7xD/5yQFGmNkHIiqJa/oMolHcBAV2X8o6j2xyGHDcrlGwD0rC9QyuFBi 8pe9UcJv9uXSNqIog8eWxu3goCFGoZckMn+8DjkWk9W8lzy+4CGMWgtsQKPaQnENtljwAG0/Io4wh gN69vKK+WaWoDMpFHHhQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hBchk-0007VE-He; Wed, 03 Apr 2019 10:01:12 +0000 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hBchh-0007Uk-Dy for linux-arm-kernel@lists.infradead.org; Wed, 03 Apr 2019 10:01:11 +0000 Received: by mail-pl1-x643.google.com with SMTP id ck15so6591718plb.3 for ; Wed, 03 Apr 2019 03:01:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=IkiQbk/kdRbQPbEHiNEScBeB2RnhPojQnKWPWkgAft4=; b=vQGr/uzDDu/XN0ib94P3PbFB6Lu89bJd+5neMsN98HFHrML3coC3rod0GW0yo4z9vT GCztFF+PKY8BJ39UZfm5bAg9NLiIcGoUDzfNzBi6ATQJkuQ0cT4gRNipJAWBN9jGpsG/ 4IBxJMEhRv6NVhConxWyGhRIuOZxSesKcAaBDu3kv7LtU64vOUhwmJihehrt8KjPfqte 0aoJG8OMxywwTpCgVdDBdQLvKElHpIAGfAMkF3/l6oowdYViCfZnZw41+aYSTk7OuV5o T5n6befYqJ0bvIySouKnJftlnEkZWlp0Mcsbcwpm3MszznA5cY4hVxth4vbM56IVPA01 pP7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=IkiQbk/kdRbQPbEHiNEScBeB2RnhPojQnKWPWkgAft4=; b=PK4nufNxRS6WfkR+OiSZPvrsD/0GlY1OqA/RxBbZqyaVvRAyMPEb+B/zPzqcYrHaIf Cvq99RSxwDGyXfZJ7VVy64vybK8JEzG4YDDWbcBr+1BYP/pD1VYl2S/RDcCD04BEAsIk LFutd0B/TyLxEW4ZLbt4/7fYJbHvdUwSU9lb0YqQnEgvZmOCMT5jBh6khwNBnO+2cEVR +XIX2d9ajBYkjzyQx6Bk5pPI5Swh/PPeVmlOT/lkLKtJF9tOPWW9/qustmmp9Q+s4aiA FbhBx7IqCkJCTrtAXlAsc2ZgIoVso+COb1sl0lK+KS43110wMyUNmMMkCN33Y40C4Za+ JYzQ== X-Gm-Message-State: APjAAAXuCx80P3s5SQI73bzhnEzi7V1PET+RQtoHYWYxhOY4Ulb9Zce6 Lp27MMz0PTEf2B2n5tkKq05M+Q== X-Google-Smtp-Source: APXvYqw5Wk4WBONpaJUgvU5qVZ/4opGe4bbLCImLiA1ukZ3H1q9DnSYvCx8p7KDmOztUP5dG/h0yhA== X-Received: by 2002:a17:902:e002:: with SMTP id ca2mr63819684plb.131.1554285667825; Wed, 03 Apr 2019 03:01:07 -0700 (PDT) Received: from dell ([147.50.13.10]) by smtp.gmail.com with ESMTPSA id e4sm17887998pfh.146.2019.04.03.03.01.03 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 03 Apr 2019 03:01:07 -0700 (PDT) Date: Wed, 3 Apr 2019 11:01:01 +0100 From: Lee Jones To: Amelie Delaunay Subject: Re: [PATCH v4 2/9] mfd: Add ST Multi-Function eXpander (STMFX) core driver Message-ID: <20190403100101.GK11301@dell> References: <1551260094-32570-1-git-send-email-amelie.delaunay@st.com> <1551260094-32570-3-git-send-email-amelie.delaunay@st.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1551260094-32570-3-git-send-email-amelie.delaunay@st.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190403_030109_479314_400DB410 X-CRM114-Status: GOOD ( 22.75 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , devicetree@vger.kernel.org, Alexandre Torgue , Linus Walleij , linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Rob Herring , Maxime Coquelin , linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org 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 T24gV2VkLCAyNyBGZWIgMjAxOSwgQW1lbGllIERlbGF1bmF5IHdyb3RlOgoKPiBTVE1pY3JvZWxl Y3Ryb25pY3MgTXVsdGktRnVuY3Rpb24gZVhwYW5kZXIgKFNUTUZYKSBpcyBhIHNsYXZlIGNvbnRy b2xsZXIKPiB1c2luZyBJMkMgZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgbWFpbiBNQ1UuIE1h aW4gZmVhdHVyZXMgYXJlOgo+IC0gMTYgZmFzdCBHUElPcyBpbmRpdmlkdWFsbHkgY29uZmlndXJh YmxlIGluIGlucHV0L291dHB1dAo+IC0gOCBhbHRlcm5hdGUgR1BJT3MgaW5kaXZpZHVhbGx5IGNv bmZpZ3VyYWJsZSBpbiBpbnB1dC9vdXRwdXQgd2hlbiBvdGhlcgo+IFNUTUZYIGZ1bmN0aW9ucyBh cmUgbm90IHVzZWQKPiAtIE1haW4gTUNVIElERCBtZWFzdXJlbWVudAo+IC0gUmVzaXN0aXZlIHRv dWNoc2NyZWVuIGNvbnRyb2xsZXIKPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbWVsaWUgRGVsYXVuYXkg PGFtZWxpZS5kZWxhdW5heUBzdC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvbWZkL0tjb25maWcgICAg ICAgfCAgMTMgKysKPiAgZHJpdmVycy9tZmQvTWFrZWZpbGUgICAgICB8ICAgMiArLQo+ICBkcml2 ZXJzL21mZC9zdG1meC5jICAgICAgIHwgNTY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9saW51eC9tZmQvc3RtZnguaCB8IDEyMyArKysr KysrKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwgNzA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWZkL3N0bWZ4LmMKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvbWZkL3N0bWZ4LmgKClZlcnkgbmljZSBmaXJzdCBhdHRl bXB0IGZvciB3aGF0IGlzIGEgcHJldHR5IGNvbXBsZXggZHJpdmVyLgoKSnVzdCBhIGNvdXBsZSBv ZiBuaXRzIGJlbG93LgoKWy4uLl0KCj4gK3N0YXRpYyBpbnQgc3RtZnhfY2hpcF9pbml0KHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3sKPiArCXN0cnVjdCBzdG1meCAqc3RtZnggPSBpMmNf Z2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiArCXUzMiBpZDsKPiArCXU4IHZlcnNpb25bMl07Cj4g KwlpbnQgcmV0Owo+ICsKPiArCXN0bWZ4LT52ZGQgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9u YWwoJmNsaWVudC0+ZGV2LCAidmRkIik7Cj4gKwlpZiAoSVNfRVJSKHN0bWZ4LT52ZGQpKSB7Cj4g KwkJcmV0ID0gUFRSX0VSUihzdG1meC0+dmRkKTsKPiArCQlpZiAocmV0ICE9IC1FTk9ERVYpIHsK PiArCQkJaWYgKHJldCAhPSAtRVBST0JFX0RFRkVSKQo+ICsJCQkJZGV2X2VycigmY2xpZW50LT5k ZXYsCj4gKwkJCQkJIk5vIFZERCByZWd1bGF0b3IgZm91bmQ6JWRcbiIsIHJldCk7CgpBY3R1YWxs eSAtRU5PREVWIG1lYW5zIHRoaXMsIHdoaWNoIGlzIG9rYXkuCgpJbiB0aGlzIGNhc2Ugd2UgZmFp bGVkIHRvIG9idGFpbiBhIHByb3ZpZGVkIHJlZ3VsYXRvci4KCj4gKwkJCXJldHVybiByZXQ7Cj4g KwkJfQo+ICsJfSBlbHNlIHsKCglpZiAoSVNfRVJSKHN0bWZ4LT52ZGQpICYmIFBUUl9FUlIoc3Rt ZngtPnZkZCkgPT0gLUVQUk9CRV9ERUZFUikgewoJCXJldHVybiBQVFJfRVJSKHN0bWZ4LT52ZGQp OwoJfSBlbHNlIChJU19FUlIoc3RtZngtPnZkZCkgJiYgUFRSX0VSUihzdG1meC0+dmRkKSA9PSAt RU5PREVWKSB7CgkJc3RtZngtPnZkZCA9IE5VTEw7Cgl9IGVsc2UgKElTX0VSUihzdG1meC0+dmRk KSkpIHsKCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgIkZhaWxlZCB0byBnZXQgVkREIHJlZ3VsYXRv cjolZFxuIiwgcmV0KTsKCQlyZXR1cm4gUFRSX0VSUihzdG1meC0+dmRkKTsKCX0KCglpZiAoc3Rt ZngtPnZkZCkgewoKPiArCQlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKHN0bWZ4LT52ZGQpOwo+ICsJ CWlmIChyZXQpIHsKPiArCQkJZGV2X2VycigmY2xpZW50LT5kZXYsICJWREQgZW5hYmxlIGZhaWxl ZDogJWRcbiIsIHJldCk7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsKClsuLi5d Cgo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlc291cmNlIHN0bWZ4X3RzX3Jlc291cmNlc1tdID0g ewo+ICsJREVGSU5FX1JFU19JUlEoU1RNRlhfUkVHX0lSUV9TUkNfRU5fVFNfREVUKSwKPiArCURF RklORV9SRVNfSVJRKFNUTUZYX1JFR19JUlFfU1JDX0VOX1RTX05FKSwKPiArCURFRklORV9SRVNf SVJRKFNUTUZYX1JFR19JUlFfU1JDX0VOX1RTX1RIKSwKPiArCURFRklORV9SRVNfSVJRKFNUTUZY X1JFR19JUlFfU1JDX0VOX1RTX0ZVTEwpLAo+ICsJREVGSU5FX1JFU19JUlEoU1RNRlhfUkVHX0lS UV9TUkNfRU5fVFNfT1ZGKSwKPiArfTsKClBsZWFzZSBtb3ZlIGV2ZXJ5dGhpbmcgZnJvbSBoZXJl IC0tLS0tLS0tLS0tLS0tLT4KCj4gK3N0YXRpYyBzdHJ1Y3QgbWZkX2NlbGwgc3RtZnhfY2VsbHNb XSA9IHsKPiArCXsKPiArCQkub2ZfY29tcGF0aWJsZSA9ICJzdCxzdG1meC0wMzAwLXBpbmN0cmwi LAo+ICsJCS5uYW1lID0gInN0bWZ4LXBpbmN0cmwiLAo+ICsJCS5yZXNvdXJjZXMgPSBzdG1meF9w aW5jdHJsX3Jlc291cmNlcywKPiArCQkubnVtX3Jlc291cmNlcyA9IEFSUkFZX1NJWkUoc3RtZnhf cGluY3RybF9yZXNvdXJjZXMpLAo+ICsJfSwKPiArCXsKPiArCQkub2ZfY29tcGF0aWJsZSA9ICJz dCxzdG1meC0wMzAwLWlkZCIsCj4gKwkJLm5hbWUgPSAic3RtZngtaWRkIiwKPiArCQkucmVzb3Vy Y2VzID0gc3RtZnhfaWRkX3Jlc291cmNlcywKPiArCQkubnVtX3Jlc291cmNlcyA9IEFSUkFZX1NJ WkUoc3RtZnhfaWRkX3Jlc291cmNlcyksCj4gKwl9LAo+ICsJewo+ICsJCS5vZl9jb21wYXRpYmxl ID0gInN0LHN0bWZ4LTAzMDAtdHMiLAo+ICsJCS5uYW1lID0gInN0bWZ4LXRzIiwKPiArCQkucmVz b3VyY2VzID0gc3RtZnhfdHNfcmVzb3VyY2VzLAo+ICsJCS5udW1fcmVzb3VyY2VzID0gQVJSQVlf U0laRShzdG1meF90c19yZXNvdXJjZXMpLAo+ICsJfSwKPiArfTsKPiArCj4gK3N0YXRpYyBib29s IHN0bWZ4X3JlZ192b2xhdGlsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByZWcp Cj4gK3sKPiArCXN3aXRjaCAocmVnKSB7Cj4gKwljYXNlIFNUTUZYX1JFR19TWVNfQ1RSTDoKPiAr CWNhc2UgU1RNRlhfUkVHX0lSUV9TUkNfRU46Cj4gKwljYXNlIFNUTUZYX1JFR19JUlFfUEVORElO RzoKPiArCWNhc2UgU1RNRlhfUkVHX0lSUV9HUElfUEVORElORzE6Cj4gKwljYXNlIFNUTUZYX1JF R19JUlFfR1BJX1BFTkRJTkcyOgo+ICsJY2FzZSBTVE1GWF9SRUdfSVJRX0dQSV9QRU5ESU5HMzoK PiArCWNhc2UgU1RNRlhfUkVHX0dQSU9fU1RBVEUxOgo+ICsJY2FzZSBTVE1GWF9SRUdfR1BJT19T VEFURTI6Cj4gKwljYXNlIFNUTUZYX1JFR19HUElPX1NUQVRFMzoKPiArCWNhc2UgU1RNRlhfUkVH X0lSUV9HUElfU1JDMToKPiArCWNhc2UgU1RNRlhfUkVHX0lSUV9HUElfU1JDMjoKPiArCWNhc2Ug U1RNRlhfUkVHX0lSUV9HUElfU1JDMzoKPiArCWNhc2UgU1RNRlhfUkVHX0dQT19TRVQxOgo+ICsJ Y2FzZSBTVE1GWF9SRUdfR1BPX1NFVDI6Cj4gKwljYXNlIFNUTUZYX1JFR19HUE9fU0VUMzoKPiAr CWNhc2UgU1RNRlhfUkVHX0dQT19DTFIxOgo+ICsJY2FzZSBTVE1GWF9SRUdfR1BPX0NMUjI6Cj4g KwljYXNlIFNUTUZYX1JFR19HUE9fQ0xSMzoKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCWRlZmF1bHQ6 Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBzdG1meF9y ZWdfd3JpdGVhYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJlZykKPiArewo+ ICsJcmV0dXJuIChyZWcgPj0gU1RNRlhfUkVHX1NZU19DVFJMKTsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHN0bWZ4X3JlZ21hcF9jb25maWcgPSB7Cj4gKwku cmVnX2JpdHMJPSA4LAo+ICsJLnJlZ19zdHJpZGUJPSAxLAo+ICsJLnZhbF9iaXRzCT0gOCwKPiAr CS5tYXhfcmVnaXN0ZXIJPSBTVE1GWF9SRUdfTUFYLAo+ICsJLnZvbGF0aWxlX3JlZwk9IHN0bWZ4 X3JlZ192b2xhdGlsZSwKPiArCS53cml0ZWFibGVfcmVnCT0gc3RtZnhfcmVnX3dyaXRlYWJsZSwK PiArCS5jYWNoZV90eXBlCT0gUkVHQ0FDSEVfUkJUUkVFLAo+ICt9OwoKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0+CgouLi4gdG8gaGVyZSwgdXAgdG8gdGhlIHRvcCwganVzdCBiZWxvdyB0aGUgaW5j bHVkZXMuCgo+ICtzdGF0aWMgaW50IHN0bWZ4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQsCj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPiArewo+ICsJ c3RydWN0IGRldmljZSAqZGV2ID0gJmNsaWVudC0+ZGV2Owo+ICsJc3RydWN0IHN0bWZ4ICpzdG1m eDsKPiArCWludCBpLCByZXQ7Cj4gKwo+ICsJc3RtZnggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXpl b2YoKnN0bWZ4KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXN0bWZ4KQo+ICsJCXJldHVybiAtRU5P TUVNOwo+ICsKPiArCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHN0bWZ4KTsKPiArCj4gKwlz dG1meC0+ZGV2ID0gZGV2Owo+ICsKPiArCXN0bWZ4LT5tYXAgPSBkZXZtX3JlZ21hcF9pbml0X2ky YyhjbGllbnQsICZzdG1meF9yZWdtYXBfY29uZmlnKTsKPiArCWlmIChJU19FUlIoc3RtZngtPm1h cCkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKHN0bWZ4LT5tYXApOwo+ICsJCWRldl9lcnIoZGV2LCAi RmFpbGVkIHRvIGFsbG9jYXRlIHJlZ2lzdGVyIG1hcDogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJu IHJldDsKPiArCX0KPiArCj4gKwltdXRleF9pbml0KCZzdG1meC0+bG9jayk7Cj4gKwo+ICsJcmV0 ID0gc3RtZnhfY2hpcF9pbml0KGNsaWVudCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJaWYgKHJldCA9 PSAtRVRJTUVET1VUKQo+ICsJCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPiArCQlyZXR1cm4gcmV0 Owo+ICsJfQo+ICsKPiArCWlmIChjbGllbnQtPmlycSA8IDApIHsKPiArCQlkZXZfZXJyKGRldiwg IkZhaWxlZCB0byBnZXQgSVJROiAlZFxuIiwgY2xpZW50LT5pcnEpOwo+ICsJCXJldCA9IGNsaWVu dC0+aXJxOwo+ICsJCWdvdG8gZXJyX2NoaXBfZXhpdDsKPiArCX0KPiArCj4gKwlyZXQgPSBzdG1m eF9pcnFfaW5pdChjbGllbnQpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl9jaGlwX2V4aXQ7 Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc3RtZnhfY2VsbHMpOyBpKyspIHsK PiArCQlzdG1meF9jZWxsc1tpXS5wbGF0Zm9ybV9kYXRhID0gc3RtZng7Cj4gKwkJc3RtZnhfY2Vs bHNbaV0ucGRhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc3RtZngpOwo+ICsJfQoKUGFzcyB0aGlz IHRob3VnaCBkZXZfZ2V0X2RydmRhdGEoKSBpbnN0ZWFkLgoKLi4uCgpBY3R1YWxseSwgZGlkbid0 IHlvdSBhbHJlYWR5IHNldCB0aGlzIHdpdGggaTJjX3NldF9jbGllbnRkYXRhKCk/ICBUaGF0CmRv ZXMgZXhhY3RseSB0aGUgc2FtZSB0aGluZy4gIFNvIHlvdSBjYW4gZ2V0IHRoaXMgYmFjayBmcm9t IHRoZSBjbGllbnQKdmlhIGkyY19nZXRfY2xpZW50ZGF0YSgpLiAgTm8gbmVlZCB0byBzZW5kIGl0 IHRob3VnaCBwbGF0Zm9ybSBkYXRhLgoKPiArCXJldCA9IGRldm1fbWZkX2FkZF9kZXZpY2VzKGRl diwgUExBVEZPUk1fREVWSURfTk9ORSwKPiArCQkJCSAgIHN0bWZ4X2NlbGxzLCBBUlJBWV9TSVpF KHN0bWZ4X2NlbGxzKSwgTlVMTCwKPiArCQkJCSAgIDAsIHN0bWZ4LT5pcnFfZG9tYWluKTsKPiAr CWlmIChyZXQpCj4gKwkJZ290byBlcnJfaXJxX2V4aXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ ICtlcnJfaXJxX2V4aXQ6Cj4gKwlzdG1meF9pcnFfZXhpdChjbGllbnQpOwo+ICtlcnJfY2hpcF9l eGl0Ogo+ICsJc3RtZnhfY2hpcF9leGl0KGNsaWVudCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAr fQo+ICsKPiArc3RhdGljIGludCBzdG1meF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArewo+ICsJc3RtZnhfaXJxX2V4aXQoY2xpZW50KTsKPiArCj4gKwlyZXR1cm4gc3RtZnhf Y2hpcF9leGl0KGNsaWVudCk7Cj4gK30KPiArCj4gKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKPiAr c3RhdGljIGludCBzdG1meF9iYWNrdXBfcmVncyhzdHJ1Y3Qgc3RtZnggKnN0bWZ4KQo+ICt7Cj4g KwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHJlZ21hcF9yYXdfcmVhZChzdG1meC0+bWFwLCBTVE1G WF9SRUdfU1lTX0NUUkwsCj4gKwkJCSAgICAgICZzdG1meC0+YmtwX3N5c2N0cmwsIHNpemVvZihz dG1meC0+YmtwX3N5c2N0cmwpKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKCidcbicg aGVyZS4KCj4gKwlyZXQgPSByZWdtYXBfcmF3X3JlYWQoc3RtZngtPm1hcCwgU1RNRlhfUkVHX0lS UV9PVVRfUElOLAo+ICsJCQkgICAgICAmc3RtZngtPmJrcF9pcnFvdXRwaW4sCj4gKwkJCSAgICAg IHNpemVvZihzdG1meC0+YmtwX2lycW91dHBpbikpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4g cmV0Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHN0bWZ4X3Jlc3Rv cmVfcmVncyhzdHJ1Y3Qgc3RtZnggKnN0bWZ4KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJl dCA9IHJlZ21hcF9yYXdfd3JpdGUoc3RtZngtPm1hcCwgU1RNRlhfUkVHX1NZU19DVFJMLAo+ICsJ CQkgICAgICAgJnN0bWZ4LT5ia3Bfc3lzY3RybCwgc2l6ZW9mKHN0bWZ4LT5ia3Bfc3lzY3RybCkp Owo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0OwoKJ1xuJyBoZXJlLgoKPiArCXJldCA9IHJl Z21hcF9yYXdfd3JpdGUoc3RtZngtPm1hcCwgU1RNRlhfUkVHX0lSUV9PVVRfUElOLAo+ICsJCQkg ICAgICAgJnN0bWZ4LT5ia3BfaXJxb3V0cGluLAo+ICsJCQkgICAgICAgc2l6ZW9mKHN0bWZ4LT5i a3BfaXJxb3V0cGluKSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7CgonXG4nIGhlcmUu Cgo+ICsJcmV0ID0gcmVnbWFwX3Jhd193cml0ZShzdG1meC0+bWFwLCBTVE1GWF9SRUdfSVJRX1NS Q19FTiwKPiArCQkJICAgICAgICZzdG1meC0+aXJxX3NyYywgc2l6ZW9mKHN0bWZ4LT5pcnFfc3Jj KSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgc3RtZnhfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sK PiArCXN0cnVjdCBzdG1meCAqc3RtZnggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJcmV0ID0gc3RtZnhfYmFja3VwX3JlZ3Moc3RtZngpOwoKRG9uJ3QgdGhpbmsg eW91IG5lZWQgYSBzZXBhcmF0ZSBmdW5jdGlvbiBmb3IgdGhpcy4gIEp1c3QgbW92ZSB0aGUKcmVn bWFwX3Jhd193cml0ZSgpIGNvbW1hbmRzIGhlcmUuCgo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9l cnIoc3RtZngtPmRldiwgIlJlZ2lzdGVycyBiYWNrdXAgZmFpbHVyZVxuIik7Cj4gKwkJcmV0dXJu IHJldDsKPiArCX0KPiArCj4gKwlpZiAoIUlTX0VSUihzdG1meC0+dmRkKSkgewo+ICsJCXJldCA9 IHJlZ3VsYXRvcl9kaXNhYmxlKHN0bWZ4LT52ZGQpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVy biByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc3Rt ZnhfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IHN0bWZ4ICpzdG1m eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIUlTX0VS UihzdG1meC0+dmRkKSkgewo+ICsJCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoc3RtZngtPnZkZCk7 Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlkZXZfZXJyKHN0bWZ4LT5kZXYsCj4gKwkJCQkiVkREIGVu YWJsZSBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCX0K PiArCj4gKwlyZXQgPSBzdG1meF9yZXN0b3JlX3JlZ3Moc3RtZngpOwoKQXMgYWJvdmUuCgo+ICsJ aWYgKHJldCkgewo+ICsJCWRldl9lcnIoc3RtZngtPmRldiwgIlJlZ2lzdGVycyByZXN0b3JhdGlv biBmYWlsdXJlXG4iKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKyNlbmRpZgo+ICsKPiArc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKHN0bWZ4X2Rldl9w bV9vcHMsIHN0bWZ4X3N1c3BlbmQsIHN0bWZ4X3Jlc3VtZSk7Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCBzdG1meF9vZl9tYXRjaFtdID0gewo+ICsJeyAuY29tcGF0aWJs ZSA9ICJzdCxzdG1meC0wMzAwIiwgfSwKPiArCXt9LAo+ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RB QkxFKG9mLCBzdG1meF9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIg c3RtZnhfZHJpdmVyID0gewo+ICsJLmRyaXZlciA9IHsKPiArCQkubmFtZSA9ICJzdG1meC1jb3Jl IiwKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIoc3RtZnhfb2ZfbWF0Y2gpLAo+ ICsJCS5wbSA9ICZzdG1meF9kZXZfcG1fb3BzLAo+ICsJfSwKPiArCS5wcm9iZSA9IHN0bWZ4X3By b2JlLAo+ICsJLnJlbW92ZSA9IHN0bWZ4X3JlbW92ZSwKPiArfTsKPiArbW9kdWxlX2kyY19kcml2 ZXIoc3RtZnhfZHJpdmVyKTsKPiArCj4gK01PRFVMRV9ERVNDUklQVElPTigiU1RNRlggY29yZSBk cml2ZXIiKTsKPiArTU9EVUxFX0FVVEhPUigiQW1lbGllIERlbGF1bmF5IDxhbWVsaWUuZGVsYXVu YXlAc3QuY29tPiIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CgpbLi4uXQoKLS0gCkxl ZSBKb25lcyBb5p2O55C85pavXQpMaW5hcm8gU2VydmljZXMgVGVjaG5pY2FsIExlYWQKTGluYXJv Lm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUgZm9yIEFSTSBTb0NzCkZvbGxvdyBMaW5hcm86 IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK