Commit 4b6ba8aacbb3185703b797286547d0f8f3859b02

Authored by David Daney
Committed by Grant Likely
1 parent 3985c7ce85

of/net: Move of_get_mac_address() to a common source file.

There are two identical implementations of of_get_mac_address(), one
each in arch/powerpc/kernel/prom_parse.c and
arch/microblaze/kernel/prom_parse.c.  Move this function to a new
common file of_net.{c,h} and adjust all the callers to include the new
header.

Signed-off-by: David Daney <ddaney@caviumnetworks.com>
[grant.likely@secretlab.ca: protect header with #ifdef]
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>

Showing 14 changed files with 74 additions and 82 deletions Side-by-side Diff

arch/microblaze/include/asm/prom.h
... ... @@ -64,9 +64,6 @@
64 64 /* CPU OF node matching */
65 65 struct device_node *of_get_cpu_node(int cpu, unsigned int *thread);
66 66  
67   -/* Get the MAC address */
68   -extern const void *of_get_mac_address(struct device_node *np);
69   -
70 67 /**
71 68 * of_irq_map_pci - Resolve the interrupt for a PCI device
72 69 * @pdev: the device whose interrupt is to be resolved
arch/microblaze/kernel/prom_parse.c
... ... @@ -110,42 +110,4 @@
110 110 cells = prop ? *(u32 *)prop : of_n_size_cells(dn);
111 111 *size = of_read_number(dma_window, cells);
112 112 }
113   -
114   -/**
115   - * Search the device tree for the best MAC address to use. 'mac-address' is
116   - * checked first, because that is supposed to contain to "most recent" MAC
117   - * address. If that isn't set, then 'local-mac-address' is checked next,
118   - * because that is the default address. If that isn't set, then the obsolete
119   - * 'address' is checked, just in case we're using an old device tree.
120   - *
121   - * Note that the 'address' property is supposed to contain a virtual address of
122   - * the register set, but some DTS files have redefined that property to be the
123   - * MAC address.
124   - *
125   - * All-zero MAC addresses are rejected, because those could be properties that
126   - * exist in the device tree, but were not set by U-Boot. For example, the
127   - * DTS could define 'mac-address' and 'local-mac-address', with zero MAC
128   - * addresses. Some older U-Boots only initialized 'local-mac-address'. In
129   - * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
130   - * but is all zeros.
131   -*/
132   -const void *of_get_mac_address(struct device_node *np)
133   -{
134   - struct property *pp;
135   -
136   - pp = of_find_property(np, "mac-address", NULL);
137   - if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
138   - return pp->value;
139   -
140   - pp = of_find_property(np, "local-mac-address", NULL);
141   - if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
142   - return pp->value;
143   -
144   - pp = of_find_property(np, "address", NULL);
145   - if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
146   - return pp->value;
147   -
148   - return NULL;
149   -}
150   -EXPORT_SYMBOL(of_get_mac_address);
arch/powerpc/include/asm/prom.h
... ... @@ -63,9 +63,6 @@
63 63 /* cache lookup */
64 64 struct device_node *of_find_next_cache_node(struct device_node *np);
65 65  
66   -/* Get the MAC address */
67   -extern const void *of_get_mac_address(struct device_node *np);
68   -
69 66 #ifdef CONFIG_NUMA
70 67 extern int of_node_to_nid(struct device_node *device);
71 68 #else
arch/powerpc/kernel/prom_parse.c
... ... @@ -117,42 +117,4 @@
117 117 cells = prop ? *(u32 *)prop : of_n_size_cells(dn);
118 118 *size = of_read_number(dma_window, cells);
119 119 }
120   -
121   -/**
122   - * Search the device tree for the best MAC address to use. 'mac-address' is
123   - * checked first, because that is supposed to contain to "most recent" MAC
124   - * address. If that isn't set, then 'local-mac-address' is checked next,
125   - * because that is the default address. If that isn't set, then the obsolete
126   - * 'address' is checked, just in case we're using an old device tree.
127   - *
128   - * Note that the 'address' property is supposed to contain a virtual address of
129   - * the register set, but some DTS files have redefined that property to be the
130   - * MAC address.
131   - *
132   - * All-zero MAC addresses are rejected, because those could be properties that
133   - * exist in the device tree, but were not set by U-Boot. For example, the
134   - * DTS could define 'mac-address' and 'local-mac-address', with zero MAC
135   - * addresses. Some older U-Boots only initialized 'local-mac-address'. In
136   - * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
137   - * but is all zeros.
138   -*/
139   -const void *of_get_mac_address(struct device_node *np)
140   -{
141   - struct property *pp;
142   -
143   - pp = of_find_property(np, "mac-address", NULL);
144   - if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
145   - return pp->value;
146   -
147   - pp = of_find_property(np, "local-mac-address", NULL);
148   - if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
149   - return pp->value;
150   -
151   - pp = of_find_property(np, "address", NULL);
152   - if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
153   - return pp->value;
154   -
155   - return NULL;
156   -}
157   -EXPORT_SYMBOL(of_get_mac_address);
arch/powerpc/sysdev/mv64x60_dev.c
... ... @@ -16,6 +16,7 @@
16 16 #include <linux/mv643xx.h>
17 17 #include <linux/platform_device.h>
18 18 #include <linux/of_platform.h>
  19 +#include <linux/of_net.h>
