From patchwork Wed Nov 23 14:26:57 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: ARM: mach-orion5x: Use hex2bin that is present in kernel lib Date: Wed, 23 Nov 2011 04:26:57 -0000 From: plaes@plaes.org X-Patchwork-Id: 127316 Message-Id: <1322058417.2472.9.camel@localhost.localdomain> To: linux-arm-kernel@lists.infradead.org Cc: kernel@wantstofly.org, nico@fluxnic.net Hey! I noticed there was some duplicate code under arm/mach-orion5x directory so I ended up with a patch that uses existing library function present in kernel code. I regretfully have to admit that this patch is NOT even compile-tested, but I hope that it still useful in case it happens to break something... Päikest, Priit ;) >From 846a67c15d49bb23ec3928967b3588362d8abfe3 Mon Sep 17 00:00:00 2001 From: Priit Laes Date: Wed, 23 Nov 2011 16:11:04 +0200 Subject: [PATCH] ARM: mach-orion5x: Use hex2bin that is present in kernel lib --- arch/arm/mach-orion5x/dns323-setup.c | 39 +--------------------------------- arch/arm/mach-orion5x/tsx09-common.c | 34 +---------------------------- 2 files changed, 2 insertions(+), 71 deletions(-) diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index 343f60e..9b55a88 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c @@ -172,37 +172,6 @@ static struct mv643xx_eth_platform_data dns323_eth_data = { .phy_addr = MV643XX_ETH_PHY_ADDR(8), }; -/* dns323_parse_hex_*() taken from tsx09-common.c; should a common copy of these - * functions be kept somewhere? - */ -static int __init dns323_parse_hex_nibble(char n) -{ - if (n >= '0' && n <= '9') - return n - '0'; - - if (n >= 'A' && n <= 'F') - return n - 'A' + 10; - - if (n >= 'a' && n <= 'f') - return n - 'a' + 10; - - return -1; -} - -static int __init dns323_parse_hex_byte(const char *b) -{ - int hi; - int lo; - - hi = dns323_parse_hex_nibble(b[0]); - lo = dns323_parse_hex_nibble(b[1]); - - if (hi < 0 || lo < 0) - return -1; - - return (hi << 4) | lo; -} - static int __init dns323_read_mac_addr(void) { u_int8_t addr[6]; @@ -224,14 +193,8 @@ static int __init dns323_read_mac_addr(void) } for (i = 0; i < 6; i++) { - int byte; - - byte = dns323_parse_hex_byte(mac_page + (i * 3)); - if (byte < 0) { + if (hex2bin(addr[i], mac_page + (i * 3), 2)) goto error_fail; - } - - addr[i] = byte; } iounmap(mac_page); diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c index c9abb8f..3bc7ff0 100644 --- a/arch/arm/mach-orion5x/tsx09-common.c +++ b/arch/arm/mach-orion5x/tsx09-common.c @@ -52,52 +52,20 @@ struct mv643xx_eth_platform_data qnap_tsx09_eth_data = { .phy_addr = MV643XX_ETH_PHY_ADDR(8), }; -static int __init qnap_tsx09_parse_hex_nibble(char n) -{ - if (n >= '0' && n <= '9') - return n - '0'; - - if (n >= 'A' && n <= 'F') - return n - 'A' + 10; - - if (n >= 'a' && n <= 'f') - return n - 'a' + 10; - - return -1; -} - -static int __init qnap_tsx09_parse_hex_byte(const char *b) -{ - int hi; - int lo; - - hi = qnap_tsx09_parse_hex_nibble(b[0]); - lo = qnap_tsx09_parse_hex_nibble(b[1]); - - if (hi < 0 || lo < 0) - return -1; - - return (hi << 4) | lo; -} - static int __init qnap_tsx09_check_mac_addr(const char *addr_str) { u_int8_t addr[6]; int i; for (i = 0; i < 6; i++) { - int byte; - /* * Enforce "xx:xx:xx:xx:xx:xx\n" format. */ if (addr_str[(i * 3) + 2] != ((i < 5) ? ':' : '\n')) return -1; - byte = qnap_tsx09_parse_hex_byte(addr_str + (i * 3)); - if (byte < 0) + if (hex2bin(addr[i], addr_str + (i * 3), 2)) return -1; - addr[i] = byte; } printk(KERN_INFO "tsx09: found ethernet mac address "); -- 1.7.8.rc3