60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*
 | |
|  * External Flash table
 | |
|  *
 | |
|  * Copyright (C) Novatek Inc. 2017
 | |
|  *
 | |
|  */
 | |
| #include <linux/mtd/mtd.h>
 | |
| 
 | |
| /* data structure to maintain flash ids from different vendors */
 | |
| struct flash_device {
 | |
| 	char *name;
 | |
| 	u8 erase_cmd;
 | |
| 	u32 device_id;
 | |
| 	u32 pagesize;
 | |
| 	unsigned long sectorsize;
 | |
| 	unsigned long size_in_bytes;
 | |
| 	u8 quad_mode;
 | |
| 	u8 read_mode;
 | |
| };
 | |
| 
 | |
| #define FLASH_ID(n, es, id, psize, ssize, size, qpp, rd_mode)	\
 | |
| {				\
 | |
| 	.name = n,		\
 | |
| 	.erase_cmd = es,	\
 | |
| 	.device_id = id,	\
 | |
| 	.pagesize = psize,	\
 | |
| 	.sectorsize = ssize,	\
 | |
| 	.size_in_bytes = size,	\
 | |
| 	.quad_mode = qpp,	\
 | |
| 	.read_mode = rd_mode    \
 | |
| }
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * quad_mode :
 | |
|  *           1 bit  : 0
 | |
|  *           4 bits : WR_QPP
 | |
|  *
 | |
|  * read_mode :
 | |
|  *           SPI_NOR_NORMAL_READ
 | |
|  *           SPI_NOR_DUAL_READ
 | |
|  *           SPI_NOR_QUAD_READ
 | |
|  *
 | |
|  * Example:
 | |
|  *       Read: 4 bits, Write: 1 bit
 | |
|  *       FLASH_ID("mx 25l12835f"  , 0xd8, 0x001820C2, 0x100, 0x1000 , 0x1000000, 0, SPI_NOR_QUAD_READ),
 | |
|  *
 | |
|  *       Read: 2 bits, Write: 1 bit
 | |
|  *       FLASH_ID("mac 25l6405"   , 0xd8, 0x001720C2, 0x100, 0x10000, 0x800000, 0, SPI_NOR_DUAL_READ),
 | |
|  *
 | |
|  *       Read: 4 bits, Write: 4 bit
 | |
|  *       FLASH_ID("gd W25Q127C"   , 0xd8, 0x001840C8, 0x100, 0x10000,  0x1000000, WR_QPP, SPI_NOR_QUAD_READ),
 | |
| */
 | |
| #ifdef CONFIG_MTD_EXTERNAL_FLASH_TABLE
 | |
| static struct flash_device flash_devices[] = {
 | |
| 		FLASH_ID("EN25QX256A(2S) 256Mb"   , 0xd8, 0x0019711C, 0x100, 0x10000,  0x2000000, WR_QPP, SPI_NOR_QUAD_READ),
 | |
| 		FLASH_ID("MX25L25635F 256Mb"  	  , 0xd8, 0x001920C2, 0x100, 0x10000,  0x2000000, 0, SPI_NOR_QUAD_READ),
 | |
| };
 | |
| #endif
 | 
