[u-boot][PATCH 06/14] mtd: rawnand: nand_base: Allow base driver to be used in SPL without nand_bbt

Michael Nazzareno Trimarchi michael at amarulasolutions.com
Mon Nov 28 15:27:00 CET 2022


Hi

On Tue, Oct 11, 2022 at 1:50 PM Roger Quadros <rogerq at kernel.org> wrote:
>
> nand_bbt.c is not being built with the nand_base driver during SPL
> build. This results in build failures if we try to access any nand_bbt
> related functions.
>
> Don't use any nand_bbt functions for SPL build.
>
> Signed-off-by: Roger Quadros <rogerq at kernel.org>
> ---
>  drivers/mtd/nand/raw/nand_base.c | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
> index 4b09a11288..826ae633ce 100644
> --- a/drivers/mtd/nand/raw/nand_base.c
> +++ b/drivers/mtd/nand/raw/nand_base.c
> @@ -447,7 +447,10 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs)
>  static int nand_block_markbad_lowlevel(struct mtd_info *mtd, loff_t ofs)
>  {
>         struct nand_chip *chip = mtd_to_nand(mtd);
> -       int res, ret = 0;
> +       int ret = 0;
> +#ifndef CONFIG_SPL_BUILD
> +       int res;
> +#endif
>
>         if (!(chip->bbt_options & NAND_BBT_NO_OOB_BBM)) {
>                 struct erase_info einfo;
> @@ -465,12 +468,14 @@ static int nand_block_markbad_lowlevel(struct mtd_info *mtd, loff_t ofs)
>                 nand_release_device(mtd);
>         }
>
> +#ifndef CONFIG_SPL_BUILD
>         /* Mark block bad in BBT */
>         if (chip->bbt) {
>                 res = nand_markbad_bbt(mtd, ofs);
>                 if (!ret)
>                         ret = res;
>         }
> +#endif
>
>         if (!ret)
>                 mtd->ecc_stats.badblocks++;
> @@ -517,7 +522,11 @@ static int nand_block_isreserved(struct mtd_info *mtd, loff_t ofs)
>         if (!chip->bbt)
>                 return 0;
>         /* Return info from the table */
> +#ifndef CONFIG_SPL_BUILD
>         return nand_isreserved_bbt(mtd, ofs);
> +#else
> +       return 0;
> +#endif
>  }
>
>  /**
> @@ -543,7 +552,11 @@ static int nand_block_checkbad(struct mtd_info *mtd, loff_t ofs, int allowbbt)
>                 return chip->block_bad(mtd, ofs);
>
>         /* Return info from the table */
> +#ifndef CONFIG_SPL_BUILD
>         return nand_isbad_bbt(mtd, ofs, allowbbt);
> +#else
> +       return 0;
> +#endif
>  }

Can you please send me the config that let this fail?

Michael
>
>  /**
> @@ -3752,8 +3765,11 @@ static void nand_set_defaults(struct nand_chip *chip, int busw)
>                 chip->write_byte = busw ? nand_write_byte16 : nand_write_byte;
>         if (!chip->read_buf || chip->read_buf == nand_read_buf)
>                 chip->read_buf = busw ? nand_read_buf16 : nand_read_buf;
> +
> +#ifndef CONFIG_SPL_BUILD
>         if (!chip->scan_bbt)
>                 chip->scan_bbt = nand_default_bbt;
> +#endif
>
>         if (!chip->controller) {
>                 chip->controller = &chip->hwcontrol;
> --
> 2.17.1
>


-- 
Michael Nazzareno Trimarchi
Co-Founder & Chief Executive Officer
M. +39 347 913 2170
michael at amarulasolutions.com
__________________________________

Amarula Solutions BV
Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
T. +31 (0)85 111 9172
info at amarulasolutions.com
www.amarulasolutions.com


More information about the U-Boot mailing list