Refreshed all patches. Remove upstreamed: - 096-mips-math-emu-Write-protect-delay-slot-emulation-pages.patch Altered patches: - 024-7-net-reorganize-struct-sock-for-better-data-locality.patch Compile-tested on: ar7 Runtime-tested on: none Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
		
			
				
	
	
		
			57 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Felix Fietkau <nbd@nbd.name>
 | 
						|
Date: Sat, 4 Nov 2017 07:40:23 +0100
 | 
						|
Subject: [PATCH] mtd: spi-nor: support limiting 4K sectors support based on
 | 
						|
 flash size
 | 
						|
 | 
						|
Some devices need 4K sectors to be able to deal with small flash chips.
 | 
						|
For instance, w25x05 is 64 KiB in size, and without 4K sectors, the
 | 
						|
entire chip is just one erase block.
 | 
						|
On bigger flash chip sizes, using 4K sectors can significantly slow down
 | 
						|
many operations, including using a writable filesystem. There are several
 | 
						|
platforms where it makes sense to use a single kernel on both kinds of
 | 
						|
devices.
 | 
						|
 | 
						|
To support this properly, allow configuring an upper flash chip size
 | 
						|
limit for 4K sectors support.
 | 
						|
 | 
						|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
						|
---
 | 
						|
 | 
						|
--- a/drivers/mtd/spi-nor/Kconfig
 | 
						|
+++ b/drivers/mtd/spi-nor/Kconfig
 | 
						|
@@ -29,6 +29,17 @@ config MTD_SPI_NOR_USE_4K_SECTORS
 | 
						|
 	  Please note that some tools/drivers/filesystems may not work with
 | 
						|
 	  4096 B erase size (e.g. UBIFS requires 15 KiB as a minimum).
 | 
						|
 
 | 
						|
+config MTD_SPI_NOR_USE_4K_SECTORS_LIMIT
 | 
						|
+	int "Maximum flash chip size to use 4K sectors on (in KiB)"
 | 
						|
+	depends on MTD_SPI_NOR_USE_4K_SECTORS
 | 
						|
+	default "4096"
 | 
						|
+	help
 | 
						|
+	  There are many flash chips that support 4K sectors, but are so large
 | 
						|
+	  that using them significantly slows down writing large amounts of
 | 
						|
+	  data or using a writable filesystem.
 | 
						|
+	  Any flash chip larger than the size specified in this option will
 | 
						|
+	  not use 4K sectors.
 | 
						|
+
 | 
						|
 config SPI_ATMEL_QUADSPI
 | 
						|
 	tristate "Atmel Quad SPI Controller"
 | 
						|
 	depends on ARCH_AT91 || (ARM && COMPILE_TEST && !ARCH_EBSA110)
 | 
						|
--- a/drivers/mtd/spi-nor/spi-nor.c
 | 
						|
+++ b/drivers/mtd/spi-nor/spi-nor.c
 | 
						|
@@ -1648,10 +1648,12 @@ int spi_nor_scan(struct spi_nor *nor, co
 | 
						|
 
 | 
						|
 #ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS
 | 
						|
 	/* prefer "small sector" erase if possible */
 | 
						|
-	if (info->flags & SECT_4K) {
 | 
						|
+	if ((info->flags & SECT_4K) && (mtd->size <=
 | 
						|
+	    CONFIG_MTD_SPI_NOR_USE_4K_SECTORS_LIMIT * 1024)) {
 | 
						|
 		nor->erase_opcode = SPINOR_OP_BE_4K;
 | 
						|
 		mtd->erasesize = 4096;
 | 
						|
-	} else if (info->flags & SECT_4K_PMC) {
 | 
						|
+	} else if ((info->flags & SECT_4K_PMC) && (mtd->size <=
 | 
						|
+		   CONFIG_MTD_SPI_NOR_USE_4K_SECTORS_LIMIT * 1024)) {
 | 
						|
 		nor->erase_opcode = SPINOR_OP_BE_4K_PMC;
 | 
						|
 		mtd->erasesize = 4096;
 | 
						|
 	} else
 |