Loading drivers/mtd/bcm63xxpart.c +32 −22 Original line number Diff line number Diff line Loading @@ -124,13 +124,11 @@ static int bcm63xx_read_image_tag(struct mtd_info *master, const char *name, return 1; } static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, const struct mtd_partition **pparts, struct mtd_part_parser_data *data) static int bcm63xx_parse_cfe_nor_partitions(struct mtd_info *master, const struct mtd_partition **pparts, struct bcm963xx_nvram *nvram) { /* CFE, NVRAM and global Linux are always present */ int nrparts = 3, curpart = 0; struct bcm963xx_nvram *nvram = NULL; struct bcm_tag *buf = NULL; struct mtd_partition *parts; int ret; Loading @@ -141,17 +139,6 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, int i; bool rootfs_first = false; if (bcm63xx_detect_cfe(master)) return -EINVAL; nvram = vzalloc(sizeof(*nvram)); if (!nvram) return -ENOMEM; ret = bcm63xx_read_nvram(master, nvram); if (ret) goto out; cfe_erasesize = max_t(uint32_t, master->erasesize, BCM963XX_CFE_BLOCK_SIZE); Loading @@ -159,12 +146,9 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, nvramlen = nvram->psi_size * SZ_1K; nvramlen = roundup(nvramlen, cfe_erasesize); /* Allocate memory for buffer */ buf = vmalloc(sizeof(struct bcm_tag)); if (!buf) { ret = -ENOMEM; goto out; } if (!buf) return -ENOMEM; /* Get the tag */ ret = bcm63xx_read_image_tag(master, "rootfs", cfelen, buf); Loading Loading @@ -234,7 +218,6 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, if (kernellen > 0) nrparts++; /* Ask kernel for more memory */ parts = kzalloc(sizeof(*parts) * nrparts + 10 * nrparts, GFP_KERNEL); if (!parts) { ret = -ENOMEM; Loading Loading @@ -292,13 +275,40 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, ret = 0; out: vfree(nvram); vfree(buf); if (ret) return ret; return nrparts; } static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, const struct mtd_partition **pparts, struct mtd_part_parser_data *data) { struct bcm963xx_nvram *nvram = NULL; int ret; if (bcm63xx_detect_cfe(master)) return -EINVAL; nvram = vzalloc(sizeof(*nvram)); if (!nvram) return -ENOMEM; ret = bcm63xx_read_nvram(master, nvram); if (ret) goto out; if (!mtd_type_is_nand(master)) ret = bcm63xx_parse_cfe_nor_partitions(master, pparts, nvram); else ret = -EINVAL; out: vfree(nvram); return ret; }; static struct mtd_part_parser bcm63xx_cfe_parser = { Loading Loading
drivers/mtd/bcm63xxpart.c +32 −22 Original line number Diff line number Diff line Loading @@ -124,13 +124,11 @@ static int bcm63xx_read_image_tag(struct mtd_info *master, const char *name, return 1; } static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, const struct mtd_partition **pparts, struct mtd_part_parser_data *data) static int bcm63xx_parse_cfe_nor_partitions(struct mtd_info *master, const struct mtd_partition **pparts, struct bcm963xx_nvram *nvram) { /* CFE, NVRAM and global Linux are always present */ int nrparts = 3, curpart = 0; struct bcm963xx_nvram *nvram = NULL; struct bcm_tag *buf = NULL; struct mtd_partition *parts; int ret; Loading @@ -141,17 +139,6 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, int i; bool rootfs_first = false; if (bcm63xx_detect_cfe(master)) return -EINVAL; nvram = vzalloc(sizeof(*nvram)); if (!nvram) return -ENOMEM; ret = bcm63xx_read_nvram(master, nvram); if (ret) goto out; cfe_erasesize = max_t(uint32_t, master->erasesize, BCM963XX_CFE_BLOCK_SIZE); Loading @@ -159,12 +146,9 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, nvramlen = nvram->psi_size * SZ_1K; nvramlen = roundup(nvramlen, cfe_erasesize); /* Allocate memory for buffer */ buf = vmalloc(sizeof(struct bcm_tag)); if (!buf) { ret = -ENOMEM; goto out; } if (!buf) return -ENOMEM; /* Get the tag */ ret = bcm63xx_read_image_tag(master, "rootfs", cfelen, buf); Loading Loading @@ -234,7 +218,6 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, if (kernellen > 0) nrparts++; /* Ask kernel for more memory */ parts = kzalloc(sizeof(*parts) * nrparts + 10 * nrparts, GFP_KERNEL); if (!parts) { ret = -ENOMEM; Loading Loading @@ -292,13 +275,40 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, ret = 0; out: vfree(nvram); vfree(buf); if (ret) return ret; return nrparts; } static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, const struct mtd_partition **pparts, struct mtd_part_parser_data *data) { struct bcm963xx_nvram *nvram = NULL; int ret; if (bcm63xx_detect_cfe(master)) return -EINVAL; nvram = vzalloc(sizeof(*nvram)); if (!nvram) return -ENOMEM; ret = bcm63xx_read_nvram(master, nvram); if (ret) goto out; if (!mtd_type_is_nand(master)) ret = bcm63xx_parse_cfe_nor_partitions(master, pparts, nvram); else ret = -EINVAL; out: vfree(nvram); return ret; }; static struct mtd_part_parser bcm63xx_cfe_parser = { Loading