Lines Matching +full:spi +full:- +full:nand

1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (c) 2016-2017 Micron Technology, Inc.
15 #include <linux/mtd/nand.h>
16 #include <linux/spi/spi.h>
17 #include <linux/spi/spi-mem.h>
20 * Standard SPI NAND flash operations
144 * Standard SPI NAND flash commands
175 * struct spinand_id - SPI NAND id structure
192 * struct spinand_devid - SPI NAND device id structure
200 * read_id opcode + 1-byte address.
211 * struct manufacurer_ops - SPI NAND manufacturer specific operations
212 * @init: initialize a SPI NAND device
213 * @cleanup: cleanup a SPI NAND device
215 * Each SPI NAND manufacturer driver should implement this interface so that
216 * NAND chips coming from this vendor can be initialized properly.
224 * struct spinand_manufacturer - SPI NAND manufacturer instance
228 * @chips: supported SPI NANDs under current manufacturer
229 * @nchips: number of SPI NANDs available in chips array
240 /* SPI NAND manufacturers */
249 * struct spinand_op_variants - SPI NAND operation variants
253 * Some operations like read-from-cache/write-to-cache have several variants
256 * by a chip and let the core pick the best one based on the SPI mem controller
272 * spinand_ecc_info - description of the on-die ECC implemented by a SPI NAND
276 * -EBADMSG if there are uncorrectable errors. I can also return
279 * @ooblayout: the OOB layout used by the on-die ECC implementation
290 * struct spinand_info - Structure used to describe SPI NAND chips
293 * @flags: OR-ing of the SPINAND_XXX flags
296 * @eccinfo: on-die ECC info
298 * @op_variants.read_cache: variants of the read-cache operation
299 * @op_variants.write_cache: variants of the write-cache operation
300 * @op_variants.update_cache: variants of the update-cache operation
302 * multi-die chips
304 * Each SPI NAND manufacturer driver should have a spinand_info table
364 * struct spinand_device - SPI NAND device instance
365 * @base: NAND device instance
366 * @spimem: pointer to the SPI mem object
367 * @lock: lock used to serialize accesses to the NAND
368 * @id: NAND ID as returned by READ_ID
369 * @flags: NAND flags
370 * @op_templates: various SPI mem op templates
378 * @eccinfo: on-die ECC information
383 * because the spi-mem interface explicitly requests that buffers
384 * passed in spi_mem_op be DMA-able, so we can't based the bufs on
386 * @manufacturer: SPI NAND manufacturer information
419 * mtd_to_spinand() - Get the SPI NAND device attached to an MTD instance
422 * Return: the SPI NAND device attached to @mtd.
430 * spinand_to_mtd() - Get the MTD device embedded in a SPI NAND device
431 * @spinand: SPI NAND device
437 return nanddev_to_mtd(&spinand->base); in spinand_to_mtd()
441 * nand_to_spinand() - Get the SPI NAND device embedding an NAND object
442 * @nand: NAND object
444 * Return: the SPI NAND device embedding @nand.
446 static inline struct spinand_device *nand_to_spinand(struct nand_device *nand) in nand_to_spinand() argument
448 return container_of(nand, struct spinand_device, base); in nand_to_spinand()
452 * spinand_to_nand() - Get the NAND device embedded in a SPI NAND object
453 * @spinand: SPI NAND device
455 * Return: the NAND device embedded in @spinand.
460 return &spinand->base; in spinand_to_nand()
464 * spinand_set_of_node - Attach a DT node to a SPI NAND device
465 * @spinand: SPI NAND device
468 * Attach a DT node to a SPI NAND device.
473 nanddev_set_of_node(&spinand->base, np); in spinand_set_of_node()