All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: William Zhang <william.zhang@broadcom.com>
Cc: Broadcom Kernel List <bcm-kernel-feedback-list@broadcom.com>,
	Linux MTD List <linux-mtd@lists.infradead.org>,
	f.fainelli@gmail.com, rafal@milecki.pl, kursad.oney@broadcom.com,
	joel.peshkin@broadcom.com, computersforpeace@gmail.com,
	anand.gore@broadcom.com, dregan@mail.com,
	kamal.dasu@broadcom.com, tomer.yacoby@broadcom.com,
	dan.beygelman@broadcom.com,
	Florian Fainelli <florian.fainelli@broadcom.com>,
	Rob Herring <robh@kernel.org>,
	linux-kernel@vger.kernel.org,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Richard Weinberger <richard@nod.at>,
	Boris Brezillon <bbrezillon@kernel.org>,
	Kamal Dasu <kdasu.kdev@gmail.com>
Subject: Re: [PATCH 01/12] mtd: rawnand: brcmnand: Fix ECC level field setting for v7.2 controller
Date: Wed, 7 Jun 2023 10:06:07 +0200	[thread overview]
Message-ID: <20230607100607.135bfba4@xps-13> (raw)
In-Reply-To: <20230606231252.94838-2-william.zhang@broadcom.com>

Hi William,

william.zhang@broadcom.com wrote on Tue,  6 Jun 2023 16:12:41 -0700:

