projects
/
openwrt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't register GPIO 0 as LED. it drives the chip select line of the SPI flash on...
[openwrt.git]
/
target
/
linux
/
ar7
/
files
/
drivers
/
mtd
/
ar7part.c
diff --git
a/target/linux/ar7/files/drivers/mtd/ar7part.c
b/target/linux/ar7/files/drivers/mtd/ar7part.c
index
775041d
..
3d160d4
100644
(file)
--- a/
target/linux/ar7/files/drivers/mtd/ar7part.c
+++ b/
target/linux/ar7/files/drivers/mtd/ar7part.c
@@
-26,7
+26,13
@@
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/bootmem.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/bootmem.h>
-#include <linux/squashfs_fs.h>
+#include <linux/magic.h>
+
+#define AR7_PARTS 4
+#define ROOT_OFFSET 0xe0000
+
+#define LOADER_MAGIC1 le32_to_cpu(0xfeedfa42)
+#define LOADER_MAGIC2 le32_to_cpu(0xfeed1281)
struct ar7_bin_rec {
unsigned int checksum;
struct ar7_bin_rec {
unsigned int checksum;
@@
-34,7
+40,7
@@
struct ar7_bin_rec {
unsigned int address;
};
unsigned int address;
};
-static struct mtd_partition ar7_parts[
5
];
+static struct mtd_partition ar7_parts[
AR7_PARTS
];
static int create_mtd_partitions(struct mtd_info *master,
struct mtd_partition **pparts,
static int create_mtd_partitions(struct mtd_info *master,
struct mtd_partition **pparts,
@@
-43,12
+49,10
@@
static int create_mtd_partitions(struct mtd_info *master,
struct ar7_bin_rec header;
unsigned int offset, len;
unsigned int pre_size = master->erasesize, post_size = 0;
struct ar7_bin_rec header;
unsigned int offset, len;
unsigned int pre_size = master->erasesize, post_size = 0;
- unsigned int root_offset =
0xe0000
;
+ unsigned int root_offset =
ROOT_OFFSET
;
int retries = 10;
int retries = 10;
- printk(KERN_INFO "Parsing AR7 partition map...\n");
-
ar7_parts[0].name = "loader";
ar7_parts[0].offset = 0;
ar7_parts[0].size = master->erasesize;
ar7_parts[0].name = "loader";
ar7_parts[0].offset = 0;
ar7_parts[0].size = master->erasesize;
@@
-62,12
+66,12
@@
static int create_mtd_partitions(struct mtd_info *master,
do { /* Try 10 blocks starting from master->erasesize */
offset = pre_size;
master->read(master, offset,
do { /* Try 10 blocks starting from master->erasesize */
offset = pre_size;
master->read(master, offset,
- sizeof(header), &len, (u
_char
*)&header);
+ sizeof(header), &len, (u
8
*)&header);
if (!strncmp((char *)&header, "TIENV0.8", 8))
ar7_parts[1].offset = pre_size;
if (!strncmp((char *)&header, "TIENV0.8", 8))
ar7_parts[1].offset = pre_size;
- if (header.checksum ==
0xfeedfa42
)
+ if (header.checksum ==
LOADER_MAGIC1
)
break;
break;
- if (header.checksum ==
0xfeed1281
)
+ if (header.checksum ==
LOADER_MAGIC2
)
break;
pre_size += master->erasesize;
} while (retries--);
break;
pre_size += master->erasesize;
} while (retries--);
@@
-80,19
+84,19
@@
static int create_mtd_partitions(struct mtd_info *master,
}
switch (header.checksum) {
}
switch (header.checksum) {
- case
0xfeedfa42
:
+ case
LOADER_MAGIC1
:
while (header.length) {
offset += sizeof(header) + header.length;
master->read(master, offset, sizeof(header),
while (header.length) {
offset += sizeof(header) + header.length;
master->read(master, offset, sizeof(header),
- &len, (u
_char
*)&header);
+ &len, (u
8
*)&header);
}
root_offset = offset + sizeof(header) + 4;
break;
}
root_offset = offset + sizeof(header) + 4;
break;
- case
0xfeed1281
:
+ case
LOADER_MAGIC2
:
while (header.length) {
offset += sizeof(header) + header.length;
master->read(master, offset, sizeof(header),
while (header.length) {
offset += sizeof(header) + header.length;
master->read(master, offset, sizeof(header),
- &len, (u
_char
*)&header);
+ &len, (u
8
*)&header);
}
root_offset = offset + sizeof(header) + 4 + 0xff;
root_offset &= ~(u32)0xff;
}
root_offset = offset + sizeof(header) + 4 + 0xff;
root_offset &= ~(u32)0xff;
@@
-103,7
+107,7
@@
static int create_mtd_partitions(struct mtd_info *master,
}
master->read(master, root_offset,
}
master->read(master, root_offset,
- sizeof(header), &len, (u
_char
*)&header);
+ sizeof(header), &len, (u
8
*)&header);
if (header.checksum != SQUASHFS_MAGIC) {
root_offset += master->erasesize - 1;
root_offset &= ~(master->erasesize - 1);
if (header.checksum != SQUASHFS_MAGIC) {
root_offset += master->erasesize - 1;
root_offset &= ~(master->erasesize - 1);
@@
-120,7
+124,7
@@
static int create_mtd_partitions(struct mtd_info *master,
ar7_parts[3].mask_flags = 0;
*pparts = ar7_parts;
ar7_parts[3].mask_flags = 0;
*pparts = ar7_parts;
- return
4
;
+ return
AR7_PARTS
;
}
static struct mtd_part_parser ar7_parser = {
}
static struct mtd_part_parser ar7_parser = {
This page took
0.022706 seconds
and
4
git commands to generate.