From 89226b86665b135fbf4c9eefecccde0c0d0e9f05 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibaut=20VAR=C3=88NE?= <hacks@slashdirt.org>
Date: Fri, 15 May 2020 18:00:08 +0200
Subject: [PATCH] generic: routerboot sysfs: move tag_show_u32()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This routine will be shared between hard and soft config drivers.

Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
Tested-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>
Signed-off-by: Thibaut VARĂˆNE <hacks@slashdirt.org>
---
 .../drivers/platform/mikrotik/rb_hardconfig.c | 25 +++----------------
 .../drivers/platform/mikrotik/routerboot.c    | 19 ++++++++++++++
 .../drivers/platform/mikrotik/routerboot.h    |  1 +
 3 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig.c b/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig.c
index a03aa21b4d5..992689605d2 100644
--- a/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig.c
+++ b/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig.c
@@ -310,25 +310,6 @@ static struct hc_hwopt {
 	},
 };
 
-static ssize_t hc_tag_show_u32(const u8 *pld, u16 pld_len, char *buf)
-{
-	char *out = buf;
-	u32 data;	// cpu-endian
-
-	/* Caller ensures pld_len > 0 */
-	if (pld_len % sizeof(data))
-		return -EINVAL;
-
-	data = *(u32 *)pld;
-
-	do {
-		out += sprintf(out, "0x%08x\n", data);
-		data++;
-	} while ((pld_len -= sizeof(data)));
-
-	return out - buf;
-}
-
 /*
  * The MAC is stored network-endian on all devices, in 2 32-bit segments:
  * <XX:XX:XX:XX> <XX:XX:00:00>. Kernel print has us covered.
@@ -389,7 +370,7 @@ static struct hc_attr {
 } hc_attrs[] = {
 	{
 		.tag_id = RB_ID_FLASH_INFO,
-		.tshow = hc_tag_show_u32,
+		.tshow = routerboot_tag_show_u32s,
 		.kattr = __ATTR(flash_info, S_IRUSR, hc_attr_show, NULL),
 	}, {
 		.tag_id = RB_ID_MAC_ADDRESS_PACK,
@@ -409,11 +390,11 @@ static struct hc_attr {
 		.kattr = __ATTR(board_serial, S_IRUSR, hc_attr_show, NULL),
 	}, {
 		.tag_id = RB_ID_MEMORY_SIZE,
-		.tshow = hc_tag_show_u32,
+		.tshow = routerboot_tag_show_u32s,
 		.kattr = __ATTR(mem_size, S_IRUSR, hc_attr_show, NULL),
 	}, {
 		.tag_id = RB_ID_MAC_ADDRESS_COUNT,
-		.tshow = hc_tag_show_u32,
+		.tshow = routerboot_tag_show_u32s,
 		.kattr = __ATTR(mac_count, S_IRUSR, hc_attr_show, NULL),
 	}, {
 		.tag_id = RB_ID_HW_OPTIONS,
diff --git a/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c b/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c
index f496dd7e0c7..47e4471f8e3 100644
--- a/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c
+++ b/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c
@@ -191,6 +191,25 @@ ssize_t routerboot_tag_show_string(const u8 *pld, u16 pld_len, char *buf)
 	return scnprintf(buf, pld_len+1, "%s\n", pld);
 }
 
+ssize_t routerboot_tag_show_u32s(const u8 *pld, u16 pld_len, char *buf)
+{
+	char *out = buf;
+	u32 data;	// cpu-endian
+
+	/* Caller ensures pld_len > 0 */
+	if (pld_len % sizeof(data))
+		return -EINVAL;
+
+	data = *(u32 *)pld;
+
+	do {
+		out += sprintf(out, "0x%08x\n", data);
+		data++;
+	} while ((pld_len -= sizeof(data)));
+
+	return out - buf;
+}
+
 module_init(routerboot_init);
 module_exit(routerboot_exit);
 
diff --git a/target/linux/generic/files/drivers/platform/mikrotik/routerboot.h b/target/linux/generic/files/drivers/platform/mikrotik/routerboot.h
index 5b644db4fef..67d89808d56 100644
--- a/target/linux/generic/files/drivers/platform/mikrotik/routerboot.h
+++ b/target/linux/generic/files/drivers/platform/mikrotik/routerboot.h
@@ -32,5 +32,6 @@ int __init rb_softconfig_init(struct kobject *rb_kobj);
 void __exit rb_softconfig_exit(void);
 
 ssize_t routerboot_tag_show_string(const u8 *pld, u16 pld_len, char *buf);
+ssize_t routerboot_tag_show_u32s(const u8 *pld, u16 pld_len, char *buf);
 
 #endif /* _ROUTERBOOT_H_ */
-- 
GitLab