From: Stefan Christ <s.christ@phytec.de>
To: barebox@lists.infradead.org
Subject: [PATCH] ARM: i.MX: bbu-internal: call detect for mmc devices
Date: Thu, 25 Feb 2016 12:15:22 +0100 [thread overview]
Message-ID: <1456398922-8253-1-git-send-email-s.christ@phytec.de> (raw)
For the MMC update_handler it makes sense to probe the device before
writing to it. If the device is not probed yet, you get errors like
$ barebox_update -y -t mmc0 /mnt/tftp/barebox.bin
barebox_update: Read-only file system
The code is nearly equivalent to
$ detect mmc0
$ barebox_update -y -t mmc0 /mnt/tftp/barebox.bin
The function device_detect_by_name also handles device names with
partition suffix like "/dev/mmc3.boot0".
While at it, use the macro BIT for the bit field.
Signed-off-by: Stefan Christ <s.christ@phytec.de>
---
arch/arm/mach-imx/imx-bbu-internal.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-imx/imx-bbu-internal.c b/arch/arm/mach-imx/imx-bbu-internal.c
index ac90c53..1ecc0d7 100644
--- a/arch/arm/mach-imx/imx-bbu-internal.c
+++ b/arch/arm/mach-imx/imx-bbu-internal.c
@@ -34,9 +34,10 @@
#define FLASH_HEADER_OFFSET_MMC 0x400
-#define IMX_INTERNAL_FLAG_NAND (1 << 0)
-#define IMX_INTERNAL_FLAG_KEEP_DOSPART (1 << 1)
-#define IMX_INTERNAL_FLAG_ERASE (1 << 2)
+#define IMX_INTERNAL_FLAG_NAND BIT(0)
+#define IMX_INTERNAL_FLAG_KEEP_DOSPART BIT(1)
+#define IMX_INTERNAL_FLAG_ERASE BIT(2)
+#define IMX_INTERNAL_FLAG_PROBE BIT(3)
struct imx_internal_bbu_handler {
struct bbu_handler handler;
@@ -52,8 +53,21 @@ struct imx_internal_bbu_handler {
static int imx_bbu_write_device(struct imx_internal_bbu_handler *imx_handler,
struct bbu_data *data, void *buf, int image_len)
{
+ const char *devname;
int fd, ret;
+ if (imx_handler->flags & IMX_INTERNAL_FLAG_PROBE) {
+ devname = data->devicefile;
+ if (!strncmp(devname, "/dev/", 5))
+ devname += 5;
+ ret = device_detect_by_name(devname);
+ if (ret) {
+ printf("Detecting device %s failed: %s\n", devname,
+ strerror(-ret));
+ return ret;
+ }
+ }
+
fd = open(data->devicefile, O_RDWR | O_CREAT);
if (fd < 0)
return fd;
@@ -487,7 +501,8 @@ int imx6_bbu_internal_mmc_register_handler(const char *name, char *devicefile,
imx_handler = __init_handler(name, devicefile, flags);
imx_handler->flash_header_offset = FLASH_HEADER_OFFSET_MMC;
- imx_handler->flags = IMX_INTERNAL_FLAG_KEEP_DOSPART;
+ imx_handler->flags = IMX_INTERNAL_FLAG_KEEP_DOSPART |
+ IMX_INTERNAL_FLAG_PROBE;
imx_handler->handler.handler = imx_bbu_internal_v2_update;
return __register_handler(imx_handler);
--
1.9.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next reply other threads:[~2016-02-25 11:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-25 11:15 Stefan Christ [this message]
2016-03-01 9:19 ` [PATCH] ARM: i.MX: bbu-internal: call detect for mmc devices Stefan Christ
2016-03-01 9:22 ` Sascha Hauer
2016-03-01 10:56 ` Stefan Christ
2016-03-02 18:54 ` Sascha Hauer
2016-03-03 7:30 ` Stefan Christ
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=1456398922-8253-1-git-send-email-s.christ@phytec.de \
--to=s.christ@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.