提交 c0f87dd4 编写于 作者: S Simon Glass

sf: Use spi_flash_alloc() in each SPI flash driver

Rather than each device having its own way to allocate a SPI flash
structure, use the new allocation function everywhere. This will make it
easier to extend the interface without breaking devices.
Signed-off-by: NSimon Glass <sjg@chromium.org>
上级 b5aec142
...@@ -480,15 +480,13 @@ struct spi_flash *spi_flash_probe_atmel(struct spi_slave *spi, u8 *idcode) ...@@ -480,15 +480,13 @@ struct spi_flash *spi_flash_probe_atmel(struct spi_slave *spi, u8 *idcode)
return NULL; return NULL;
} }
asf = malloc(sizeof(struct atmel_spi_flash)); asf = spi_flash_alloc(struct atmel_spi_flash, spi, params->name);
if (!asf) { if (!asf) {
debug("SF: Failed to allocate memory\n"); debug("SF: Failed to allocate memory\n");
return NULL; return NULL;
} }
asf->params = params; asf->params = params;
asf->flash.spi = spi;
asf->flash.name = params->name;
/* Assuming power-of-two page size initially. */ /* Assuming power-of-two page size initially. */
page_size = 1 << params->l2_page_size; page_size = 1 << params->l2_page_size;
...@@ -513,7 +511,6 @@ struct spi_flash *spi_flash_probe_atmel(struct spi_slave *spi, u8 *idcode) ...@@ -513,7 +511,6 @@ struct spi_flash *spi_flash_probe_atmel(struct spi_slave *spi, u8 *idcode)
asf->flash.erase = dataflash_erase_at45; asf->flash.erase = dataflash_erase_at45;
page_size += 1 << (params->l2_page_size - 5); page_size += 1 << (params->l2_page_size - 5);
} else { } else {
asf->flash.read = spi_flash_cmd_read_fast;
asf->flash.write = dataflash_write_p2; asf->flash.write = dataflash_write_p2;
asf->flash.erase = dataflash_erase_p2; asf->flash.erase = dataflash_erase_p2;
} }
...@@ -524,9 +521,6 @@ struct spi_flash *spi_flash_probe_atmel(struct spi_slave *spi, u8 *idcode) ...@@ -524,9 +521,6 @@ struct spi_flash *spi_flash_probe_atmel(struct spi_slave *spi, u8 *idcode)
case DF_FAMILY_AT26F: case DF_FAMILY_AT26F:
case DF_FAMILY_AT26DF: case DF_FAMILY_AT26DF:
asf->flash.read = spi_flash_cmd_read_fast;
asf->flash.write = spi_flash_cmd_write_multi;
asf->flash.erase = spi_flash_cmd_erase;
asf->flash.page_size = page_size; asf->flash.page_size = page_size;
asf->flash.sector_size = 4096; asf->flash.sector_size = 4096;
/* clear SPRL# bit for locked flash */ /* clear SPRL# bit for locked flash */
......
...@@ -46,18 +46,12 @@ struct spi_flash *spi_flash_probe_eon(struct spi_slave *spi, u8 *idcode) ...@@ -46,18 +46,12 @@ struct spi_flash *spi_flash_probe_eon(struct spi_slave *spi, u8 *idcode)
return NULL; return NULL;
} }
flash = malloc(sizeof(*flash)); flash = spi_flash_alloc_base(spi, params->name);
if (!flash) { if (!flash) {
debug("SF: Failed to allocate memory\n"); debug("SF: Failed to allocate memory\n");
return NULL; return NULL;
} }
flash->spi = spi;
flash->name = params->name;
flash->write = spi_flash_cmd_write_multi;
flash->erase = spi_flash_cmd_erase;
flash->read = spi_flash_cmd_read_fast;
flash->page_size = 256; flash->page_size = 256;
flash->sector_size = 256 * 16 * 16; flash->sector_size = 256 * 16 * 16;
flash->size = 256 * 16 flash->size = 256 * 16
......
...@@ -97,18 +97,12 @@ struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode) ...@@ -97,18 +97,12 @@ struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)
return NULL; return NULL;
} }
flash = malloc(sizeof(*flash)); flash = spi_flash_alloc_base(spi, params->name);
if (!flash) { if (!flash) {
debug("SF: Failed to allocate memory\n"); debug("SF: Failed to allocate memory\n");
return NULL; return NULL;
} }
flash->spi = spi;
flash->name = params->name;
flash->write = spi_flash_cmd_write_multi;
flash->erase = spi_flash_cmd_erase;
flash->read = spi_flash_cmd_read_fast;
flash->page_size = 256; flash->page_size = 256;
flash->sector_size = 256 * 16 * 16; flash->sector_size = 256 * 16 * 16;
flash->size = flash->sector_size * params->nr_blocks; flash->size = flash->sector_size * params->nr_blocks;
......
...@@ -284,15 +284,13 @@ struct spi_flash *spi_fram_probe_ramtron(struct spi_slave *spi, u8 *idcode) ...@@ -284,15 +284,13 @@ struct spi_flash *spi_fram_probe_ramtron(struct spi_slave *spi, u8 *idcode)
return NULL; return NULL;
found: found:
sn = malloc(sizeof(*sn)); sn = spi_flash_alloc(struct ramtron_spi_fram, spi, params->name);
if (!sn) { if (!sn) {
debug("SF: Failed to allocate memory\n"); debug("SF: Failed to allocate memory\n");
return NULL; return NULL;
} }
sn->params = params; sn->params = params;
sn->flash.spi = spi;
sn->flash.name = params->name;
sn->flash.write = ramtron_write; sn->flash.write = ramtron_write;
sn->flash.read = ramtron_read; sn->flash.read = ramtron_read;
......
...@@ -128,18 +128,12 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode) ...@@ -128,18 +128,12 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode)
return NULL; return NULL;
} }
flash = malloc(sizeof(*flash)); flash = spi_flash_alloc_base(spi, params->name);
if (!flash) { if (!flash) {
debug("SF: Failed to allocate memory\n"); debug("SF: Failed to allocate memory\n");
return NULL; return NULL;
} }
flash->spi = spi;
flash->name = params->name;
flash->write = spi_flash_cmd_write_multi;
flash->erase = spi_flash_cmd_erase;
flash->read = spi_flash_cmd_read_fast;
flash->page_size = 256; flash->page_size = 256;
flash->sector_size = 256 * params->pages_per_sector; flash->sector_size = 256 * params->pages_per_sector;
flash->size = flash->sector_size * params->nr_sectors; flash->size = flash->sector_size * params->nr_sectors;
......
...@@ -203,22 +203,16 @@ spi_flash_probe_sst(struct spi_slave *spi, u8 *idcode) ...@@ -203,22 +203,16 @@ spi_flash_probe_sst(struct spi_slave *spi, u8 *idcode)
return NULL; return NULL;
} }
stm = malloc(sizeof(*stm)); stm = spi_flash_alloc(struct sst_spi_flash, spi, params->name);
if (!stm) { if (!stm) {
debug("SF: Failed to allocate memory\n"); debug("SF: Failed to allocate memory\n");
return NULL; return NULL;
} }
stm->params = params; stm->params = params;
stm->flash.spi = spi;
stm->flash.name = params->name;
if (stm->params->flags & SST_FEAT_WP) if (stm->params->flags & SST_FEAT_WP)
stm->flash.write = sst_write_wp; stm->flash.write = sst_write_wp;
else
stm->flash.write = spi_flash_cmd_write_multi;
stm->flash.erase = spi_flash_cmd_erase;
stm->flash.read = spi_flash_cmd_read_fast;
stm->flash.page_size = 256; stm->flash.page_size = 256;
stm->flash.sector_size = 4096; stm->flash.sector_size = 4096;
stm->flash.size = stm->flash.sector_size * params->nr_sectors; stm->flash.size = stm->flash.sector_size * params->nr_sectors;
......
...@@ -176,18 +176,12 @@ struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 * idcode) ...@@ -176,18 +176,12 @@ struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 * idcode)
return NULL; return NULL;
} }
flash = malloc(sizeof(*flash)); flash = spi_flash_alloc_base(spi, params->name);
if (!flash) { if (!flash) {
debug("SF: Failed to allocate memory\n"); debug("SF: Failed to allocate memory\n");
return NULL; return NULL;
} }
flash->spi = spi;
flash->name = params->name;
flash->write = spi_flash_cmd_write_multi;
flash->erase = spi_flash_cmd_erase;
flash->read = spi_flash_cmd_read_fast;
flash->page_size = 256; flash->page_size = 256;
flash->sector_size = 256 * params->pages_per_sector; flash->sector_size = 256 * params->pages_per_sector;
flash->size = flash->sector_size * params->nr_sectors; flash->size = flash->sector_size * params->nr_sectors;
......
...@@ -92,18 +92,12 @@ struct spi_flash *spi_flash_probe_winbond(struct spi_slave *spi, u8 *idcode) ...@@ -92,18 +92,12 @@ struct spi_flash *spi_flash_probe_winbond(struct spi_slave *spi, u8 *idcode)
return NULL; return NULL;
} }
flash = malloc(sizeof(*flash)); flash = spi_flash_alloc_base(spi, params->name);
if (!flash) { if (!flash) {
debug("SF: Failed to allocate memory\n"); debug("SF: Failed to allocate memory\n");
return NULL; return NULL;
} }
flash->spi = spi;
flash->name = params->name;
flash->write = spi_flash_cmd_write_multi;
flash->erase = spi_flash_cmd_erase;
flash->read = spi_flash_cmd_read_fast;
flash->page_size = 256; flash->page_size = 256;
flash->sector_size = 4096; flash->sector_size = 4096;
flash->size = 4096 * 16 * params->nr_blocks; flash->size = 4096 * 16 * params->nr_blocks;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册