/linux-6.12.1/drivers/mtd/spi-nor/ |
D | core.c | 17 #include <linux/mtd/spi-nor.h> 49 * @nor: pointer to a 'struct spi_nor' 57 static u8 spi_nor_get_cmd_ext(const struct spi_nor *nor, in spi_nor_get_cmd_ext() argument 60 switch (nor->cmd_ext_type) { in spi_nor_get_cmd_ext() 68 dev_err(nor->dev, "Unknown command extension type\n"); in spi_nor_get_cmd_ext() 75 * @nor: pointer to a 'struct spi_nor' 80 void spi_nor_spimem_setup_op(const struct spi_nor *nor, in spi_nor_spimem_setup_op() argument 101 * something like 4S-4D-4D, but SPI NOR can't. So, set all 4 in spi_nor_spimem_setup_op() 112 ext = spi_nor_get_cmd_ext(nor, op); in spi_nor_spimem_setup_op() 121 * @nor: pointer to 'struct spi_nor' [all …]
|
D | otp.c | 3 * OTP support for SPI NOR flashes 10 #include <linux/mtd/spi-nor.h> 14 #define spi_nor_otp_region_len(nor) ((nor)->params->otp.org->len) argument 15 #define spi_nor_otp_n_regions(nor) ((nor)->params->otp.org->n_regions) argument 19 * @nor: pointer to 'struct spi_nor' 36 int spi_nor_otp_read_secr(struct spi_nor *nor, loff_t addr, size_t len, u8 *buf) in spi_nor_otp_read_secr() argument 43 read_opcode = nor->read_opcode; in spi_nor_otp_read_secr() 44 addr_nbytes = nor->addr_nbytes; in spi_nor_otp_read_secr() 45 read_dummy = nor->read_dummy; in spi_nor_otp_read_secr() 46 read_proto = nor->read_proto; in spi_nor_otp_read_secr() [all …]
|
D | spansion.c | 10 #include <linux/mtd/spi-nor.h> 48 /* Cypress SPI NOR flash operations. */ 78 * @nor: pointer to 'struct spi_nor'. 80 static void spansion_nor_clear_sr(struct spi_nor *nor) in spansion_nor_clear_sr() argument 82 const struct spansion_nor_params *priv_params = nor->params->priv; in spansion_nor_clear_sr() 85 if (nor->spimem) { in spansion_nor_clear_sr() 88 spi_nor_spimem_setup_op(nor, &op, nor->reg_proto); in spansion_nor_clear_sr() 90 ret = spi_mem_exec_op(nor->spimem, &op); in spansion_nor_clear_sr() 92 ret = spi_nor_controller_ops_write_reg(nor, SPINOR_OP_CLSR, in spansion_nor_clear_sr() 97 dev_dbg(nor->dev, "error %d clearing SR\n", ret); in spansion_nor_clear_sr() [all …]
|
D | swp.c | 3 * SPI NOR Software Write Protection logic. 9 #include <linux/mtd/spi-nor.h> 13 static u8 spi_nor_get_sr_bp_mask(struct spi_nor *nor) in spi_nor_get_sr_bp_mask() argument 17 if (nor->flags & SNOR_F_HAS_SR_BP3_BIT6) in spi_nor_get_sr_bp_mask() 20 if (nor->flags & SNOR_F_HAS_4BIT_BP) in spi_nor_get_sr_bp_mask() 26 static u8 spi_nor_get_sr_tb_mask(struct spi_nor *nor) in spi_nor_get_sr_tb_mask() argument 28 if (nor->flags & SNOR_F_HAS_SR_TB_BIT6) in spi_nor_get_sr_tb_mask() 34 static u64 spi_nor_get_min_prot_length_sr(struct spi_nor *nor) in spi_nor_get_min_prot_length_sr() argument 41 unsigned int sector_size = nor->info->sector_size ?: SPI_NOR_DEFAULT_SECTOR_SIZE; in spi_nor_get_min_prot_length_sr() 42 u64 n_sectors = div_u64(nor->params->size, sector_size); in spi_nor_get_min_prot_length_sr() [all …]
|
D | core.h | 21 /* Standard SPI NOR flash operations. */ 202 * struct spi_nor_erase_type - Structure to describe a SPI NOR erase type 241 * struct spi_nor_erase_region - Structure to describe a SPI NOR erase region 260 * struct spi_nor_erase_map - Structure to describe the SPI NOR erase map 264 * @uniform_region: a pre-allocated erase region for SPI NOR with a uniform 280 * struct spi_nor_locking_ops - SPI NOR locking methods 281 * @lock: lock a region of the SPI NOR. 282 * @unlock: unlock a region of the SPI NOR. 283 * @is_locked: check if a region of the SPI NOR is completely locked 286 int (*lock)(struct spi_nor *nor, loff_t ofs, u64 len); [all …]
|
D | micron-st.c | 7 #include <linux/mtd/spi-nor.h> 32 /* Micron ST SPI NOR flash operations. */ 51 static int micron_st_nor_octal_dtr_en(struct spi_nor *nor) in micron_st_nor_octal_dtr_en() argument 54 u8 *buf = nor->bouncebuf; in micron_st_nor_octal_dtr_en() 56 u8 addr_mode_nbytes = nor->params->addr_mode_nbytes; in micron_st_nor_octal_dtr_en() 63 ret = spi_nor_write_any_volatile_reg(nor, &op, nor->reg_proto); in micron_st_nor_octal_dtr_en() 71 ret = spi_nor_write_any_volatile_reg(nor, &op, nor->reg_proto); in micron_st_nor_octal_dtr_en() 76 ret = spi_nor_read_id(nor, 0, 8, buf, SNOR_PROTO_8_8_8_DTR); in micron_st_nor_octal_dtr_en() 78 dev_dbg(nor->dev, "error %d reading JEDEC ID after enabling 8D-8D-8D mode\n", ret); in micron_st_nor_octal_dtr_en() 82 if (memcmp(buf, nor->info->id->bytes, nor->info->id->len)) in micron_st_nor_octal_dtr_en() [all …]
|
D | sst.c | 7 #include <linux/mtd/spi-nor.h> 16 static int sst26vf_nor_lock(struct spi_nor *nor, loff_t ofs, u64 len) in sst26vf_nor_lock() argument 21 static int sst26vf_nor_unlock(struct spi_nor *nor, loff_t ofs, u64 len) in sst26vf_nor_unlock() argument 26 if (ofs != 0 || len != nor->params->size) in sst26vf_nor_unlock() 29 ret = spi_nor_read_cr(nor, nor->bouncebuf); in sst26vf_nor_unlock() 33 if (!(nor->bouncebuf[0] & SST26VF_CR_BPNV)) { in sst26vf_nor_unlock() 34 dev_dbg(nor->dev, "Any block has been permanently locked\n"); in sst26vf_nor_unlock() 38 return spi_nor_global_block_unlock(nor); in sst26vf_nor_unlock() 41 static int sst26vf_nor_is_locked(struct spi_nor *nor, loff_t ofs, u64 len) in sst26vf_nor_is_locked() argument 52 static int sst26vf_nor_late_init(struct spi_nor *nor) in sst26vf_nor_late_init() argument [all …]
|
D | Makefile | 3 spi-nor-objs := core.o sfdp.o swp.o otp.o sysfs.o 4 spi-nor-objs += atmel.o 5 spi-nor-objs += eon.o 6 spi-nor-objs += esmt.o 7 spi-nor-objs += everspin.o 8 spi-nor-objs += gigadevice.o 9 spi-nor-objs += intel.o 10 spi-nor-objs += issi.o 11 spi-nor-objs += macronix.o 12 spi-nor-objs += micron-st.o [all …]
|
D | atmel.c | 7 #include <linux/mtd/spi-nor.h> 19 static int at25fs_nor_lock(struct spi_nor *nor, loff_t ofs, u64 len) in at25fs_nor_lock() argument 24 static int at25fs_nor_unlock(struct spi_nor *nor, loff_t ofs, u64 len) in at25fs_nor_unlock() argument 29 if (ofs || len != nor->params->size) in at25fs_nor_unlock() 33 ret = spi_nor_write_sr_and_check(nor, 0); in at25fs_nor_unlock() 35 dev_dbg(nor->dev, "unable to clear BP bits, WP# asserted?\n"); in at25fs_nor_unlock() 40 static int at25fs_nor_is_locked(struct spi_nor *nor, loff_t ofs, u64 len) in at25fs_nor_is_locked() argument 51 static int at25fs_nor_late_init(struct spi_nor *nor) in at25fs_nor_late_init() argument 53 nor->params->locking_ops = &at25fs_nor_locking_ops; in at25fs_nor_late_init() 64 * @nor: pointer to 'struct spi_nor' [all …]
|
D | sysfs.c | 3 #include <linux/mtd/spi-nor.h> 15 struct spi_nor *nor = spi_mem_get_drvdata(spimem); in manufacturer_show() local 17 return sysfs_emit(buf, "%s\n", nor->manufacturer->name); in manufacturer_show() 26 struct spi_nor *nor = spi_mem_get_drvdata(spimem); in partname_show() local 28 return sysfs_emit(buf, "%s\n", nor->info->name); in partname_show() 37 struct spi_nor *nor = spi_mem_get_drvdata(spimem); in jedec_id_show() local 38 const u8 *id = nor->info->id ? nor->info->id->bytes : nor->id; in jedec_id_show() 39 u8 id_len = nor->info->id ? nor->info->id->len : SPI_NOR_MAX_ID_LEN; in jedec_id_show() 58 struct spi_nor *nor = spi_mem_get_drvdata(spimem); in sfdp_read() local 59 struct sfdp *sfdp = nor->sfdp; in sfdp_read() [all …]
|
D | sfdp.c | 8 #include <linux/mtd/spi-nor.h> 144 * @nor: pointer to a 'struct spi_nor' 151 static int spi_nor_read_raw(struct spi_nor *nor, u32 addr, size_t len, u8 *buf) in spi_nor_read_raw() argument 156 ret = spi_nor_read_data(nor, addr, len, buf); in spi_nor_read_raw() 171 * @nor: pointer to a 'struct spi_nor' 182 static int spi_nor_read_sfdp(struct spi_nor *nor, u32 addr, in spi_nor_read_sfdp() argument 188 read_opcode = nor->read_opcode; in spi_nor_read_sfdp() 189 addr_nbytes = nor->addr_nbytes; in spi_nor_read_sfdp() 190 read_dummy = nor->read_dummy; in spi_nor_read_sfdp() 192 nor->read_opcode = SPINOR_OP_RDSFDP; in spi_nor_read_sfdp() [all …]
|
D | debugfs.c | 4 #include <linux/mtd/spi-nor.h> 10 #define SPI_NOR_DEBUGFS_ROOT "spi-nor" 78 struct spi_nor *nor = s->private; in spi_nor_params_show() local 79 struct spi_nor_flash_parameter *params = nor->params; in spi_nor_params_show() 82 const struct flash_info *info = nor->info; in spi_nor_params_show() 87 seq_printf(s, "id\t\t%*ph\n", SPI_NOR_MAX_ID_LEN, nor->id); in spi_nor_params_show() 92 seq_printf(s, "address nbytes\t%u\n", nor->addr_nbytes); in spi_nor_params_show() 95 spi_nor_print_flags(s, nor->flags, snor_f_names, sizeof(snor_f_names)); in spi_nor_params_show() 99 seq_printf(s, " read\t\t0x%02x\n", nor->read_opcode); in spi_nor_params_show() 100 seq_printf(s, " dummy cycles\t%u\n", nor->read_dummy); in spi_nor_params_show() [all …]
|
D | winbond.c | 7 #include <linux/mtd/spi-nor.h> 21 w25q128_post_bfpt_fixups(struct spi_nor *nor, in w25q128_post_bfpt_fixups() argument 32 nor->params->size == SZ_2M && in w25q128_post_bfpt_fixups() 33 nor->params->erase_map.regions[0].size == SZ_2M) { in w25q128_post_bfpt_fixups() 34 nor->params->size = SZ_16M; in w25q128_post_bfpt_fixups() 35 nor->params->erase_map.regions[0].size = SZ_16M; in w25q128_post_bfpt_fixups() 46 w25q256_post_bfpt_fixups(struct spi_nor *nor, in w25q256_post_bfpt_fixups() argument 60 nor->flags |= SNOR_F_4B_OPCODES; in w25q256_post_bfpt_fixups() 262 * @nor: pointer to 'struct spi_nor'. 267 static int winbond_nor_write_ear(struct spi_nor *nor, u8 ear) in winbond_nor_write_ear() argument [all …]
|
D | issi.c | 7 #include <linux/mtd/spi-nor.h> 12 is25lp256_post_bfpt_fixups(struct spi_nor *nor, in is25lp256_post_bfpt_fixups() argument 23 nor->params->addr_nbytes = 4; in is25lp256_post_bfpt_fixups() 32 static int pm25lv_nor_late_init(struct spi_nor *nor) in pm25lv_nor_late_init() argument 34 struct spi_nor_erase_map *map = &nor->params->erase_map; in pm25lv_nor_late_init() 132 static void issi_nor_default_init(struct spi_nor *nor) in issi_nor_default_init() argument 134 nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable; in issi_nor_default_init()
|
/linux-6.12.1/Documentation/devicetree/bindings/spi/ |
D | mediatek,spi-mtk-nor.yaml | 4 $id: http://devicetree.org/schemas/spi/mediatek,spi-mtk-nor.yaml# 7 title: Serial NOR flash controller for MediaTek ARM SoCs 15 SPI NOR flash. There should be only one spi slave device following 17 for devices other than SPI NOR flash due to limited transfer 27 - mediatek,mt8173-nor 28 - mediatek,mt8186-nor 29 - mediatek,mt8192-nor 32 - mediatek,mt2701-nor 33 - mediatek,mt2712-nor 34 - mediatek,mt7622-nor [all …]
|
D | cdns,xspi.yaml | 16 read/write access to slaves such as SPI-NOR flash. 21 - cdns,xspi-nor 22 - marvell,cn10-xspi-nor 55 - marvell,cn10-xspi-nor 81 compatible = "cdns,xspi-nor"; 90 compatible = "jedec,spi-nor"; 96 compatible = "jedec,spi-nor";
|
/linux-6.12.1/drivers/mtd/spi-nor/controllers/ |
D | hisi-sfc.c | 3 * HiSilicon FMC SPI NOR flash controller driver 13 #include <linux/mtd/spi-nor.h> 99 struct spi_nor *nor[HIFMC_MAX_CHIP_NUM]; member 147 static int hisi_spi_nor_prep(struct spi_nor *nor) in hisi_spi_nor_prep() argument 149 struct hifmc_priv *priv = nor->priv; in hisi_spi_nor_prep() 170 static void hisi_spi_nor_unprep(struct spi_nor *nor) in hisi_spi_nor_unprep() argument 172 struct hifmc_priv *priv = nor->priv; in hisi_spi_nor_unprep() 179 static int hisi_spi_nor_op_reg(struct spi_nor *nor, in hisi_spi_nor_op_reg() argument 182 struct hifmc_priv *priv = nor->priv; in hisi_spi_nor_op_reg() 202 static int hisi_spi_nor_read_reg(struct spi_nor *nor, u8 opcode, u8 *buf, in hisi_spi_nor_read_reg() argument [all …]
|
D | nxp-spifi.c | 3 * SPI NOR driver for NXP SPI Flash Interface (SPIFI) 18 #include <linux/mtd/spi-nor.h> 58 struct spi_nor nor; member 125 static int nxp_spifi_read_reg(struct spi_nor *nor, u8 opcode, u8 *buf, in nxp_spifi_read_reg() argument 128 struct nxp_spifi *spifi = nor->priv; in nxp_spifi_read_reg() 148 static int nxp_spifi_write_reg(struct spi_nor *nor, u8 opcode, const u8 *buf, in nxp_spifi_write_reg() argument 151 struct nxp_spifi *spifi = nor->priv; in nxp_spifi_write_reg() 172 static ssize_t nxp_spifi_read(struct spi_nor *nor, loff_t from, size_t len, in nxp_spifi_read() argument 175 struct nxp_spifi *spifi = nor->priv; in nxp_spifi_read() 187 static ssize_t nxp_spifi_write(struct spi_nor *nor, loff_t to, size_t len, in nxp_spifi_write() argument [all …]
|
/linux-6.12.1/Documentation/devicetree/bindings/mtd/ |
D | hisilicon,fmc-spi-nor.txt | 1 HiSilicon SPI-NOR Flash Controller 4 - compatible : Should be "hisilicon,fmc-spi-nor" and one of the following strings: 5 "hisilicon,hi3519-spi-nor" 10 - clocks : handle to spi-nor flash controller clock. 13 spi-nor-controller@10000000 { 14 compatible = "hisilicon,hi3519-spi-nor", "hisilicon,fmc-spi-nor"; 21 compatible = "jedec,spi-nor";
|
D | jedec,spi-nor.yaml | 4 $id: http://devicetree.org/schemas/mtd/jedec,spi-nor.yaml# 7 title: SPI NOR flash ST M25Pxx (and similar) serial flash chips 33 - const: jedec,spi-nor 43 - const: jedec,spi-nor 44 - const: jedec,spi-nor 46 SPI NOR flashes compatible with the JEDEC SFDP standard or which may be 49 "jedec,spi-nor" compatible. 116 compatible = "spansion,m25p80", "jedec,spi-nor";
|
/linux-6.12.1/Documentation/ABI/testing/ |
D | sysfs-bus-spi-devices-spi-nor | 1 What: /sys/bus/spi/devices/.../spi-nor/jedec_id 5 Description: (RO) The JEDEC ID of the SPI NOR flash as reported by the 12 What: /sys/bus/spi/devices/.../spi-nor/manufacturer 16 Description: (RO) Manufacturer of the SPI NOR flash. 22 What: /sys/bus/spi/devices/.../spi-nor/partname 26 Description: (RO) Part name of the SPI NOR flash. 32 What: /sys/bus/spi/devices/.../spi-nor/sfdp 36 Description: (RO) This attribute is only present if the SPI NOR flash
|
/linux-6.12.1/include/linux/mtd/ |
D | spi-nor.h | 291 * struct spi_nor_controller_ops - SPI NOR controller driver specific 299 * @read: read data from the SPI NOR. 300 * @write: write data to the SPI NOR. 301 * @erase: erase a sector of the SPI NOR at the offset @offs; if 302 * not provided by the driver, SPI NOR will send the erase 306 int (*prepare)(struct spi_nor *nor); 307 void (*unprepare)(struct spi_nor *nor); 308 int (*read_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, size_t len); 309 int (*write_reg)(struct spi_nor *nor, u8 opcode, const u8 *buf, 312 ssize_t (*read)(struct spi_nor *nor, loff_t from, size_t len, u8 *buf); [all …]
|
/linux-6.12.1/arch/powerpc/boot/dts/fsl/ |
D | mpc8536ds.dtsi | 13 * * Neither the name of Freescale Semiconductor nor the 36 nor@0,0 { 46 label = "ramdisk-nor"; 51 label = "diagnostic-nor"; 57 label = "dink-nor"; 63 label = "kernel-nor"; 68 label = "fs-nor"; 73 label = "dtb-nor"; 78 label = "u-boot-nor"; 145 compatible = "spansion,s25sl12801", "jedec,spi-nor"; [all …]
|
D | p1022ds.dtsi | 13 * * Neither the name of Freescale Semiconductor nor the 36 nor@0,0 { 46 label = "ramdisk-nor"; 52 label = "diagnostic-nor"; 58 label = "dink-nor"; 64 label = "kernel-nor"; 70 label = "jffs2-nor"; 75 label = "dtb-nor"; 81 label = "u-boot-nor"; 163 compatible = "spansion,s25sl12801", "jedec,spi-nor";
|
/linux-6.12.1/Documentation/driver-api/mtd/ |
D | spi-nor.rst | 2 SPI NOR framework 8 Most SPI NOR flashes comply with the JEDEC JESD216 13 The SPI NOR driver queries the SFDP tables in order to determine the 17 on its SFDP data. All one has to do is to specify the "jedec,spi-nor" 41 root@1:~# cat /sys/bus/spi/devices/spi0.0/spi-nor/partname 43 root@1:~# cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id 45 root@1:~# cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer 47 root@1:~# xxd -p /sys/bus/spi/devices/spi0.0/spi-nor/sfdp 69 root@1:~# sha256sum /sys/bus/spi/devices/spi0.0/spi-nor/sfdp 70 …0461876f189ac97f93e68a05fa6428c6650b3b7baf736a921e5898ed1 /sys/bus/spi/devices/spi0.0/spi-nor/sfdp [all …]
|