On 16 November 2015 at 08:29, Bin Meng <bmeng...@gmail.com> wrote: > 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.
I have moved flash->flags |= SNOR_F_SST_WR; assignment to #ifdef *_SST since it's been part of SST flash, but seems like dm will require that flags to call the respective sst write ops - it's a mistake. I thought you may comment the same since I CCed you. I will grab the fix patch you sent. > >> 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; >> -- thanks! -- Jagan | openedev. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot