Changeset 13821
- Timestamp:
- 02/03/10 01:25:49 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/linux/pb42/linux-2.6.23/drivers/mtd/devices/ar7100_flash.c
r13760 r13821 170 170 return 0; 171 171 } 172 172 int guessbootsize(void *offset,unsigned int maxscan) 173 { 174 unsigned int i; 175 unsigned int *ofs = (unsigned int *)offset; 176 maxscan-=65536; 177 maxscan/=4; 178 for (i=0;i<maxscan;i+=16384) 179 { 180 if (ofs[i] == 0x6d000080) 181 { 182 printk(KERN_EMERG "redboot or compatible detected\n"); 183 return i; // redboot, lzma image 184 } 185 if (ofs[i] == 0x27051956) 186 { 187 printk(KERN_EMERG "uboot detected\n"); 188 return i; // uboot, lzma image 189 } 190 } 191 return -1; 192 } 173 193 static struct mtd_partition dir_parts[] = { 174 194 #ifdef CONFIG_MTD_FLASH_16MB … … 274 294 int compex = 0; 275 295 if (!strncmp((char *)(buf + 0x295a), "myloram.bin", 11)) { 276 /* { name: "RedBoot", offset: 0, size: 0x40000, },//, mask_flags: MTD_WRITEABLE, },277 { name: "linux", offset: 0x40000, size: 0x390000, },278 #endif279 { name: "rootfs", offset: 0x0, size: 0x2b0000,}, //must be detected280 { name: "ddwrt", offset: 0x0, size: 0x2b0000,}, //must be detected281 { name: "nvram", offset: 0x3d0000, size: 0x10000, },282 { name: "FIS directory", offset: 0x3e0000, size: 0x10000, },283 { name: "board_config", offset: 0x3f0000, size: 0x10000, },284 { name: "fullflash", offset: 0x3f0000, size: 0x10000, },285 { name: NULL, },*/286 296 printk(KERN_EMERG "Compex WP543 device detected\n"); 287 297 dir_parts[0].size = 0x30000; … … 293 303 dir_parts[6].offset = mtd->size - mtd->erasesize; 294 304 compex = 1; 305 }else{ 306 int guess = guessbootsize(buf,mtd->size); 307 if (guess>0) 308 { 309 printk(KERN_EMERG "bootloader size = %X\n",guess); 310 dir_parts[0].size = guess; 311 dir_parts[0].offset = 0; 312 dir_parts[1].offset = guess; 313 dir_parts[1].size = 0; 314 } 315 295 316 } 296 317 … … 339 360 rootsize = dir_parts[4].offset - offset; //size of rootfs aligned to nvram offset 340 361 #ifdef CONFIG_AR9100 341 dir_parts[1].offset = 0x40000;362 // dir_parts[1].offset = 0x40000; 342 363 dir_parts[1].size = (dir_parts[2].offset - dir_parts[1].offset) + rootsize; 343 364 break;
Note: See TracChangeset
for help on using the changeset viewer.
