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 BCCA9C433EF for ; Fri, 26 Nov 2021 13:45:50 +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:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc: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=d8iWVQw8pmXNpRjr4Wae3qbyQ3dyeSyrowrpqh65vdw=; b=ur3ck1O2KzanNf fiLRss5DN4WgWuRJTWQbLV1hqvO9kjrzGDcY+RuifC6zH98oFOOIf96KwTdfONNmyde4nILBMGJN2 WhykdZU9c++m5AV1u7R5aNYHwFQLL1hgAQXyunhIC8CUOfh575HVji8aN57+Xwu6P2d+nXPQYlyOW K5ppzmigteAaMBV8GXVgxrTuFZED3R1O8pDcPDuumIYTbx8YWUDPUpbb0gwigvKroylgqW6mhc3jt t8DL28yXTGLk5qxoEdYxjKJ21xyyHVCzH4GsD7wj7KeTM4jyfYYmT6eQTB6Brr81bVEeys2SUItel ENJAFb+ue7yBfsJqSPjw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mqbXJ-00AddE-5t; Fri, 26 Nov 2021 13:45:09 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mqbX5-00AdbQ-5R; Fri, 26 Nov 2021 13:44:57 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 916D4E0014; Fri, 26 Nov 2021 13:44:48 +0000 (UTC) Date: Fri, 26 Nov 2021 14:44:47 +0100 From: Miquel Raynal To: Phil Edworthy Cc: Richard Weinberger , Vignesh Raghavendra , Tudor Ambarus , Pratyush Yadav , Michael Walle , "linux-mtd@lists.infradead.org" , Thomas Petazzoni , Jimmy Lalande , Milan Stevanovic , Geert Uytterhoeven , "linux-renesas-soc@vger.kernel.org" , Magnus Damm , "linux-arm-kernel@lists.infradead.org" , Gareth Williams Subject: Re: [PATCH 2/3] mtd: rawnand: rzn1: Add new NAND controller driver Message-ID: <20211126144447.4fb300af@xps13> In-Reply-To: References: <20211118111940.1275351-1-miquel.raynal@bootlin.com> <20211118111940.1275351-3-miquel.raynal@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211126_054455_504592_CD8EA872 X-CRM114-Status: GOOD ( 25.90 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion 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-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgUGhpbCwKCnBoaWwuZWR3b3J0aHlAcmVuZXNhcy5jb20gd3JvdGUgb24gRnJpLCAxOSBOb3Yg MjAyMSAxNTowNDo1NSArMDAwMDoKCj4gSGkgTWlxdWVsLAo+IAo+IFRoYW5rcyBmb3IgeW91ciBw YXRjaGVzLgo+IAo+ID4gSW50cm9kdWNlIFJlbmVzYXMgUlovTjF4IE5BTkQgY29udHJvbGxlciBk cml2ZXIgd2hpY2ggc3VwcG9ydHM6Cj4gPiAtIEFsbCBPTkZJIHRpbWluZyBtb2Rlcwo+ID4gLSBE aWZmZXJlbnQgY29uZmlndXJhdGlvbnMgb2YgaXRzIGludGVybmFsIEVDQyBjb250cm9sbGVyCj4g PiAtIE9uLWRpZSAobm90IHRlc3RlZCkgYW5kIHNvZnR3YXJlIEVDQyBzdXBwb3J0Cj4gPiAtIFNl dmVyYWwgY2hpcHMgKG5vdCB0ZXN0ZWQpCj4gPiAtIFN1YnBhZ2UgYWNjZXNzZXMKPiA+IC0gRE1B IGFuZCBQSU8KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWlxdWVsIFJheW5hbCA8bWlxdWVsLnJh eW5hbEBib290bGluLmNvbT4KPiA+IC0tLSAgCj4gSXQgbWlnaHQgYmUgd29ydGggbWVudGlvbmlu ZyB0aGF0IHRoaXMgY29udHJvbGxlciB3YXMgb3JpZ2luYWxseSBwcm92aWRlZAo+IGJ5IEV2YXRy b25peCwgdGhlbiBDYWRlbmNlIGJvdWdodCB0aGUgRXZhdHJvbml4IElQIGJ1c2luZXNzLgoKVHJ1 ZSBJJ3ZlIGFkZGVkIHRoaXMgaW4gdGhlIGNvbW1pdCBsb2cgYXMgd2VsbCBhcyB0aGUgbWFpbiBo ZWFkZXIuCgo+ID4gKwlyem4xX25hbmQtPnRpbV9nZW5fc2VxMiA9Cj4gPiArCQlUSU1fR0VOX1NF UTJfRDgoVE9fQ1lDTEVTNjQoc2RyLT50UlJfbWluICsgc2RyLT50UkVBX21heCwKPiA+IHBlcmlv ZF9ucykpIHwKPiA+ICsJCVRJTV9HRU5fU0VRMl9EOShUT19DWUNMRVM2NChzZHItPnRSUl9taW4s IHBlcmlvZF9ucykpIHwKPiA+ICsJCVRJTV9HRU5fU0VRMl9EMTAoVE9fQ1lDTEVTNjQoY2xlIC0g Y3ljLCBwZXJpb2RfbnMpKSB8Cj4gPiArCQlUSU1fR0VOX1NFUTJfRDExKFRPX0NZQ0xFUzY0KGJl Zl9kbHksIHBlcmlvZF9ucykpOyAgCj4gSW4gb3VyIG91dC1vZi10cmVlIGRyaXZlciBmb3IgdGhp cyBjb250cm9sbGVyIFsxXSwgd2UgYWxsb3dlZCB0aW1lIGZvcgo+IHRoZSBzaWduYWwgdG8gcHJv cGFnYXRlIHRocm91Z2ggdGhlIFJaL04xIGlvIGJ1ZmZlcnM7IFdlIGp1c3QgYWRkZWQgNW5zCj4g dG8gYWxsIHRoZSB0aW1pbmdzLiBEb24ndCB5b3UgbmVlZCB0byBkbyBzb21ldGhpbmcgc2ltaWxh cj8gSSB2YWd1ZWx5Cj4gcmVjYWxsIHRoYXQgc29tZSB2YWx1ZXMgcHJvZ3JhbW1lZCB0byAwIGNh dXNlZCBpc3N1ZXMuCgpJIGhhdmUgbm90IGV4cGVyaWVuY2VkIGFueSBpc3N1ZXMgeWV0LCBJIGRv bid0IHRoaW5rIHdpdGggdGhlc2UKY2FsY3VsYXRpb25zIHRoZXJlIGFyZSBtYW55IHZhbHVlcyBz ZXQgdG8gMCBhbnl3YXkuIEJ1dCB0aGFua3MgZm9yIHRoZQpmZWVkYmFjaywgaWYgYW55Ym9keSBy ZXBvcnRzIGVycm9ycyB3aXRoIHRoZXNlIHRpbWluZ3Mgb24gYW5vdGhlciBib2FyZAp0aGVuIHdl J2xsIGtub3cgd2hlcmUgdG8gbG9vay4KCj4gPiArc3RhdGljIGludCByem4xX25hbmRfY2hpcF9p bml0KHN0cnVjdCByem4xX25mYyAqbmZjLCBzdHJ1Y3QgZGV2aWNlX25vZGUgIAo+IC4uLgo+ID4g Kwlmb3IgKGkgPSAwOyBpIDwgbnNlbHM7IGkrKykgewo+ID4gKwkJcmV0ID0gb2ZfcHJvcGVydHlf cmVhZF91MzJfaW5kZXgobnAsICJyZWciLCBpLCAmY3MpOwo+ID4gKwkJaWYgKHJldCkgewo+ID4g KwkJCWRldl9lcnIobmZjLT5kZXYsICJJbmNvbXBsZXRlIHJlZyBwcm9wZXJ0eSAoJWQpXG4iLAo+ ID4gKwkJCQlyZXQpOwo+ID4gKwkJCXJldHVybiByZXQ7Cj4gPiArCQl9ICAKPiBDaGVjayBjcyBp cyA8PSBuciBvZiBiaXRzIGluIGFzc2lnbmVkX2NzLgoKSSBiZWxpZXZlIHlvdSBtZWFuIHRoYXQg SSBzaG91bGQgY2hlY2sgdGhhdCB3ZSBkb24ndCByZXF1ZXN0Cm5vbi1leGlzdGluZyBDUyB2YWx1 ZXMgKDwgNCkuIEkndmUganVzdCBhZGRlZCBzdWNoIGEgY2hlY2ssIHRoYW5rcy4gVGhlCmZhY3Qg dGhhdCBhIENTIG1pZ2h0IGJlIHNlbGVjdGVkIHR3aWNlIGlzIGhhbmRsZWQgYnkgdGhlIHRlc3Rf YW5kX3NldCgpCmNhbGwgcmlnaHQgYWZ0ZXIuCgo+ID4gK3N0YXRpYyBpbnQgcnpuMV9uZmNfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikgeyAgCj4gLi4uCj4gPiArCW5mYy0+cmVn cyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKPiA+ICsJaWYgKElT X0VSUihuZmMtPnJlZ3MpKQo+ID4gKwkJcmV0dXJuIFBUUl9FUlIobmZjLT5yZWdzKTsKPiA+ICsK PiA+ICsJcnpuMV9uZmNfZGlzX2ludGVycnVwdHMobmZjKTsgIAo+IFlvdSBuZWVkIHRvIGVuYWJs ZSB0aGUgY2xvY2sgYmVmb3JlIHdyaXRpbmcgdG8gdGhlIHJlZ2lzdGVycy4KCkFic29sdXRlbHks IHRoYW5rcyBmb3IgdGhlIHJlbWFpbmRlci4KCj4gPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgcnpuMV9uZmNfZHJpdmVyID0gewo+ID4gKwkuZHJpdmVyID0gewo+ID4gKwkJLm5hbWUg ICA9ICJyZW5lc2FzLW5mYyIsICAKPiBuaXQ6IHdoaXRlc3BhY2UKPiAKPiBidHcsIHRoZXJlIHdh cyBhbiBhdHRlbXB0IHRvIHVwc3RyZWFtIGEgZHJpdmVyIGZvciB0aGlzIElQIGEgZmV3IHllYXJz IGJhY2ssIHNlZSBbMl0KCkRpZG4ndCBrbm93IGFib3V0IHRoaXMgYXR0ZW1wdCA6KQoKPiAKPiBU aGFua3MKPiBQaGlsCj4gCj4gWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9yZW5lc2FzLXJ6L3J6bjFf bGludXgvYmxvYi9yem4xLXN0YWJsZS12NC4xOS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9ldmF0cm9u aXhfbmFuZC5jCj4gWzJdIGh0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvNjI5MDk2 Lwo+IAo+IAo+IAoKClRoYW5rcywKTWlxdcOobAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcg bGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10 ZC8K 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0E5ADC433F5 for ; Fri, 26 Nov 2021 13:46:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349871AbhKZNuF convert rfc822-to-8bit (ORCPT ); Fri, 26 Nov 2021 08:50:05 -0500 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:47613 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1353482AbhKZNsF (ORCPT ); Fri, 26 Nov 2021 08:48:05 -0500 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 916D4E0014; Fri, 26 Nov 2021 13:44:48 +0000 (UTC) Date: Fri, 26 Nov 2021 14:44:47 +0100 From: Miquel Raynal To: Phil Edworthy Cc: Richard Weinberger , Vignesh Raghavendra , Tudor Ambarus , Pratyush Yadav , Michael Walle , "linux-mtd@lists.infradead.org" , Thomas Petazzoni , Jimmy Lalande , Milan Stevanovic , Geert Uytterhoeven , "linux-renesas-soc@vger.kernel.org" , Magnus Damm , "linux-arm-kernel@lists.infradead.org" , Gareth Williams Subject: Re: [PATCH 2/3] mtd: rawnand: rzn1: Add new NAND controller driver Message-ID: <20211126144447.4fb300af@xps13> In-Reply-To: References: <20211118111940.1275351-1-miquel.raynal@bootlin.com> <20211118111940.1275351-3-miquel.raynal@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org Hi Phil, phil.edworthy@renesas.com wrote on Fri, 19 Nov 2021 15:04:55 +0000: > Hi Miquel, > > Thanks for your patches. > > > Introduce Renesas RZ/N1x NAND controller driver which supports: > > - All ONFI timing modes > > - Different configurations of its internal ECC controller > > - On-die (not tested) and software ECC support > > - Several chips (not tested) > > - Subpage accesses > > - DMA and PIO > > > > Signed-off-by: Miquel Raynal > > --- > It might be worth mentioning that this controller was originally provided > by Evatronix, then Cadence bought the Evatronix IP business. True I've added this in the commit log as well as the main header. > > + rzn1_nand->tim_gen_seq2 = > > + TIM_GEN_SEQ2_D8(TO_CYCLES64(sdr->tRR_min + sdr->tREA_max, > > period_ns)) | > > + TIM_GEN_SEQ2_D9(TO_CYCLES64(sdr->tRR_min, period_ns)) | > > + TIM_GEN_SEQ2_D10(TO_CYCLES64(cle - cyc, period_ns)) | > > + TIM_GEN_SEQ2_D11(TO_CYCLES64(bef_dly, period_ns)); > In our out-of-tree driver for this controller [1], we allowed time for > the signal to propagate through the RZ/N1 io buffers; We just added 5ns > to all the timings. Don't you need to do something similar? I vaguely > recall that some values programmed to 0 caused issues. I have not experienced any issues yet, I don't think with these calculations there are many values set to 0 anyway. But thanks for the feedback, if anybody reports errors with these timings on another board then we'll know where to look. > > +static int rzn1_nand_chip_init(struct rzn1_nfc *nfc, struct device_node > ... > > + for (i = 0; i < nsels; i++) { > > + ret = of_property_read_u32_index(np, "reg", i, &cs); > > + if (ret) { > > + dev_err(nfc->dev, "Incomplete reg property (%d)\n", > > + ret); > > + return ret; > > + } > Check cs is <= nr of bits in assigned_cs. I believe you mean that I should check that we don't request non-existing CS values (< 4). I've just added such a check, thanks. The fact that a CS might be selected twice is handled by the test_and_set() call right after. > > +static int rzn1_nfc_probe(struct platform_device *pdev) { > ... > > + nfc->regs = devm_platform_ioremap_resource(pdev, 0); > > + if (IS_ERR(nfc->regs)) > > + return PTR_ERR(nfc->regs); > > + > > + rzn1_nfc_dis_interrupts(nfc); > You need to enable the clock before writing to the registers. Absolutely, thanks for the remainder. > > +static struct platform_driver rzn1_nfc_driver = { > > + .driver = { > > + .name = "renesas-nfc", > nit: whitespace > > btw, there was an attempt to upstream a driver for this IP a few years back, see [2] Didn't know about this attempt :) > > Thanks > Phil > > [1] https://github.com/renesas-rz/rzn1_linux/blob/rzn1-stable-v4.19/drivers/mtd/nand/raw/evatronix_nand.c > [2] https://patchwork.ozlabs.org/patch/629096/ > > > Thanks, Miquèl 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 16464C433F5 for ; Fri, 26 Nov 2021 13:46:43 +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:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc: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=QVO0iSwLZUheWDwW5Q0e32Wa0CseF4zlYri2Gx5TuIk=; b=mNyycEZDHen4IY qRDPd+Wkbb/lhAshmaqqCLnLvYBXlBaDTIKyo3gxqUB4TqonyNiSz39uDVmV6ZYzcCu+ssMR6k95U lCoDWkhKrnSZPfC4x4rtvm/4zEYYEFf2iyG9A/foM6cC+ebjiewSdCKuWCUyM9jhZymT4oKf+mMHC X/xRd051amVEsECLOMMBXGDO6jsZWBWRCjohzWl1cnhj8nVzdGG6O4A1kNt2Mv3EIFZLeDrzQwREK Tru/wANBYqE5s4fvBkBAbGquqOoc++DnYGeuT14TUEY5IcVTo9WeoF5mSpB715HGcJY9Wsvr5sgSa gwm2YFfVxmL4M4NWp3Xw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mqbX9-00AdcB-TQ; Fri, 26 Nov 2021 13:45:00 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mqbX5-00AdbQ-5R; Fri, 26 Nov 2021 13:44:57 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 916D4E0014; Fri, 26 Nov 2021 13:44:48 +0000 (UTC) Date: Fri, 26 Nov 2021 14:44:47 +0100 From: Miquel Raynal To: Phil Edworthy Cc: Richard Weinberger , Vignesh Raghavendra , Tudor Ambarus , Pratyush Yadav , Michael Walle , "linux-mtd@lists.infradead.org" , Thomas Petazzoni , Jimmy Lalande , Milan Stevanovic , Geert Uytterhoeven , "linux-renesas-soc@vger.kernel.org" , Magnus Damm , "linux-arm-kernel@lists.infradead.org" , Gareth Williams Subject: Re: [PATCH 2/3] mtd: rawnand: rzn1: Add new NAND controller driver Message-ID: <20211126144447.4fb300af@xps13> In-Reply-To: References: <20211118111940.1275351-1-miquel.raynal@bootlin.com> <20211118111940.1275351-3-miquel.raynal@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211126_054455_504592_CD8EA872 X-CRM114-Status: GOOD ( 25.90 ) X-BeenThere: linux-arm-kernel@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: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgUGhpbCwKCnBoaWwuZWR3b3J0aHlAcmVuZXNhcy5jb20gd3JvdGUgb24gRnJpLCAxOSBOb3Yg MjAyMSAxNTowNDo1NSArMDAwMDoKCj4gSGkgTWlxdWVsLAo+IAo+IFRoYW5rcyBmb3IgeW91ciBw YXRjaGVzLgo+IAo+ID4gSW50cm9kdWNlIFJlbmVzYXMgUlovTjF4IE5BTkQgY29udHJvbGxlciBk cml2ZXIgd2hpY2ggc3VwcG9ydHM6Cj4gPiAtIEFsbCBPTkZJIHRpbWluZyBtb2Rlcwo+ID4gLSBE aWZmZXJlbnQgY29uZmlndXJhdGlvbnMgb2YgaXRzIGludGVybmFsIEVDQyBjb250cm9sbGVyCj4g PiAtIE9uLWRpZSAobm90IHRlc3RlZCkgYW5kIHNvZnR3YXJlIEVDQyBzdXBwb3J0Cj4gPiAtIFNl dmVyYWwgY2hpcHMgKG5vdCB0ZXN0ZWQpCj4gPiAtIFN1YnBhZ2UgYWNjZXNzZXMKPiA+IC0gRE1B IGFuZCBQSU8KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWlxdWVsIFJheW5hbCA8bWlxdWVsLnJh eW5hbEBib290bGluLmNvbT4KPiA+IC0tLSAgCj4gSXQgbWlnaHQgYmUgd29ydGggbWVudGlvbmlu ZyB0aGF0IHRoaXMgY29udHJvbGxlciB3YXMgb3JpZ2luYWxseSBwcm92aWRlZAo+IGJ5IEV2YXRy b25peCwgdGhlbiBDYWRlbmNlIGJvdWdodCB0aGUgRXZhdHJvbml4IElQIGJ1c2luZXNzLgoKVHJ1 ZSBJJ3ZlIGFkZGVkIHRoaXMgaW4gdGhlIGNvbW1pdCBsb2cgYXMgd2VsbCBhcyB0aGUgbWFpbiBo ZWFkZXIuCgo+ID4gKwlyem4xX25hbmQtPnRpbV9nZW5fc2VxMiA9Cj4gPiArCQlUSU1fR0VOX1NF UTJfRDgoVE9fQ1lDTEVTNjQoc2RyLT50UlJfbWluICsgc2RyLT50UkVBX21heCwKPiA+IHBlcmlv ZF9ucykpIHwKPiA+ICsJCVRJTV9HRU5fU0VRMl9EOShUT19DWUNMRVM2NChzZHItPnRSUl9taW4s IHBlcmlvZF9ucykpIHwKPiA+ICsJCVRJTV9HRU5fU0VRMl9EMTAoVE9fQ1lDTEVTNjQoY2xlIC0g Y3ljLCBwZXJpb2RfbnMpKSB8Cj4gPiArCQlUSU1fR0VOX1NFUTJfRDExKFRPX0NZQ0xFUzY0KGJl Zl9kbHksIHBlcmlvZF9ucykpOyAgCj4gSW4gb3VyIG91dC1vZi10cmVlIGRyaXZlciBmb3IgdGhp cyBjb250cm9sbGVyIFsxXSwgd2UgYWxsb3dlZCB0aW1lIGZvcgo+IHRoZSBzaWduYWwgdG8gcHJv cGFnYXRlIHRocm91Z2ggdGhlIFJaL04xIGlvIGJ1ZmZlcnM7IFdlIGp1c3QgYWRkZWQgNW5zCj4g dG8gYWxsIHRoZSB0aW1pbmdzLiBEb24ndCB5b3UgbmVlZCB0byBkbyBzb21ldGhpbmcgc2ltaWxh cj8gSSB2YWd1ZWx5Cj4gcmVjYWxsIHRoYXQgc29tZSB2YWx1ZXMgcHJvZ3JhbW1lZCB0byAwIGNh dXNlZCBpc3N1ZXMuCgpJIGhhdmUgbm90IGV4cGVyaWVuY2VkIGFueSBpc3N1ZXMgeWV0LCBJIGRv bid0IHRoaW5rIHdpdGggdGhlc2UKY2FsY3VsYXRpb25zIHRoZXJlIGFyZSBtYW55IHZhbHVlcyBz ZXQgdG8gMCBhbnl3YXkuIEJ1dCB0aGFua3MgZm9yIHRoZQpmZWVkYmFjaywgaWYgYW55Ym9keSBy ZXBvcnRzIGVycm9ycyB3aXRoIHRoZXNlIHRpbWluZ3Mgb24gYW5vdGhlciBib2FyZAp0aGVuIHdl J2xsIGtub3cgd2hlcmUgdG8gbG9vay4KCj4gPiArc3RhdGljIGludCByem4xX25hbmRfY2hpcF9p bml0KHN0cnVjdCByem4xX25mYyAqbmZjLCBzdHJ1Y3QgZGV2aWNlX25vZGUgIAo+IC4uLgo+ID4g Kwlmb3IgKGkgPSAwOyBpIDwgbnNlbHM7IGkrKykgewo+ID4gKwkJcmV0ID0gb2ZfcHJvcGVydHlf cmVhZF91MzJfaW5kZXgobnAsICJyZWciLCBpLCAmY3MpOwo+ID4gKwkJaWYgKHJldCkgewo+ID4g KwkJCWRldl9lcnIobmZjLT5kZXYsICJJbmNvbXBsZXRlIHJlZyBwcm9wZXJ0eSAoJWQpXG4iLAo+ ID4gKwkJCQlyZXQpOwo+ID4gKwkJCXJldHVybiByZXQ7Cj4gPiArCQl9ICAKPiBDaGVjayBjcyBp cyA8PSBuciBvZiBiaXRzIGluIGFzc2lnbmVkX2NzLgoKSSBiZWxpZXZlIHlvdSBtZWFuIHRoYXQg SSBzaG91bGQgY2hlY2sgdGhhdCB3ZSBkb24ndCByZXF1ZXN0Cm5vbi1leGlzdGluZyBDUyB2YWx1 ZXMgKDwgNCkuIEkndmUganVzdCBhZGRlZCBzdWNoIGEgY2hlY2ssIHRoYW5rcy4gVGhlCmZhY3Qg dGhhdCBhIENTIG1pZ2h0IGJlIHNlbGVjdGVkIHR3aWNlIGlzIGhhbmRsZWQgYnkgdGhlIHRlc3Rf YW5kX3NldCgpCmNhbGwgcmlnaHQgYWZ0ZXIuCgo+ID4gK3N0YXRpYyBpbnQgcnpuMV9uZmNfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikgeyAgCj4gLi4uCj4gPiArCW5mYy0+cmVn cyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKPiA+ICsJaWYgKElT X0VSUihuZmMtPnJlZ3MpKQo+ID4gKwkJcmV0dXJuIFBUUl9FUlIobmZjLT5yZWdzKTsKPiA+ICsK PiA+ICsJcnpuMV9uZmNfZGlzX2ludGVycnVwdHMobmZjKTsgIAo+IFlvdSBuZWVkIHRvIGVuYWJs ZSB0aGUgY2xvY2sgYmVmb3JlIHdyaXRpbmcgdG8gdGhlIHJlZ2lzdGVycy4KCkFic29sdXRlbHks IHRoYW5rcyBmb3IgdGhlIHJlbWFpbmRlci4KCj4gPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgcnpuMV9uZmNfZHJpdmVyID0gewo+ID4gKwkuZHJpdmVyID0gewo+ID4gKwkJLm5hbWUg ICA9ICJyZW5lc2FzLW5mYyIsICAKPiBuaXQ6IHdoaXRlc3BhY2UKPiAKPiBidHcsIHRoZXJlIHdh cyBhbiBhdHRlbXB0IHRvIHVwc3RyZWFtIGEgZHJpdmVyIGZvciB0aGlzIElQIGEgZmV3IHllYXJz IGJhY2ssIHNlZSBbMl0KCkRpZG4ndCBrbm93IGFib3V0IHRoaXMgYXR0ZW1wdCA6KQoKPiAKPiBU aGFua3MKPiBQaGlsCj4gCj4gWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9yZW5lc2FzLXJ6L3J6bjFf bGludXgvYmxvYi9yem4xLXN0YWJsZS12NC4xOS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9ldmF0cm9u aXhfbmFuZC5jCj4gWzJdIGh0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvNjI5MDk2 Lwo+IAo+IAo+IAoKClRoYW5rcywKTWlxdcOobAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=