This allows kobs-ng to flash the SPL successfully on the 4.4 kernel used by the Gateworks IMX boards supporting NAND. The previous version of kobs-ng worked with the 3.14 kernel but will brick a board making its SPL unbootable for the 4.4 kernel. See http://trac.gateworks.com/wiki/ventana/bootloader#nandspl for instructions on updating the SPL from Linux. Signed-off-by: Tim Harvey <tharvey@gateworks.com>
		
			
				
	
	
		
			28 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
The Freescale downstream vendor kernel has a patch that exports the bch
 | 
						|
flash geometry via a debugfs file. This is not available in mainline linux
 | 
						|
kernels so the fallback method calculates the geometry based on known info
 | 
						|
from the mtd partition. A bug exists in this funcion where it fails to
 | 
						|
assume that block0 ECC is the same as the other blocks by default.
 | 
						|
--- a/src/mtd.c
 | 
						|
+++ b/src/mtd.c
 | 
						|
@@ -610,7 +610,7 @@ static int cal_nfc_geometry(struct mtd_d
 | 
						|
 	/* The two are fixed, please change them when the driver changes. */
 | 
						|
 	geo->metadata_size_in_bytes = 10;
 | 
						|
 	geo->gf_len = 13;
 | 
						|
-	geo->ecc_chunkn_size_in_bytes = 512;
 | 
						|
+	geo->ecc_chunkn_size_in_bytes = geo->ecc_chunk0_size_in_bytes = 512;
 | 
						|
 
 | 
						|
 	if (mtd->oobsize > geo->ecc_chunkn_size_in_bytes) {
 | 
						|
 		geo->gf_len = 14;
 | 
						|
@@ -700,8 +700,9 @@ int parse_nfc_geometry(struct mtd_data *
 | 
						|
 	unsigned int       value;
 | 
						|
 
 | 
						|
 	if (!plat_config_data->m_u32UseNfcGeo) {
 | 
						|
+		/* fsl kernel patch provides bch_geometry via debugfs */
 | 
						|
 		if (!(node = fopen(dbg_geometry_node_path, "r"))) {
 | 
						|
-			fprintf(stderr, "Cannot open BCH geometry node: \"%s\"",
 | 
						|
+			fprintf(stderr, "Cannot open BCH geometry node: \"%s\"\n",
 | 
						|
 				dbg_geometry_node_path);
 | 
						|
 			return cal_nfc_geometry(md);
 | 
						|
 		}
 |