|
@@ -1101,45 +1101,6 @@ static int spansion_quad_enable(struct spi_nor *nor)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int micron_quad_enable(struct spi_nor *nor)
|
|
|
-{
|
|
|
- int ret;
|
|
|
- u8 val;
|
|
|
-
|
|
|
- ret = nor->read_reg(nor, SPINOR_OP_RD_EVCR, &val, 1);
|
|
|
- if (ret < 0) {
|
|
|
- dev_err(nor->dev, "error %d reading EVCR\n", ret);
|
|
|
- return ret;
|
|
|
- }
|
|
|
-
|
|
|
- write_enable(nor);
|
|
|
-
|
|
|
- /* set EVCR, enable quad I/O */
|
|
|
- nor->cmd_buf[0] = val & ~EVCR_QUAD_EN_MICRON;
|
|
|
- ret = nor->write_reg(nor, SPINOR_OP_WD_EVCR, nor->cmd_buf, 1);
|
|
|
- if (ret < 0) {
|
|
|
- dev_err(nor->dev, "error while writing EVCR register\n");
|
|
|
- return ret;
|
|
|
- }
|
|
|
-
|
|
|
- ret = spi_nor_wait_till_ready(nor);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
-
|
|
|
- /* read EVCR and check it */
|
|
|
- ret = nor->read_reg(nor, SPINOR_OP_RD_EVCR, &val, 1);
|
|
|
- if (ret < 0) {
|
|
|
- dev_err(nor->dev, "error %d reading EVCR\n", ret);
|
|
|
- return ret;
|
|
|
- }
|
|
|
- if (val & EVCR_QUAD_EN_MICRON) {
|
|
|
- dev_err(nor->dev, "Micron EVCR Quad bit not clear\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
static int set_quad_mode(struct spi_nor *nor, const struct flash_info *info)
|
|
|
{
|
|
|
int status;
|
|
@@ -1153,12 +1114,7 @@ static int set_quad_mode(struct spi_nor *nor, const struct flash_info *info)
|
|
|
}
|
|
|
return status;
|
|
|
case SNOR_MFR_MICRON:
|
|
|
- status = micron_quad_enable(nor);
|
|
|
- if (status) {
|
|
|
- dev_err(nor->dev, "Micron quad-read not enabled\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
- return status;
|
|
|
+ return 0;
|
|
|
default:
|
|
|
status = spansion_quad_enable(nor);
|
|
|
if (status) {
|