]> git.sur5r.net Git - u-boot/blobdiff - drivers/mtd/spi/spi_flash.c
sf: Add spi_flash_alloc() to create a new SPI flash struct
[u-boot] / drivers / mtd / spi / spi_flash.c
index 00aece9291c398f44ec4db007d7048ac8727b5a3..17f3d3cb147c1e1734a38a3fc26f95c0acc83c12 100644 (file)
@@ -401,6 +401,31 @@ err_claim_bus:
        return NULL;
 }
 
+void *spi_flash_do_alloc(int offset, int size, struct spi_slave *spi,
+                        const char *name)
+{
+       struct spi_flash *flash;
+       void *ptr;
+
+       ptr = malloc(size);
+       if (!ptr) {
+               debug("SF: Failed to allocate memory\n");
+               return NULL;
+       }
+       memset(ptr, '\0', size);
+       flash = (struct spi_flash *)(ptr + offset);
+
+       /* Set up some basic fields - caller will sort out sizes */
+       flash->spi = spi;
+       flash->name = name;
+
+       flash->read = spi_flash_cmd_read_fast;
+       flash->write = spi_flash_cmd_write_multi;
+       flash->erase = spi_flash_cmd_erase;
+
+       return flash;
+}
+
 void spi_flash_free(struct spi_flash *flash)
 {
        spi_free_slave(flash->spi);