X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=target%2Flinux%2Fbrcm63xx%2Fpatches-2.6.35%2F040-bcm963xx_flashmap.patch;h=4835a159ae6644986878dfca4c161ec2d78aa5f8;hb=fc3a1d0ba3ff3f4907eddfe2c08b6008c41121ac;hp=c1b424d5d8157dca26019575c8d5a96644dc38f0;hpb=b3bcc483b2d075e1151ea814d5e4f5b458b0e1f7;p=librecmc%2Flibrecmc.git diff --git a/target/linux/brcm63xx/patches-2.6.35/040-bcm963xx_flashmap.patch b/target/linux/brcm63xx/patches-2.6.35/040-bcm963xx_flashmap.patch index c1b424d5d8..4835a159ae 100644 --- a/target/linux/brcm63xx/patches-2.6.35/040-bcm963xx_flashmap.patch +++ b/target/linux/brcm63xx/patches-2.6.35/040-bcm963xx_flashmap.patch @@ -73,7 +73,7 @@ Signed-off-by: Axel Gembe +obj-$(CONFIG_MTD_BCM963XX) += bcm963xx-flash.o --- /dev/null +++ b/drivers/mtd/maps/bcm963xx-flash.c -@@ -0,0 +1,314 @@ +@@ -0,0 +1,288 @@ +/* + * Copyright (C) 2006-2008 Florian Fainelli + * Mike Albon @@ -158,6 +158,7 @@ Signed-off-by: Axel Gembe + sscanf(buf->kernelAddress, "%u", &kerneladdr); + sscanf(buf->kernelLength, "%u", &kernellen); + sscanf(buf->totalLength, "%u", &totallen); ++ sscanf(buf->rootLength, "%u", &rootfslen); + tagversion = &(buf->tagVersion[0]); + boardid = &(buf->boardid[0]); + @@ -175,33 +176,6 @@ Signed-off-by: Axel Gembe + return -EINVAL; + } + -+ // if (SQUASHFS_MAGIC != le32_to_cpu(sb.s_magic) ) { -+ printk(KERN_DEBUG PFX "Squash magic %08lx: Found: %08lx\n", (long unsigned int)SQUASHFS_MAGIC, (long unsigned int)le32_to_cpu(sb.s_magic)); -+ if ((uint32_t)SQUASHFS_MAGIC != (uint32_t)le32_to_cpu(sb.s_magic) ) { -+ /* Not a squashfs image */ -+ printk(KERN_DEBUG PFX "No squashfs image in \"%s\"\n", master->name); -+ printk(KERN_DEBUG PFX "Jffs magic %04x: Found: %04x\n", (uint16_t)(JFFS2_MAGIC_BITMASK), *(uint16_t *)(&sb)); -+ if (*(uint16_t *)(&sb) == JFFS2_MAGIC_BITMASK) { -+ printk(KERN_DEBUG PFX "jffs image in \"%s\"\n", master->name); -+ /* Is JFFS2 so have rootfslen so that true length gets calculated */ -+ rootfslen = master->size - master->erasesize - offset; -+ } else { -+ /* We only recognize squashfs and jffs2. If it's not either of these, -+ don't create a rootfs partition. */ -+ printk(KERN_INFO PFX "No known root filesystem in \"%s\"\n", master->name); -+ rootfslen = 0; -+ } -+ } else { -+ /* Is a squash image so find where the squash ends */ -+ if (le64_to_cpu((sb.bytes_used)) <= 0) { -+ printk(KERN_ALERT PFX "split_squashfs: squashfs is empty in \"%s\"\n", -+ master->name); -+ return 0; -+ } -+ -+ rootfslen = (u32) le64_to_cpu(sb.bytes_used); -+ } -+ + rootfslen = ( ( rootfslen % master->erasesize ) > 0 ? (((rootfslen / master->erasesize) + 1 ) * master->erasesize) : rootfslen); + totallen = rootfslen + kernellen + sizeof(struct bcm_tag); +