From: Thibaut VARÈNE Date: Fri, 15 May 2020 16:00:08 +0000 (+0200) Subject: generic: routerboot sysfs: move tag_show_u32() X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=89226b86665b135fbf4c9eefecccde0c0d0e9f05;p=openwrt%2Fstaging%2Flinusw.git generic: routerboot sysfs: move tag_show_u32() This routine will be shared between hard and soft config drivers. Tested-by: Koen Vandeputte Tested-by: Roger Pueyo Centelles Signed-off-by: Thibaut VARÈNE --- 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 a03aa21b4d..992689605d 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: * . 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 f496dd7e0c..47e4471f8e 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 5b644db4fe..67d89808d5 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_ */