From 95099d4622f8cb224d94e314c7a8e0df60b13f87 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 09 Dec 2023 08:38:01 +0000
Subject: [PATCH] enable docker ppp

---
 kernel/drivers/soc/rockchip/mtd_vendor_storage.c |   54 ++++++++++++++++++------------------------------------
 1 files changed, 18 insertions(+), 36 deletions(-)

diff --git a/kernel/drivers/soc/rockchip/mtd_vendor_storage.c b/kernel/drivers/soc/rockchip/mtd_vendor_storage.c
index c840ead..2f4e4f8 100644
--- a/kernel/drivers/soc/rockchip/mtd_vendor_storage.c
+++ b/kernel/drivers/soc/rockchip/mtd_vendor_storage.c
@@ -16,38 +16,12 @@
 #include <linux/soc/rockchip/rk_vendor_storage.h>
 #include <linux/uaccess.h>
 #include <linux/vmalloc.h>
+#include <misc/rkflash_vendor_storage.h>
 
 #define MTD_VENDOR_PART_START		0
-#define MTD_VENDOR_PART_SIZE		8
+#define MTD_VENDOR_PART_SIZE		FLASH_VENDOR_PART_SIZE
 #define MTD_VENDOR_PART_NUM		1
-#define MTD_VENDOR_TAG			0x524B5644
-
-struct rk_vendor_req {
-	u32 tag;
-	u16 id;
-	u16 len;
-	u8 data[1024];
-};
-
-struct vendor_item {
-	u16  id;
-	u16  offset;
-	u16  size;
-	u16  flag;
-};
-
-struct vendor_info {
-	u32	tag;
-	u32	version;
-	u16	next_index;
-	u16	item_num;
-	u16	free_offset;
-	u16	free_size;
-	struct	vendor_item item[62];
-	u8	data[MTD_VENDOR_PART_SIZE * 512 - 512 - 8];
-	u32	hash;
-	u32	version2;
-};
+#define MTD_VENDOR_TAG			VENDOR_HEAD_TAG
 
 struct mtd_nand_info {
 	u32 blk_offset;
@@ -65,16 +39,13 @@
 #define GET_LOCK_FLAG_IO	_IOW('r', 0x53, unsigned int)
 #endif
 
-#define VENDOR_REQ_TAG		0x56524551
-#define VENDOR_READ_IO		_IOW('v', 0x01, unsigned int)
-#define VENDOR_WRITE_IO		_IOW('v', 0x02, unsigned int)
-
 static u8 *g_idb_buffer;
-static struct vendor_info *g_vendor;
+static struct flash_vendor_info *g_vendor;
 static DEFINE_MUTEX(vendor_ops_mutex);
 static struct mtd_info *mtd;
 static const char *vendor_mtd_name = "vnvm";
 static struct mtd_nand_info nand_info;
+static struct platform_device *g_pdev;
 
 static int mtd_vendor_nand_write(void)
 {
@@ -305,7 +276,7 @@
 {
 	long ret = -1;
 	int size;
-	struct rk_vendor_req *v_req;
+	struct RK_VENDOR_REQ *v_req;
 	u32 *page_buf;
 
 	page_buf = kmalloc(4096, GFP_KERNEL);
@@ -314,7 +285,7 @@
 
 	mutex_lock(&vendor_ops_mutex);
 
-	v_req = (struct rk_vendor_req *)page_buf;
+	v_req = (struct RK_VENDOR_REQ *)page_buf;
 
 	switch (cmd) {
 	case VENDOR_READ_IO:
@@ -436,6 +407,8 @@
 
 	g_idb_buffer = NULL;
 	ret = platform_driver_register(&vendor_storage_driver);
+	if (ret)
+		return ret;
 
 	pdev = platform_device_register_simple("mtd_vendor_storage",
 					       -1, NULL, 0);
@@ -443,8 +416,17 @@
 		platform_driver_unregister(&vendor_storage_driver);
 		return PTR_ERR(pdev);
 	}
+	g_pdev = pdev;
 
 	return ret;
 }
 
+static __exit void vendor_storage_deinit(void)
+{
+	platform_device_unregister(g_pdev);
+	platform_driver_unregister(&vendor_storage_driver);
+}
+
 device_initcall_sync(vendor_storage_init);
+module_exit(vendor_storage_deinit);
+MODULE_LICENSE("GPL");

--
Gitblit v1.6.2