rockchip: add Bananapi-R2 Pro board support
[openwrt/openwrt.git] / target / linux / generic / files / drivers / platform / mikrotik / rb_softconfig.c
index 453e1347b2cc1a2f2bc0005c95bbd2fa2991bedd..5acff6aa9184de40f60b3cb4f43964ce0584e336 100644 (file)
@@ -56,7 +56,7 @@
 
 #include "routerboot.h"
 
-#define RB_SOFTCONFIG_VER              "0.04"
+#define RB_SOFTCONFIG_VER              "0.05"
 #define RB_SC_PR_PFX                   "[rb_softconfig] "
 
 #define RB_SC_HAS_WRITE_SUPPORT        true
@@ -694,9 +694,8 @@ mtdfail:
 
 static struct kobj_attribute sc_kattrcommit = __ATTR(commit, RB_SC_RMODE|RB_SC_WMODE, sc_commit_show, sc_commit_store);
 
-int __init rb_softconfig_init(struct kobject *rb_kobj)
+int rb_softconfig_init(struct kobject *rb_kobj, struct mtd_info *mtd)
 {
-       struct mtd_info *mtd;
        size_t bytes_read, buflen;
        const u8 *buf;
        int i, ret;
@@ -705,20 +704,19 @@ int __init rb_softconfig_init(struct kobject *rb_kobj)
        sc_buf = NULL;
        sc_kobj = NULL;
 
-       // TODO allow override
-       mtd = get_mtd_device_nm(RB_MTD_SOFT_CONFIG);
-       if (IS_ERR(mtd))
+       ret = __get_mtd_device(mtd);
+       if (ret)
                return -ENODEV;
 
        sc_buflen = mtd->size;
        sc_buf = kmalloc(sc_buflen, GFP_KERNEL);
        if (!sc_buf) {
-               put_mtd_device(mtd);
+               __put_mtd_device(mtd);
                return -ENOMEM;
        }
 
        ret = mtd_read(mtd, 0, sc_buflen, &bytes_read, sc_buf);
-       put_mtd_device(mtd);
+       __put_mtd_device(mtd);
 
        if (ret)
                goto fail;
@@ -788,8 +786,10 @@ fail:
        return ret;
 }
 
-void __exit rb_softconfig_exit(void)
+void rb_softconfig_exit(void)
 {
        kobject_put(sc_kobj);
+       sc_kobj = NULL;
        kfree(sc_buf);
+       sc_buf = NULL;
 }