> v7.2 controller has different ECC level field size and shift in the acc
> control register than its predecessor and successor controller. It needs
> to be set specifically.
> 
> Fixes: decba6d47869 ("mtd: brcmnand: Add v7.2 controller support")
> Signed-off-by: William Zhang <william.zhang@broadcom.com>
> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
> ---
> 
>  drivers/mtd/nand/raw/brcmnand/brcmnand.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
> index 2e9c2e2d9c9f..b2cde1082b3b 100644
> --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
> +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
> @@ -977,12 +977,20 @@ static inline u32 brcmnand_ecc_level_mask(struct brcmnand_controller *ctrl)
>  	mask <<= NAND_ACC_CONTROL_ECC_SHIFT;
>  
>  	/* v7.2 includes additional ECC levels */
> -	if (ctrl->nand_version >= 0x0702)
> +	if (ctrl->nand_version == 0x0702)
>  		mask |= 0x7 << NAND_ACC_CONTROL_ECC_EXT_SHIFT;
>  
>  	return mask;
>  }
>  
> +static inline int brcmnand_ecc_level_shift(struct brcmnand_controller *ctrl)
> +{
> +	if (ctrl->nand_version == 0x0702)
> +		return NAND_ACC_CONTROL_ECC_EXT_SHIFT;
> +	else
> +		return NAND_ACC_CONTROL_ECC_SHIFT;
> +}
> +
>  static void brcmnand_set_ecc_enabled(struct brcmnand_host *host, int en)
>  {
>  	struct brcmnand_controller *ctrl = host->ctrl;
> @@ -992,8 +1000,8 @@ static void brcmnand_set_ecc_enabled(struct brcmnand_host *host, int en)
>  
>  	if (en) {
>  		acc_control |= ecc_flags; /* enable RD/WR ECC */
> -		acc_control |= host->hwcfg.ecc_level
> -			       << NAND_ACC_CONTROL_ECC_SHIFT;
> +		acc_control &= ~brcmnand_ecc_level_mask(ctrl);

Could we use static driver data instead? Let's avoid making
non-useful function calls when this can easily be avoided.

> +		acc_control |= host->hwcfg.ecc_level << brcmnand_ecc_level_shift(ctrl);
>  	} else {
>  		acc_control &= ~ecc_flags; /* disable RD/WR ECC */
>  		acc_control &= ~brcmnand_ecc_level_mask(ctrl);


Thanks,
Miquèl

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

WARNING: multiple messages have this Message-ID (diff)
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: William Zhang <william.zhang@broadcom.com>
Cc: Broadcom Kernel List <bcm-kernel-feedback-list@broadcom.com>,
	Linux MTD List <linux-mtd@lists.infradead.org>,
	f.fainelli@gmail.com, rafal@milecki.pl, kursad.oney@broadcom.com,
	joel.peshkin@broadcom.com, computersforpeace@gmail.com,
	anand.gore@broadcom.com, dregan@mail.com,
	kamal.dasu@broadcom.com, tomer.yacoby@broadcom.com,
	dan.beygelman@broadcom.com,
	Florian Fainelli <florian.fainelli@broadcom.com>,
	Rob Herring <robh@kernel.org>,
	linux-kernel@vger.kernel.org,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Richard Weinberger <richard@nod.at>,
	Boris Brezillon <bbrezillon@kernel.org>,
	Kamal Dasu <kdasu.kdev@gmail.com>
Subject: Re: [PATCH 01/12] mtd: rawnand: brcmnand: Fix ECC level field setting for v7.2 controller
Date: Wed, 7 Jun 2023 10:06:07 +0200	[thread overview]
Message-ID: <20230607100607.135bfba4@xps-13> (raw)
In-Reply-To: <20230606231252.94838-2-william.zhang@broadcom.com>

Hi William,

william.zhang@broadcom.com wrote on Tue,  6 Jun 2023 16:12:41 -0700:

> v7.2 controller has different ECC level field size and shift in the acc
> control register than its predecessor and successor controller. It needs
> to be set specifically.
> 
> Fixes: decba6d47869 ("mtd: brcmnand: Add v7.2 controller support")
> Signed-off-by: William Zhang <william.zhang@broadcom.com>
> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
> ---
> 
>  drivers/mtd/nand/raw/brcmnand/brcmnand.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
> index 2e9c2e2d9c9f..b2cde1082b3b 100644
> --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
> +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
> @@ -977,12 +977,20 @@ static inline u32 brcmnand_ecc_level_mask(struct brcmnand_controller *ctrl)
>  	mask <<= NAND_ACC_CONTROL_ECC_SHIFT;
>  
>  	/* v7.2 includes additional ECC levels */
> -	if (ctrl->nand_version >= 0x0702)
> +	if (ctrl->nand_version == 0x0702)
>  		mask |= 0x7 << NAND_ACC_CONTROL_ECC_EXT_SHIFT;
>  
>  	return mask;
>  }
>  
> +static inline int brcmnand_ecc_level_shift(struct brcmnand_controller *ctrl)
> +{
> +	if (ctrl->nand_version == 0x0702)
> +		return NAND_ACC_CONTROL_ECC_EXT_SHIFT;
> +	else
> +		return NAND_ACC_CONTROL_ECC_SHIFT;
> +}
> +
>  static void brcmnand_set_ecc_enabled(struct brcmnand_host *host, int en)
>  {
>  	struct brcmnand_controller *ctrl = host->ctrl;
> @@ -992,8 +1000,8 @@ static void brcmnand_set_ecc_enabled(struct brcmnand_host *host, int en)
>  
>  	if (en) {
>  		acc_control |= ecc_flags; /* enable RD/WR ECC */
> -		acc_control |= host->hwcfg.ecc_level
> -			       << NAND_ACC_CONTROL_ECC_SHIFT;
> +		acc_control &= ~brcmnand_ecc_level_mask(ctrl);

Could we use static driver data instead? Let's avoid making
non-useful function calls when this can easily be avoided.

> +		acc_control |= host->hwcfg.ecc_level << brcmnand_ecc_level_shift(ctrl);
>  	} else {
>  		acc_control &= ~ecc_flags; /* disable RD/WR ECC */
>  		acc_control &= ~brcmnand_ecc_level_mask(ctrl);


Thanks,
Miquèl

  reply	other threads:[~2023-06-07  8:06 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-06 23:12 [PATCH 00/12] mtd: rawnand: brcmnand: driver and doc updates William Zhang
2023-06-06 23:12 ` William Zhang
2023-06-06 23:12 ` William Zhang
2023-06-06 23:12 ` [PATCH 01/12] mtd: rawnand: brcmnand: Fix ECC level field setting for v7.2 controller William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-07  8:06   ` Miquel Raynal [this message]
2023-06-07  8:06     ` Miquel Raynal
2023-06-06 23:12 ` [PATCH 02/12] mtd: rawnand: brcmnand: Fix potential false time out warning William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12 ` [PATCH 03/12] mtd: rawnand: brcmnand: Fix crash during the panic_write William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12 ` [PATCH 04/12] mtd: rawnand: brcmnand: Fix potential out-of-bounds access in oob write William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-07  8:09   ` Miquel Raynal
2023-06-07  8:09     ` Miquel Raynal
2023-06-06 23:12 ` [PATCH 05/12] dt-bindings: mtd: brcmnand: Updates for bcmbca SoCs William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-07  8:14   ` Miquel Raynal
2023-06-07  8:14     ` Miquel Raynal
2023-06-07 20:01     ` William Zhang
2023-06-07 20:01       ` William Zhang
2023-06-09  8:58       ` Miquel Raynal
2023-06-09  8:58         ` Miquel Raynal
2023-06-09 19:05         ` William Zhang
2023-06-09 19:05           ` William Zhang
2023-06-12 17:43           ` Miquel Raynal
2023-06-12 17:43             ` Miquel Raynal
2023-06-14 22:46     ` Rob Herring
2023-06-14 22:46       ` Rob Herring
2023-06-15  0:40       ` William Zhang
2023-06-15  0:40         ` William Zhang
2023-06-14 22:43   ` Rob Herring
2023-06-14 22:43     ` Rob Herring
2023-06-15  0:28     ` William Zhang
2023-06-15  0:28       ` William Zhang
2023-06-06 23:12 ` [PATCH 06/12] ARM: dts: broadcom: bcmbca: Add NAND controller node William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12 ` [PATCH 07/12] arm64: " William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12 ` [PATCH 08/12] mtd: rawnand: brcmnand: Rename bcm63138 nand driver William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12 ` [PATCH 09/12] mtd: rawnand: brcmnand: Add new compatible string William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12 ` [PATCH 10/12] mtd: rawnand: brcmnand: Add BCMBCA read data bus interface William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-07  8:20   ` Miquel Raynal
2023-06-07  8:20     ` Miquel Raynal
2023-06-07  8:20     ` Miquel Raynal
2023-06-07 20:12     ` William Zhang
2023-06-07 20:12       ` William Zhang
2023-06-07 20:12       ` William Zhang
2023-06-08  6:15       ` Miquel Raynal
2023-06-08  6:15         ` Miquel Raynal
2023-06-08  6:15         ` Miquel Raynal
2023-06-08 19:04         ` William Zhang
2023-06-08 19:04           ` William Zhang
2023-06-08 19:04           ` William Zhang
2023-06-07  8:22   ` Miquel Raynal
2023-06-07  8:22     ` Miquel Raynal
2023-06-07  8:22     ` Miquel Raynal
2023-06-07 20:24     ` William Zhang
2023-06-07 20:24       ` William Zhang
2023-06-07 20:24       ` William Zhang
2023-06-08  6:18       ` Miquel Raynal
2023-06-08  6:18         ` Miquel Raynal
2023-06-08  6:18         ` Miquel Raynal
2023-06-08 19:10         ` William Zhang
2023-06-08 19:10           ` William Zhang
2023-06-08 19:10           ` William Zhang
2023-06-09  8:35           ` Miquel Raynal
2023-06-09  8:35             ` Miquel Raynal
2023-06-09  8:35             ` Miquel Raynal
2023-06-09 19:16             ` William Zhang
2023-06-09 19:16               ` William Zhang
2023-06-09 19:16               ` William Zhang
2023-06-12 17:49               ` Miquel Raynal
2023-06-12 17:49                 ` Miquel Raynal
2023-06-12 17:49                 ` Miquel Raynal
2023-06-12 17:53                 ` Miquel Raynal
2023-06-12 17:53                   ` Miquel Raynal
2023-06-12 17:53                   ` Miquel Raynal
2023-06-12 19:18                   ` William Zhang
2023-06-12 19:18                     ` William Zhang
2023-06-12 19:18                     ` William Zhang
2023-06-13  6:42                     ` Miquel Raynal
2023-06-13  6:42                       ` Miquel Raynal
2023-06-13  6:42                       ` Miquel Raynal
2023-06-14  0:00                       ` William Zhang
2023-06-14  0:00                         ` William Zhang
2023-06-14  0:00                         ` William Zhang
2023-06-14  6:22                         ` Miquel Raynal
2023-06-14  6:22                           ` Miquel Raynal
2023-06-14  6:22                           ` Miquel Raynal
2023-06-14 23:52                           ` William Zhang
2023-06-14 23:52                             ` William Zhang
2023-06-14 23:52                             ` William Zhang
2023-06-12 19:03                 ` William Zhang
2023-06-12 19:03                   ` William Zhang
2023-06-12 19:03                   ` William Zhang
2023-06-11  9:54   ` kernel test robot
2023-06-11  9:54     ` kernel test robot
2023-06-06 23:12 ` [PATCH 11/12] mtd: rawnand: brcmnand: Add support for getting ecc setting from strap William Zhang
2023-06-06 23:12   ` William Zhang
2023-06-07  8:25   ` Miquel Raynal
2023-06-07  8:25     ` Miquel Raynal
2023-06-06 23:12 ` [PATCH 12/12] mtd: rawnand: brcmnand: Support write protection setting from dts William Zhang
2023-06-06 23:12   ` William Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230607100607.135bfba4@xps-13 \
    --to=miquel.raynal@bootlin.com \
    --cc=anand.gore@broadcom.com \
    --cc=bbrezillon@kernel.org \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=computersforpeace@gmail.com \
    --cc=dan.beygelman@broadcom.com \
    --cc=dregan@mail.com \
    --cc=f.fainelli@gmail.com \
    --cc=florian.fainelli@broadcom.com \
    --cc=joel.peshkin@broadcom.com \
    --cc=kamal.dasu@broadcom.com \
    --cc=kdasu.kdev@gmail.com \
    --cc=kursad.oney@broadcom.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=rafal@milecki.pl \
    --cc=richard@nod.at \
    --cc=robh@kernel.org \
    --cc=tomer.yacoby@broadcom.com \
    --cc=vigneshr@ti.com \
    --cc=william.zhang@broadcom.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.