diff options
author | Simon Glass <sjg@chromium.org> | 2018-10-01 12:22:09 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2018-10-09 04:40:27 -0600 |
commit | 97f57109bb750d0b2908d6ecd4aef3801baf1cf2 (patch) | |
tree | df5e1506785829d0db8920625dee12e849106df7 /drivers/mtd | |
parent | e6c5c94a79d9e1dd20f869a3169bf2be00d53d14 (diff) | |
download | u-boot-97f57109bb750d0b2908d6ecd4aef3801baf1cf2.zip u-boot-97f57109bb750d0b2908d6ecd4aef3801baf1cf2.tar.gz u-boot-97f57109bb750d0b2908d6ecd4aef3801baf1cf2.tar.bz2 |
sf: Avoid allocating memory on every read operation
At present spi_flash_cmd_read_ops() allocates and frees a few bytes of
memory every time it is called. It is faster to use the stack for this
and this is now supported by the minimum GCC version required by U-Boot.
Remove the allocation and use a variable-sized array instead.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/spi/spi_flash.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c index c159124..7113c85 100644 --- a/drivers/mtd/spi/spi_flash.c +++ b/drivers/mtd/spi/spi_flash.c @@ -468,7 +468,7 @@ 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; + u8 cmdsz; u32 remain_len, read_len, read_addr; int bank_sel = 0; int ret = -1; @@ -488,11 +488,7 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset, } cmdsz = SPI_FLASH_CMD_LEN + flash->dummy_byte; - cmd = calloc(1, cmdsz); - if (!cmd) { - debug("SF: Failed to allocate cmd\n"); - return -ENOMEM; - } + u8 cmd[cmdsz]; cmd[0] = flash->read_cmd; while (len) { @@ -535,7 +531,6 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset, ret = clean_bar(flash); #endif - free(cmd); return ret; } |