summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2016-03-14 12:36:33 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2016-04-08 13:34:45 +0200
commitae147875bc2e17b2449c6615eb0904814e18e9c8 (patch)
tree02fddc6741578682b703aa0865f7647fc38eb741
parent6ab4aa819a8f4ea322c65fad29077754bdefd990 (diff)
downloadbarebox-ae147875bc2e17b2449c6615eb0904814e18e9c8.tar.gz
barebox-ae147875bc2e17b2449c6615eb0904814e18e9c8.tar.xz
mtd: ubi: make ubi_detach_mtd_dev ubi internal
We want to extend the functionality of the ubi detach function, but we don't want to change the original detach function to make UBI updates easier. This adds a barebox specific detach function which encapsulates the original UBI function. Also this makes the original ubi detach function internal to ubi. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--commands/ubi.c2
-rw-r--r--drivers/mtd/ubi/barebox.c20
-rw-r--r--drivers/mtd/ubi/ubi.h1
-rw-r--r--include/mtd/ubi-user.h2
4 files changed, 23 insertions, 2 deletions
diff --git a/commands/ubi.c b/commands/ubi.c
index 9463127151..8e35787fa2 100644
--- a/commands/ubi.c
+++ b/commands/ubi.c
@@ -128,7 +128,7 @@ static int do_ubidetach(int argc, char *argv[])
return COMMAND_ERROR_USAGE;
ubi_num = simple_strtoul(argv[1], NULL, 0);
- ret = ubi_detach_mtd_dev(ubi_num, 1);
+ ret = ubi_detach(ubi_num);
if (ret)
printf("failed to detach: %s\n", strerror(-ret));
diff --git a/drivers/mtd/ubi/barebox.c b/drivers/mtd/ubi/barebox.c
index fe71a8d609..1643f7c015 100644
--- a/drivers/mtd/ubi/barebox.c
+++ b/drivers/mtd/ubi/barebox.c
@@ -260,3 +260,23 @@ void ubi_cdev_remove(struct ubi_device *ubi)
devfs_remove(cdev);
kfree(cdev->name);
}
+
+/**
+ * ubi_detach - detach an UBI device
+ * @ubi_num: The UBI device number
+ *
+ * @return: 0 for success, negative error code otherwise
+ */
+int ubi_detach(int ubi_num)
+{
+ struct ubi_device *ubi;
+
+ if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES)
+ return -EINVAL;
+
+ ubi = ubi_devices[ubi_num];
+ if (!ubi)
+ return -ENOENT;
+
+ return ubi_detach_mtd_dev(ubi_num, 1);
+}
diff --git a/drivers/mtd/ubi/ubi.h b/drivers/mtd/ubi/ubi.h
index 03a36d2e76..a8ed0d7710 100644
--- a/drivers/mtd/ubi/ubi.h
+++ b/drivers/mtd/ubi/ubi.h
@@ -809,6 +809,7 @@ int ubi_io_write_vid_hdr(struct ubi_device *ubi, int pnum,
struct ubi_vid_hdr *vid_hdr);
/* build.c */
+int ubi_detach_mtd_dev(int ubi_num, int anyway);
struct ubi_device *ubi_get_device(int ubi_num);
void ubi_put_device(struct ubi_device *ubi);
struct ubi_device *ubi_get_by_major(int major);
diff --git a/include/mtd/ubi-user.h b/include/mtd/ubi-user.h
index 2000ef2fd0..2002548526 100644
--- a/include/mtd/ubi-user.h
+++ b/include/mtd/ubi-user.h
@@ -406,6 +406,6 @@ struct ubi_set_vol_prop_req {
int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
int vid_hdr_offset, int max_beb_per1024);
-int ubi_detach_mtd_dev(int ubi_num, int anyway);
+int ubi_detach(int ubi_num);
#endif /* __UBI_USER_H__ */