Lines Matching +full:spi +full:- +full:nor

1 /* SPDX-License-Identifier: GPL-2.0+ */
12 #include <linux/spi/spi-mem.h>
19 * requires a 4-byte (32-bit) address.
31 #define SPINOR_OP_READ_1_1_2 0x3b /* Read data bytes (Dual Output SPI) */
32 #define SPINOR_OP_READ_1_2_2 0xbb /* Read data bytes (Dual I/O SPI) */
33 #define SPINOR_OP_READ_1_1_4 0x6b /* Read data bytes (Quad Output SPI) */
34 #define SPINOR_OP_READ_1_4_4 0xeb /* Read data bytes (Quad I/O SPI) */
35 #define SPINOR_OP_READ_1_1_8 0x8b /* Read data bytes (Octal Output SPI) */
36 #define SPINOR_OP_READ_1_8_8 0xcb /* Read data bytes (Octal I/O SPI) */
58 /* 4-byte address opcodes - used on Spansion and some Macronix flashes. */
61 #define SPINOR_OP_READ_1_1_2_4B 0x3c /* Read data bytes (Dual Output SPI) */
62 #define SPINOR_OP_READ_1_2_2_4B 0xbc /* Read data bytes (Dual I/O SPI) */
63 #define SPINOR_OP_READ_1_1_4_4B 0x6c /* Read data bytes (Quad Output SPI) */
64 #define SPINOR_OP_READ_1_4_4_4B 0xec /* Read data bytes (Quad I/O SPI) */
65 #define SPINOR_OP_READ_1_1_8_4B 0x7c /* Read data bytes (Octal Output SPI) */
66 #define SPINOR_OP_READ_1_8_8_4B 0xcc /* Read data bytes (Octal I/O SPI) */
76 /* Double Transfer Rate opcodes - defined in JEDEC JESD216B. */
99 #define SPINOR_OP_EN4B 0xb7 /* Enter 4-byte mode */
100 #define SPINOR_OP_EX4B 0xe9 /* Exit 4-byte mode */
151 /* Supported SPI protocols */
228 * struct spi_nor_hwcaps - Structure for describing the hardware capabilies
229 * supported by the SPI controller (bus master).
239 * As a matter of performances, it is relevant to use Octal SPI protocols first,
240 * then Quad SPI protocols before Dual SPI protocols, Fast Read and lastly
270 * Like (Fast) Read capabilities, Octal/Quad SPI protocols are preferred to the
271 * legacy SPI 1-1-1 protocol.
273 * JEDEC/SFDP standard to define them. Also at this moment no SPI flash memory
312 * struct spi_nor_controller_ops - SPI NOR controller driver specific
320 * @read: read data from the SPI NOR.
321 * @write: write data to the SPI NOR.
322 * @erase: erase a sector of the SPI NOR at the offset @offs; if
323 * not provided by the driver, SPI NOR will send the erase
327 int (*prepare)(struct spi_nor *nor);
328 void (*unprepare)(struct spi_nor *nor);
329 int (*read_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, size_t len);
330 int (*write_reg)(struct spi_nor *nor, u8 opcode, const u8 *buf,
333 ssize_t (*read)(struct spi_nor *nor, loff_t from, size_t len, u8 *buf);
334 ssize_t (*write)(struct spi_nor *nor, loff_t to, size_t len,
336 int (*erase)(struct spi_nor *nor, loff_t offs);
340 * enum spi_nor_cmd_ext - describes the command opcode extension in DTR mode
342 * SPI mode
346 * combine to form a 16-bit opcode.
364 * struct spi_nor - Structure for defining the SPI NOR layer
367 * @dev: pointer to an SPI device or an SPI NOR controller device
368 * @spimem: pointer to the SPI memory device
370 * layer is not DMA-able
372 * @info: SPI NOR part JEDEC MFR ID and other info
373 * @manufacturer: SPI NOR manufacturer
374 * @page_size: the page size of the SPI NOR
381 * @flags: flag options for the current SPI NOR (SNOR_F_*)
383 * @read_proto: the SPI protocol for read operations
384 * @write_proto: the SPI protocol for write operations
385 * @reg_proto: the SPI protocol for read_reg/write_reg/erase operations
387 * @controller_ops: SPI NOR controller driver specific operations.
388 * @params: [FLASH-SPECIFIC] SPI NOR flash parameters and settings.
430 static inline void spi_nor_set_flash_node(struct spi_nor *nor, in spi_nor_set_flash_node() argument
433 mtd_set_of_node(&nor->mtd, np); in spi_nor_set_flash_node()
436 static inline struct device_node *spi_nor_get_flash_node(struct spi_nor *nor) in spi_nor_get_flash_node() argument
438 return mtd_get_of_node(&nor->mtd); in spi_nor_get_flash_node()
442 * spi_nor_scan() - scan the SPI NOR
443 * @nor: the spi_nor structure
447 * The drivers can use this function to scan the SPI NOR.
455 int spi_nor_scan(struct spi_nor *nor, const char *name,
459 * spi_nor_restore_addr_mode() - restore the status of SPI NOR
460 * @nor: the spi_nor structure
462 void spi_nor_restore(struct spi_nor *nor);