Message ID | 3794ffbf-dfea-e96f-1f97-fe235b005e19@sberdevices.ru |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp246357vqo; Wed, 29 Mar 2023 01:13:45 -0700 (PDT) X-Google-Smtp-Source: AKy350ae6whLVzgZq/3Qd8+eSg+ir3bXU71TH48ltgKIuQmA1rxCZJRHqd9fJTK+NQvjU2FXXVXN X-Received: by 2002:a17:902:d50c:b0:1a1:7bd7:cc06 with SMTP id b12-20020a170902d50c00b001a17bd7cc06mr21383282plg.43.1680077625508; Wed, 29 Mar 2023 01:13:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680077625; cv=none; d=google.com; s=arc-20160816; b=0oEgLGeiFubLhMT0sxpaAcPvIkg7/f2uIkYZ1D1LIBYxMgP/7quddSx65N64jPYkxb LO/lmNmOxlmZaFFCCCsyn06NS9Rft1SnRl1VETksXfLddVbNC7q7tBBYzfVP7V+6PYgL yX48ic7TnfmmfhA5Pt518HJccbb8B2rIlAponk9GrSlZlY4FD6nagOJWgTtB8a9oveo6 0KOR3td6+Z9TzndW3tH3+q5fXWWu79euaEBSSFEgcAiqj9HICS6vdshnUj1lyAVQpOdf whSRQNrrlUvnG9wcTv/d5Xus3V7usgg4CziMgdb+q4fNe6cyqk4hJAnHNChuBVP0MDvr 8img== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:subject:from:cc:to :content-language:user-agent:mime-version:date:message-id :dkim-signature; bh=SteJ8B6mpqmaAAU3M4+MgtqGOmVDvwZO8JpXbEiJOuE=; b=g0zUQMp8Nh90OlTzmkn9n7PI9U1C6kRI1hwGnekh7eyXRPUK5r3SlAh/Hc6jjz/JKv pzWAWvN4k+g7/0pTIlZddoyXvQjTurJVcBLkJFAIJohMy7VN/fkK4Agex9jkcT34IexF 9fnECTrLivmN4tBf8vLFDhyaSJtf9RZxQ3FQaHBs77U6Yna4rsBprj4BP2cjmmdRlMss XFKn+7XRUibOM9DIt5lw6yifj+b6Ju9m3J5yVST2ffJSofMtNgA3RNEkbKBBAabav8f9 /9CjOBE1d13Denb83DJAeHo6iXqqPKyc7WiMjQgPtfSpeDXqsEMw0niqgC2PFiK5RgLD P8Qg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sberdevices.ru header.s=mail header.b=LdFXgQeP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=sberdevices.ru Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r11-20020a170902c60b00b0019adf50729fsi29918788plr.11.2023.03.29.01.13.32; Wed, 29 Mar 2023 01:13:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@sberdevices.ru header.s=mail header.b=LdFXgQeP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=sberdevices.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229959AbjC2Hvo (ORCPT <rfc822;rua109.linux@gmail.com> + 99 others); Wed, 29 Mar 2023 03:51:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38126 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230172AbjC2HvW (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 29 Mar 2023 03:51:22 -0400 Received: from mx.sberdevices.ru (mx.sberdevices.ru [45.89.227.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B09F49C1 for <linux-kernel@vger.kernel.org>; Wed, 29 Mar 2023 00:50:53 -0700 (PDT) Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id D04D85FD03; Wed, 29 Mar 2023 10:50:48 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1680076248; bh=SteJ8B6mpqmaAAU3M4+MgtqGOmVDvwZO8JpXbEiJOuE=; h=Message-ID:Date:MIME-Version:To:From:Subject:Content-Type; b=LdFXgQePQqM3H2QutQMJE7jBHMY7P0GMrc/9o4PPdsqXP6TRH+nnNiB95tRZeazIy dqpKyr4glZsKPUSHLGUGAANFoxDWd0kXo37VhbSpmYslrJGqlTAGq2eZpvn43k+ZSA zP5Wed8tZxrbj5EkccGICeX+2unn2qGIOfRaC9NMfstnBu7zDRBpbOJOnChK0HUyxl oBD8wZ2g7JROzQCQLhd/zbrqmBLGZV3x6K//tZWs61w5sIpjzo+xeAefwl5Y7GiOn/ H3OpdDFHkibKcOM5go04pHBiml0txVsbB0ZlqczJvFZVPPp3sLq8HCaQlJIkoie6kB flEJz74D5s+4g== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Wed, 29 Mar 2023 10:50:48 +0300 (MSK) Message-ID: <3794ffbf-dfea-e96f-1f97-fe235b005e19@sberdevices.ru> Date: Wed, 29 Mar 2023 10:47:26 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Content-Language: en-US To: Liang Yang <liang.yang@amlogic.com>, Miquel Raynal <miquel.raynal@bootlin.com>, Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>, Neil Armstrong <neil.armstrong@linaro.org>, Kevin Hilman <khilman@baylibre.com>, Jerome Brunet <jbrunet@baylibre.com>, Martin Blumenstingl <martin.blumenstingl@googlemail.com>, Jianxin Pan <jianxin.pan@amlogic.com>, Yixun Lan <yixun.lan@amlogic.com> CC: <linux-mtd@lists.infradead.org>, <linux-arm-kernel@lists.infradead.org>, <linux-amlogic@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <kernel@sberdevices.ru>, <oxffffaa@gmail.com> From: Arseniy Krasnov <avkrasnov@sberdevices.ru> Subject: [PATCH v2] mtd: rawnand: meson: fix bitmask for length in command word Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [172.16.1.6] X-ClientProxiedBy: S-MS-EXCH01.sberdevices.ru (172.16.1.4) To S-MS-EXCH01.sberdevices.ru (172.16.1.4) X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2023/03/29 04:10:00 #21025776 X-KSMG-AntiVirus-Status: Clean, skipped X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761095188057636247?= X-GMAIL-MSGID: =?utf-8?q?1761689076526928395?= |
Series |
[v2] mtd: rawnand: meson: fix bitmask for length in command word
|
|
Commit Message
Arseniy Krasnov
March 29, 2023, 7:47 a.m. UTC
Valid mask is 0x3FFF, without this patch the following problems were
found:
1) [ 0.938914] Could not find a valid ONFI parameter page, trying
bit-wise majority to recover it
[ 0.947384] ONFI parameter recovery failed, aborting
2) Read with disabled ECC mode was broken.
Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller")
Cc: <Stable@vger.kernel.org>
Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
---
drivers/mtd/nand/raw/meson_nand.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Comments
On 3/29/23 08:47, Arseniy Krasnov wrote: > Valid mask is 0x3FFF, without this patch the following problems were > found: > > 1) [ 0.938914] Could not find a valid ONFI parameter page, trying > bit-wise majority to recover it > [ 0.947384] ONFI parameter recovery failed, aborting > > 2) Read with disabled ECC mode was broken. > > Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller") > Cc: <Stable@vger.kernel.org> > Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> > --- > drivers/mtd/nand/raw/meson_nand.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c > index a28574c00900..074e14225c06 100644 > --- a/drivers/mtd/nand/raw/meson_nand.c > +++ b/drivers/mtd/nand/raw/meson_nand.c > @@ -280,7 +280,7 @@ static void meson_nfc_cmd_access(struct nand_chip *nand, int raw, bool dir, > > if (raw) { > len = mtd->writesize + mtd->oobsize; > - cmd = (len & GENMASK(5, 0)) | scrambler | DMA_DIR(dir); > + cmd = (len & GENMASK(13, 0)) | scrambler | DMA_DIR(dir); What happens when len > GENMASK(13, 0)? Do you check this somewhere? Please introduce a macro/field for GENMASK(13, 0), having such mask scattered along the code looks hackish and doesn't help readability. You'll get to use FIELD_PREP as well. > writel(cmd, nfc->reg_base + NFC_REG_CMD); > return; > } > @@ -544,7 +544,7 @@ static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len) > if (ret) > goto out; > > - cmd = NFC_CMD_N2M | (len & GENMASK(5, 0)); > + cmd = NFC_CMD_N2M | (len & GENMASK(13, 0)); > writel(cmd, nfc->reg_base + NFC_REG_CMD); > > meson_nfc_drain_cmd(nfc); > @@ -568,7 +568,7 @@ static int meson_nfc_write_buf(struct nand_chip *nand, u8 *buf, int len) > if (ret) > return ret; > > - cmd = NFC_CMD_M2N | (len & GENMASK(5, 0)); > + cmd = NFC_CMD_M2N | (len & GENMASK(13, 0)); > writel(cmd, nfc->reg_base + NFC_REG_CMD); > > meson_nfc_drain_cmd(nfc);
On 29.03.2023 11:09, Tudor Ambarus wrote: > > > On 3/29/23 08:47, Arseniy Krasnov wrote: >> Valid mask is 0x3FFF, without this patch the following problems were >> found: >> >> 1) [ 0.938914] Could not find a valid ONFI parameter page, trying >> bit-wise majority to recover it >> [ 0.947384] ONFI parameter recovery failed, aborting >> >> 2) Read with disabled ECC mode was broken. >> >> Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller") >> Cc: <Stable@vger.kernel.org> >> Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> >> --- >> drivers/mtd/nand/raw/meson_nand.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c >> index a28574c00900..074e14225c06 100644 >> --- a/drivers/mtd/nand/raw/meson_nand.c >> +++ b/drivers/mtd/nand/raw/meson_nand.c >> @@ -280,7 +280,7 @@ static void meson_nfc_cmd_access(struct nand_chip *nand, int raw, bool dir, >> >> if (raw) { >> len = mtd->writesize + mtd->oobsize; >> - cmd = (len & GENMASK(5, 0)) | scrambler | DMA_DIR(dir); >> + cmd = (len & GENMASK(13, 0)) | scrambler | DMA_DIR(dir); > > What happens when len > GENMASK(13, 0)? Do you check this somewhere? 'len' will be trimmed. I'm not sure that this case is possible here, because GENMASK(13, 0) is hardware limit for this NAND controller, so 'writesize' and 'oobsize' will be initialized to fit this value. Moreover GENMASK(13, 0) is 16Kb - i think it is big enough for single read. Also i'm not sure that it is good approach to check 'len' here - we are in the middle of NAND read processing. > > Please introduce a macro/field for GENMASK(13, 0), having such mask > scattered along the code looks hackish and doesn't help readability. > You'll get to use FIELD_PREP as well. Ack, i'll do it in v3 Thanks, Arseniy > >> writel(cmd, nfc->reg_base + NFC_REG_CMD); >> return; >> } >> @@ -544,7 +544,7 @@ static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len) >> if (ret) >> goto out; >> >> - cmd = NFC_CMD_N2M | (len & GENMASK(5, 0)); >> + cmd = NFC_CMD_N2M | (len & GENMASK(13, 0)); >> writel(cmd, nfc->reg_base + NFC_REG_CMD); >> >> meson_nfc_drain_cmd(nfc); >> @@ -568,7 +568,7 @@ static int meson_nfc_write_buf(struct nand_chip *nand, u8 *buf, int len) >> if (ret) >> return ret; >> >> - cmd = NFC_CMD_M2N | (len & GENMASK(5, 0)); >> + cmd = NFC_CMD_M2N | (len & GENMASK(13, 0)); >> writel(cmd, nfc->reg_base + NFC_REG_CMD); >> >> meson_nfc_drain_cmd(nfc);
Hi Arseniy, avkrasnov@sberdevices.ru wrote on Wed, 29 Mar 2023 11:33:38 +0300: > On 29.03.2023 11:09, Tudor Ambarus wrote: > > > > > > On 3/29/23 08:47, Arseniy Krasnov wrote: > >> Valid mask is 0x3FFF, without this patch the following problems were > >> found: > >> > >> 1) [ 0.938914] Could not find a valid ONFI parameter page, trying > >> bit-wise majority to recover it > >> [ 0.947384] ONFI parameter recovery failed, aborting > >> > >> 2) Read with disabled ECC mode was broken. > >> > >> Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller") > >> Cc: <Stable@vger.kernel.org> > >> Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> > >> --- > >> drivers/mtd/nand/raw/meson_nand.c | 6 +++--- > >> 1 file changed, 3 insertions(+), 3 deletions(-) > >> > >> diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c > >> index a28574c00900..074e14225c06 100644 > >> --- a/drivers/mtd/nand/raw/meson_nand.c > >> +++ b/drivers/mtd/nand/raw/meson_nand.c > >> @@ -280,7 +280,7 @@ static void meson_nfc_cmd_access(struct nand_chip *nand, int raw, bool dir, > >> > >> if (raw) { > >> len = mtd->writesize + mtd->oobsize; > >> - cmd = (len & GENMASK(5, 0)) | scrambler | DMA_DIR(dir); > >> + cmd = (len & GENMASK(13, 0)) | scrambler | DMA_DIR(dir); > > > > What happens when len > GENMASK(13, 0)? Do you check this somewhere? > > 'len' will be trimmed. I'm not sure that this case is possible here, because GENMASK(13, 0) > is hardware limit for this NAND controller, so 'writesize' and 'oobsize' will be initialized > to fit this value. Moreover GENMASK(13, 0) is 16Kb - i think it is big enough for single > read. Also i'm not sure that it is good approach to check 'len' here - we are in the middle > of NAND read processing. No, you should check the page size will not exceed this limit in the attach hook, likely. You should also refuse exec_op operations with a data length bigger than 16k (either with a manual check in your own parser or just by providing the max size to the parser table, depending on what's used). > > > > > Please introduce a macro/field for GENMASK(13, 0), having such mask > > scattered along the code looks hackish and doesn't help readability. > > You'll get to use FIELD_PREP as well. > > Ack, i'll do it in v3 > > Thanks, Arseniy > > > > >> writel(cmd, nfc->reg_base + NFC_REG_CMD); > >> return; > >> } > >> @@ -544,7 +544,7 @@ static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len) > >> if (ret) > >> goto out; > >> > >> - cmd = NFC_CMD_N2M | (len & GENMASK(5, 0)); > >> + cmd = NFC_CMD_N2M | (len & GENMASK(13, 0)); > >> writel(cmd, nfc->reg_base + NFC_REG_CMD); > >> > >> meson_nfc_drain_cmd(nfc); > >> @@ -568,7 +568,7 @@ static int meson_nfc_write_buf(struct nand_chip *nand, u8 *buf, int len) > >> if (ret) > >> return ret; > >> > >> - cmd = NFC_CMD_M2N | (len & GENMASK(5, 0)); > >> + cmd = NFC_CMD_M2N | (len & GENMASK(13, 0)); > >> writel(cmd, nfc->reg_base + NFC_REG_CMD); > >> > >> meson_nfc_drain_cmd(nfc); Thanks, Miquèl
On 29.03.2023 12:00, Miquel Raynal wrote: > Hi Arseniy, > > avkrasnov@sberdevices.ru wrote on Wed, 29 Mar 2023 11:33:38 +0300: > >> On 29.03.2023 11:09, Tudor Ambarus wrote: >>> >>> >>> On 3/29/23 08:47, Arseniy Krasnov wrote: >>>> Valid mask is 0x3FFF, without this patch the following problems were >>>> found: >>>> >>>> 1) [ 0.938914] Could not find a valid ONFI parameter page, trying >>>> bit-wise majority to recover it >>>> [ 0.947384] ONFI parameter recovery failed, aborting >>>> >>>> 2) Read with disabled ECC mode was broken. >>>> >>>> Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller") >>>> Cc: <Stable@vger.kernel.org> >>>> Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> >>>> --- >>>> drivers/mtd/nand/raw/meson_nand.c | 6 +++--- >>>> 1 file changed, 3 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c >>>> index a28574c00900..074e14225c06 100644 >>>> --- a/drivers/mtd/nand/raw/meson_nand.c >>>> +++ b/drivers/mtd/nand/raw/meson_nand.c >>>> @@ -280,7 +280,7 @@ static void meson_nfc_cmd_access(struct nand_chip *nand, int raw, bool dir, >>>> >>>> if (raw) { >>>> len = mtd->writesize + mtd->oobsize; >>>> - cmd = (len & GENMASK(5, 0)) | scrambler | DMA_DIR(dir); >>>> + cmd = (len & GENMASK(13, 0)) | scrambler | DMA_DIR(dir); >>> >>> What happens when len > GENMASK(13, 0)? Do you check this somewhere? >> >> 'len' will be trimmed. I'm not sure that this case is possible here, because GENMASK(13, 0) >> is hardware limit for this NAND controller, so 'writesize' and 'oobsize' will be initialized >> to fit this value. Moreover GENMASK(13, 0) is 16Kb - i think it is big enough for single >> read. Also i'm not sure that it is good approach to check 'len' here - we are in the middle >> of NAND read processing. > > No, you should check the page size will not exceed this limit in the > attach hook, likely. > > You should also refuse exec_op operations with a data length bigger > than 16k (either with a manual check in your own parser or just by > providing the max size to the parser table, depending on what's used). > Ok, I see. Thanks, Arseniy >> >>> >>> Please introduce a macro/field for GENMASK(13, 0), having such mask >>> scattered along the code looks hackish and doesn't help readability. >>> You'll get to use FIELD_PREP as well. >> >> Ack, i'll do it in v3 >> >> Thanks, Arseniy >> >>> >>>> writel(cmd, nfc->reg_base + NFC_REG_CMD); >>>> return; >>>> } >>>> @@ -544,7 +544,7 @@ static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len) >>>> if (ret) >>>> goto out; >>>> >>>> - cmd = NFC_CMD_N2M | (len & GENMASK(5, 0)); >>>> + cmd = NFC_CMD_N2M | (len & GENMASK(13, 0)); >>>> writel(cmd, nfc->reg_base + NFC_REG_CMD); >>>> >>>> meson_nfc_drain_cmd(nfc); >>>> @@ -568,7 +568,7 @@ static int meson_nfc_write_buf(struct nand_chip *nand, u8 *buf, int len) >>>> if (ret) >>>> return ret; >>>> >>>> - cmd = NFC_CMD_M2N | (len & GENMASK(5, 0)); >>>> + cmd = NFC_CMD_M2N | (len & GENMASK(13, 0)); >>>> writel(cmd, nfc->reg_base + NFC_REG_CMD); >>>> >>>> meson_nfc_drain_cmd(nfc); > > > Thanks, > Miquèl
On Wed, 2023-03-29 at 07:47:26 UTC, Arseniy Krasnov wrote: > Valid mask is 0x3FFF, without this patch the following problems were > found: > > 1) [ 0.938914] Could not find a valid ONFI parameter page, trying > bit-wise majority to recover it > [ 0.947384] ONFI parameter recovery failed, aborting > > 2) Read with disabled ECC mode was broken. > > Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller") > Cc: <Stable@vger.kernel.org> > Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/fixes, thanks. Miquel
diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c index a28574c00900..074e14225c06 100644 --- a/drivers/mtd/nand/raw/meson_nand.c +++ b/drivers/mtd/nand/raw/meson_nand.c @@ -280,7 +280,7 @@ static void meson_nfc_cmd_access(struct nand_chip *nand, int raw, bool dir, if (raw) { len = mtd->writesize + mtd->oobsize; - cmd = (len & GENMASK(5, 0)) | scrambler | DMA_DIR(dir); + cmd = (len & GENMASK(13, 0)) | scrambler | DMA_DIR(dir); writel(cmd, nfc->reg_base + NFC_REG_CMD); return; } @@ -544,7 +544,7 @@ static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len) if (ret) goto out; - cmd = NFC_CMD_N2M | (len & GENMASK(5, 0)); + cmd = NFC_CMD_N2M | (len & GENMASK(13, 0)); writel(cmd, nfc->reg_base + NFC_REG_CMD); meson_nfc_drain_cmd(nfc); @@ -568,7 +568,7 @@ static int meson_nfc_write_buf(struct nand_chip *nand, u8 *buf, int len) if (ret) return ret; - cmd = NFC_CMD_M2N | (len & GENMASK(5, 0)); + cmd = NFC_CMD_M2N | (len & GENMASK(13, 0)); writel(cmd, nfc->reg_base + NFC_REG_CMD); meson_nfc_drain_cmd(nfc);