Lines Matching refs:nor
9 #include <linux/mtd/spi-nor.h>
133 * @nor: pointer to a 'struct spi_nor'
140 static int spi_nor_read_raw(struct spi_nor *nor, u32 addr, size_t len, u8 *buf)
145 ret = spi_nor_read_data(nor, addr, len, buf);
160 * @nor: pointer to a 'struct spi_nor'
171 static int spi_nor_read_sfdp(struct spi_nor *nor, u32 addr,
177 read_opcode = nor->read_opcode;
178 addr_width = nor->addr_width;
179 read_dummy = nor->read_dummy;
181 nor->read_opcode = SPINOR_OP_RDSFDP;
182 nor->addr_width = 3;
183 nor->read_dummy = 8;
185 ret = spi_nor_read_raw(nor, addr, len, buf);
187 nor->read_opcode = read_opcode;
188 nor->addr_width = addr_width;
189 nor->read_dummy = read_dummy;
196 * @nor: pointer to a 'struct spi_nor'
207 static int spi_nor_read_sfdp_dma_unsafe(struct spi_nor *nor, u32 addr,
217 ret = spi_nor_read_sfdp(nor, addr, len, dma_safe_buf);
399 * @nor: pointer to a 'struct spi_nor'
427 static int spi_nor_parse_bfpt(struct spi_nor *nor,
449 err = spi_nor_read_sfdp_dma_unsafe(nor, addr, len, &bfpt);
460 nor->addr_width = 3;
464 nor->addr_width = 4;
549 return spi_nor_post_bfpt_fixups(nor, bfpt_header, &bfpt,
574 nor->flags |= SNOR_F_HAS_16BIT_SR | SNOR_F_NO_READ_CR;
579 nor->flags &= ~SNOR_F_HAS_16BIT_SR;
584 nor->flags &= ~SNOR_F_HAS_16BIT_SR;
595 nor->flags |= SNOR_F_HAS_16BIT_SR;
601 dev_dbg(nor->dev, "BFPT QER reserved value used\n");
607 return spi_nor_post_bfpt_fixups(nor, bfpt_header, &bfpt,
610 return spi_nor_post_bfpt_fixups(nor, bfpt_header, &bfpt, params);
616 * @nor: pointer to a 'struct spi_nor'
619 static u8 spi_nor_smpt_addr_width(const struct spi_nor *nor, const u32 settings)
630 return nor->addr_width;
637 * @nor: pointer to a 'struct spi_nor'
642 static u8 spi_nor_smpt_read_dummy(const struct spi_nor *nor, const u32 settings)
647 return nor->read_dummy;
653 * @nor: pointer to a 'struct spi_nor'
659 static const u32 *spi_nor_get_map_in_use(struct spi_nor *nor, const u32 *smpt,
675 addr_width = nor->addr_width;
676 read_dummy = nor->read_dummy;
677 read_opcode = nor->read_opcode;
686 nor->addr_width = spi_nor_smpt_addr_width(nor, smpt[i]);
687 nor->read_dummy = spi_nor_smpt_read_dummy(nor, smpt[i]);
688 nor->read_opcode = SMPT_CMD_OPCODE(smpt[i]);
691 err = spi_nor_read_raw(nor, addr, 1, buf);
733 nor->addr_width = addr_width;
734 nor->read_dummy = read_dummy;
735 nor->read_opcode = read_opcode;
774 * @nor: pointer to a 'struct spi_nor'
782 spi_nor_init_non_uniform_erase_map(struct spi_nor *nor,
800 region = devm_kcalloc(nor->dev, region_count, sizeof(*region),
862 * @nor: pointer to a 'struct spi_nor'
873 static int spi_nor_parse_smpt(struct spi_nor *nor,
890 ret = spi_nor_read_sfdp(nor, addr, len, smpt);
897 sector_map = spi_nor_get_map_in_use(nor, smpt, smpt_header->length);
903 ret = spi_nor_init_non_uniform_erase_map(nor, params, sector_map);
916 * @nor: pointer to a 'struct spi_nor'.
923 static int spi_nor_parse_4bait(struct spi_nor *nor,
970 ret = spi_nor_read_sfdp(nor, addr, len, dwords);
1029 * nor->addr_width value.
1076 nor->addr_width = 4;
1077 nor->flags |= SNOR_F_4B_OPCODES | SNOR_F_HAS_4BAIT;
1087 * @nor: pointer to a 'struct spi_nor'
1099 int spi_nor_parse_sfdp(struct spi_nor *nor,
1105 struct device *dev = nor->dev;
1110 err = spi_nor_read_sfdp_dma_unsafe(nor, 0, sizeof(header), &header);
1146 err = spi_nor_read_sfdp(nor, sizeof(header),
1169 err = spi_nor_parse_bfpt(nor, bfpt_header, params);
1179 err = spi_nor_parse_smpt(nor, param_header, params);
1183 err = spi_nor_parse_4bait(nor, param_header, params);