Lines Matching refs:nor
7 #include <linux/mtd/spi-nor.h>
50 static int micron_st_nor_octal_dtr_en(struct spi_nor *nor)
53 u8 *buf = nor->bouncebuf;
55 u8 addr_mode_nbytes = nor->params->addr_mode_nbytes;
62 ret = spi_nor_write_any_volatile_reg(nor, &op, nor->reg_proto);
70 ret = spi_nor_write_any_volatile_reg(nor, &op, nor->reg_proto);
75 ret = spi_nor_read_id(nor, 0, 8, buf, SNOR_PROTO_8_8_8_DTR);
77 dev_dbg(nor->dev, "error %d reading JEDEC ID after enabling 8D-8D-8D mode\n", ret);
81 if (memcmp(buf, nor->info->id, nor->info->id_len))
87 static int micron_st_nor_octal_dtr_dis(struct spi_nor *nor)
90 u8 *buf = nor->bouncebuf;
104 MICRON_ST_NOR_WR_ANY_REG_OP(nor->addr_nbytes,
106 ret = spi_nor_write_any_volatile_reg(nor, &op, SNOR_PROTO_8_8_8_DTR);
111 ret = spi_nor_read_id(nor, 0, 0, buf, SNOR_PROTO_1_1_1);
113 dev_dbg(nor->dev, "error %d reading JEDEC ID after disabling 8D-8D-8D mode\n", ret);
117 if (memcmp(buf, nor->info->id, nor->info->id_len))
123 static int micron_st_nor_set_octal_dtr(struct spi_nor *nor, bool enable)
125 return enable ? micron_st_nor_octal_dtr_en(nor) :
126 micron_st_nor_octal_dtr_dis(nor);
129 static void mt35xu512aba_default_init(struct spi_nor *nor)
131 nor->params->set_octal_dtr = micron_st_nor_set_octal_dtr;
134 static int mt35xu512aba_post_sfdp_fixup(struct spi_nor *nor)
137 nor->params->hwcaps.mask |= SNOR_HWCAPS_READ_8_8_8_DTR;
138 spi_nor_set_read_settings(&nor->params->reads[SNOR_CMD_READ_8_8_8_DTR],
142 nor->cmd_ext_type = SPI_NOR_EXT_REPEAT;
143 nor->params->rdsr_dummy = 8;
144 nor->params->rdsr_addr_nbytes = 0;
151 nor->params->quad_enable = NULL;
308 * @nor: pointer to 'struct spi_nor'
315 static int micron_st_nor_read_fsr(struct spi_nor *nor, u8 *fsr)
319 if (nor->spimem) {
322 if (nor->reg_proto == SNOR_PROTO_8_8_8_DTR) {
323 op.addr.nbytes = nor->params->rdsr_addr_nbytes;
324 op.dummy.nbytes = nor->params->rdsr_dummy;
332 spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
334 ret = spi_mem_exec_op(nor->spimem, &op);
336 ret = spi_nor_controller_ops_read_reg(nor, SPINOR_OP_RDFSR, fsr,
341 dev_dbg(nor->dev, "error %d reading FSR\n", ret);
348 * @nor: pointer to 'struct spi_nor'.
350 static void micron_st_nor_clear_fsr(struct spi_nor *nor)
354 if (nor->spimem) {
357 spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
359 ret = spi_mem_exec_op(nor->spimem, &op);
361 ret = spi_nor_controller_ops_write_reg(nor, SPINOR_OP_CLFSR,
366 dev_dbg(nor->dev, "error %d clearing FSR\n", ret);
373 * @nor: pointer to 'struct spi_nor'.
377 static int micron_st_nor_ready(struct spi_nor *nor)
381 sr_ready = spi_nor_sr_ready(nor);
385 ret = micron_st_nor_read_fsr(nor, nor->bouncebuf);
397 if (nor->bouncebuf[0] & (FSR_E_ERR | FSR_P_ERR)) {
398 if (nor->bouncebuf[0] & FSR_E_ERR)
399 dev_err(nor->dev, "Erase operation failed.\n");
401 dev_err(nor->dev, "Program operation failed.\n");
403 if (nor->bouncebuf[0] & FSR_PT_ERR)
404 dev_err(nor->dev,
407 micron_st_nor_clear_fsr(nor);
415 ret = spi_nor_write_disable(nor);
422 return sr_ready && !!(nor->bouncebuf[0] & FSR_READY);
425 static void micron_st_nor_default_init(struct spi_nor *nor)
427 nor->flags |= SNOR_F_HAS_LOCK;
428 nor->flags &= ~SNOR_F_HAS_16BIT_SR;
429 nor->params->quad_enable = NULL;
432 static int micron_st_nor_late_init(struct spi_nor *nor)
434 struct spi_nor_flash_parameter *params = nor->params;
436 if (nor->info->mfr_flags & USE_FSR)