]> git.sur5r.net Git - u-boot/blobdiff - drivers/mtd/spi/macronix.c
Merge branch 'u-boot-imx/master' into 'u-boot-arm/master'
[u-boot] / drivers / mtd / spi / macronix.c
index 5268c661ea301fd9380a1f15390932dca170cda8..036c30d3beee54488de1b20b4cedd8b93b2a7d75 100644 (file)
@@ -79,45 +79,6 @@ static const struct macronix_spi_flash_params macronix_spi_flash_table[] = {
        },
 };
 
-static int macronix_write_status(struct spi_flash *flash, u8 sr)
-{
-       u8 cmd;
-       int ret;
-
-       ret = spi_flash_cmd_write_enable(flash);
-       if (ret < 0) {
-               debug("SF: enabling write failed\n");
-               return ret;
-       }
-
-       cmd = CMD_WRITE_STATUS;
-       ret = spi_flash_cmd_write(flash->spi, &cmd, 1, &sr, 1);
-       if (ret) {
-               debug("SF: fail to write status register\n");
-               return ret;
-       }
-
-       ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
-       if (ret < 0) {
-               debug("SF: write status register timed out\n");
-               return ret;
-       }
-
-       return 0;
-}
-
-static int macronix_unlock(struct spi_flash *flash)
-{
-       int ret;
-
-       /* Enable status register writing and clear BP# bits */
-       ret = macronix_write_status(flash, 0);
-       if (ret)
-               debug("SF: fail to disable write protection\n");
-
-       return ret;
-}
-
 struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)
 {
        const struct macronix_spi_flash_params *params;
@@ -136,24 +97,18 @@ struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)
                return NULL;
        }
 
-       flash = malloc(sizeof(*flash));
+       flash = spi_flash_alloc_base(spi, params->name);
        if (!flash) {
                debug("SF: Failed to allocate memory\n");
                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->sector_size = 256 * 16 * 16;
        flash->size = flash->sector_size * params->nr_blocks;
 
        /* Clear BP# bits for read-only flash */
-       macronix_unlock(flash);
+       spi_flash_cmd_write_status(flash, 0);
 
        return flash;
 }