19 20 #include <linux/dma-mapping.h>
20 21  
21 22 #include <asm/prom.h>
arch/powerpc/sysdev/tsi108_dev.c
... ... @@ -19,6 +19,7 @@
19 19 #include <linux/module.h>
20 20 #include <linux/device.h>
21 21 #include <linux/platform_device.h>
  22 +#include <linux/of_net.h>
22 23 #include <asm/tsi108.h>
23 24  
24 25 #include <asm/system.h>
drivers/net/fs_enet/fs_enet-main.c
... ... @@ -40,6 +40,7 @@
40 40 #include <linux/of_mdio.h>
41 41 #include <linux/of_platform.h>
42 42 #include <linux/of_gpio.h>
  43 +#include <linux/of_net.h>
43 44  
44 45 #include <linux/vmalloc.h>
45 46 #include <asm/pgtable.h>
drivers/net/gianfar.c
... ... @@ -95,6 +95,7 @@
95 95 #include <linux/phy.h>
96 96 #include <linux/phy_fixed.h>
97 97 #include <linux/of.h>
  98 +#include <linux/of_net.h>
98 99  
99 100 #include "gianfar.h"
100 101 #include "fsl_pq_mdio.h"
drivers/net/ucc_geth.c
... ... @@ -28,6 +28,7 @@
28 28 #include <linux/phy.h>
29 29 #include <linux/workqueue.h>
30 30 #include <linux/of_mdio.h>
  31 +#include <linux/of_net.h>
31 32 #include <linux/of_platform.h>
32 33  
33 34 #include <asm/uaccess.h>
drivers/net/xilinx_emaclite.c
... ... @@ -24,6 +24,7 @@
24 24 #include <linux/of_device.h>
25 25 #include <linux/of_platform.h>
26 26 #include <linux/of_mdio.h>
  27 +#include <linux/of_net.h>
27 28 #include <linux/phy.h>
28 29  
29 30 #define DRIVER_NAME "xilinx_emaclite"
... ... @@ -49,6 +49,10 @@
49 49 help
50 50 OpenFirmware I2C accessors
51 51  
  52 +config OF_NET
  53 + depends on NETDEVICES
  54 + def_bool y
  55 +
52 56 config OF_SPI
53 57 def_tristate SPI
54 58 depends on SPI && !SPARC
... ... @@ -6,6 +6,7 @@
6 6 obj-$(CONFIG_OF_DEVICE) += device.o platform.o
7 7 obj-$(CONFIG_OF_GPIO) += gpio.o
8 8 obj-$(CONFIG_OF_I2C) += of_i2c.o
  9 +obj-$(CONFIG_OF_NET) += of_net.o
9 10 obj-$(CONFIG_OF_SPI) += of_spi.o
10 11 obj-$(CONFIG_OF_MDIO) += of_mdio.o
  1 +/*
  2 + * OF helpers for network devices.
  3 + *
  4 + * This file is released under the GPLv2
  5 + *
  6 + * Initially copied out of arch/powerpc/kernel/prom_parse.c
  7 + */
  8 +#include <linux/etherdevice.h>
  9 +#include <linux/kernel.h>
  10 +#include <linux/of_net.h>
  11 +
  12 +/**
  13 + * Search the device tree for the best MAC address to use. 'mac-address' is
  14 + * checked first, because that is supposed to contain to "most recent" MAC
  15 + * address. If that isn't set, then 'local-mac-address' is checked next,
  16 + * because that is the default address. If that isn't set, then the obsolete
  17 + * 'address' is checked, just in case we're using an old device tree.
  18 + *
  19 + * Note that the 'address' property is supposed to contain a virtual address of
  20 + * the register set, but some DTS files have redefined that property to be the
  21 + * MAC address.
  22 + *
  23 + * All-zero MAC addresses are rejected, because those could be properties that
  24 + * exist in the device tree, but were not set by U-Boot. For example, the
  25 + * DTS could define 'mac-address' and 'local-mac-address', with zero MAC
  26 + * addresses. Some older U-Boots only initialized 'local-mac-address'. In
  27 + * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
  28 + * but is all zeros.
  29 +*/
  30 +const void *of_get_mac_address(struct device_node *np)
  31 +{
  32 + struct property *pp;
  33 +
  34 + pp = of_find_property(np, "mac-address", NULL);
  35 + if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
  36 + return pp->value;
  37 +
  38 + pp = of_find_property(np, "local-mac-address", NULL);
  39 + if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
  40 + return pp->value;
  41 +
  42 + pp = of_find_property(np, "address", NULL);
  43 + if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
  44 + return pp->value;
  45 +
  46 + return NULL;
  47 +}
  48 +EXPORT_SYMBOL(of_get_mac_address);
include/linux/of_net.h
  1 +/*
  2 + * OF helpers for network devices.
  3 + *
  4 + * This file is released under the GPLv2
  5 + */
  6 +
  7 +#ifndef __LINUX_OF_NET_H
  8 +#define __LINUX_OF_NET_H
  9 +
  10 +#ifdef CONFIG_OF_NET
  11 +#include <linux/of.h>
  12 +extern const void *of_get_mac_address(struct device_node *np);
  13 +#endif
  14 +
  15 +#endif /* __LINUX_OF_NET_H */