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=-2.0 required=3.0 tests=BAYES_00,DATE_IN_PAST_06_12, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no 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 3A1AEC433E2 for ; Thu, 10 Sep 2020 08:12:45 +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 9E67920731 for ; Thu, 10 Sep 2020 08:12:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="kUmW7Jo6"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AaIzZvaq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9E67920731 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: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=9ZUs2O5FgjWgaOX/uAjJBySgGb55rIz4PbiSrZoRdzA=; b=kUmW7Jo66nF72P1KYoZ2IqPat Z6xTlmuBMTvvaW7h/vYveiAxGgU9REs7x7DKaSjwH/nC/Vp9RGgKIhB9wL/Z5kgdW0TsCpzNGSkHi iS5Py9YftQT6eezcM4mrJAHme9mOKJkZZ4N7aHY7wlHk7X45IvNF3CuyMEJT6M/0KEzj9lWtJaRgK Bvtv5wpRh/VQEkiekSb4X05r/QEoZ1BbjiGuUvqfFMGHyFKQUEyjlxNwbVavWgCCZLg3Fw9WJHRY8 Tq7HZFeNEcQG5PkCtfEEKy6GtLvQ3GDDnuG5rIAyTAHa+5FlmJhxRqoZKpR1TbtzC4wLB4wjATT97 /xhcNjS0A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kGHfu-0007wB-2n; Thu, 10 Sep 2020 08:11:22 +0000 Received: from mail-il1-x143.google.com ([2607:f8b0:4864:20::143]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kGHfr-0007ve-O7; Thu, 10 Sep 2020 08:11:20 +0000 Received: by mail-il1-x143.google.com with SMTP id x2so4897659ilm.0; Thu, 10 Sep 2020 01:11:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=h2IZltBAMOS/o9iIrQdsLGqY/IFmzbDkqlzeIWyPEyE=; b=AaIzZvaqthpqmY0nldV4aFsCIUhn6+C5yi/EJmXnqVwgmkk4rzm3OoJgvrNeO9mQ2O YLmG7ZzVAFwXMQeHxWnO/+awYblIIUa6XHGMsJwqbuQQRIkTn4dLRgZi1y68fc9WupkX VPu/qdWD6V5mDIulLRmlf5xi5wlNQ/7I3tnMixgrEeLPfbdsQSS6vRwYx9vTaQxkcmV8 13DxwoYIVwBw8ZZPRAw4XyqcAzaNxLIykpvG20uitwd8pd7z6YIk3noLRe2uL0mTB5R+ DIYvtHXZzVanJxCj8wMRZnGd8APuOBAXi/ildev/001fMHoBs7XP40UW/YvyGhzWuXR3 8Yig== 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=h2IZltBAMOS/o9iIrQdsLGqY/IFmzbDkqlzeIWyPEyE=; b=sNtOSonMUH6ON26LFVZStzr0d5G6IzeYvz7JVzIwattZCIp5wj1qnfAcGJG8OPrL4L gmWxctoHjl9lMKeY6jh/M2h6g4agIlTS06/zBEoP65FLhJnJj4KAAuM9FJ3nmbvLYPcS Rq+eDw4KcIXoEI2d4aCuHrQpOX39cgTEBognTGtKqReFVgPhym+zzAritA+qTPAet0R6 KtiYD2M1fj7LvREfUVdnAHFtRM4goSV7REQC0bjrExn0pymYozbjABSUI7sCk4UZcaBN SMGixx/SdDlwwRkwse4UEJ8CalOEA7db8jwcuP99sPrn0dNj9zJfZNZAO8VHNlU+t0jZ OnXg== X-Gm-Message-State: AOAM530rxQcYwKTK5CUSuiWMVgEOrn5MaWAkuk297AtHvMKFJS1CVYx/ TXRUzIao7Yl36Ulk5ECiDzShzdCq4EQexNa/5EY= X-Google-Smtp-Source: ABdhPJxK4TDHSOyxHtmtUBONEAfWXowozHed9JQnZ2LJ4ec+JtNREuI0uflxK0VEzj+Thfg96iuJThe14spKX5gwJas= X-Received: by 2002:a92:7f0f:: with SMTP id a15mr6964207ild.186.1599725478055; Thu, 10 Sep 2020 01:11:18 -0700 (PDT) MIME-Version: 1.0 References: <1599474459-20853-1-git-send-email-gene.chen.richtek@gmail.com> <1599474459-20853-2-git-send-email-gene.chen.richtek@gmail.com> In-Reply-To: From: Gene Chen Date: Thu, 10 Sep 2020 08:11:06 +0800 Message-ID: Subject: Re: [PATCH v3 1/2] leds: mt6360: Add LED driver for MT6360 To: Andy Shevchenko X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200910_041119_782937_EC0AF314 X-CRM114-Status: GOOD ( 31.40 ) 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: linux-arm Mailing List , devicetree , cy_huang@richtek.com, Linux Kernel Mailing List , Gene Chen , benjamin.chao@mediatek.com, Rob Herring , "moderated list:ARM/Mediatek SoC support" , Jacek Anaszewski , Pavel Machek , Matthias Brugger , shufan_lee@richtek.com, Wilma.Wu@mediatek.com, Linux LED Subsystem , Dan Murphy 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 QW5keSBTaGV2Y2hlbmtvIDxhbmR5LnNoZXZjaGVua29AZ21haWwuY29tPiDmlrwgMjAyMOW5tDnm nIg55pelIOmAseS4iSDkuIvljYg5OjQ45a+r6YGT77yaCj4KPiBPbiBNb24sIFNlcCA3LCAyMDIw IGF0IDE6MzEgUE0gR2VuZSBDaGVuIDxnZW5lLmNoZW4ucmljaHRla0BnbWFpbC5jb20+IHdyb3Rl Ogo+ID4KPiA+IEZyb206IEdlbmUgQ2hlbiA8Z2VuZV9jaGVuQHJpY2h0ZWsuY29tPgo+ID4KPiA+ IEFkZCBNVDYzNjAgTEVEIGRyaXZlciBpbmNsdWRlIDItY2hhbm5lbCBGbGFzaCBMRUQgd2l0aCB0 b3JjaC9zdHJvYmUgbW9kZSwKPiA+IGFuZCA0LWNoYW5uZWwgUkdCIExFRCBzdXBwb3J0IFJlZ2lz dGVyL0ZsYXNoL0JyZWF0aCBNb2RlCj4KPiBJJ20gd29uZGVyaW5nIHdoeSB5b3UgZG9uJ3QgdXNl IHN0cnVjdCBsZWRfY2xhc3NkZXZfZmxhc2guCj4KPiAuLi4KPgoKQm90aCBGbGFzaCBhbmQgUkdC IExFRCB1c2UgbGVkX2NsYXNzZGV2X2ZsYXNoIGJ5CiJkZXZtX2xlZF9jbGFzc2Rldl9mbGFzaF9y ZWdpc3Rlcl9leHQiLgoKPiA+ICsvLwo+ID4gKy8vIENvcHlyaWdodCAoQykgMjAyMCBNZWRpYVRl ayBJbmMuCj4gPiArLy8KPgo+IERvIHlvdSByZWFsbHkgbmVlZCB0aGVzZSB0d28gLy8gbGluZXM/ Cj4KCkFDSywgSSB3aWxsIHJlbW92ZSBpdAoKPiAuLi4KPgo+ID4gK2VudW0gewo+ID4gKyAgICAg ICBNVDYzNjBfTEVEX0lTTksxID0gMCwKPiA+ICsgICAgICAgTVQ2MzYwX0xFRF9JU05LMiwKPiA+ ICsgICAgICAgTVQ2MzYwX0xFRF9JU05LMywKPiA+ICsgICAgICAgTVQ2MzYwX0xFRF9JU05LNCwK PiA+ICsgICAgICAgTVQ2MzYwX0xFRF9GTEFTSDEsCj4gPiArICAgICAgIE1UNjM2MF9MRURfRkxB U0gyLAo+Cj4gPiArICAgICAgIE1UNjM2MF9NQVhfTEVEUywKPgo+IE5vIGNvbW1hIGZvciB0ZXJt aW5hdG9yIGVudHJ5Lgo+CgpBQ0sKCj4gPiArfTsKPgo+IC4uLgo+Cj4gPiArI2RlZmluZSBNVDYz NjBfSVNOS19NQVNLICAgICAgICAgICAgICAgMHgxRgo+Cj4gR0VOTUFTSygpCj4KPiAuLi4KPgo+ ID4gKyNkZWZpbmUgTVQ2MzYwX0lUT1JDSF9NSU4gICAgICAgICAgICAgIDI1MDAwCj4gPiArI2Rl ZmluZSBNVDYzNjBfSVRPUkNIX1NURVAgICAgICAgICAgICAgMTI1MDAKPiA+ICsjZGVmaW5lIE1U NjM2MF9JVE9SQ0hfTUFYICAgICAgICAgICAgICA0MDAwMDAKPiA+ICsjZGVmaW5lIE1UNjM2MF9J U1RSQl9NSU4gICAgICAgICAgICAgICA1MDAwMAo+ID4gKyNkZWZpbmUgTVQ2MzYwX0lTVFJCX1NU RVAgICAgICAgICAgICAgIDEyNTAwCj4gPiArI2RlZmluZSBNVDYzNjBfSVNUUkJfTUFYICAgICAg ICAgICAgICAgMTUwMDAwMAo+ID4gKyNkZWZpbmUgTVQ2MzYwX1NUUkJUT19NSU4gICAgICAgICAg ICAgIDY0MDAwCj4gPiArI2RlZmluZSBNVDYzNjBfU1RSQlRPX1NURVAgICAgICAgICAgICAgMzIw MDAKPiA+ICsjZGVmaW5lIE1UNjM2MF9TVFJCVE9fTUFYICAgICAgICAgICAgICAyNDMyMDAwCj4K PiBBZGQgdW5pdCBzdWZmaXhlcywgcGxlYXNlLgo+CgpBQ0sKCj4gLi4uCj4KPiA+ICsjZGVmaW5l IEZMRURfVE9SQ0hfRkxBR19NQVNLICAgICAgICAgICAweDBjCj4KPiA+ICsjZGVmaW5lIEZMRURf U1RST0JFX0ZMQUdfTUFTSyAgICAgICAgICAweDAzCj4KPiBHRU5NQVNLKCkKPgoKQUNLCgo+IC4u Lgo+Cj4gPiArICAgICAgIGRldl9kYmcobGNkZXYtPmRldiwgIlslZF0gYnJpZ2h0bmVzcyAlZFxu IiwgbGVkLT5sZWRfbm8sIGxldmVsKTsKPgo+IE5vdCBwcm9kdWN0aW9uIG5vaXNlLgo+CgpBQ0sK Cj4gLi4uCj4KPiA+ICsgICAgICAgcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21h cCwgTVQ2MzYwX1JFR19SR0JFTiwgZW5hYmxlX21hc2ssIHZhbCk7Cj4gPiArICAgICAgIGlmIChy ZXQpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAgICAgcmV0 dXJuIDA7Cj4KPiByZXR1cm4gcmVnbWFwLi4uCj4KPiA+ICsgICAgICAgdTMyIHZhbCA9IChsZXZl bCkgPyBNVDYzNjBfRkxDU0VOX01BU0sobGVkLT5sZWRfbm8pIDogMDsKPgo+IFdoeSBwYXJlbnM/ Cj4KCkFDSwoKPiAuLi4KPgo+ID4gKyAgICAgICBkZXZfZGJnKGxjZGV2LT5kZXYsICJbJWRdIGJy aWdodG5lc3MgJWRcbiIsIGxlZC0+bGVkX25vLCBsZXZlbCk7Cj4KPiBOb2lzZS4KPgoKQUNLCgo+ IC4uLgo+Cj4gPiArICAgICAgIGlmIChwcml2LT5mbGVkX3N0cm9iZV91c2VkKSB7Cj4gPiArICAg ICAgICAgICAgICAgZGV2X3dhcm4obGNkZXYtPmRldiwgIlBsZWFzZSBkaXNhYmxlIHN0cm9iZSBm aXJzdCBbJWRdXG4iLCBwcml2LT5mbGVkX3N0cm9iZV91c2VkKTsKPiA+ICsgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKPgo+IEhtbS4uLiBTaG91bGRuJ3QgYmUgZ3VhcmFudGVlZCBieSBz b21lIGZyYW1ld29yaz8KPgoKQmVjYXVzZSBib3RoIEZsYXNoIExFRCB1c2Ugc2luZ2xlIGxvZ2lj YWxseSBjb250cm9sLgpJdCBkb2Vzbid0IGV4aXN0IG9uZSBMRUQgaXMgdG9yY2ggbW9kZSwgYW5k IHRoZSBvdGhlciBpcyBzdHJvYmUgbW9kZS4KCj4gLi4uCj4KPiA+ICsgICAgICAgICAgICAgICBj dXJyID0gcHJldiAmICh+QklUKGxlZC0+bGVkX25vKSk7Cj4KPiBUb28gbWFueSBwYXJlbnMuCj4K CkFDSwoKPiAuLi4KPgo+ID4gK3N0YXRpYyBpbnQgbXQ2MzYwX3N0cm9iZV9icmlnaHRuZXNzX3Nl dChzdHJ1Y3QgbGVkX2NsYXNzZGV2X2ZsYXNoICpmbF9jZGV2LCB1MzIgYnJpZ2h0bmVzcykKPiA+ ICt7Cj4gPiArICAgICAgIHN0cnVjdCBtdDYzNjBfbGVkICpsZWQgPSBjb250YWluZXJfb2YoZmxf Y2Rldiwgc3RydWN0IG10NjM2MF9sZWQsIGZsYXNoKTsKPiA+ICsgICAgICAgc3RydWN0IGxlZF9j bGFzc2RldiAqbGNkZXYgPSAmZmxfY2Rldi0+bGVkX2NkZXY7Cj4gPiArCj4KPiA+ICsgICAgICAg ZGV2X2RiZyhsY2Rldi0+ZGV2LCAiWyVkXSBzdHJvYmUgYnJpZ2h0bmVzcyAlZFxuIiwgbGVkLT5s ZWRfbm8sIGJyaWdodG5lc3MpOwo+Cj4gTm9pc2UuIFBvaW50IG9mIHRoaXMgZW50aXJlIGZ1bmN0 aW9uPwo+CgpBQ0ssIEkgd2lsbCByZW1vdmUgaXQsIHJlc2VydmUgZnVuY3Rpb24gZW50cnkgb25s eSBmb3IgcmVnaXN0ZXIKbGVkY2Fzc19kZXYgY2hlY2sgb3BzIGV4aXN0Cgo+ID4gKyAgICAgICBy ZXR1cm4gMDsKPiA+ICt9Cj4KPiAuLi4KPgo+ID4gKyAgICAgICBkZXZfZGJnKGxjZGV2LT5kZXYs ICJbJWRdIHN0cm9iZSBzdGF0ZSAlZFxuIiwgbGVkLT5sZWRfbm8sIHN0YXRlKTsKPgo+IE5vaXNl Lgo+Cj4gSWYgeW91IHdpc2ggdG8gZG8gaXQgcmlnaHQsIGFkZCB0cmFjZSBldmVudHMgdG8gdGhl IGZyYW1ld29yay4KPgoKQUNLLCBJIHdpbGwgcmVtb3ZlIGl0LgoKPiAuLi4KPgo+ID4gKyAgICAg ICBpZiAocHJpdi0+ZmxlZF90b3JjaF91c2VkKSB7Cj4KPiA+ICsgICAgICAgICAgICAgICBkZXZf d2FybihsY2Rldi0+ZGV2LCAiUGxlYXNlIGRpc2FibGUgdG9yY2ggZmlyc3QgWzB4JXhdXG4iLCBw cml2LT5mbGVkX3RvcmNoX3VzZWQpOwo+Cj4gQWdhaW4sIHdoeSB0aGUgd2FybmluZz8gQ2FuIHRo aXMgYmUgYSBwYXJ0IG9mIHRoZSBmcmFtZXdvcms/Cj4KClNhbWUgYXMgYWJvdmUuCgo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKyAgICAgICB9Cj4KPiAuLi4KPgo+ID4g KyAgICAgICAgICAgICAgIGN1cnIgPSBwcmV2ICYgKH5CSVQobGVkLT5sZWRfbm8pKTsKPgo+IFRv byBtYW55IHBhcmVucy4KPgoKQUNLCgo+IC4uLgo+Cj4gPiArICAgICAgIGlmICghcHJldiAmJiBj dXJyKQo+ID4gKyAgICAgICAgICAgICAgIHVzbGVlcF9yYW5nZSg1MDAwLCA2MDAwKTsKPiA+ICsg ICAgICAgZWxzZSBpZiAocHJldiAmJiAhY3VycikKPiA+ICsgICAgICAgICAgICAgICB1ZGVsYXko NTAwKTsKPgo+IFRoZXNlIGRlbGF5cyBtdXN0IGJlIGV4cGxhaW5lZC4KPgoKQUNLCgo+IC4uLgo+ Cj4gPiArICAgICAgIGlmIChsZWQtPmxlZF9ubyA9PSBNVDYzNjBfTEVEX0ZMQVNIMSkgewo+ID4g KyAgICAgICAgICAgICAgIHN0cm9iZV90aW1lb3V0X21hc2sgPSBNVDYzNjBfRkxFRDFTVFJCVE9f TUFTSzsKPiA+ICsgICAgICAgICAgICAgICBmbGVkX3Nob3J0X21hc2sgPSBNVDYzNjBfRkxFRDFT SE9SVF9NQVNLOwo+Cj4gPiArCj4KPiBSZWR1bmRhbnQgYmxhbmsgbGluZS4KPgoKQUNLCgo+ID4g KyAgICAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgICAgICAgIHN0cm9iZV90aW1lb3V0X21hc2sg PSBNVDYzNjBfRkxFRDJTVFJCVE9fTUFTSzsKPiA+ICsgICAgICAgICAgICAgICBmbGVkX3Nob3J0 X21hc2sgPSBNVDYzNjBfRkxFRDJTSE9SVF9NQVNLOwo+ID4gKyAgICAgICB9Cj4KPiAuLi4KPgo+ ID4gK3N0YXRpYyBpbnQgbXQ2MzYwX2ZsYXNoX2V4dGVybmFsX3N0cm9iZV9zZXQoc3RydWN0IHY0 bDJfZmxhc2ggKnY0bDJfZmxhc2gsIGJvb2wgZW5hYmxlKQo+ID4gK3sKPiA+ICsgICAgICAgc3Ry dWN0IGxlZF9jbGFzc2Rldl9mbGFzaCAqZmxhc2ggPSB2NGwyX2ZsYXNoLT5mbGVkX2NkZXY7Cj4g PiArICAgICAgIHN0cnVjdCBtdDYzNjBfbGVkICpsZWQgPSBjb250YWluZXJfb2YoZmxhc2gsIHN0 cnVjdCBtdDYzNjBfbGVkLCBmbGFzaCk7Cj4gPiArICAgICAgIHN0cnVjdCBtdDYzNjBfcHJpdiAq cHJpdiA9IGxlZC0+cHJpdjsKPgo+ID4gKyAgICAgICB1MzIgZW5hYmxlX21hc2sgPSBNVDYzNjBf RkxDU0VOX01BU0sobGVkLT5sZWRfbm8pOwo+Cj4gZW5hYmxlX21hc2sgLT4gbWFzawo+ICAgdTMy IHZhbHVlID0gZW5hYmxlID8gbWFzayA6IDA7Cj4KPiA+ICsgICAgICAgaW50IHJldDsKPiA+ICsK PiA+ICsgICAgICAgcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzYw X1JFR19GTEVERU4sIGVuYWJsZV9tYXNrLAo+Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbmFibGUgPyBlbmFibGVfbWFzayA6IDApOwo+Cj4gICByZXQgPSAgLi4uIG1hc2ss IHZhbHVlKTsKPgoKQUNLCgo+ID4gKyAgICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICAg IHJldHVybiByZXQ7Cj4gPiArCj4gPiArICAgICAgIGlmIChlbmFibGUpCj4gPiArICAgICAgICAg ICAgICAgcHJpdi0+ZmxlZF9zdHJvYmVfdXNlZCB8PSBCSVQobGVkLT5sZWRfbm8pOwo+ID4gKyAg ICAgICBlbHNlCj4gPiArICAgICAgICAgICAgICAgcHJpdi0+ZmxlZF9zdHJvYmVfdXNlZCAmPSAo fkJJVChsZWQtPmxlZF9ubykpOwo+Cj4gVG9vIG1hbnkgcGFyZW5zLgo+CgpBQ0sKCj4gPiArCj4g PiArICAgICAgIHJldHVybiAwOwo+ID4gK30KPgo+IC4uLgo+Cj4gPiArICAgICAgIHMtPnZhbCA9 IHMtPm1heCA9IChzLT5taW4pICsgKGxjZGV2LT5tYXhfYnJpZ2h0bmVzcyAtIDEpICogcy0+c3Rl cDsKPgo+IERpdHRvLgo+CgpBQ0sKCj4gLi4uCj4KPiA+ICtzdGF0aWMgdm9pZCBjbGFtcF9hbGln bih1MzIgKnYsIHUzMiBtaW4sIHUzMiBtYXgsIHUzMiBzdGVwKQo+Cj4gQ2FuIHdlIGtlZXAgYSBz aW1pbGFyIEFQSSwgaS5lLiByZXR1cm4gYSBuZXcgdmFsdWUgcmF0aGVyIHRoYW4gdXBkYXRlIG9s ZD8KPgo+ID4gK3sKPgo+ID4gKyAgICAgICAqdiA9IGNsYW1wX3ZhbCgqdiwgbWluLCBtYXgpOwo+ Cj4gSSB3b3VsZCByYXRoZXIgdXNlIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIChhbmQgaXQgYWN0dWFs bHkgd2lsbCBiZQo+IHJlcXVpcmVkIHdpdGggYWJvdmUpLgo+Cj4gPiArICAgICAgIGlmIChzdGVw ID4gMSkKPiA+ICsgICAgICAgICAgICAgICAqdiA9ICgqdiAtIG1pbikgLyBzdGVwICogc3RlcCAr IG1pbjsKPgo+IFNvdW5kcyBsaWtlIG9wZW4gY29kZWQgcm91bmRkb3duKCkuCj4KCkFDSwoKPiA+ ICt9Cj4KPiAuLi4KPgo+ID4gKyAgICAgICBsY2Rldi0+bWF4X2JyaWdodG5lc3MgPSAodmFsIC0g TVQ2MzYwX0lUT1JDSF9NSU4pIC8gTVQ2MzYwX0lUT1JDSF9TVEVQICsgMTsKPgo+IERJVl9ST1VO RF9VUCh2YWwgLSBNVDYzNjBfSVRPUkNIX01JTiwgTVQ2MzYwX0lUT1JDSF9TVEVQKSA/Cj4KClRo aXMgaXMgbWFwcGluZyAwfnZhbCB0byAxfm1heF9icmlnaHRuZXNzIGFzIGxldmVsLgpJIGNvbnZl cnQgdmFsIGJlbG93IE1UNjM2MF9JVE9SQ0hfU1RFUCB0byAxIGZvciBpZ25vcmUgbWF4X2JyaWdo dG5lc3MKPSAwLCBiZWNhdXNlIDAgbWVhbnMgZGlzYWJsZS4KVGhlcmUgaXMgYSBsaXR0bGUgZGlm ZmVyZW5jZSBmcm9tIERJVl9ST1VORF9VUC4KCj4gLi4uCj4KPiA+ICtzdGF0aWMgaW50IG10NjM2 MF9pbml0X2NvbW1vbl9wcm9wZXJ0aWVzKHN0cnVjdCBtdDYzNjBfbGVkICpsZWQsIHN0cnVjdCBs ZWRfaW5pdF9kYXRhICppbml0X2RhdGEpCj4gPiArewo+ID4gKyAgICAgICBjb25zdCBjaGFyICpz dHI7Cj4gPiArCj4gPiArICAgICAgIGlmICghZndub2RlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGlu aXRfZGF0YS0+Zndub2RlLCAiZGVmYXVsdC1zdGF0ZSIsICZzdHIpKSB7Cj4gPiArICAgICAgICAg ICAgICAgaWYgKCFzdHJjbXAoc3RyLCAib24iKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGxlZC0+ZGVmYXVsdF9zdGF0ZSA9IFNUQVRFX09OOwo+ID4gKyAgICAgICAgICAgICAgIGVsc2Ug aWYgKCFzdHJjbXAoc3RyLCAia2VlcCIpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbGVk LT5kZWZhdWx0X3N0YXRlID0gU1RBVEVfS0VFUDsKPgo+ID4gKyAgICAgICAgICAgICAgIGVsc2UK Pgo+IEkgd291bGRuJ3QgYWxsb3cgc29tZSBnYXJiYWdlIHRvIGJlIG9mZi4KPgoKQUNLCgo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgbGVkLT5kZWZhdWx0X3N0YXRlID0gU1RBVEVfT0ZGOwo+ ID4gKyAgICAgICB9Cj4KPiBXaGF0IGFib3V0Cj4KPiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0 IHN0YXRlcyA9IHsgIm9uIiwgImtlZXAiLCAib2ZmIiB9Owo+Cj4gaW50IHJldDsKPgo+IHJldCA9 IG1hdGNoX3N0cmluZyhzdGF0ZXMsIEFSUkFZX1NJWkUoc3RhdGVzKSwgc3RyKTsKPiBpZiAocmV0 KQo+ICAuLi4KPgo+IGRlZmF1bHRfc3RhdGUgPSByZXQ7Cj4KPiA/Cj4KPiA+ICsgICAgICAgcmV0 dXJuIDA7Cj4gPiArfQo+CgpBQ0sKCj4gLi4uCj4KPiA+ICtzdGF0aWMgaW50IG10NjM2MF9sZWRf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ICt7Cj4gPiArICAgICAgIHN0 cnVjdCBtdDYzNjBfcHJpdiAqcHJpdjsKPiA+ICsgICAgICAgc3RydWN0IGZ3bm9kZV9oYW5kbGUg KmNoaWxkOwo+ID4gKyAgICAgICBpbnQgaSwgcmV0Owo+ID4gKwo+Cj4gPiArICAgICAgIHByaXYt PnJlZ21hcCA9IGRldl9nZXRfcmVnbWFwKHBkZXYtPmRldi5wYXJlbnQsIE5VTEwpOwo+ID4gKyAg ICAgICBpZiAoIXByaXYtPnJlZ21hcCkgewo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJnBk ZXYtPmRldiwgIkZhaWxlZCB0byBnZXQgcGFyZW50IHJlZ21hcFxuIik7Cj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gPiArICAgICAgIH0KPgo+IC4uLgo+Cj4gPiArb3V0Ogo+ Cj4gb3V0X2ZsYXNoX2xlZHNfcmVsZWFzZTogPwo+CgpBQ0sKCj4gPiArICAgICAgIGZvciAoaSA9 IE1UNjM2MF9MRURfRkxBU0gxOyBpIDw9IE1UNjM2MF9MRURfRkxBU0gyOyBpKyspIHsKPiA+ICsg ICAgICAgICAgICAgICBzdHJ1Y3QgbXQ2MzYwX2xlZCAqbGVkID0gcHJpdi0+bGVkc1tpXTsKPiA+ ICsKPiA+ICsgICAgICAgICAgICAgICBpZiAobGVkICYmIGxlZC0+djRsMl9mbGFzaCkKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIHY0bDJfZmxhc2hfcmVsZWFzZShsZWQtPnY0bDJfZmxhc2gp Owo+ID4gKwo+ID4gKyAgICAgICB9Cj4KPiAuLi4KPgo+ID4gK3N0YXRpYyBpbnQgbXQ2MzYwX2xl ZF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ICt7Cj4gPiArICAgICAg IHN0cnVjdCBtdDYzNjBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ ID4gKyAgICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgICAgZm9yIChpID0gTVQ2MzYwX0xFRF9G TEFTSDE7IGkgPD0gTVQ2MzYwX0xFRF9GTEFTSDI7IGkrKykgewo+ID4gKyAgICAgICAgICAgICAg IHN0cnVjdCBtdDYzNjBfbGVkICpsZWQgPSBwcml2LT5sZWRzW2ldOwo+ID4gKwo+ID4gKyAgICAg ICAgICAgICAgIGlmIChsZWQgJiYgbGVkLT52NGwyX2ZsYXNoKQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgdjRsMl9mbGFzaF9yZWxlYXNlKGxlZC0+djRsMl9mbGFzaCk7Cj4gPiArCj4gPiAr ICAgICAgIH0KPgo+IExvb2tzIGxpa2UgYSBjb2RlIGR1cGxpY2F0aW9uLgo+CgpBQ0sKCj4gPiAr Cj4gPiArICAgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IG9mX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtdDYzNjBfbGVkX29mX2lkW10gPSB7Cj4g PiArICAgICAgIHsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2MzYwLWxlZCIsIH0sCj4KPiA+ ICsgICAgICAge30sCj4KPiBObyBuZWVkIGNvbW1hLgo+CgpBQ0sKCj4gPiArfTsKPgo+Cj4gLS0K PiBXaXRoIEJlc3QgUmVnYXJkcywKPiBBbmR5IFNoZXZjaGVua28KCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK