Hi Jagan, On Mon, Oct 12, 2015 at 11:00 PM, Jagan Teki <jt...@openedev.com> wrote: > Use the flash->flags for generic usage, not only for dm-spi-flash, > this will be used for future flag additions. > > Signed-off-by: Jagan Teki <jt...@openedev.com> > [Correct the spi flash flags detect logic] > Signed-off-by: Bin Meng <bmeng...@gmail.com> > Tested-by: Bin Meng <bmeng...@gmail.com> > --- > Changes for v4: > - Fixed SNOR_F_SST_WR > Changes for v3, v2: > - none >
It turns out this patch breaks the Intel Crown Bay SPI flash. I compared my original submitted patch with this patch you applied, and surprisingly found there are differences ... My version is http://patchwork.ozlabs.org/patch/517704/ You version below seems to modify some places which you thought would be correct, but that's unfortunately wrong. If you reworked my patch, I think you should remove at least my "Tested-by:" tag and ask me to retest. Can you please help me understand what happened? I expected that you should just grab my version and include it in your patch series. > drivers/mtd/spi/sf_internal.h | 4 ++++ > drivers/mtd/spi/sf_probe.c | 10 +++++----- > include/spi_flash.h | 4 ++-- > 3 files changed, 11 insertions(+), 7 deletions(-) > > diff --git a/drivers/mtd/spi/sf_internal.h b/drivers/mtd/spi/sf_internal.h > index 9c95d56..53998fc 100644 > --- a/drivers/mtd/spi/sf_internal.h > +++ b/drivers/mtd/spi/sf_internal.h > @@ -51,6 +51,10 @@ enum { > > #define SST_WR (SST_BP | SST_WP) > > +enum spi_nor_option_flags { > + SNOR_F_SST_WR = (1 << 0), > +}; > + > #define SPI_FLASH_3B_ADDR_LEN 3 > #define SPI_FLASH_CMD_LEN (1 + SPI_FLASH_3B_ADDR_LEN) > #define SPI_FLASH_16MB_BOUN 0x1000000 > diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c > index f17ec17..2634e90 100644 > --- a/drivers/mtd/spi/sf_probe.c > +++ b/drivers/mtd/spi/sf_probe.c > @@ -163,15 +163,15 @@ static int spi_flash_validate_params(struct spi_slave > *spi, u8 *idcode, > flash->name = params->name; > flash->memory_map = spi->memory_map; > flash->dual_flash = flash->spi->option; > -#ifdef CONFIG_DM_SPI_FLASH > - flash->flags = params->flags; > -#endif > > /* Assign spi_flash ops */ > #ifndef CONFIG_DM_SPI_FLASH > flash->write = spi_flash_cmd_write_ops; > #if defined(CONFIG_SPI_FLASH_SST) > - if (params->flags & SST_WR) { > + if (params->flags & SST_WR) > + flash->flags |= SNOR_F_SST_WR; > + > + if (params->flags & SNOR_F_SST_WR) { > if (flash->spi->op_mode_tx & SPI_OPM_TX_BP) > flash->write = sst_write_bp; > else > @@ -466,7 +466,7 @@ int spi_flash_std_write(struct udevice *dev, u32 offset, > size_t len, > struct spi_flash *flash = dev_get_uclass_priv(dev); > > #if defined(CONFIG_SPI_FLASH_SST) > - if (flash->flags & SST_WR) { > + if (flash->flags & SNOR_F_SST_WR) { > if (flash->spi->op_mode_tx & SPI_OPM_TX_BP) > return sst_write_bp(flash, offset, len, buf); > else > diff --git a/include/spi_flash.h b/include/spi_flash.h > index 3b2d555..8d85468 100644 > --- a/include/spi_flash.h > +++ b/include/spi_flash.h > @@ -38,10 +38,10 @@ struct spi_slave; > * > * @spi: SPI slave > * @dev: SPI flash device > - * @flags: Indication of spi flash flags > * @name: Name of SPI flash > * @dual_flash: Indicates dual flash memories - dual stacked, > parallel > * @shift: Flash shift useful in dual parallel > + * @flags: Indication of spi flash flags > * @size: Total flash size > * @page_size: Write (page) size > * @sector_size: Sector size > @@ -67,11 +67,11 @@ struct spi_flash { > struct spi_slave *spi; > #ifdef CONFIG_DM_SPI_FLASH > struct udevice *dev; > - u16 flags; > #endif > const char *name; > u8 dual_flash; > u8 shift; > + u16 flags; > > u32 size; > u32 page_size; > -- Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot