Subject: Re: [PATCH] net: sky2: allow mac to come from dt

From: Sergei Shtylyov <[email-masked]>
Date: Wed, 05 Mar 2014 18:15:39 +0400

Hello.

On 05-03-2014 10:22, Tim Harvey wrote:

> The driver reads the mac address from the device registers which would
> need to have been programmed by the bootloader.  This patch adds
> the ability to pull the mac from devicetree via the pci device dt node.

    I highly doubt that "[local-]mac-address" prop would be added to 
(autodiscovered) PCI device node.

> Signed-off-by: Tim Harvey <[email-masked]>
> Cc: [email-masked]
> Cc: [email-masked]
> Cc: Grant Likely <[email-masked]>
> Cc: Rob Herring <[email-masked]>
> ---
>   drivers/net/ethernet/marvell/sky2.c | 24 +++++++++++++++++++++++-
>   1 file changed, 23 insertions(+), 1 deletion(-)

> diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
> index 55a37ae..bff493a 100644
> --- a/drivers/net/ethernet/marvell/sky2.c
> +++ b/drivers/net/ethernet/marvell/sky2.c
[...]
> @@ -4805,8 +4808,27 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port,
>
>   	dev->features |= dev->hw_features;
>
> +	/* try to get mac address in the following order:
> +	 * 1) from device tree data
> +	 * 2) from internal registers set by bootloader
> +	 */
> +	iap = NULL;
> +	if (IS_ENABLED(CONFIG_OF)) {
> +		struct device_node *np = hw->pdev->dev.of_node;
> +		if (np)
> +			iap = (unsigned char *) of_get_mac_address(np);
> +	}
> +
> +	/* 2) mac registers set by bootloader
> +	 */
> +	if (!iap || !is_valid_ether_addr(iap)) {
> +		memcpy_fromio(&tmpaddr, hw->regs + B2_MAC_1 + port * 8,
> +			ETH_ALEN);

    This line should start right under & on the previous line.

> +		iap = &tmpaddr[0];

    Why not just 'tmpaddr'?

> +	}
> +

WBR, Sergei