From: Simon Arlott <simon@fire.lp0.eu>
To: Ralf Baechle <ralf@linux-mips.org>,
David Woodhouse <dwmw2@infradead.org>,
Brian Norris <computersforpeace@gmail.com>,
Kevin Cernekee <cernekee@gmail.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Jonas Gorski <jogo@openwrt.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
MIPS Mailing List <linux-mips@linux-mips.org>,
MTD Maling List <linux-mtd@lists.infradead.org>
Subject: [PATCH linux-next v4 10/11] mtd: bcm63xxpart: Move NOR flash layout to a separate function
Date: Sun, 13 Dec 2015 22:52:15 +0000 [thread overview]
Message-ID: <566DF69F.5090700@simon.arlott.org.uk> (raw)
In-Reply-To: <566DF43B.5010400@simon.arlott.org.uk>
Move the NOR flash layout to a separate function to allow the NAND flash
layout to be supported.
Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
---
v4: New patch.
drivers/mtd/bcm63xxpart.c | 54 ++++++++++++++++++++++++++++-------------------
1 file changed, 32 insertions(+), 22 deletions(-)
diff --git a/drivers/mtd/bcm63xxpart.c b/drivers/mtd/bcm63xxpart.c
index 41aa202..26c38a1 100644
--- a/drivers/mtd/bcm63xxpart.c
+++ b/drivers/mtd/bcm63xxpart.c
@@ -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;
@@ -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);
@@ -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);
@@ -234,7 +218,6 @@ invalid_tag:
if (kernellen > 0)
nrparts++;
- /* Ask kernel for more memory */
parts = kzalloc(sizeof(*parts) * nrparts + 10 * nrparts, GFP_KERNEL);
if (!parts) {
ret = -ENOMEM;
@@ -292,13 +275,40 @@ invalid_tag:
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 = {
--
2.1.4
--
Simon Arlott
next prev parent reply other threads:[~2015-12-13 22:52 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-13 22:42 [PATCH linux-next v4 00/11] mtd: bcm63xxpart: Add NAND partitioning support Simon Arlott
2015-12-13 22:44 ` Simon Arlott
2015-12-13 22:45 ` [PATCH linux-next v4 01/11] MIPS: bcm963xx: Add Broadcom BCM963xx board nvram data structure Simon Arlott
2015-12-13 22:46 ` [PATCH linux-next v4 02/11] MIPS: bcm63xx: nvram: Use nvram structure definition from header file Simon Arlott
2015-12-13 22:46 ` [PATCH linux-next v4 03/11] MIPS: bcm963xx: Move Broadcom BCM963xx image tag data structure Simon Arlott
2015-12-13 22:47 ` [PATCH linux-next v4 04/11] MIPS: bcm963xx: Move extended flash address to bcm_tag header file Simon Arlott
2015-12-13 22:48 ` [PATCH linux-next v4 05/11] MIPS: bcm963xx: Update bcm_tag field image_sequence Simon Arlott
2015-12-13 22:49 ` [PATCH linux-next v4 06/11] mtd: bcm63xxpart: Remove dependency on mach-bcm63xx Simon Arlott
2016-02-12 18:49 ` Brian Norris
2015-12-13 22:50 ` [PATCH linux-next v4 07/11] MIPS: bcm63xx: nvram: Remove unused bcm63xx_nvram_get_psi_size() function Simon Arlott
2016-01-26 19:16 ` Brian Norris
2016-02-12 18:53 ` Brian Norris
2015-12-13 22:51 ` [PATCH linux-next v4 08/11] mtd: bcm63xxpart: Extract read of image tag to separate function Simon Arlott
2015-12-13 22:51 ` [PATCH linux-next v4 09/11] mtd: bcm63xxpart: Null terminate and validate conversion of flash strings Simon Arlott
2015-12-13 22:52 ` Simon Arlott [this message]
2015-12-13 22:53 ` [PATCH linux-next v4 11/11] mtd: bcm63xxpart: Add NAND partitioning support Simon Arlott
2016-01-27 23:07 ` Brian Norris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=566DF69F.5090700@simon.arlott.org.uk \
--to=simon@fire.lp0.eu \
--cc=cernekee@gmail.com \
--cc=computersforpeace@gmail.com \
--cc=dwmw2@infradead.org \
--cc=f.fainelli@gmail.com \
--cc=jogo@openwrt.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux-mtd@lists.infradead.org \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).