From: dv@vollmann.ch (Detlef Vollmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/1] ARM: orion5x: use mac_pton() helper
Date: Fri, 2 Oct 2015 10:54:18 +0200 [thread overview]
Message-ID: <560E463A.6040704@vollmann.ch> (raw)
In-Reply-To: <877fn6og2h.fsf@free-electrons.com>
On 10/01/15 15:48, Gregory CLEMENT wrote:
> Hi Andy,
>
> On jeu., oct. 01 2015, Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
>
>> Instead of custom approach let's use generic helper function.
>
> This patch looks good, however did you tested it on one of these board?
I can probably test it over the weekend on a DNS-323.
Detlef
>
> Thanks,
> gregory
>
>>
>> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
>> Cc: Detlef Vollmann <dv@vollmann.ch>
>> Cc: Gregory CLEMENT <gregory.clement@free-electrons.com>
>> ---
>> arch/arm/mach-orion5x/dns323-setup.c | 53 ++----------------------------------
>> arch/arm/mach-orion5x/tsx09-common.c | 49 +++------------------------------
>> 2 files changed, 7 insertions(+), 95 deletions(-)
>>
>> diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
>> index f267e58..bc279a8 100644
>> --- a/arch/arm/mach-orion5x/dns323-setup.c
>> +++ b/arch/arm/mach-orion5x/dns323-setup.c
>> @@ -173,42 +173,10 @@ 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];
>> - int i;
>> - char *mac_page;
>> + void __iomem *mac_page;
>>
>> /* MAC address is stored as a regular ol' string in /dev/mtdblock4
>> * (0x007d0000-0x00800000) starting at offset 196480 (0x2ff80).
>> @@ -217,23 +185,8 @@ static int __init dns323_read_mac_addr(void)
>> if (!mac_page)
>> return -ENOMEM;
>>
>> - /* Sanity check the string we're looking at */
>> - for (i = 0; i < 5; i++) {
>> - if (*(mac_page + (i * 3) + 2) != ':') {
>> - goto error_fail;
>> - }
>> - }
>> -
>> - for (i = 0; i < 6; i++) {
>> - int byte;
>> -
>> - byte = dns323_parse_hex_byte(mac_page + (i * 3));
>> - if (byte < 0) {
>> - goto error_fail;
>> - }
>> -
>> - addr[i] = byte;
>> - }
>> + if (!mac_pton((__force const char *) mac_page, addr))
>> + goto error_fail;
>>
>> iounmap(mac_page);
>> printk("DNS-323: Found ethernet MAC address: %pM\n", addr);
>> diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c
>> index 24b2959..d42e006 100644
>> --- a/arch/arm/mach-orion5x/tsx09-common.c
>> +++ b/arch/arm/mach-orion5x/tsx09-common.c
>> @@ -53,53 +53,12 @@ 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)
>> - return -1;
>> - addr[i] = byte;
>> - }
>> + if (!mac_pton(addr_str, addr))
>> + return -1;
>>
>> printk(KERN_INFO "tsx09: found ethernet mac address %pM\n", addr);
>>
>> @@ -118,12 +77,12 @@ void __init qnap_tsx09_find_mac_addr(u32 mem_base, u32 size)
>> unsigned long addr;
>>
>> for (addr = mem_base; addr < (mem_base + size); addr += 1024) {
>> - char *nor_page;
>> + void __iomem *nor_page;
>> int ret = 0;
>>
>> nor_page = ioremap(addr, 1024);
>> if (nor_page != NULL) {
>> - ret = qnap_tsx09_check_mac_addr(nor_page);
>> + ret = qnap_tsx09_check_mac_addr((__force const char *)nor_page);
>> iounmap(nor_page);
>> }
>
next prev parent reply other threads:[~2015-10-02 8:54 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-01 13:13 [PATCH 1/1] ARM: orion5x: use mac_pton() helper Andy Shevchenko
2015-10-01 13:48 ` Gregory CLEMENT
2015-10-02 8:54 ` Detlef Vollmann [this message]
2015-10-02 11:50 ` Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=560E463A.6040704@vollmann.ch \
--to=dv@vollmann.ch \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.