> From: Mike Looijmans <mike.looijm...@topic.nl> > On 04-04-2025 11:56, Bernhard Messerklinger wrote: > > At the moment a mixture of ifdef(CONFIG_IS_ENABLED) and > > CONFIG_IS_ENABLED(SPI_FLASH_BAR) is used in the spi-nor framework. > > This leads to misbehaviour in the SPL as there is no Kconfig option > > CONFIG_SPL_SPI_FLASH_BAR. This commit standardizes the use of > > CONFIG_SPI_FLASH to get SPLs that load U-Boot proper from the > > SPI flash to work again. > > > > Fixes: 9bb02f7 (mtd: spi-nor: Fix the spi_nor_read() when config > > SPI_STACKED_PARALLEL is enabled) > > I was hoping this would fix the issues with this commit, but apparently > not quite. If I add this patch, the Zynq boards still won't boot from > QSPI with SPL, though now it simply hangs SPL rather than causing a > "panic please reset the board". > > So far, only reverting commit 9bb02f7 results in a booting system. > > Mike. >
This solves my problem, perhaps there are others. Is it possible to provide your defconfig? If so, I can try to find out why it is still not working for you. Regards, Bernhard > > > Signed-off-by: Bernhard Messerklinger > > <bernhard.messerklin...@br-automation.com> > > --- > > > > drivers/mtd/spi/spi-nor-core.c | 22 +++++++++++----------- > > include/linux/mtd/spi-nor.h | 2 +- > > 2 files changed, 12 insertions(+), 12 deletions(-) > > > > diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c > > index 6f352c5c0e2..a8865bbd37c 100644 > > --- a/drivers/mtd/spi/spi-nor-core.c > > +++ b/drivers/mtd/spi/spi-nor-core.c > > @@ -655,7 +655,7 @@ static struct spi_nor *mtd_to_spi_nor(struct mtd_info > > *mtd) > > return mtd->priv; > > } > > > > -#ifndef CONFIG_SPI_FLASH_BAR > > +#if !CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > static u8 spi_nor_convert_opcode(u8 opcode, const u8 table[][2], size_t > >size) > > { > > size_t i; > > @@ -739,7 +739,7 @@ static void spi_nor_set_4byte_opcodes(struct spi_nor > > *nor, > > nor->program_opcode = > >spi_nor_convert_3to4_program(nor->program_opcode); > > nor->erase_opcode = spi_nor_convert_3to4_erase(nor->erase_opcode); > > } > > -#endif /* !CONFIG_SPI_FLASH_BAR */ > > +#endif /* !CONFIG_IS_ENABLED(SPI_FLASH_BAR) */ > > > > /* Enable/disable 4-byte addressing mode. */ > > static int set_4byte(struct spi_nor *nor, const struct flash_info *info, > > @@ -930,7 +930,7 @@ static int spi_nor_erase_chip_wait_till_ready(struct > > spi_nor *nor, unsigned long > > return spi_nor_wait_till_ready_with_timeout(nor, timeout); > > } > > > > -#ifdef CONFIG_SPI_FLASH_BAR > > +#if CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > /* > > * This "clean_bar" is necessary in a situation when one was accessing > > * spi flash memory > 16 MiB by using Bank Address Register's BA24 bit. > > @@ -1141,7 +1141,7 @@ static int spi_nor_erase(struct mtd_info *mtd, struct > > erase_info *instr) > > nor->spi->flags &= ~SPI_XFER_U_PAGE; > > } > > } > > -#ifdef CONFIG_SPI_FLASH_BAR > > +#if CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > ret = write_bar(nor, offset); > > if (ret < 0) > > goto erase_err; > > @@ -1175,7 +1175,7 @@ static int spi_nor_erase(struct mtd_info *mtd, struct > > erase_info *instr) > > > > addr_known = false; > > erase_err: > > -#ifdef CONFIG_SPI_FLASH_BAR > > +#if CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > err = clean_bar(nor); > > if (!ret) > > ret = err; > > @@ -1630,7 +1630,7 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t > > from, size_t len, > > offset /= 2; > > } > > > > -#ifdef CONFIG_SPI_FLASH_BAR > > +#if CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > ret = write_bar(nor, offset); > > if (ret < 0) > > return log_ret(ret); > > @@ -1667,7 +1667,7 @@ static int spi_nor_read(struct mtd_info *mtd, loff_t > > from, size_t len, > > ret = 0; > > > > read_err: > > -#ifdef CONFIG_SPI_FLASH_BAR > > +#if CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > ret = clean_bar(nor); > > #endif > > return ret; > > @@ -2016,7 +2016,7 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t > > to, size_t len, > > } > > } > > > > -#ifdef CONFIG_SPI_FLASH_BAR > > +#if CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > ret = write_bar(nor, offset); > > if (ret < 0) > > return ret; > > @@ -2090,7 +2090,7 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t > > to, size_t len, > > } > > > > write_err: > > -#ifdef CONFIG_SPI_FLASH_BAR > > +#if CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > ret = clean_bar(nor); > > #endif > > return ret; > > @@ -3791,7 +3791,7 @@ static int s25_s28_setup(struct spi_nor *nor, const > > struct flash_info *info, > > int ret; > > u8 cr; > > > > -#ifdef CONFIG_SPI_FLASH_BAR > > +#if CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > return -ENOTSUPP; /* Bank Address Register is not supported */ > > #endif > > /* > > @@ -4577,7 +4577,7 @@ int spi_nor_scan(struct spi_nor *nor) > > if (nor->flags & (SNOR_F_HAS_PARALLEL | SNOR_F_HAS_STACKED)) > > shift = 1; > > if (nor->addr_width == 3 && (mtd->size >> shift) > SZ_16M) { > > -#ifndef CONFIG_SPI_FLASH_BAR > > +#if !CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > /* enable 4-byte addressing if the device exceeds 16MiB */ > > nor->addr_width = 4; > > if (JEDEC_MFR(info) == SNOR_MFR_SPANSION || > > diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h > > index b8b207f7b5c..4eef4ab0488 100644 > > --- a/include/linux/mtd/spi-nor.h > > +++ b/include/linux/mtd/spi-nor.h > > @@ -569,7 +569,7 @@ struct spi_nor { > > u8 rdsr_dummy; > > u8 rdsr_addr_nbytes; > > u8 addr_mode_nbytes; > > -#ifdef CONFIG_SPI_FLASH_BAR > > +#if CONFIG_IS_ENABLED(SPI_FLASH_BAR) > > u8 bank_read_cmd; > > u8 bank_write_cmd; > > u8 bank_curr; > > > -- > Mike Looijmans > System Expert