From cdd4982fef90503a4049688aa78f237420befd61 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Fri, 16 Feb 2007 09:57:24 +0000
Subject: [PATCH] remove squashfs repartitioning hacks from spiflash driver -
 will be ported to redboot parsing code later

SVN-Revision: 6308
---
 .../files/drivers/mtd/devices/spiflash.c      | 70 ++-----------------
 1 file changed, 4 insertions(+), 66 deletions(-)

diff --git a/target/linux/atheros-2.6/files/drivers/mtd/devices/spiflash.c b/target/linux/atheros-2.6/files/drivers/mtd/devices/spiflash.c
index 6e6734d434..067f32b314 100644
--- a/target/linux/atheros-2.6/files/drivers/mtd/devices/spiflash.c
+++ b/target/linux/atheros-2.6/files/drivers/mtd/devices/spiflash.c
@@ -396,15 +396,9 @@ static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL };
 
 static int spiflash_probe(struct platform_device *pdev)
 {
-   	int result = -1, i, j;
-	u32 len;
+   	int result = -1;
    	int index, num_parts;
 	struct mtd_info *mtd;
-	struct  mtd_partition  *mtd_parts;
-	char *buf;
-	struct mtd_partition *part;
-	struct squashfs_super_block *sb;
-	u32 config_start;
 
 	spidata->spiflash_mmraddr = ioremap_nocache(SPI_FLASH_MMR, SPI_FLASH_MMR_SIZE);
 	
@@ -476,73 +470,17 @@ static int spiflash_probe(struct platform_device *pdev)
          	}
     	}
 #endif
-
    	/* parse redboot partitions */
 	num_parts = parse_mtd_partitions(mtd, part_probe_types, &spidata->parsed_parts, 0);
 
-	mtd_parts = kzalloc(sizeof(struct mtd_partition) * MAX_PARTS, GFP_KERNEL);
-	buf = kmalloc(mtd->erasesize, GFP_KERNEL);
-	sb = (struct squashfs_super_block *) buf;
-	for (i = j = 0; i < num_parts; i++, j++) {
-		part = &mtd_parts[j];
-		memcpy(part, &spidata->parsed_parts[i], sizeof(struct mtd_partition));
-		
-		if (!strcmp(part->name, ROOTFS_NAME)) {
-			/* create the root device */
-			ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, i);
-
-			part->size -= mtd->erasesize;
-			config_start = part->offset + part->size;
-
-			while ((mtd->read(mtd, part->offset, mtd->erasesize, &len, buf) == 0) &&
-					(len == mtd->erasesize) &&
-					(*((u32 *) buf) == SQUASHFS_MAGIC) &&
-					(sb->bytes_used > 0)) {
-					
-				/* this is squashfs, allocate another partition starting from the end of filesystem data */
-				memcpy(&mtd_parts[j + 1], part, sizeof(struct mtd_partition));
-			
-				len = (u32) sb->bytes_used;
-				len += (part->offset & 0x000fffff);
-				len +=  (mtd->erasesize - 1);
-				len &= ~(mtd->erasesize - 1);
-				len -= (part->offset & 0x000fffff);
-
-				if (len + mtd->erasesize > part->size)
-					break;
-
-				part = &mtd_parts[++j];
-				
-				part->offset += len;
-				part->size -= len;
-
-				part->name = kmalloc(10, GFP_KERNEL);
-				sprintf(part->name, "rootfs%d", j - i);
-			}
-		}
-		if (!strcmp(part->name, "RedBoot config")) {
-			/* add anoterh partition for the board config data */
-			memcpy(&mtd_parts[j + 1], part, sizeof(struct mtd_partition));
-			j++;
-			part = &mtd_parts[j];
-			part->offset += part->size;
-			part->size = mtd->erasesize;
-			
-			part->name = kmalloc(16, GFP_KERNEL);
-			sprintf(part->name, "board_config");
-		}
-	}
-	num_parts += j - i;
-	kfree(buf);
-
 #ifdef SPIFLASH_DEBUG
-   	printk (KERN_DEBUG "Found %d redboot partitions\n", num_parts);
+   	printk (KERN_DEBUG "Found %d partitions\n", num_parts);
 #endif
 	if (num_parts) {
-   		result = add_mtd_partitions(mtd, mtd_parts, num_parts);
+   		result = add_mtd_partitions(mtd, spidata->parsed_parts, num_parts);
 	} else {
 #ifdef SPIFLASH_DEBUG
-		printk (KERN_DEBUG "Did not find any redboot partitions\n");
+		printk (KERN_DEBUG "Did not find any partitions\n");
 #endif
 		kfree(mtd);
 		kfree(spidata);
-- 
2.30.2