[U-Boot] [PATCH 1/4] sf: Get spi locally from spi_flash

Bin Meng bmeng.cn at gmail.com
Mon Dec 14 06:42:39 CET 2015


Hi Jagan,

On Mon, Dec 14, 2015 at 12:52 AM, Jagan Teki <jteki at openedev.com> wrote:
> For better code readabilty, get the spi pointer from
> spi_flash{} locally and use it instead of direct
> dereferring spi pinter as flash->spi->*
>
> Signed-off-by: Jagan Teki <jteki at openedev.com>
> ---
>  drivers/mtd/spi/spi_flash.c | 48 ++++++++++++++++++++++++---------------------
>  1 file changed, 26 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
> index 7ffa136..ebf8b9c 100644
> --- a/drivers/mtd/spi/spi_flash.c
> +++ b/drivers/mtd/spi/spi_flash.c
> @@ -177,13 +177,15 @@ bank_end:
>  #ifdef CONFIG_SF_DUAL_FLASH
>  static void spi_flash_dual(struct spi_flash *flash, u32 *addr)
>  {
> +       struct spi_slave *spi = flash->spi;
> +
>         switch (flash->dual_flash) {
>         case SF_DUAL_STACKED_FLASH:
>                 if (*addr >= (flash->size >> 1)) {
>                         *addr -= flash->size >> 1;
> -                       flash->spi->flags |= SPI_XFER_U_PAGE;
> +                       spi->flags |= SPI_XFER_U_PAGE;
>                 } else {
> -                       flash->spi->flags &= ~SPI_XFER_U_PAGE;
> +                       spi->flags &= ~SPI_XFER_U_PAGE;
>                 }
>                 break;
>         case SF_DUAL_PARALLEL_FLASH:
> @@ -268,7 +270,7 @@ int spi_flash_write_common(struct spi_flash *flash, const u8 *cmd,
>         if (buf == NULL)
>                 timeout = SPI_FLASH_PAGE_ERASE_TIMEOUT;
>
> -       ret = spi_claim_bus(flash->spi);
> +       ret = spi_claim_bus(spi);
>         if (ret) {
>                 debug("SF: unable to claim SPI bus\n");
>                 return ret;
> @@ -353,6 +355,7 @@ int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len)
>  int spi_flash_cmd_write_ops(struct spi_flash *flash, u32 offset,
>                 size_t len, const void *buf)
>  {
> +       struct spi_slave *spi = flash->spi;
>         unsigned long byte_addr, page_size;
>         u32 write_addr;
>         size_t chunk_len, actual;
> @@ -385,9 +388,9 @@ int spi_flash_cmd_write_ops(struct spi_flash *flash, u32 offset,
>                 byte_addr = offset % page_size;
>                 chunk_len = min(len - actual, (size_t)(page_size - byte_addr));
>
> -               if (flash->spi->max_write_size)
> +               if (spi->max_write_size)
>                         chunk_len = min(chunk_len,
> -                                       (size_t)flash->spi->max_write_size);
> +                                       (size_t)spi->max_write_size);
>
>                 spi_flash_addr(write_addr, cmd);
>
> @@ -413,7 +416,7 @@ int spi_flash_read_common(struct spi_flash *flash, const u8 *cmd,
>         struct spi_slave *spi = flash->spi;
>         int ret;
>
> -       ret = spi_claim_bus(flash->spi);
> +       ret = spi_claim_bus(spi);
>         if (ret) {
>                 debug("SF: unable to claim SPI bus\n");
>                 return ret;
> @@ -438,6 +441,7 @@ void __weak spi_flash_copy_mmap(void *data, void *offset, size_t len)
>  int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
>                 size_t len, void *data)
>  {
> +       struct spi_slave *spi = flash->spi;
>         u8 *cmd, cmdsz;
>         u32 remain_len, read_len, read_addr;
>         int bank_sel = 0;
> @@ -445,15 +449,15 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
>
>         /* Handle memory-mapped SPI */
>         if (flash->memory_map) {
> -               ret = spi_claim_bus(flash->spi);
> +               ret = spi_claim_bus(spi);
>                 if (ret) {
>                         debug("SF: unable to claim SPI bus\n");
>                         return ret;
>                 }
> -               spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP);
> +               spi_xfer(spi, 0, NULL, NULL, SPI_XFER_MMAP);
>                 spi_flash_copy_mmap(data, flash->memory_map + offset, len);
> -               spi_xfer(flash->spi, 0, NULL, NULL, SPI_XFER_MMAP_END);
> -               spi_release_bus(flash->spi);
> +               spi_xfer(spi, 0, NULL, NULL, SPI_XFER_MMAP_END);
> +               spi_release_bus(spi);
>                 return 0;
>         }
>
> @@ -514,13 +518,13 @@ static int sst_byte_write(struct spi_flash *flash, u32 offset, const void *buf)
>         };
>
>         debug("BP[%02x]: 0x%p => cmd = { 0x%02x 0x%06x }\n",
> -             spi_w8r8(flash->spi, CMD_READ_STATUS), buf, cmd[0], offset);
> +             spi_w8r8(spi, CMD_READ_STATUS), buf, cmd[0], offset);

This does not build as spi is undeclared.

>
>         ret = spi_flash_cmd_write_enable(flash);
>         if (ret)
>                 return ret;
>
> -       ret = spi_flash_cmd_write(flash->spi, cmd, sizeof(cmd), buf, 1);
> +       ret = spi_flash_cmd_write(spi, cmd, sizeof(cmd), buf, 1);
>         if (ret)
>                 return ret;
>
> @@ -534,7 +538,7 @@ int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
>         int ret;
>         u8 cmd[4];
>
> -       ret = spi_claim_bus(flash->spi);
> +       ret = spi_claim_bus(spi);

This does not build as spi is undeclared.

>         if (ret) {
>                 debug("SF: Unable to claim SPI bus\n");
>                 return ret;
> @@ -561,10 +565,10 @@ int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
>
>         for (; actual < len - 1; actual += 2) {
>                 debug("WP[%02x]: 0x%p => cmd = { 0x%02x 0x%06x }\n",
> -                     spi_w8r8(flash->spi, CMD_READ_STATUS), buf + actual,
> +                     spi_w8r8(spi, CMD_READ_STATUS), buf + actual,
>                       cmd[0], offset);
>
> -               ret = spi_flash_cmd_write(flash->spi, cmd, cmd_len,
> +               ret = spi_flash_cmd_write(spi, cmd, cmd_len,
>                                         buf + actual, 2);
>                 if (ret) {
>                         debug("SF: sst word program failed\n");
> @@ -590,7 +594,7 @@ int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
>         debug("SF: sst: program %s %zu bytes @ 0x%zx\n",
>               ret ? "failure" : "success", len, offset - actual);
>
> -       spi_release_bus(flash->spi);
> +       spi_release_bus(spi);
>         return ret;
>  }
>
> @@ -600,7 +604,7 @@ int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
>         size_t actual;
>         int ret;
>
> -       ret = spi_claim_bus(flash->spi);
> +       ret = spi_claim_bus(spi);

This does not build as spi is undeclared.

>         if (ret) {
>                 debug("SF: Unable to claim SPI bus\n");
>                 return ret;
> @@ -621,7 +625,7 @@ int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
>         debug("SF: sst: program %s %zu bytes @ 0x%zx\n",
>               ret ? "failure" : "success", len, offset - actual);
>
> -       spi_release_bus(flash->spi);
> +       spi_release_bus(spi);
>         return ret;
>  }
>  #endif
> @@ -950,7 +954,7 @@ int spi_flash_scan(struct spi_flash *flash)
>         /* Assign spi data */
>         flash->name = params->name;
>         flash->memory_map = spi->memory_map;
> -       flash->dual_flash = flash->spi->option;
> +       flash->dual_flash = spi->option;
>
>         /* Assign spi flash flags */
>         if (params->flags & SST_WR)
> @@ -961,7 +965,7 @@ int spi_flash_scan(struct spi_flash *flash)
>         flash->write = spi_flash_cmd_write_ops;
>  #if defined(CONFIG_SPI_FLASH_SST)
>         if (flash->flags & SNOR_F_SST_WR) {
> -               if (flash->spi->op_mode_tx & SPI_OPM_TX_BP)
> +               if (spi->op_mode_tx & SPI_OPM_TX_BP)
>                         flash->write = sst_write_bp;
>                 else
>                         flash->write = sst_write_wp;
> @@ -1025,7 +1029,7 @@ int spi_flash_scan(struct spi_flash *flash)
>         flash->sector_size = flash->erase_size;
>
>         /* Look for the fastest read cmd */
> -       cmd = fls(params->e_rd_cmd & flash->spi->op_mode_rx);
> +       cmd = fls(params->e_rd_cmd & spi->op_mode_rx);
>         if (cmd) {
>                 cmd = spi_read_cmds_array[cmd - 1];
>                 flash->read_cmd = cmd;
> @@ -1035,7 +1039,7 @@ int spi_flash_scan(struct spi_flash *flash)
>         }
>
>         /* Not require to look for fastest only two write cmds yet */
> -       if (params->flags & WR_QPP && flash->spi->op_mode_tx & SPI_OPM_TX_QPP)
> +       if (params->flags & WR_QPP && spi->op_mode_tx & SPI_OPM_TX_QPP)
>                 flash->write_cmd = CMD_QUAD_PAGE_PROGRAM;
>         else
>                 /* Go for default supported write cmd */
> --

I will test the rest of this series after you fix this very first patch.

Regards,
Bin


More information about the U-Boot mailing list