|
@@ -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)
|
|
struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)
|
|
{
|
|
{
|
|
const struct macronix_spi_flash_params *params;
|
|
const struct macronix_spi_flash_params *params;
|
|
@@ -153,7 +114,7 @@ struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode)
|
|
flash->size = flash->sector_size * params->nr_blocks;
|
|
flash->size = flash->sector_size * params->nr_blocks;
|
|
|
|
|
|
/* Clear BP# bits for read-only flash */
|
|
/* Clear BP# bits for read-only flash */
|
|
- macronix_unlock(flash);
|
|
|
|
|
|
+ spi_flash_cmd_write_status(flash, 0);
|
|
|
|
|
|
return flash;
|
|
return flash;
|
|
}
|
|
}
|