mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 23:33:01 -04:00
Merge tag 'nand/for-6.3' into mtd/next
NAND core changes: * Check the data only read pattern only once * Prepare the late addition of supported operation checks * Support for sequential cache reads * Fix nand_chip kdoc Raw NAND changes: * Fsl_elbc: Propagate HW ECC settings to HW * Marvell: Add missing layouts * Pasemi: Don't use static data to track per-device state * Sunxi: - Fix the size of the last OOB region - Remove an unnecessary check - Remove an unnecessary check - Clean up chips after failed init - Precompute the ECC_CTL register value - Embed sunxi_nand_hw_ecc by value - Update OOB layout to match hardware * tmio_nand: Remove driver * vf610_nfc: Use regular comments for functions SPI-NAND changes: * Add support for AllianceMemory AS5F34G04SND * Macronix: use scratch buffer for DMA operation NAND ECC changes: * Mediatek: - Add ECC support fot MT7986 IC - Add compatible for MT7986 - dt-bindings: Split ECC engine with rawnand controller
This commit is contained in:
@@ -67,6 +67,8 @@ struct gpio_desc;
|
||||
|
||||
/* Extended commands for large page devices */
|
||||
#define NAND_CMD_READSTART 0x30
|
||||
#define NAND_CMD_READCACHESEQ 0x31
|
||||
#define NAND_CMD_READCACHEEND 0x3f
|
||||
#define NAND_CMD_RNDOUTSTART 0xE0
|
||||
#define NAND_CMD_CACHEDPROG 0x15
|
||||
|
||||
@@ -1094,10 +1096,20 @@ struct nand_controller_ops {
|
||||
*
|
||||
* @lock: lock used to serialize accesses to the NAND controller
|
||||
* @ops: NAND controller operations.
|
||||
* @supported_op: NAND controller known-to-be-supported operations,
|
||||
* only writable by the core after initial checking.
|
||||
* @supported_op.data_only_read: The controller supports reading more data from
|
||||
* the bus without restarting an entire read operation nor
|
||||
* changing the column.
|
||||
* @supported_op.cont_read: The controller supports sequential cache reads.
|
||||
*/
|
||||
struct nand_controller {
|
||||
struct mutex lock;
|
||||
const struct nand_controller_ops *ops;
|
||||
struct {
|
||||
unsigned int data_only_read: 1;
|
||||
unsigned int cont_read: 1;
|
||||
} supported_op;
|
||||
};
|
||||
|
||||
static inline void nand_controller_init(struct nand_controller *nfc)
|
||||
@@ -1248,6 +1260,10 @@ struct nand_secure_region {
|
||||
* @read_retries: The number of read retry modes supported
|
||||
* @secure_regions: Structure containing the secure regions info
|
||||
* @nr_secure_regions: Number of secure regions
|
||||
* @cont_read: Sequential page read internals
|
||||
* @cont_read.ongoing: Whether a continuous read is ongoing or not
|
||||
* @cont_read.first_page: Start of the continuous read operation
|
||||
* @cont_read.last_page: End of the continuous read operation
|
||||
* @controller: The hardware controller structure which is shared among multiple
|
||||
* independent devices
|
||||
* @ecc: The ECC controller structure
|
||||
@@ -1300,6 +1316,11 @@ struct nand_chip {
|
||||
int read_retries;
|
||||
struct nand_secure_region *secure_regions;
|
||||
u8 nr_secure_regions;
|
||||
struct {
|
||||
bool ongoing;
|
||||
unsigned int first_page;
|
||||
unsigned int last_page;
|
||||
} cont_read;
|
||||
|
||||
/* Externals */
|
||||
struct nand_controller *controller;
|
||||
|
||||
@@ -260,6 +260,7 @@ struct spinand_manufacturer {
|
||||
};
|
||||
|
||||
/* SPI NAND manufacturers */
|
||||
extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
|
||||
extern const struct spinand_manufacturer ato_spinand_manufacturer;
|
||||
extern const struct spinand_manufacturer gigadevice_spinand_manufacturer;
|
||||
extern const struct spinand_manufacturer macronix_spinand_manufacturer;
|
||||
|
||||
Reference in New Issue
Block a user