[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