From: Teresa Remmet <t.remmet@phytec.de>
To: barebox@lists.infradead.org
Subject: [PATCH 1/4] OMAP: xload: Factor out reading image from mtd partition
Date: Wed, 29 Jun 2016 12:01:05 +0200 [thread overview]
Message-ID: <1467194468-31049-1-git-send-email-t.remmet@phytec.de> (raw)
Remove code duplication of reading images out of mtd partitions.
Signed-off-by: Teresa Remmet <t.remmet@phytec.de>
---
arch/arm/mach-omap/xload.c | 71 ++++++++++++++--------------------------------
1 file changed, 22 insertions(+), 49 deletions(-)
diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c
index 7793819..91890b2 100644
--- a/arch/arm/mach-omap/xload.c
+++ b/arch/arm/mach-omap/xload.c
@@ -36,7 +36,7 @@ static void *read_image_head(const char *name)
cdev = cdev_open(name, O_RDONLY);
if (!cdev) {
- printf("failed to open partition\n");
+ printf("failed to open %s\n", name);
return NULL;
}
@@ -44,7 +44,7 @@ static void *read_image_head(const char *name)
cdev_close(cdev);
if (ret != ARM_HEAD_SIZE) {
- printf("failed to read from partition\n");
+ printf("failed to read from %s\n", name);
return NULL;
}
@@ -63,18 +63,14 @@ static unsigned int get_image_size(void *head)
return ret;
}
-static void *omap_xload_boot_nand(int offset, int part_size)
+static void *read_mtd_barebox(const char *partition)
{
int ret;
int size;
void *to, *header;
struct cdev *cdev;
- devfs_add_partition("nand0", offset, part_size,
- DEVFS_PARTITION_FIXED, "x");
- dev_add_bb_dev("x", "bbx");
-
- header = read_image_head("bbx");
+ header = read_image_head(partition);
if (header == NULL)
return NULL;
@@ -86,21 +82,30 @@ static void *omap_xload_boot_nand(int offset, int part_size)
to = xmalloc(size);
- cdev = cdev_open("bbx", O_RDONLY);
+ cdev = cdev_open(partition, O_RDONLY);
if (!cdev) {
- printf("failed to open nand\n");
+ printf("failed to open partition\n");
return NULL;
}
ret = cdev_read(cdev, to, size, 0, 0);
if (ret != size) {
- printf("failed to read from nand\n");
+ printf("failed to read from partition\n");
return NULL;
}
return to;
}
+static void *omap_xload_boot_nand(struct omap_barebox_part *part)
+{
+ devfs_add_partition("nand0", part->nand_offset, part->nand_size,
+ DEVFS_PARTITION_FIXED, "x");
+ dev_add_bb_dev("x", "bbx");
+
+ return read_mtd_barebox("bbx");
+}
+
static void *omap_xload_boot_mmc(void)
{
int ret;
@@ -138,41 +143,12 @@ static void *omap_xload_boot_mmc(void)
return buf;
}
-static void *omap_xload_boot_spi(int offset, int part_size)
+static void *omap_xload_boot_spi(struct omap_barebox_part *part)
{
- int ret;
- int size;
- void *to, *header;
- struct cdev *cdev;
-
- devfs_add_partition("m25p0", offset, part_size,
+ devfs_add_partition("m25p0", part->nor_offset, part->nor_size,
DEVFS_PARTITION_FIXED, "x");
- header = read_image_head("x");
- if (header == NULL)
- return NULL;
-
- size = get_image_size(header);
- if (!size) {
- printf("failed to get image size\n");
- return NULL;
- }
-
- to = xmalloc(size);
-
- cdev = cdev_open("x", O_RDONLY);
- if (!cdev) {
- printf("failed to open spi flash\n");
- return NULL;
- }
-
- ret = cdev_read(cdev, to, size, 0, 0);
- if (ret != size) {
- printf("failed to read from spi flash\n");
- return NULL;
- }
-
- return to;
+ return read_mtd_barebox("x");
}
static void *omap4_xload_boot_usb(void){
@@ -323,13 +299,11 @@ static __noreturn int omap_xload(void)
break;
case BOOTSOURCE_NAND:
printf("booting from NAND\n");
- func = omap_xload_boot_nand(barebox_part->nand_offset,
- barebox_part->nand_size);
+ func = omap_xload_boot_nand(barebox_part);
break;
case BOOTSOURCE_SPI:
printf("booting from SPI\n");
- func = omap_xload_boot_spi(barebox_part->nor_offset,
- barebox_part->nor_size);
+ func = omap_xload_boot_spi(barebox_part);
break;
case BOOTSOURCE_SERIAL:
if (IS_ENABLED(CONFIG_OMAP_SERIALBOOT)) {
@@ -347,8 +321,7 @@ static __noreturn int omap_xload(void)
}
default:
printf("unknown boot source. Fall back to nand\n");
- func = omap_xload_boot_nand(barebox_part->nand_offset,
- barebox_part->nand_size);
+ func = omap_xload_boot_nand(barebox_part);
break;
}
--
1.9.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next reply other threads:[~2016-06-29 10:03 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-29 10:01 Teresa Remmet [this message]
2016-06-29 10:01 ` [PATCH 2/4] OMAP: xload: nand: Check for redundant barebox partition Teresa Remmet
2016-06-29 10:01 ` [PATCH 3/4] OMAP: am33xx_bbu_nand: Extent barebox update handler Teresa Remmet
2016-06-29 10:01 ` [PATCH 4/4] ARM: phytec-som-am335x: Add backup partition for barebox Teresa Remmet
2016-06-30 6:37 ` [PATCH 1/4] OMAP: xload: Factor out reading image from mtd partition Sascha Hauer
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=1467194468-31049-1-git-send-email-t.remmet@phytec.de \
--to=t.remmet@phytec.de \
--cc=barebox@lists.infradead.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