Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3875ca7 authored by Akinobu Mita's avatar Akinobu Mita Committed by David S. Miller
Browse files

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: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Cc: Mike Sinkovsky <msink@permonline.ru>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7d6da453
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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)
+3 −2
Original line number Diff line number Diff line
@@ -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;
+2 −1
Original line number Diff line number Diff line
@@ -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;