net: w5100-spi: add support to specify MAC address by device tree

This adds support to specify the MAC address by 'mac-address' or
'local-mac-address' properties in the device tree.  These are common
properties for the Ethernet controller.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Mike Sinkovsky <msink@permonline.ru>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Akinobu Mita 2016-05-14 14:55:50 +09:00 committed by David S. Miller
parent 7d6da453ef
commit c3875ca7d9
3 changed files with 8 additions and 4 deletions

View File

@ -15,6 +15,7 @@
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/netdevice.h>
#include <linux/of_net.h>
#include <linux/spi/spi.h>
#include "w5100.h"
@ -414,6 +415,7 @@ static int w5100_spi_probe(struct spi_device *spi)
const struct spi_device_id *id = spi_get_device_id(spi);
const struct w5100_ops *ops;
int priv_size;
const void *mac = of_get_mac_address(spi->dev.of_node);
switch (id->driver_data) {
case W5100:
@ -432,7 +434,7 @@ static int w5100_spi_probe(struct spi_device *spi)
return -EINVAL;
}
return w5100_probe(&spi->dev, ops, priv_size, NULL, spi->irq, -EINVAL);
return w5100_probe(&spi->dev, ops, priv_size, mac, spi->irq, -EINVAL);
}
static int w5100_spi_remove(struct spi_device *spi)

View File

@ -1052,7 +1052,7 @@ static const struct net_device_ops w5100_netdev_ops = {
static int w5100_mmio_probe(struct platform_device *pdev)
{
struct wiznet_platform_data *data = dev_get_platdata(&pdev->dev);
u8 *mac_addr = NULL;
const void *mac_addr = NULL;
struct resource *mem;
const struct w5100_ops *ops;
int irq;
@ -1087,7 +1087,8 @@ void *w5100_ops_priv(const struct net_device *ndev)
EXPORT_SYMBOL_GPL(w5100_ops_priv);
int w5100_probe(struct device *dev, const struct w5100_ops *ops,
int sizeof_ops_priv, u8 *mac_addr, int irq, int link_gpio)
int sizeof_ops_priv, const void *mac_addr, int irq,
int link_gpio)
{
struct w5100_priv *priv;
struct net_device *ndev;

View File

@ -30,7 +30,8 @@ struct w5100_ops {
void *w5100_ops_priv(const struct net_device *ndev);
int w5100_probe(struct device *dev, const struct w5100_ops *ops,
int sizeof_ops_priv, u8 *mac_addr, int irq, int link_gpio);
int sizeof_ops_priv, const void *mac_addr, int irq,
int link_gpio);
int w5100_remove(struct device *dev);
extern const struct dev_pm_ops w5100_pm_ops;