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=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 48889C43331 for ; Wed, 13 Nov 2019 13:10:50 +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 15752222D0 for ; Wed, 13 Nov 2019 13:10:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="DhkQciuU"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="AdpLPb/9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 15752222D0 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+infradead-linux-riscv=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:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=pi76gsrzxjYUMFGnC2vtz95LoAN4A2U2tER6DMiyU/M=; b=DhkQciuUmUKYqR maJcEX3a/xE6Bt8Yf45Kj3nWBq5RHwuG3dL4CNjYRS6l3qiocqm0BlrxlCMhuHa+5Z3p7DAezrO0N lDpGn/9DFhGcmQY+RtfUAj7uhOEuE+ySW0O3gLNzxlpbeEwpuSv431XgxNnlgjQ9IC1BZq7tx0+g9 rTn1XnGaFxUf5XsVK/kzaAsigGerPUNezrZW1EcVXnlTCsSs4P/FdRCOxYuJfN+UH8ZE92ZD3MpvM XY06tKT8SShdOk+pFECOy1cOT26AwT/685gyeasNYbMS8B457O3wPqz+0LZdqPYxIBQME6nrw4mCE mHYgKNcoyhwteyI+TKYA==; 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 1iUsQ5-000645-5v; Wed, 13 Nov 2019 13:10:49 +0000 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iUsQ1-00061o-VQ for linux-riscv@lists.infradead.org; Wed, 13 Nov 2019 13:10:48 +0000 Received: by mail-ot1-x343.google.com with SMTP id z25so1538977oti.5 for ; Wed, 13 Nov 2019 05:10:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=QF5WItFeCSeyWhEtEa28xG3IXxEhK08V18E2ZmMDVCY=; b=AdpLPb/9xQcjeQGBObE9KkFdrKzGVuDjMkkt9RiKnwOyd7JH9zBy+cXKIZbERfkqrt /1odMjKpgZACxPSRnH/aM3+YFHRqQ3yl8nMtcdtpU3iskHLndB4G2izIVFBWP/VLeoMK DkS5Hpa2kqFibppkuzdIHp1nSoAAxWUFydyd1zXx2QEICs+KddHHbspMgGxakufOFakP Le6qoJQyD74ashzMIC5PbKQr45dmvxapE2sPf/13+edJhKQ6QQX3k8N1yVDc+Mk7YWh/ 5ljpjCV7ht0y9XHOchUV2WaG70U1A7X3N3MCg6zHF++GCTi4se/3tMXUqwE9O8cMwrms lt3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=QF5WItFeCSeyWhEtEa28xG3IXxEhK08V18E2ZmMDVCY=; b=a9WIF+LXRY6AmhblckNGlIStPugnhkIX1OrZkG+oX1p9wDuAtuA9aRuY0GEpQMG4MG MUTvnDRLVRkvNxBjlFFzOK+K2kqPTpdfGILYVFCFRyFzog01CdDRqC45Spy9bZ73mYbi hwgB4HeJeRTs4znVs0D63khtYbc8F8YAKlbb557/oCMxx88EHP3HQz2tKU+P0ZdKmKeq i0K1yAz4VlontTB0ZydNbe1qBY9yvSfaHZ/3mbCs9xGSRqkTKzJmQaxYqC5fM91na1rR KYWAVsnXlIaC7Fb8jIQl3wZnx2PBrYub0zQulUr6Ix/lH+GS7yhmdsLsi5rvxtDnmTmx HD0Q== X-Gm-Message-State: APjAAAVOyWL9zFFhW2EYZeNm9X5B4TsVWoIsO8S9b+VRl+Pni/PYd70k lvbb9zuzqjlnsQEI/0cG9C5mQTYm/AUPu7UPODAXJQ== X-Google-Smtp-Source: APXvYqz6UTmXJGnA5c5F+FBQaPqa7OXAkmEhmRaxD5co7Y4keq0XN+aD4xkKFpebt89NNidxhgFV3VfiTjpZeAjJ4v8= X-Received: by 2002:a9d:68d4:: with SMTP id i20mr3207281oto.194.1573650641322; Wed, 13 Nov 2019 05:10:41 -0800 (PST) MIME-Version: 1.0 References: <1573560684-48104-1-git-send-email-yash.shah@sifive.com> <1573560684-48104-4-git-send-email-yash.shah@sifive.com> In-Reply-To: <1573560684-48104-4-git-send-email-yash.shah@sifive.com> From: Bartosz Golaszewski Date: Wed, 13 Nov 2019 14:10:30 +0100 Message-ID: Subject: Re: [PATCH 3/4] gpio: sifive: Add GPIO driver for SiFive SoCs To: Yash Shah X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191113_051046_012668_D9C2E01D X-CRM114-Status: GOOD ( 19.62 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "mark.rutland@arm.com" , "devicetree@vger.kernel.org" , "aou@eecs.berkeley.edu" , "jason@lakedaemon.net" , "linux-gpio@vger.kernel.org" , "maz@kernel.org" , "linus.walleij@linaro.org" , "linux-kernel@vger.kernel.org" , "atish.patra@wdc.com" , "robh+dt@kernel.org" , "palmer@dabbelt.com" , Sagar Kadam , "Paul Walmsley \( Sifive\)" , "tglx@linutronix.de" , "bmeng.cn@gmail.com" , "linux-riscv@lists.infradead.org" , Sachin Ghadi Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+infradead-linux-riscv=archiver.kernel.org@lists.infradead.org d3QuLCAxMiBsaXMgMjAxOSBvIDEzOjEyIFlhc2ggU2hhaCA8eWFzaC5zaGFoQHNpZml2ZS5jb20+ IG5hcGlzYcWCKGEpOgo+Cj4gQWRkcyB0aGUgR1BJTyBkcml2ZXIgZm9yIFNpRml2ZSBSSVNDLVYg U29Dcy4KPgo+IFNpZ25lZC1vZmYtYnk6IFdlc2xleSBXLiBUZXJwc3RyYSA8d2VzbGV5QHNpZml2 ZS5jb20+Cj4gW0F0aXNoOiBWYXJpb3VzIGZpeGVzIGFuZCBjb2RlIGNsZWFudXBdCj4gU2lnbmVk LW9mZi1ieTogQXRpc2ggUGF0cmEgPGF0aXNoLnBhdHJhQHdkYy5jb20+Cj4gU2lnbmVkLW9mZi1i eTogWWFzaCBTaGFoIDx5YXNoLnNoYWhAc2lmaXZlLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncGlv L0tjb25maWcgICAgICAgfCAgIDkgKysKPiAgZHJpdmVycy9ncGlvL01ha2VmaWxlICAgICAgfCAg IDEgKwo+ICBkcml2ZXJzL2dwaW8vZ3Bpby1zaWZpdmUuYyB8IDI1NSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAyNjUgaW5z ZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncGlvL2dwaW8tc2lmaXZl LmMKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vS2NvbmZpZyBiL2RyaXZlcnMvZ3Bpby9L Y29uZmlnCj4gaW5kZXggMzhlMDk2ZS4uMDVlOGE0MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw aW8vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3Bpby9LY29uZmlnCj4gQEAgLTQ1Myw2ICs0NTMs MTUgQEAgY29uZmlnIEdQSU9fU0FNQTVEMl9QSU9CVQo+ICAgICAgICAgICBUaGUgZGlmZmVyZW5j ZSBmcm9tIHJlZ3VsYXIgR1BJT3MgaXMgdGhhdCB0aGV5Cj4gICAgICAgICAgIG1haW50YWluIHRo ZWlyIHZhbHVlIGR1cmluZyBiYWNrdXAvc2VsZi1yZWZyZXNoLgo+Cj4gK2NvbmZpZyBHUElPX1NJ RklWRQo+ICsgICAgICAgYm9vbCAiU2lGaXZlIEdQSU8gc3VwcG9ydCIKPiArICAgICAgIGRlcGVu ZHMgb24gT0ZfR1BJTwo+ICsgICAgICAgc2VsZWN0IEdQSU9fR0VORVJJQwo+ICsgICAgICAgc2Vs ZWN0IEdQSU9MSUJfSVJRQ0hJUAo+ICsgICAgICAgc2VsZWN0IFJFR01BUF9NTUlPCj4gKyAgICAg ICBoZWxwCj4gKyAgICAgICAgIFNheSB5ZXMgaGVyZSB0byBzdXBwb3J0IHRoZSBHUElPIGRldmlj ZSBvbiBTaUZpdmUgU29Dcy4KPiArCj4gIGNvbmZpZyBHUElPX1NJT1gKPiAgICAgICAgIHRyaXN0 YXRlICJTSU9YIEdQSU8gc3VwcG9ydCIKPiAgICAgICAgIGRlcGVuZHMgb24gU0lPWAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwaW8vTWFrZWZpbGUgYi9kcml2ZXJzL2dwaW8vTWFrZWZpbGUKPiBp bmRleCBkMmZkMTljLi5iZjc5ODRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3Bpby9NYWtlZmls ZQo+ICsrKyBiL2RyaXZlcnMvZ3Bpby9NYWtlZmlsZQo+IEBAIC0xMjEsNiArMTIxLDcgQEAgb2Jq LSQoQ09ORklHX0FSQ0hfU0ExMTAwKSAgICAgICAgICAgKz0gZ3Bpby1zYTExMDAubwo+ICBvYmot JChDT05GSUdfR1BJT19TQU1BNUQyX1BJT0JVKSAgICAgICArPSBncGlvLXNhbWE1ZDItcGlvYnUu bwo+ICBvYmotJChDT05GSUdfR1BJT19TQ0gzMTFYKSAgICAgICAgICAgICArPSBncGlvLXNjaDMx MXgubwo+ICBvYmotJChDT05GSUdfR1BJT19TQ0gpICAgICAgICAgICAgICAgICArPSBncGlvLXNj aC5vCj4gK29iai0kKENPTkZJR19HUElPX1NJRklWRSkgICAgICAgICAgICAgICs9IGdwaW8tc2lm aXZlLm8KPiAgb2JqLSQoQ09ORklHX0dQSU9fU0lPWCkgICAgICAgICAgICAgICAgICAgICAgICAr PSBncGlvLXNpb3gubwo+ICBvYmotJChDT05GSUdfR1BJT19TT0RBVklMTEUpICAgICAgICAgICAr PSBncGlvLXNvZGF2aWxsZS5vCj4gIG9iai0kKENPTkZJR19HUElPX1NQRUFSX1NQSUNTKSAgICAg ICAgICs9IGdwaW8tc3BlYXItc3BpY3Mubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vZ3Bp by1zaWZpdmUuYyBiL2RyaXZlcnMvZ3Bpby9ncGlvLXNpZml2ZS5jCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwLi5hYmRmODM5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Ry aXZlcnMvZ3Bpby9ncGlvLXNpZml2ZS5jCj4gQEAgLTAsMCArMSwyNTUgQEAKPiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE5 IFNpRml2ZQo+ICsgKi8KPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgo+ICsjaW5jbHVkZSA8 bGludXgvb2ZfaXJxLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2RyaXZlci5oPgo+ICsjaW5j bHVkZSA8bGludXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcG0uaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArCj4gKyNkZWZpbmUgR1BJT19JTlBVVF9WQUwgMHgw MAo+ICsjZGVmaW5lIEdQSU9fSU5QVVRfRU4gIDB4MDQKPiArI2RlZmluZSBHUElPX09VVFBVVF9F TiAweDA4Cj4gKyNkZWZpbmUgR1BJT19PVVRQVVRfVkFMICAgICAgICAweDBDCj4gKyNkZWZpbmUg R1BJT19SSVNFX0lFICAgMHgxOAo+ICsjZGVmaW5lIEdQSU9fUklTRV9JUCAgIDB4MUMKPiArI2Rl ZmluZSBHUElPX0ZBTExfSUUgICAweDIwCj4gKyNkZWZpbmUgR1BJT19GQUxMX0lQICAgMHgyNAo+ ICsjZGVmaW5lIEdQSU9fSElHSF9JRSAgIDB4MjgKPiArI2RlZmluZSBHUElPX0hJR0hfSVAgICAw eDJDCj4gKyNkZWZpbmUgR1BJT19MT1dfSUUgICAgMHgzMAo+ICsjZGVmaW5lIEdQSU9fTE9XX0lQ ICAgIDB4MzQKPiArI2RlZmluZSBHUElPX09VVFBVVF9YT1IgICAgICAgIDB4NDAKPiArCj4gKyNk ZWZpbmUgTUFYX0dQSU8gICAgICAgMzIKPiArCj4gK3N0cnVjdCBzaWZpdmVfZ3BpbyB7Cj4gKyAg ICAgICByYXdfc3BpbmxvY2tfdCAgICAgICAgICBsb2NrOwo+ICsgICAgICAgdm9pZCBfX2lvbWVt ICAgICAgICAgICAgKmJhc2U7Cj4gKyAgICAgICBzdHJ1Y3QgZ3Bpb19jaGlwICAgICAgICBnYzsK PiArICAgICAgIHN0cnVjdCByZWdtYXAgICAgICAgICAgICpyZWdzOwo+ICsgICAgICAgdTMyICAg ICAgICAgICAgICAgICAgICAgZW5hYmxlZDsKPiArICAgICAgIHVuc2lnbmVkIGludCAgICAgICAg ICAgIHRyaWdnZXJbTUFYX0dQSU9dOwo+ICsgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAg aXJxX3BhcmVudFtNQVhfR1BJT107Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBzaWZpdmVfc2V0 X2llKHN0cnVjdCBzaWZpdmVfZ3BpbyAqY2hpcCwgdW5zaWduZWQgaW50IG9mZnNldCkKPiArewo+ ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiArICAgICAgIHVuc2lnbmVkIGludCB0cmln Z2VyOwo+ICsKPiArICAgICAgIHJhd19zcGluX2xvY2tfaXJxc2F2ZSgmY2hpcC0+bG9jaywgZmxh Z3MpOwo+ICsgICAgICAgdHJpZ2dlciA9IChjaGlwLT5lbmFibGVkICYgQklUKG9mZnNldCkpID8g Y2hpcC0+dHJpZ2dlcltvZmZzZXRdIDogMDsKPiArICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhj aGlwLT5yZWdzLCBHUElPX1JJU0VfSUUsIEJJVChvZmZzZXQpLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICh0cmlnZ2VyICYgSVJRX1RZUEVfRURHRV9SSVNJTkcpID8gQklUKG9mZnNldCkg OiAwKTsKPiArICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhjaGlwLT5yZWdzLCBHUElPX0ZBTExf SUUsIEJJVChvZmZzZXQpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmlnZ2VyICYg SVJRX1RZUEVfRURHRV9GQUxMSU5HKSA/IEJJVChvZmZzZXQpIDogMCk7Cj4gKyAgICAgICByZWdt YXBfdXBkYXRlX2JpdHMoY2hpcC0+cmVncywgR1BJT19ISUdIX0lFLCBCSVQob2Zmc2V0KSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJpZ2dlciAmIElSUV9UWVBFX0xFVkVMX0hJR0gp ID8gQklUKG9mZnNldCkgOiAwKTsKPiArICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhjaGlwLT5y ZWdzLCBHUElPX0xPV19JRSwgQklUKG9mZnNldCksCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKHRyaWdnZXIgJiBJUlFfVFlQRV9MRVZFTF9MT1cpID8gQklUKG9mZnNldCkgOiAwKTsKPiAr ICAgICAgIHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZjaGlwLT5sb2NrLCBmbGFncyk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgc2lmaXZlX2lycV9zZXRfdHlwZShzdHJ1Y3QgaXJxX2RhdGEg KmQsIHVuc2lnbmVkIGludCB0cmlnZ2VyKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZ3Bpb19jaGlw ICpnYyA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpOwo+ICsgICAgICAgc3RydWN0IHNp Zml2ZV9ncGlvICpjaGlwID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoZ2MpOwo+ICsgICAgICAgaW50IG9m ZnNldCA9IGlycWRfdG9faHdpcnEoZCk7Cj4gKwo+ICsgICAgICAgaWYgKG9mZnNldCA8IDAgfHwg b2Zmc2V0ID49IGdjLT5uZ3BpbykKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsgICAgICAgY2hpcC0+dHJpZ2dlcltvZmZzZXRdID0gdHJpZ2dlcjsKPiArICAgICAgIHNp Zml2ZV9zZXRfaWUoY2hpcCwgb2Zmc2V0KTsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBzaWZpdmVfaXJxX2VuYWJsZShzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4gK3sK PiArICAgICAgIHN0cnVjdCBncGlvX2NoaXAgKmdjID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2Rh dGEoZCk7Cj4gKyAgICAgICBzdHJ1Y3Qgc2lmaXZlX2dwaW8gKmNoaXAgPSBncGlvY2hpcF9nZXRf ZGF0YShnYyk7Cj4gKyAgICAgICBpbnQgb2Zmc2V0ID0gaXJxZF90b19od2lycShkKSAlIE1BWF9H UElPOwo+ICsgICAgICAgdTMyIGJpdCA9IEJJVChvZmZzZXQpOwo+ICsKPiArICAgICAgIGlycV9j aGlwX2VuYWJsZV9wYXJlbnQoZCk7Cj4gKwo+ICsgICAgICAgLyogU3dpdGNoIHRvIGlucHV0ICov Cj4gKyAgICAgICBnYy0+ZGlyZWN0aW9uX2lucHV0KGdjLCBvZmZzZXQpOwo+ICsKPiArICAgICAg IC8qIENsZWFyIGFueSBzdGlja3kgcGVuZGluZyBpbnRlcnJ1cHRzICovCj4gKyAgICAgICBpb3dy aXRlMzIoYml0LCBjaGlwLT5iYXNlICsgR1BJT19SSVNFX0lQKTsKPiArICAgICAgIGlvd3JpdGUz MihiaXQsIGNoaXAtPmJhc2UgKyBHUElPX0ZBTExfSVApOwo+ICsgICAgICAgaW93cml0ZTMyKGJp dCwgY2hpcC0+YmFzZSArIEdQSU9fSElHSF9JUCk7Cj4gKyAgICAgICBpb3dyaXRlMzIoYml0LCBj aGlwLT5iYXNlICsgR1BJT19MT1dfSVApOwo+ICsKPiArICAgICAgIC8qIEVuYWJsZSBpbnRlcnJ1 cHRzICovCj4gKyAgICAgICBhc3NpZ25fYml0KG9mZnNldCwgKHVuc2lnbmVkIGxvbmcgKikmY2hp cC0+ZW5hYmxlZCwgMSk7Cj4gKyAgICAgICBzaWZpdmVfc2V0X2llKGNoaXAsIG9mZnNldCk7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIHNpZml2ZV9pcnFfZGlzYWJsZShzdHJ1Y3QgaXJxX2RhdGEg KmQpCj4gK3sKPiArICAgICAgIHN0cnVjdCBncGlvX2NoaXAgKmdjID0gaXJxX2RhdGFfZ2V0X2ly cV9jaGlwX2RhdGEoZCk7Cj4gKyAgICAgICBzdHJ1Y3Qgc2lmaXZlX2dwaW8gKmNoaXAgPSBncGlv Y2hpcF9nZXRfZGF0YShnYyk7Cj4gKyAgICAgICBpbnQgb2Zmc2V0ID0gaXJxZF90b19od2lycShk KSAlIE1BWF9HUElPOwo+ICsKPiArICAgICAgIGFzc2lnbl9iaXQob2Zmc2V0LCAodW5zaWduZWQg bG9uZyAqKSZjaGlwLT5lbmFibGVkLCAwKTsKPiArICAgICAgIHNpZml2ZV9zZXRfaWUoY2hpcCwg b2Zmc2V0KTsKPiArICAgICAgIGlycV9jaGlwX2Rpc2FibGVfcGFyZW50KGQpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBzaWZpdmVfaXJxX2VvaShzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4gK3sKPiAr ICAgICAgIHN0cnVjdCBncGlvX2NoaXAgKmdjID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEo ZCk7Cj4gKyAgICAgICBzdHJ1Y3Qgc2lmaXZlX2dwaW8gKmNoaXAgPSBncGlvY2hpcF9nZXRfZGF0 YShnYyk7Cj4gKyAgICAgICBpbnQgb2Zmc2V0ID0gaXJxZF90b19od2lycShkKSAlIE1BWF9HUElP Owo+ICsgICAgICAgdTMyIGJpdCA9IEJJVChvZmZzZXQpOwo+ICsKPiArICAgICAgIC8qIENsZWFy IGFsbCBwZW5kaW5nIGludGVycnVwdHMgKi8KPiArICAgICAgIGlvd3JpdGUzMihiaXQsIGNoaXAt PmJhc2UgKyBHUElPX1JJU0VfSVApOwo+ICsgICAgICAgaW93cml0ZTMyKGJpdCwgY2hpcC0+YmFz ZSArIEdQSU9fRkFMTF9JUCk7Cj4gKyAgICAgICBpb3dyaXRlMzIoYml0LCBjaGlwLT5iYXNlICsg R1BJT19ISUdIX0lQKTsKPiArICAgICAgIGlvd3JpdGUzMihiaXQsIGNoaXAtPmJhc2UgKyBHUElP X0xPV19JUCk7Cj4gKwo+ICsgICAgICAgaXJxX2NoaXBfZW9pX3BhcmVudChkKTsKPiArfQo+ICsK PiArc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBzaWZpdmVfaXJxY2hpcCA9IHsKPiArICAgICAgIC5u YW1lICAgICAgICAgICA9ICJzaWZpdmUtZ3BpbyIsCj4gKyAgICAgICAuaXJxX3NldF90eXBlICAg PSBzaWZpdmVfaXJxX3NldF90eXBlLAo+ICsgICAgICAgLmlycV9tYXNrICAgICAgID0gaXJxX2No aXBfbWFza19wYXJlbnQsCj4gKyAgICAgICAuaXJxX3VubWFzayAgICAgPSBpcnFfY2hpcF91bm1h c2tfcGFyZW50LAo+ICsgICAgICAgLmlycV9lbmFibGUgICAgID0gc2lmaXZlX2lycV9lbmFibGUs Cj4gKyAgICAgICAuaXJxX2Rpc2FibGUgICAgPSBzaWZpdmVfaXJxX2Rpc2FibGUsCj4gKyAgICAg ICAuaXJxX2VvaSAgICAgICAgPSBzaWZpdmVfaXJxX2VvaSwKPiArfTsKPiArCj4gK3N0YXRpYyBp bnQgc2lmaXZlX2dwaW9fY2hpbGRfdG9fcGFyZW50X2h3aXJxKHN0cnVjdCBncGlvX2NoaXAgKmdj LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBjaGlsZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgY2hpbGRfdHlwZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBhcmVudCwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBhcmVudF90eXBlKQo+ ICt7Cj4gKyAgICAgICAvKiBBbGwgdGhlc2UgaW50ZXJydXB0cyBhcmUgbGV2ZWwgaGlnaCBpbiB0 aGUgQ1BVICovCj4gKyAgICAgICAqcGFyZW50X3R5cGUgPSBJUlFfVFlQRV9MRVZFTF9ISUdIOwo+ ICsgICAgICAgKnBhcmVudCA9IGNoaWxkICsgNzsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgc2lmaXZlX2dwaW9fcmVnbWFw X2NvbmZpZyA9IHsKPiArICAgICAgIC5yZWdfYml0cyA9IDMyLAo+ICsgICAgICAgLnJlZ19zdHJp ZGUgPSA0LAo+ICsgICAgICAgLnZhbF9iaXRzID0gMzIsCj4gKyAgICAgICAuZmFzdF9pbyA9IHRy dWUsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHNpZml2ZV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZw ZGV2LT5kZXY7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBwZGV2LT5kZXYu b2Zfbm9kZTsKPiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqaXJxX3BhcmVudDsKPiArICAg ICAgIHN0cnVjdCBpcnFfZG9tYWluICpwYXJlbnQ7Cj4gKyAgICAgICBzdHJ1Y3QgZ3Bpb19pcnFf Y2hpcCAqZ2lycTsKPiArICAgICAgIHN0cnVjdCBzaWZpdmVfZ3BpbyAqY2hpcDsKPiArICAgICAg IHN0cnVjdCByZXNvdXJjZSAqcmVzOwo+ICsgICAgICAgaW50IHJldCwgbmdwaW87Cj4gKwo+ICsg ICAgICAgY2hpcCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2hpcCksIEdGUF9LRVJORUwp Owo+ICsgICAgICAgaWYgKCFjaGlwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsK PiArCj4gKyAgICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJD RV9NRU0sIDApOwo+ICsgICAgICAgY2hpcC0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShk ZXYsIHJlcyk7CgpVc2UgZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKCkgYW5kIGRyb3Ag dGhlIHJlcyB2YXJpYWJsZS4KCj4gKyAgICAgICBpZiAoSVNfRVJSKGNoaXAtPmJhc2UpKSB7Cj4g KyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIGRldmljZSBt ZW1vcnlcbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjaGlwLT5iYXNlKTsK PiArICAgICAgIH0KPiArCj4gKyAgICAgICBjaGlwLT5yZWdzID0gZGV2bV9yZWdtYXBfaW5pdF9t bWlvKGRldiwgY2hpcC0+YmFzZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnNpZml2ZV9ncGlvX3JlZ21hcF9jb25maWcpOwoKV2h5IGRvIHlvdSBuZWVkIHRo aXMgcmVnbWFwIGhlcmU/IFlvdSBpbml0aWFsaXplIGEgbmV3IHJlZ21hcCwgdGhlbgp1c2UgeW91 ciBvd24gbG9ja2luZyBkZXNwaXRlIG5vdCBoYXZpbmcgZGlzYWJsZWQgdGhlIGludGVybmFsIGxv Y2tpbmcKaW4gcmVnbWFwLCBhbmQgdGhlbiB5b3UgaW5pdGlhbGl6ZSB0aGUgbW1pbyBnZW5lcmlj IEdQSU8gY29kZSB3aGljaAp3aWxsIHVzZSB5ZXQgYW5vdGhlciBsb2NrIHRvIG9wZXJhdGUgb24g dGhlIHNhbWUgcmVnaXN0ZXJzIGFuZCBpbiB0aGUKZW5kIHlvdSB3cml0ZSB0byB0aG9zZSByZWdp c3RlcnMgd2l0aG91dCB0YWtpbmcgYW55IGxvY2sgYW55d2F5LgpEb2Vzbid0IG1ha2UgbXVjaCBz ZW5zZSB0byBtZS4KCj4gKyAgICAgICBpZiAoSVNfRVJSKGNoaXAtPnJlZ3MpKQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gUFRSX0VSUihjaGlwLT5yZWdzKTsKPiArCj4gKyAgICAgICBuZ3BpbyA9 IG9mX2lycV9jb3VudChub2RlKTsKPiArICAgICAgIGlmIChuZ3BpbyA+PSBNQVhfR1BJTykgewo+ ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIlRvbyBtYW55IEdQSU8gaW50ZXJydXB0cyAo bWF4PSVkKVxuIiwgTUFYX0dQSU8pOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOWElPOwo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlycV9wYXJlbnQgPSBvZl9pcnFfZmluZF9wYXJlbnQo bm9kZSk7Cj4gKyAgICAgICBpZiAoIWlycV9wYXJlbnQpIHsKPiArICAgICAgICAgICAgICAgZGV2 X2VycihkZXYsICJubyBJUlEgcGFyZW50IG5vZGVcbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1 cm4gLUVOT0RFVjsKPiArICAgICAgIH0KPiArICAgICAgIHBhcmVudCA9IGlycV9maW5kX2hvc3Qo aXJxX3BhcmVudCk7Cj4gKyAgICAgICBpZiAoIXBhcmVudCkgewo+ICsgICAgICAgICAgICAgICBk ZXZfZXJyKGRldiwgIm5vIElSUSBwYXJlbnQgZG9tYWluXG4iKTsKPiArICAgICAgICAgICAgICAg cmV0dXJuIC1FTk9ERVY7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0ID0gYmdwaW9faW5p dCgmY2hpcC0+Z2MsIGRldiwgNCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgY2hpcC0+YmFz ZSArIEdQSU9fSU5QVVRfVkFMLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5iYXNl ICsgR1BJT19PVVRQVVRfVkFMLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBjaGlwLT5iYXNlICsgR1BJT19PVVRQVVRfRU4sCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGNoaXAtPmJhc2UgKyBHUElPX0lOUFVUX0VOLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAwKTsKPiArICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAg ICAgICAgZGV2X2VycihkZXYsICJ1bmFibGUgdG8gaW5pdCBnZW5lcmljIEdQSU9cbiIpOwo+ICsg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qIERp c2FibGUgYWxsIEdQSU8gaW50ZXJydXB0cyBiZWZvcmUgZW5hYmxpbmcgcGFyZW50IGludGVycnVw dHMgKi8KPiArICAgICAgIGlvd3JpdGUzMigwLCBjaGlwLT5iYXNlICsgR1BJT19SSVNFX0lFKTsK PiArICAgICAgIGlvd3JpdGUzMigwLCBjaGlwLT5iYXNlICsgR1BJT19GQUxMX0lFKTsKPiArICAg ICAgIGlvd3JpdGUzMigwLCBjaGlwLT5iYXNlICsgR1BJT19ISUdIX0lFKTsKPiArICAgICAgIGlv d3JpdGUzMigwLCBjaGlwLT5iYXNlICsgR1BJT19MT1dfSUUpOwo+ICsgICAgICAgY2hpcC0+ZW5h YmxlZCA9IDA7Cj4gKwo+ICsgICAgICAgcmF3X3NwaW5fbG9ja19pbml0KCZjaGlwLT5sb2NrKTsK PiArICAgICAgIGNoaXAtPmdjLmJhc2UgPSAtMTsKPiArICAgICAgIGNoaXAtPmdjLm5ncGlvID0g bmdwaW87Cj4gKyAgICAgICBjaGlwLT5nYy5sYWJlbCA9IGRldl9uYW1lKGRldik7Cj4gKyAgICAg ICBjaGlwLT5nYy5wYXJlbnQgPSBkZXY7Cj4gKyAgICAgICBjaGlwLT5nYy5vd25lciA9IFRISVNf TU9EVUxFOwo+ICsgICAgICAgZ2lycSA9ICZjaGlwLT5nYy5pcnE7Cj4gKyAgICAgICBnaXJxLT5j aGlwID0gJnNpZml2ZV9pcnFjaGlwOwo+ICsgICAgICAgZ2lycS0+Zndub2RlID0gb2Zfbm9kZV90 b19md25vZGUobm9kZSk7Cj4gKyAgICAgICBnaXJxLT5wYXJlbnRfZG9tYWluID0gcGFyZW50Owo+ ICsgICAgICAgZ2lycS0+Y2hpbGRfdG9fcGFyZW50X2h3aXJxID0gc2lmaXZlX2dwaW9fY2hpbGRf dG9fcGFyZW50X2h3aXJxOwo+ICsgICAgICAgZ2lycS0+aGFuZGxlciA9IGhhbmRsZV9iYWRfaXJx Owo+ICsgICAgICAgZ2lycS0+ZGVmYXVsdF90eXBlID0gSVJRX1RZUEVfTk9ORTsKPiArCj4gKyAg ICAgICByZXQgPSBncGlvY2hpcF9hZGRfZGF0YSgmY2hpcC0+Z2MsIGNoaXApOwo+ICsgICAgICAg aWYgKHJldCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICAgICBwbGF0 Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjaGlwKTsKPiArICAgICAgIGRldl9pbmZvKGRldiwgIlNp Rml2ZSBHUElPIGNoaXAgcmVnaXN0ZXJlZCAlZCBHUElPc1xuIiwgbmdwaW8pOwoKQ29yZSBncGlv IGxpYnJhcnkgZW1pdHMgYSB2ZXJ5IHNpbWlsYXIgZGVidWcgbWVzc2FnZSBmcm9tCmdwaW9jaGlw X3NldHVwX2RldigpLCBJIHRoaW5rIHlvdSBjYW4gZHJvcCBpdCBhbmQgZGlyZWN0bHkgcmV0dXJu CmdwaW9jaGlwX2FkZF9kYXRhKCkuCgpCYXJ0b3N6Cgo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzaWZpdmVfZ3Bpb19t YXRjaFtdID0gewo+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJzaWZpdmUsZ3BpbzAiIH0sCj4g KyAgICAgICB7IC5jb21wYXRpYmxlID0gInNpZml2ZSxmdTU0MC1jMDAwLWdwaW8iIH0sCj4gKyAg ICAgICB7IH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzaWZp dmVfZ3Bpb19kcml2ZXIgPSB7Cj4gKyAgICAgICAucHJvYmUgICAgICAgICAgPSBzaWZpdmVfZ3Bp b19wcm9iZSwKPiArICAgICAgIC5kcml2ZXIgPSB7Cj4gKyAgICAgICAgICAgICAgIC5uYW1lICAg PSAic2lmaXZlX2dwaW8iLAo+ICsgICAgICAgICAgICAgICAub2ZfbWF0Y2hfdGFibGUgPSBvZl9t YXRjaF9wdHIoc2lmaXZlX2dwaW9fbWF0Y2gpLAo+ICsgICAgICAgfSwKPiArfTsKPiArYnVpbHRp bl9wbGF0Zm9ybV9kcml2ZXIoc2lmaXZlX2dwaW9fZHJpdmVyKQo+IC0tCj4gMi43LjQKPgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3Yg bWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=