Re: [RESEND PATCH v3 17/20] mtd: spi-nor: Bring flash params init together

2019-08-27 Thread Vignesh Raghavendra



On 26/08/19 5:39 PM, tudor.amba...@microchip.com wrote:
> From: Tudor Ambarus 
> 
> Bring all flash parameters default initialization in
> spi_nor_legacy_params_init().
> 
> Signed-off-by: Tudor Ambarus 
> Reviewed-by: Boris Brezillon 
> ---

Reviewed-by: Vignesh Raghavendra 

Regards
Vignesh


> v3: collect R-b
> 
>  drivers/mtd/spi-nor/spi-nor.c | 29 +++--
>  1 file changed, 11 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> index 2699e999d21a..dcda96a20f6c 100644
> --- a/drivers/mtd/spi-nor/spi-nor.c
> +++ b/drivers/mtd/spi-nor/spi-nor.c
> @@ -4453,6 +4453,7 @@ static void spi_nor_info_init_params(struct spi_nor 
> *nor)
>   struct spi_nor_flash_parameter *params = >params;
>   struct spi_nor_erase_map *map = >erase_map;
>   const struct flash_info *info = nor->info;
> + struct device_node *np = spi_nor_get_flash_node(nor);
>   u8 i, erase_mask;
>  
>   /* Initialize legacy flash parameters and settings. */
> @@ -4464,18 +4465,25 @@ static void spi_nor_info_init_params(struct spi_nor 
> *nor)
>   params->size = (u64)info->sector_size * info->n_sectors;
>   params->page_size = info->page_size;
>  
> + if (!(info->flags & SPI_NOR_NO_FR)) {
> + /* Default to Fast Read for DT and non-DT platform devices. */
> + params->hwcaps.mask |= SNOR_HWCAPS_READ_FAST;
> +
> + /* Mask out Fast Read if not requested at DT instantiation. */
> + if (np && !of_property_read_bool(np, "m25p,fast-read"))
> + params->hwcaps.mask &= ~SNOR_HWCAPS_READ_FAST;
> + }
> +
>   /* (Fast) Read settings. */
>   params->hwcaps.mask |= SNOR_HWCAPS_READ;
>   spi_nor_set_read_settings(>reads[SNOR_CMD_READ],
> 0, 0, SPINOR_OP_READ,
> SNOR_PROTO_1_1_1);
>  
> - if (!(info->flags & SPI_NOR_NO_FR)) {
> - params->hwcaps.mask |= SNOR_HWCAPS_READ_FAST;
> + if (params->hwcaps.mask & SNOR_HWCAPS_READ_FAST)
>   spi_nor_set_read_settings(>reads[SNOR_CMD_READ_FAST],
> 0, 8, SPINOR_OP_READ_FAST,
> SNOR_PROTO_1_1_1);
> - }
>  
>   if (info->flags & SPI_NOR_DUAL_READ) {
>   params->hwcaps.mask |= SNOR_HWCAPS_READ_1_1_2;
> @@ -4864,24 +4872,9 @@ int spi_nor_scan(struct spi_nor *nor, const char *name,
>   nor->page_size = params->page_size;
>   mtd->writebufsize = nor->page_size;
>  
> - if (np) {
> - /* If we were instantiated by DT, use it */
> - if (of_property_read_bool(np, "m25p,fast-read"))
> - params->hwcaps.mask |= SNOR_HWCAPS_READ_FAST;
> - else
> - params->hwcaps.mask &= ~SNOR_HWCAPS_READ_FAST;
> - } else {
> - /* If we weren't instantiated by DT, default to fast-read */
> - params->hwcaps.mask |= SNOR_HWCAPS_READ_FAST;
> - }
> -
>   if (of_property_read_bool(np, "broken-flash-reset"))
>   nor->flags |= SNOR_F_BROKEN_RESET;
>  
> - /* Some devices cannot do fast-read, no matter what DT tells us */
> - if (info->flags & SPI_NOR_NO_FR)
> - params->hwcaps.mask &= ~SNOR_HWCAPS_READ_FAST;
> -
>   /*
>* Configure the SPI memory:
>* - select op codes for (Fast) Read, Page Program and Sector Erase.
> 

-- 
Regards
Vignesh


[RESEND PATCH v3 17/20] mtd: spi-nor: Bring flash params init together

2019-08-26 Thread Tudor.Ambarus
From: Tudor Ambarus 

Bring all flash parameters default initialization in
spi_nor_legacy_params_init().

Signed-off-by: Tudor Ambarus 
Reviewed-by: Boris Brezillon 
---
v3: collect R-b

 drivers/mtd/spi-nor/spi-nor.c | 29 +++--
 1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 2699e999d21a..dcda96a20f6c 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -4453,6 +4453,7 @@ static void spi_nor_info_init_params(struct spi_nor *nor)
struct spi_nor_flash_parameter *params = >params;
struct spi_nor_erase_map *map = >erase_map;
const struct flash_info *info = nor->info;
+   struct device_node *np = spi_nor_get_flash_node(nor);
u8 i, erase_mask;
 
/* Initialize legacy flash parameters and settings. */
@@ -4464,18 +4465,25 @@ static void spi_nor_info_init_params(struct spi_nor 
*nor)
params->size = (u64)info->sector_size * info->n_sectors;
params->page_size = info->page_size;
 
+   if (!(info->flags & SPI_NOR_NO_FR)) {
+   /* Default to Fast Read for DT and non-DT platform devices. */
+   params->hwcaps.mask |= SNOR_HWCAPS_READ_FAST;
+
+   /* Mask out Fast Read if not requested at DT instantiation. */
+   if (np && !of_property_read_bool(np, "m25p,fast-read"))
+   params->hwcaps.mask &= ~SNOR_HWCAPS_READ_FAST;
+   }
+
/* (Fast) Read settings. */
params->hwcaps.mask |= SNOR_HWCAPS_READ;
spi_nor_set_read_settings(>reads[SNOR_CMD_READ],
  0, 0, SPINOR_OP_READ,
  SNOR_PROTO_1_1_1);
 
-   if (!(info->flags & SPI_NOR_NO_FR)) {
-   params->hwcaps.mask |= SNOR_HWCAPS_READ_FAST;
+   if (params->hwcaps.mask & SNOR_HWCAPS_READ_FAST)
spi_nor_set_read_settings(>reads[SNOR_CMD_READ_FAST],
  0, 8, SPINOR_OP_READ_FAST,
  SNOR_PROTO_1_1_1);
-   }
 
if (info->flags & SPI_NOR_DUAL_READ) {
params->hwcaps.mask |= SNOR_HWCAPS_READ_1_1_2;
@@ -4864,24 +4872,9 @@ int spi_nor_scan(struct spi_nor *nor, const char *name,
nor->page_size = params->page_size;
mtd->writebufsize = nor->page_size;
 
-   if (np) {
-   /* If we were instantiated by DT, use it */
-   if (of_property_read_bool(np, "m25p,fast-read"))
-   params->hwcaps.mask |= SNOR_HWCAPS_READ_FAST;
-   else
-   params->hwcaps.mask &= ~SNOR_HWCAPS_READ_FAST;
-   } else {
-   /* If we weren't instantiated by DT, default to fast-read */
-   params->hwcaps.mask |= SNOR_HWCAPS_READ_FAST;
-   }
-
if (of_property_read_bool(np, "broken-flash-reset"))
nor->flags |= SNOR_F_BROKEN_RESET;
 
-   /* Some devices cannot do fast-read, no matter what DT tells us */
-   if (info->flags & SPI_NOR_NO_FR)
-   params->hwcaps.mask &= ~SNOR_HWCAPS_READ_FAST;
-
/*
 * Configure the SPI memory:
 * - select op codes for (Fast) Read, Page Program and Sector Erase.
-- 
2.9.5