[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAJ+vNU0uM_-EMe9nqbyEqMkNQ1j0uRf5giO=n0NvA5Ao5Twjxw@mail.gmail.com>
Date: Fri, 7 Mar 2014 12:08:29 -0800
From: Tim Harvey <tharvey@...eworks.com>
To: David Miller <davem@...emloft.net>,
Stephen Hemminger <stephen@...workplumber.org>
Cc: netdev <netdev@...r.kernel.org>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
Grant Likely <grant.likely@...aro.org>,
Rob Herring <robh+dt@...nel.org>
Subject: Re: [PATCH v2] sky2: allow mac to come from dt
On Fri, Mar 7, 2014 at 11:36 AM, David Miller <davem@...emloft.net> wrote:
> From: Tim Harvey <tharvey@...eworks.com>
> Date: Wed, 5 Mar 2014 14:45:12 -0800
>
>> @@ -4748,6 +4750,7 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port,
>> {
>> struct sky2_port *sky2;
>> struct net_device *dev = alloc_etherdev(sizeof(*sky2));
>> + unsigned char *iap, tmpaddr[ETH_ALEN];
>>
>> if (!dev)
>> return NULL;
>> @@ -4805,8 +4808,17 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port,
>>
>> dev->features |= dev->hw_features;
>>
>> - /* read the mac address */
>> - memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8, ETH_ALEN);
>> + /* try to get mac address in the following order:
>> + * 1) from device tree data
>> + * 2) from internal registers set by bootloader
>> + */
>> + iap = of_get_mac_address(hw->pdev->dev.of_node);
>> + if (!iap) {
>> + memcpy_fromio(&tmpaddr, hw->regs + B2_MAC_1 + port * 8,
>> + ETH_ALEN);
>> + iap = tmpaddr;
>> + }
>> + ether_addr_copy(dev->dev_addr, iap);
>
> As Stephen Hemminger suggested do this like:
>
> iap = of_get_mac_address(hw->pdev->dev.of_node);
> if (iap)
> memcpy(dev->dev_addr, iap, ETH_ALEN);
> else
> memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8,
> ETH_ALEN);
>
> That way you don't need the on-stack buffer.
Thanks for the suggestion - I will re-send a v3 shortly.
Tim
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists