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 4A9A0C433EF for ; Wed, 2 Mar 2022 22:48:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230229AbiCBWtP (ORCPT ); Wed, 2 Mar 2022 17:49:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229471AbiCBWtL (ORCPT ); Wed, 2 Mar 2022 17:49:11 -0500 Received: from mail-qk1-x735.google.com (mail-qk1-x735.google.com [IPv6:2607:f8b0:4864:20::735]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 79B12532F3; Wed, 2 Mar 2022 14:48:16 -0800 (PST) Received: by mail-qk1-x735.google.com with SMTP id c7so2578849qka.7; Wed, 02 Mar 2022 14:48:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jms.id.au; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=U7HKj6OXNpn8w0FHPBjThBjt7E+v6QRWEFLnATeT8R8=; b=WLBMwCy66RwK5pcbN9MO2NlCO4R1IBn7Qs7xVB0w98jILthSuRoLP8XafWWl4uPv1O hVR0NCzTtmbukMx4/j2QaOu2Gjj2iacZYdj2peE2rq+d3x+v8oVqOqlqLMUnGuYW9n+9 SZfkcjilAsboHEAwkHUUMgr9870oCc6/lY6vo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=U7HKj6OXNpn8w0FHPBjThBjt7E+v6QRWEFLnATeT8R8=; b=lAOdqCFItRjZIxNiSbB8dTwxOq8otj3dZKD240voHMCeJq9veeqf9fchN0HLHxw9od 0vkLUDESRq55VSdWx9X/Ek+xEDbOGJWq6hR0D6j0yP9H6oZYx4fqjA/fbvI2yXMFrj2w OYGmYH25vsBHgI47Or3z4/dFvR7rdfa1gGKVNAv+YM2uxamWBmT40K0xY/2AVme9nVGO Pk5J4XrYpSWQ9W36rug6bSCVxjJFgljVMRB+sGx1X46calaLByT9Y733llQ50hKhoY8N A2t4lC2D2Rrbs+dBhLm5nFIAkCvz03hyKlg0Qs/e8YUh3zWJaEXratw3ohDrxTh+me1D B1Ng== X-Gm-Message-State: AOAM5322tEvuVVlv40Eo0ba4x+saiCo+r7GZiwE3aTQsxbQzw0rvmLXg ndVW6lBR2Zil5eWjE5hggs5ESIZ84xVisSN4+vPvS+35FTZeFw== X-Google-Smtp-Source: ABdhPJzOFpiKj2VhwTJ2xSllMVTELkSQmErEMVEuwhCU2F9Xv/VGI8RLN1xrDdWpjiIaIt7xtwDcqhD/+5tidY8BtQQ= X-Received: by 2002:a37:a147:0:b0:47a:be0e:4a0c with SMTP id k68-20020a37a147000000b0047abe0e4a0cmr16940793qke.165.1646261292872; Wed, 02 Mar 2022 14:48:12 -0800 (PST) MIME-Version: 1.0 References: <20220302173114.927476-1-clg@kaod.org> <20220302173114.927476-6-clg@kaod.org> In-Reply-To: <20220302173114.927476-6-clg@kaod.org> From: Joel Stanley Date: Wed, 2 Mar 2022 22:48:00 +0000 Message-ID: Subject: Re: [PATCH v2 05/10] spi: aspeed: Add support for direct mapping To: =?UTF-8?Q?C=C3=A9dric_Le_Goater?= Cc: linux-spi@vger.kernel.org, linux-mtd , Mark Brown , Tudor Ambarus , Pratyush Yadav , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-aspeed , Andrew Jeffery , Chin-Ting Kuo , devicetree , Rob Herring , Linux ARM , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2 Mar 2022 at 17:31, C=C3=A9dric Le Goater wrote: > > Use direct mapping to read the flash device contents. This operation > mode is called "Command mode" on Aspeed SoC SMC controllers. It uses a > Control Register for the settings to apply when a memory operation is > performed on the flash device mapping window. > > If the window is not big enough, fall back to the "User mode" to > perform the read. > > Since direct mapping now handles all reads of the flash device > contents, also use memcpy_fromio for other address spaces, such as > SFDP. > > Direct mapping for writes will come later when validated. > > Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Joel Stanley > --- > drivers/spi/spi-aspeed-smc.c | 67 ++++++++++++++++++++++++++++++++++-- > 1 file changed, 65 insertions(+), 2 deletions(-) > > diff --git a/drivers/spi/spi-aspeed-smc.c b/drivers/spi/spi-aspeed-smc.c > index 688f9472e0d7..b4854b521477 100644 > --- a/drivers/spi/spi-aspeed-smc.c > +++ b/drivers/spi/spi-aspeed-smc.c > @@ -324,8 +324,8 @@ static int do_aspeed_spi_exec_op(struct spi_mem *mem,= const struct spi_mem_op *o > if (!op->addr.nbytes) > ret =3D aspeed_spi_read_reg(chip, op); > else > - ret =3D aspeed_spi_read_user(chip, op, op->addr.v= al, > - op->data.nbytes, op->d= ata.buf.in); > + memcpy_fromio(op->data.buf.in, chip->ahb_base + o= p->addr.val, > + op->data.nbytes); > } else { > if (!op->addr.nbytes) > ret =3D aspeed_spi_write_reg(chip, op); > @@ -405,10 +405,73 @@ static int aspeed_spi_chip_set_default_window(struc= t aspeed_spi_chip *chip) > return chip->ahb_window_size ? 0 : -1; > } > > +static int aspeed_spi_dirmap_create(struct spi_mem_dirmap_desc *desc) > +{ > + struct aspeed_spi *aspi =3D spi_controller_get_devdata(desc->mem-= >spi->master); > + struct aspeed_spi_chip *chip =3D &aspi->chips[desc->mem->spi->chi= p_select]; > + struct spi_mem_op *op =3D &desc->info.op_tmpl; > + u32 ctl_val; > + int ret =3D 0; > + > + chip->clk_freq =3D desc->mem->spi->max_speed_hz; > + > + /* Only for reads */ > + if (op->data.dir !=3D SPI_MEM_DATA_IN) > + return -EOPNOTSUPP; > + > + if (desc->info.length > chip->ahb_window_size) > + dev_warn(aspi->dev, "CE%d window (%dMB) too small for map= ping", > + chip->cs, chip->ahb_window_size >> 20); > + > + /* Define the default IO read settings */ > + ctl_val =3D readl(chip->ctl) & ~CTRL_IO_CMD_MASK; > + ctl_val |=3D aspeed_spi_get_io_mode(op) | > + op->cmd.opcode << CTRL_COMMAND_SHIFT | > + CTRL_IO_DUMMY_SET(op->dummy.nbytes / op->dummy.buswidth) = | > + CTRL_IO_MODE_READ; > + > + /* Tune 4BYTE address mode */ > + if (op->addr.nbytes) { > + u32 addr_mode =3D readl(aspi->regs + CE_CTRL_REG); > + > + if (op->addr.nbytes =3D=3D 4) > + addr_mode |=3D (0x11 << chip->cs); > + else > + addr_mode &=3D ~(0x11 << chip->cs); > + writel(addr_mode, aspi->regs + CE_CTRL_REG); > + } > + > + /* READ mode is the controller default setting */ > + chip->ctl_val[ASPEED_SPI_READ] =3D ctl_val; > + writel(chip->ctl_val[ASPEED_SPI_READ], chip->ctl); > + > + dev_info(aspi->dev, "CE%d read buswidth:%d [0x%08x]\n", > + chip->cs, op->data.buswidth, chip->ctl_val[ASPEED_SPI_RE= AD]); > + > + return ret; > +} > + > +static int aspeed_spi_dirmap_read(struct spi_mem_dirmap_desc *desc, > + u64 offset, size_t len, void *buf) > +{ > + struct aspeed_spi *aspi =3D spi_controller_get_devdata(desc->mem-= >spi->master); > + struct aspeed_spi_chip *chip =3D &aspi->chips[desc->mem->spi->chi= p_select]; > + > + /* Switch to USER command mode if mapping window is too small */ > + if (chip->ahb_window_size < offset + len) > + aspeed_spi_read_user(chip, &desc->info.op_tmpl, offset, l= en, buf); > + else > + memcpy_fromio(buf, chip->ahb_base + offset, len); > + > + return len; > +} > + > static const struct spi_controller_mem_ops aspeed_spi_mem_ops =3D { > .supports_op =3D aspeed_spi_supports_op, > .exec_op =3D aspeed_spi_exec_op, > .get_name =3D aspeed_spi_get_name, > + .dirmap_create =3D aspeed_spi_dirmap_create, > + .dirmap_read =3D aspeed_spi_dirmap_read, > }; > > static void aspeed_spi_chip_set_type(struct aspeed_spi *aspi, unsigned i= nt cs, int type) > -- > 2.34.1 > 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 E603AC433EF for ; Wed, 2 Mar 2022 22:48:56 +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: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=fnpWSRWcsrF0wUji09bwm/1fNmFop8fuq3leBnPPwzA=; b=rIre/25rXc6bBK HtQXYQ0VmmCdBKi8Gwf3x02KWoQv8SUkONrAgPvbLHnQAVoW6Fq6vj1HXV6YUszYPkESR4beeJMW3 EAWvGbrC5MwqaC2IB757jmTlYmwc3mlvxO8qt2zZc2IBFWHOC3KlwPkdPCFMNU9zI5295M4jmdvvL K+c9AdDKURI0qCu00iHu1Rkri87Ec0UsJdbL8gRNpFrZMACjwwVw2pgcKhRJ4XaWS8Zs6RKxAtlWq VxnnQwN12QAEMToSHukY1b1oJskwtwewDx/Fga0psEGjDNmLG8trCzMv2IGwmKHGyorgrwJdPTIoz NFWWNJTLAhT5RS7c8pBA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nPXlZ-004cfX-O5; Wed, 02 Mar 2022 22:48:17 +0000 Received: from mail-qk1-x731.google.com ([2607:f8b0:4864:20::731]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nPXlW-004ceW-Ag; Wed, 02 Mar 2022 22:48:15 +0000 Received: by mail-qk1-x731.google.com with SMTP id j78so2608388qke.2; Wed, 02 Mar 2022 14:48:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jms.id.au; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=U7HKj6OXNpn8w0FHPBjThBjt7E+v6QRWEFLnATeT8R8=; b=WLBMwCy66RwK5pcbN9MO2NlCO4R1IBn7Qs7xVB0w98jILthSuRoLP8XafWWl4uPv1O hVR0NCzTtmbukMx4/j2QaOu2Gjj2iacZYdj2peE2rq+d3x+v8oVqOqlqLMUnGuYW9n+9 SZfkcjilAsboHEAwkHUUMgr9870oCc6/lY6vo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=U7HKj6OXNpn8w0FHPBjThBjt7E+v6QRWEFLnATeT8R8=; b=CX+OjVpx+H4QzwAggD8Cf34aSed2aDr+DYKz+R2FlGoUwway0DoFHAblWenOBr//0G Th9tBBpW+jFXuARgTi5RSss713LCjOlz8988wKCA798+FKscbzc3drEAbDqI7khXetal M6zNhi24ZxMHnJdZOXwZo/jhkyVkG0nHvN6UZwdNGeEkcByAwhlweFSNdZbRiofHp9z9 KvzQYjD+hFRCgfKfs1eN+aqVQlGcs/BvxoXJVGPQBmhiFuW8YoytkPNjHsmcY5GI8hJ7 gUMdc6TOmZjhAlPwmhhj0TaM64N0aN3IxjTzVqcpKFWl3Kfq0ZMZ8ZoBsjzMEsigGnQE xwdQ== X-Gm-Message-State: AOAM533iNPf4sKpdqYsi1O10kEJ9dvaj3eojiN2kmO5jCvU425EFJxlN 4qkWEmzWDyQA4Y++f8cBwt9Ku6QhhEyc6fzpjyE= X-Google-Smtp-Source: ABdhPJzOFpiKj2VhwTJ2xSllMVTELkSQmErEMVEuwhCU2F9Xv/VGI8RLN1xrDdWpjiIaIt7xtwDcqhD/+5tidY8BtQQ= X-Received: by 2002:a37:a147:0:b0:47a:be0e:4a0c with SMTP id k68-20020a37a147000000b0047abe0e4a0cmr16940793qke.165.1646261292872; Wed, 02 Mar 2022 14:48:12 -0800 (PST) MIME-Version: 1.0 References: <20220302173114.927476-1-clg@kaod.org> <20220302173114.927476-6-clg@kaod.org> In-Reply-To: <20220302173114.927476-6-clg@kaod.org> From: Joel Stanley Date: Wed, 2 Mar 2022 22:48:00 +0000 Message-ID: Subject: Re: [PATCH v2 05/10] spi: aspeed: Add support for direct mapping To: =?UTF-8?Q?C=C3=A9dric_Le_Goater?= Cc: linux-spi@vger.kernel.org, linux-mtd , Mark Brown , Tudor Ambarus , Pratyush Yadav , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-aspeed , Andrew Jeffery , Chin-Ting Kuo , devicetree , Rob Herring , Linux ARM , Linux Kernel Mailing List X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220302_144814_411226_232D94D2 X-CRM114-Status: GOOD ( 28.69 ) 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 T24gV2VkLCAyIE1hciAyMDIyIGF0IDE3OjMxLCBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGthb2Qu b3JnPiB3cm90ZToKPgo+IFVzZSBkaXJlY3QgbWFwcGluZyB0byByZWFkIHRoZSBmbGFzaCBkZXZp Y2UgY29udGVudHMuIFRoaXMgb3BlcmF0aW9uCj4gbW9kZSBpcyBjYWxsZWQgIkNvbW1hbmQgbW9k ZSIgb24gQXNwZWVkIFNvQyBTTUMgY29udHJvbGxlcnMuIEl0IHVzZXMgYQo+IENvbnRyb2wgUmVn aXN0ZXIgZm9yIHRoZSBzZXR0aW5ncyB0byBhcHBseSB3aGVuIGEgbWVtb3J5IG9wZXJhdGlvbiBp cwo+IHBlcmZvcm1lZCBvbiB0aGUgZmxhc2ggZGV2aWNlIG1hcHBpbmcgd2luZG93Lgo+Cj4gSWYg dGhlIHdpbmRvdyBpcyBub3QgYmlnIGVub3VnaCwgZmFsbCBiYWNrIHRvIHRoZSAiVXNlciBtb2Rl IiB0bwo+IHBlcmZvcm0gdGhlIHJlYWQuCj4KPiBTaW5jZSBkaXJlY3QgbWFwcGluZyBub3cgaGFu ZGxlcyBhbGwgcmVhZHMgb2YgdGhlIGZsYXNoIGRldmljZQo+IGNvbnRlbnRzLCBhbHNvIHVzZSBt ZW1jcHlfZnJvbWlvIGZvciBvdGhlciBhZGRyZXNzIHNwYWNlcywgc3VjaCBhcwo+IFNGRFAuCj4K PiBEaXJlY3QgbWFwcGluZyBmb3Igd3JpdGVzIHdpbGwgY29tZSBsYXRlciB3aGVuIHZhbGlkYXRl ZC4KPgo+IFNpZ25lZC1vZmYtYnk6IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAa2FvZC5vcmc+CgpS ZXZpZXdlZC1ieTogSm9lbCBTdGFubGV5IDxqb2VsQGptcy5pZC5hdT4KCj4gLS0tCj4gIGRyaXZl cnMvc3BpL3NwaS1hc3BlZWQtc21jLmMgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYyBiL2RyaXZl cnMvc3BpL3NwaS1hc3BlZWQtc21jLmMKPiBpbmRleCA2ODhmOTQ3MmUwZDcuLmI0ODU0YjUyMTQ3 NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jCj4gKysrIGIvZHJp dmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYwo+IEBAIC0zMjQsOCArMzI0LDggQEAgc3RhdGljIGlu dCBkb19hc3BlZWRfc3BpX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0 IHNwaV9tZW1fb3AgKm8KPiAgICAgICAgICAgICAgICAgaWYgKCFvcC0+YWRkci5uYnl0ZXMpCj4g ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gYXNwZWVkX3NwaV9yZWFkX3JlZyhjaGlwLCBv cCk7Cj4gICAgICAgICAgICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgICAgICAgICAgICByZXQg PSBhc3BlZWRfc3BpX3JlYWRfdXNlcihjaGlwLCBvcCwgb3AtPmFkZHIudmFsLAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5kYXRhLm5ieXRl cywgb3AtPmRhdGEuYnVmLmluKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHlfZnJv bWlvKG9wLT5kYXRhLmJ1Zi5pbiwgY2hpcC0+YWhiX2Jhc2UgKyBvcC0+YWRkci52YWwsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+ZGF0YS5uYnl0ZXMpOwo+ICAg ICAgICAgfSBlbHNlIHsKPiAgICAgICAgICAgICAgICAgaWYgKCFvcC0+YWRkci5uYnl0ZXMpCj4g ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gYXNwZWVkX3NwaV93cml0ZV9yZWcoY2hpcCwg b3ApOwo+IEBAIC00MDUsMTAgKzQwNSw3MyBAQCBzdGF0aWMgaW50IGFzcGVlZF9zcGlfY2hpcF9z ZXRfZGVmYXVsdF93aW5kb3coc3RydWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCkKPiAgICAgICAg IHJldHVybiBjaGlwLT5haGJfd2luZG93X3NpemUgPyAwIDogLTE7Cj4gIH0KPgo+ICtzdGF0aWMg aW50IGFzcGVlZF9zcGlfZGlybWFwX2NyZWF0ZShzdHJ1Y3Qgc3BpX21lbV9kaXJtYXBfZGVzYyAq ZGVzYykKPiArewo+ICsgICAgICAgc3RydWN0IGFzcGVlZF9zcGkgKmFzcGkgPSBzcGlfY29udHJv bGxlcl9nZXRfZGV2ZGF0YShkZXNjLT5tZW0tPnNwaS0+bWFzdGVyKTsKPiArICAgICAgIHN0cnVj dCBhc3BlZWRfc3BpX2NoaXAgKmNoaXAgPSAmYXNwaS0+Y2hpcHNbZGVzYy0+bWVtLT5zcGktPmNo aXBfc2VsZWN0XTsKPiArICAgICAgIHN0cnVjdCBzcGlfbWVtX29wICpvcCA9ICZkZXNjLT5pbmZv Lm9wX3RtcGw7Cj4gKyAgICAgICB1MzIgY3RsX3ZhbDsKPiArICAgICAgIGludCByZXQgPSAwOwo+ ICsKPiArICAgICAgIGNoaXAtPmNsa19mcmVxID0gZGVzYy0+bWVtLT5zcGktPm1heF9zcGVlZF9o ejsKPiArCj4gKyAgICAgICAvKiBPbmx5IGZvciByZWFkcyAqLwo+ICsgICAgICAgaWYgKG9wLT5k YXRhLmRpciAhPSBTUElfTUVNX0RBVEFfSU4pCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU9Q Tk9UU1VQUDsKPiArCj4gKyAgICAgICBpZiAoZGVzYy0+aW5mby5sZW5ndGggPiBjaGlwLT5haGJf d2luZG93X3NpemUpCj4gKyAgICAgICAgICAgICAgIGRldl93YXJuKGFzcGktPmRldiwgIkNFJWQg d2luZG93ICglZE1CKSB0b28gc21hbGwgZm9yIG1hcHBpbmciLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBjaGlwLT5jcywgY2hpcC0+YWhiX3dpbmRvd19zaXplID4+IDIwKTsKPiArCj4gKyAg ICAgICAvKiBEZWZpbmUgdGhlIGRlZmF1bHQgSU8gcmVhZCBzZXR0aW5ncyAqLwo+ICsgICAgICAg Y3RsX3ZhbCA9IHJlYWRsKGNoaXAtPmN0bCkgJiB+Q1RSTF9JT19DTURfTUFTSzsKPiArICAgICAg IGN0bF92YWwgfD0gYXNwZWVkX3NwaV9nZXRfaW9fbW9kZShvcCkgfAo+ICsgICAgICAgICAgICAg ICBvcC0+Y21kLm9wY29kZSA8PCBDVFJMX0NPTU1BTkRfU0hJRlQgfAo+ICsgICAgICAgICAgICAg ICBDVFJMX0lPX0RVTU1ZX1NFVChvcC0+ZHVtbXkubmJ5dGVzIC8gb3AtPmR1bW15LmJ1c3dpZHRo KSB8Cj4gKyAgICAgICAgICAgICAgIENUUkxfSU9fTU9ERV9SRUFEOwo+ICsKPiArICAgICAgIC8q IFR1bmUgNEJZVEUgYWRkcmVzcyBtb2RlICovCj4gKyAgICAgICBpZiAob3AtPmFkZHIubmJ5dGVz KSB7Cj4gKyAgICAgICAgICAgICAgIHUzMiBhZGRyX21vZGUgPSByZWFkbChhc3BpLT5yZWdzICsg Q0VfQ1RSTF9SRUcpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKG9wLT5hZGRyLm5ieXRlcyA9 PSA0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfbW9kZSB8PSAoMHgxMSA8PCBjaGlw LT5jcyk7Cj4gKyAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICBh ZGRyX21vZGUgJj0gfigweDExIDw8IGNoaXAtPmNzKTsKPiArICAgICAgICAgICAgICAgd3JpdGVs KGFkZHJfbW9kZSwgYXNwaS0+cmVncyArIENFX0NUUkxfUkVHKTsKPiArICAgICAgIH0KPiArCj4g KyAgICAgICAvKiBSRUFEIG1vZGUgaXMgdGhlIGNvbnRyb2xsZXIgZGVmYXVsdCBzZXR0aW5nICov Cj4gKyAgICAgICBjaGlwLT5jdGxfdmFsW0FTUEVFRF9TUElfUkVBRF0gPSBjdGxfdmFsOwo+ICsg ICAgICAgd3JpdGVsKGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSwgY2hpcC0+Y3RsKTsK PiArCj4gKyAgICAgICBkZXZfaW5mbyhhc3BpLT5kZXYsICJDRSVkIHJlYWQgYnVzd2lkdGg6JWQg WzB4JTA4eF1cbiIsCj4gKyAgICAgICAgICAgICAgICBjaGlwLT5jcywgb3AtPmRhdGEuYnVzd2lk dGgsIGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSk7Cj4gKwo+ICsgICAgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhc3BlZWRfc3BpX2Rpcm1hcF9yZWFkKHN0cnVj dCBzcGlfbWVtX2Rpcm1hcF9kZXNjICpkZXNjLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1NjQgb2Zmc2V0LCBzaXplX3QgbGVuLCB2b2lkICpidWYpCj4gK3sKPiArICAgICAg IHN0cnVjdCBhc3BlZWRfc3BpICphc3BpID0gc3BpX2NvbnRyb2xsZXJfZ2V0X2RldmRhdGEoZGVz Yy0+bWVtLT5zcGktPm1hc3Rlcik7Cj4gKyAgICAgICBzdHJ1Y3QgYXNwZWVkX3NwaV9jaGlwICpj aGlwID0gJmFzcGktPmNoaXBzW2Rlc2MtPm1lbS0+c3BpLT5jaGlwX3NlbGVjdF07Cj4gKwo+ICsg ICAgICAgLyogU3dpdGNoIHRvIFVTRVIgY29tbWFuZCBtb2RlIGlmIG1hcHBpbmcgd2luZG93IGlz IHRvbyBzbWFsbCAqLwo+ICsgICAgICAgaWYgKGNoaXAtPmFoYl93aW5kb3dfc2l6ZSA8IG9mZnNl dCArIGxlbikKPiArICAgICAgICAgICAgICAgYXNwZWVkX3NwaV9yZWFkX3VzZXIoY2hpcCwgJmRl c2MtPmluZm8ub3BfdG1wbCwgb2Zmc2V0LCBsZW4sIGJ1Zik7Cj4gKyAgICAgICBlbHNlCj4gKyAg ICAgICAgICAgICAgIG1lbWNweV9mcm9taW8oYnVmLCBjaGlwLT5haGJfYmFzZSArIG9mZnNldCwg bGVuKTsKPiArCj4gKyAgICAgICByZXR1cm4gbGVuOwo+ICt9Cj4gKwo+ICBzdGF0aWMgY29uc3Qg c3RydWN0IHNwaV9jb250cm9sbGVyX21lbV9vcHMgYXNwZWVkX3NwaV9tZW1fb3BzID0gewo+ICAg ICAgICAgLnN1cHBvcnRzX29wID0gYXNwZWVkX3NwaV9zdXBwb3J0c19vcCwKPiAgICAgICAgIC5l eGVjX29wID0gYXNwZWVkX3NwaV9leGVjX29wLAo+ICAgICAgICAgLmdldF9uYW1lID0gYXNwZWVk X3NwaV9nZXRfbmFtZSwKPiArICAgICAgIC5kaXJtYXBfY3JlYXRlID0gYXNwZWVkX3NwaV9kaXJt YXBfY3JlYXRlLAo+ICsgICAgICAgLmRpcm1hcF9yZWFkID0gYXNwZWVkX3NwaV9kaXJtYXBfcmVh ZCwKPiAgfTsKPgo+ICBzdGF0aWMgdm9pZCBhc3BlZWRfc3BpX2NoaXBfc2V0X3R5cGUoc3RydWN0 IGFzcGVlZF9zcGkgKmFzcGksIHVuc2lnbmVkIGludCBjcywgaW50IHR5cGUpCj4gLS0KPiAyLjM0 LjEKPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K 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 42AD1C433F5 for ; Wed, 2 Mar 2022 22:49:48 +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: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=RXVCnKoA54SIzwgoykuc+xlPRtfnTCpRh/LbaC9E0Ho=; b=rV03DyfmBCid12 JZa8X79hTyQdgnzfCvL/RpGd+G6KxmQ+7tIieNdsu5ywHBF+MN7IoxwhuVRBrmZ2IKlI5c+hJCvIu Dj4gTJTO0Soru8b6x/N350QCYyg4CE7tiXzqPfu/dz5bv2B4n2YnDO5GXh6QbgLCEQXqwkfIYhF3h QiKael59C4EcKQeEyJoCyfEUAcT7EZNvf+yVn42OyuR3fo7UsAmUgT4sbsIf271nW6BnZLWNWHcTB MPhHbPQO8XFgSy8ZZsiJjNOucRJJE1/h5tO0ZYDJW8HHSvCQ5HJGdS8H8n7sLPg82MrVErDxOdUV9 CdezitQyqB6hPicU+bfA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nPXlm-004chs-LJ; Wed, 02 Mar 2022 22:48:30 +0000 Received: from mail-qk1-x731.google.com ([2607:f8b0:4864:20::731]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nPXlW-004ceW-Ag; Wed, 02 Mar 2022 22:48:15 +0000 Received: by mail-qk1-x731.google.com with SMTP id j78so2608388qke.2; Wed, 02 Mar 2022 14:48:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jms.id.au; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=U7HKj6OXNpn8w0FHPBjThBjt7E+v6QRWEFLnATeT8R8=; b=WLBMwCy66RwK5pcbN9MO2NlCO4R1IBn7Qs7xVB0w98jILthSuRoLP8XafWWl4uPv1O hVR0NCzTtmbukMx4/j2QaOu2Gjj2iacZYdj2peE2rq+d3x+v8oVqOqlqLMUnGuYW9n+9 SZfkcjilAsboHEAwkHUUMgr9870oCc6/lY6vo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=U7HKj6OXNpn8w0FHPBjThBjt7E+v6QRWEFLnATeT8R8=; b=CX+OjVpx+H4QzwAggD8Cf34aSed2aDr+DYKz+R2FlGoUwway0DoFHAblWenOBr//0G Th9tBBpW+jFXuARgTi5RSss713LCjOlz8988wKCA798+FKscbzc3drEAbDqI7khXetal M6zNhi24ZxMHnJdZOXwZo/jhkyVkG0nHvN6UZwdNGeEkcByAwhlweFSNdZbRiofHp9z9 KvzQYjD+hFRCgfKfs1eN+aqVQlGcs/BvxoXJVGPQBmhiFuW8YoytkPNjHsmcY5GI8hJ7 gUMdc6TOmZjhAlPwmhhj0TaM64N0aN3IxjTzVqcpKFWl3Kfq0ZMZ8ZoBsjzMEsigGnQE xwdQ== X-Gm-Message-State: AOAM533iNPf4sKpdqYsi1O10kEJ9dvaj3eojiN2kmO5jCvU425EFJxlN 4qkWEmzWDyQA4Y++f8cBwt9Ku6QhhEyc6fzpjyE= X-Google-Smtp-Source: ABdhPJzOFpiKj2VhwTJ2xSllMVTELkSQmErEMVEuwhCU2F9Xv/VGI8RLN1xrDdWpjiIaIt7xtwDcqhD/+5tidY8BtQQ= X-Received: by 2002:a37:a147:0:b0:47a:be0e:4a0c with SMTP id k68-20020a37a147000000b0047abe0e4a0cmr16940793qke.165.1646261292872; Wed, 02 Mar 2022 14:48:12 -0800 (PST) MIME-Version: 1.0 References: <20220302173114.927476-1-clg@kaod.org> <20220302173114.927476-6-clg@kaod.org> In-Reply-To: <20220302173114.927476-6-clg@kaod.org> From: Joel Stanley Date: Wed, 2 Mar 2022 22:48:00 +0000 Message-ID: Subject: Re: [PATCH v2 05/10] spi: aspeed: Add support for direct mapping To: =?UTF-8?Q?C=C3=A9dric_Le_Goater?= Cc: linux-spi@vger.kernel.org, linux-mtd , Mark Brown , Tudor Ambarus , Pratyush Yadav , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-aspeed , Andrew Jeffery , Chin-Ting Kuo , devicetree , Rob Herring , Linux ARM , Linux Kernel Mailing List X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220302_144814_411226_232D94D2 X-CRM114-Status: GOOD ( 28.69 ) 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 T24gV2VkLCAyIE1hciAyMDIyIGF0IDE3OjMxLCBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGthb2Qu b3JnPiB3cm90ZToKPgo+IFVzZSBkaXJlY3QgbWFwcGluZyB0byByZWFkIHRoZSBmbGFzaCBkZXZp Y2UgY29udGVudHMuIFRoaXMgb3BlcmF0aW9uCj4gbW9kZSBpcyBjYWxsZWQgIkNvbW1hbmQgbW9k ZSIgb24gQXNwZWVkIFNvQyBTTUMgY29udHJvbGxlcnMuIEl0IHVzZXMgYQo+IENvbnRyb2wgUmVn aXN0ZXIgZm9yIHRoZSBzZXR0aW5ncyB0byBhcHBseSB3aGVuIGEgbWVtb3J5IG9wZXJhdGlvbiBp cwo+IHBlcmZvcm1lZCBvbiB0aGUgZmxhc2ggZGV2aWNlIG1hcHBpbmcgd2luZG93Lgo+Cj4gSWYg dGhlIHdpbmRvdyBpcyBub3QgYmlnIGVub3VnaCwgZmFsbCBiYWNrIHRvIHRoZSAiVXNlciBtb2Rl IiB0bwo+IHBlcmZvcm0gdGhlIHJlYWQuCj4KPiBTaW5jZSBkaXJlY3QgbWFwcGluZyBub3cgaGFu ZGxlcyBhbGwgcmVhZHMgb2YgdGhlIGZsYXNoIGRldmljZQo+IGNvbnRlbnRzLCBhbHNvIHVzZSBt ZW1jcHlfZnJvbWlvIGZvciBvdGhlciBhZGRyZXNzIHNwYWNlcywgc3VjaCBhcwo+IFNGRFAuCj4K PiBEaXJlY3QgbWFwcGluZyBmb3Igd3JpdGVzIHdpbGwgY29tZSBsYXRlciB3aGVuIHZhbGlkYXRl ZC4KPgo+IFNpZ25lZC1vZmYtYnk6IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAa2FvZC5vcmc+CgpS ZXZpZXdlZC1ieTogSm9lbCBTdGFubGV5IDxqb2VsQGptcy5pZC5hdT4KCj4gLS0tCj4gIGRyaXZl cnMvc3BpL3NwaS1hc3BlZWQtc21jLmMgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYyBiL2RyaXZl cnMvc3BpL3NwaS1hc3BlZWQtc21jLmMKPiBpbmRleCA2ODhmOTQ3MmUwZDcuLmI0ODU0YjUyMTQ3 NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jCj4gKysrIGIvZHJp dmVycy9zcGkvc3BpLWFzcGVlZC1zbWMuYwo+IEBAIC0zMjQsOCArMzI0LDggQEAgc3RhdGljIGlu dCBkb19hc3BlZWRfc3BpX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0 IHNwaV9tZW1fb3AgKm8KPiAgICAgICAgICAgICAgICAgaWYgKCFvcC0+YWRkci5uYnl0ZXMpCj4g ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gYXNwZWVkX3NwaV9yZWFkX3JlZyhjaGlwLCBv cCk7Cj4gICAgICAgICAgICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgICAgICAgICAgICByZXQg PSBhc3BlZWRfc3BpX3JlYWRfdXNlcihjaGlwLCBvcCwgb3AtPmFkZHIudmFsLAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5kYXRhLm5ieXRl cywgb3AtPmRhdGEuYnVmLmluKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHlfZnJv bWlvKG9wLT5kYXRhLmJ1Zi5pbiwgY2hpcC0+YWhiX2Jhc2UgKyBvcC0+YWRkci52YWwsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+ZGF0YS5uYnl0ZXMpOwo+ICAg ICAgICAgfSBlbHNlIHsKPiAgICAgICAgICAgICAgICAgaWYgKCFvcC0+YWRkci5uYnl0ZXMpCj4g ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gYXNwZWVkX3NwaV93cml0ZV9yZWcoY2hpcCwg b3ApOwo+IEBAIC00MDUsMTAgKzQwNSw3MyBAQCBzdGF0aWMgaW50IGFzcGVlZF9zcGlfY2hpcF9z ZXRfZGVmYXVsdF93aW5kb3coc3RydWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCkKPiAgICAgICAg IHJldHVybiBjaGlwLT5haGJfd2luZG93X3NpemUgPyAwIDogLTE7Cj4gIH0KPgo+ICtzdGF0aWMg aW50IGFzcGVlZF9zcGlfZGlybWFwX2NyZWF0ZShzdHJ1Y3Qgc3BpX21lbV9kaXJtYXBfZGVzYyAq ZGVzYykKPiArewo+ICsgICAgICAgc3RydWN0IGFzcGVlZF9zcGkgKmFzcGkgPSBzcGlfY29udHJv bGxlcl9nZXRfZGV2ZGF0YShkZXNjLT5tZW0tPnNwaS0+bWFzdGVyKTsKPiArICAgICAgIHN0cnVj dCBhc3BlZWRfc3BpX2NoaXAgKmNoaXAgPSAmYXNwaS0+Y2hpcHNbZGVzYy0+bWVtLT5zcGktPmNo aXBfc2VsZWN0XTsKPiArICAgICAgIHN0cnVjdCBzcGlfbWVtX29wICpvcCA9ICZkZXNjLT5pbmZv Lm9wX3RtcGw7Cj4gKyAgICAgICB1MzIgY3RsX3ZhbDsKPiArICAgICAgIGludCByZXQgPSAwOwo+ ICsKPiArICAgICAgIGNoaXAtPmNsa19mcmVxID0gZGVzYy0+bWVtLT5zcGktPm1heF9zcGVlZF9o ejsKPiArCj4gKyAgICAgICAvKiBPbmx5IGZvciByZWFkcyAqLwo+ICsgICAgICAgaWYgKG9wLT5k YXRhLmRpciAhPSBTUElfTUVNX0RBVEFfSU4pCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU9Q Tk9UU1VQUDsKPiArCj4gKyAgICAgICBpZiAoZGVzYy0+aW5mby5sZW5ndGggPiBjaGlwLT5haGJf d2luZG93X3NpemUpCj4gKyAgICAgICAgICAgICAgIGRldl93YXJuKGFzcGktPmRldiwgIkNFJWQg d2luZG93ICglZE1CKSB0b28gc21hbGwgZm9yIG1hcHBpbmciLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBjaGlwLT5jcywgY2hpcC0+YWhiX3dpbmRvd19zaXplID4+IDIwKTsKPiArCj4gKyAg ICAgICAvKiBEZWZpbmUgdGhlIGRlZmF1bHQgSU8gcmVhZCBzZXR0aW5ncyAqLwo+ICsgICAgICAg Y3RsX3ZhbCA9IHJlYWRsKGNoaXAtPmN0bCkgJiB+Q1RSTF9JT19DTURfTUFTSzsKPiArICAgICAg IGN0bF92YWwgfD0gYXNwZWVkX3NwaV9nZXRfaW9fbW9kZShvcCkgfAo+ICsgICAgICAgICAgICAg ICBvcC0+Y21kLm9wY29kZSA8PCBDVFJMX0NPTU1BTkRfU0hJRlQgfAo+ICsgICAgICAgICAgICAg ICBDVFJMX0lPX0RVTU1ZX1NFVChvcC0+ZHVtbXkubmJ5dGVzIC8gb3AtPmR1bW15LmJ1c3dpZHRo KSB8Cj4gKyAgICAgICAgICAgICAgIENUUkxfSU9fTU9ERV9SRUFEOwo+ICsKPiArICAgICAgIC8q IFR1bmUgNEJZVEUgYWRkcmVzcyBtb2RlICovCj4gKyAgICAgICBpZiAob3AtPmFkZHIubmJ5dGVz KSB7Cj4gKyAgICAgICAgICAgICAgIHUzMiBhZGRyX21vZGUgPSByZWFkbChhc3BpLT5yZWdzICsg Q0VfQ1RSTF9SRUcpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKG9wLT5hZGRyLm5ieXRlcyA9 PSA0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfbW9kZSB8PSAoMHgxMSA8PCBjaGlw LT5jcyk7Cj4gKyAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICBh ZGRyX21vZGUgJj0gfigweDExIDw8IGNoaXAtPmNzKTsKPiArICAgICAgICAgICAgICAgd3JpdGVs KGFkZHJfbW9kZSwgYXNwaS0+cmVncyArIENFX0NUUkxfUkVHKTsKPiArICAgICAgIH0KPiArCj4g KyAgICAgICAvKiBSRUFEIG1vZGUgaXMgdGhlIGNvbnRyb2xsZXIgZGVmYXVsdCBzZXR0aW5nICov Cj4gKyAgICAgICBjaGlwLT5jdGxfdmFsW0FTUEVFRF9TUElfUkVBRF0gPSBjdGxfdmFsOwo+ICsg ICAgICAgd3JpdGVsKGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSwgY2hpcC0+Y3RsKTsK PiArCj4gKyAgICAgICBkZXZfaW5mbyhhc3BpLT5kZXYsICJDRSVkIHJlYWQgYnVzd2lkdGg6JWQg WzB4JTA4eF1cbiIsCj4gKyAgICAgICAgICAgICAgICBjaGlwLT5jcywgb3AtPmRhdGEuYnVzd2lk dGgsIGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSk7Cj4gKwo+ICsgICAgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhc3BlZWRfc3BpX2Rpcm1hcF9yZWFkKHN0cnVj dCBzcGlfbWVtX2Rpcm1hcF9kZXNjICpkZXNjLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1NjQgb2Zmc2V0LCBzaXplX3QgbGVuLCB2b2lkICpidWYpCj4gK3sKPiArICAgICAg IHN0cnVjdCBhc3BlZWRfc3BpICphc3BpID0gc3BpX2NvbnRyb2xsZXJfZ2V0X2RldmRhdGEoZGVz Yy0+bWVtLT5zcGktPm1hc3Rlcik7Cj4gKyAgICAgICBzdHJ1Y3QgYXNwZWVkX3NwaV9jaGlwICpj aGlwID0gJmFzcGktPmNoaXBzW2Rlc2MtPm1lbS0+c3BpLT5jaGlwX3NlbGVjdF07Cj4gKwo+ICsg ICAgICAgLyogU3dpdGNoIHRvIFVTRVIgY29tbWFuZCBtb2RlIGlmIG1hcHBpbmcgd2luZG93IGlz IHRvbyBzbWFsbCAqLwo+ICsgICAgICAgaWYgKGNoaXAtPmFoYl93aW5kb3dfc2l6ZSA8IG9mZnNl dCArIGxlbikKPiArICAgICAgICAgICAgICAgYXNwZWVkX3NwaV9yZWFkX3VzZXIoY2hpcCwgJmRl c2MtPmluZm8ub3BfdG1wbCwgb2Zmc2V0LCBsZW4sIGJ1Zik7Cj4gKyAgICAgICBlbHNlCj4gKyAg ICAgICAgICAgICAgIG1lbWNweV9mcm9taW8oYnVmLCBjaGlwLT5haGJfYmFzZSArIG9mZnNldCwg bGVuKTsKPiArCj4gKyAgICAgICByZXR1cm4gbGVuOwo+ICt9Cj4gKwo+ICBzdGF0aWMgY29uc3Qg c3RydWN0IHNwaV9jb250cm9sbGVyX21lbV9vcHMgYXNwZWVkX3NwaV9tZW1fb3BzID0gewo+ICAg ICAgICAgLnN1cHBvcnRzX29wID0gYXNwZWVkX3NwaV9zdXBwb3J0c19vcCwKPiAgICAgICAgIC5l eGVjX29wID0gYXNwZWVkX3NwaV9leGVjX29wLAo+ICAgICAgICAgLmdldF9uYW1lID0gYXNwZWVk X3NwaV9nZXRfbmFtZSwKPiArICAgICAgIC5kaXJtYXBfY3JlYXRlID0gYXNwZWVkX3NwaV9kaXJt YXBfY3JlYXRlLAo+ICsgICAgICAgLmRpcm1hcF9yZWFkID0gYXNwZWVkX3NwaV9kaXJtYXBfcmVh ZCwKPiAgfTsKPgo+ICBzdGF0aWMgdm9pZCBhc3BlZWRfc3BpX2NoaXBfc2V0X3R5cGUoc3RydWN0 IGFzcGVlZF9zcGkgKmFzcGksIHVuc2lnbmVkIGludCBjcywgaW50IHR5cGUpCj4gLS0KPiAyLjM0 LjEKPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=