aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/of/of_net.c
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2011-07-04 02:03:17 -0400
committerShawn Guo <shawn.guo@linaro.org>2011-07-26 21:30:56 -0400
commit6ca1a113791eb09dac8c48b2b264c4d72aab410f (patch)
tree1c889fc0c3e942c89c1241f433f2c8758e9d24e2 /drivers/of/of_net.c
parent0ca1e290b7c517300bf6cc4f14ebcedb5dfea5cc (diff)
dt/net: add helper function of_get_phy_mode
It adds the helper function of_get_phy_mode getting phy interface from device tree. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Cc: Grant Likely <grant.likely@secretlab.ca> Acked-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: David Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/of/of_net.c')
-rw-r--r--drivers/of/of_net.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/drivers/of/of_net.c b/drivers/of/of_net.c
index 86f334a2769c..cc117db05891 100644
--- a/drivers/of/of_net.c
+++ b/drivers/of/of_net.c
@@ -8,6 +8,49 @@
8#include <linux/etherdevice.h> 8#include <linux/etherdevice.h>
9#include <linux/kernel.h> 9#include <linux/kernel.h>
10#include <linux/of_net.h> 10#include <linux/of_net.h>
11#include <linux/phy.h>
12
13/**
14 * It maps 'enum phy_interface_t' found in include/linux/phy.h
15 * into the device tree binding of 'phy-mode', so that Ethernet
16 * device driver can get phy interface from device tree.
17 */
18static const char *phy_modes[] = {
19 [PHY_INTERFACE_MODE_MII] = "mii",
20 [PHY_INTERFACE_MODE_GMII] = "gmii",
21 [PHY_INTERFACE_MODE_SGMII] = "sgmii",
22 [PHY_INTERFACE_MODE_TBI] = "tbi",
23 [PHY_INTERFACE_MODE_RMII] = "rmii",
24 [PHY_INTERFACE_MODE_RGMII] = "rgmii",
25 [PHY_INTERFACE_MODE_RGMII_ID] = "rgmii-id",
26 [PHY_INTERFACE_MODE_RGMII_RXID] = "rgmii-rxid",
27 [PHY_INTERFACE_MODE_RGMII_TXID] = "rgmii-txid",
28 [PHY_INTERFACE_MODE_RTBI] = "rtbi",
29};
30
31/**
32 * of_get_phy_mode - Get phy mode for given device_node
33 * @np: Pointer to the given device_node
34 *
35 * The function gets phy interface string from property 'phy-mode',
36 * and return its index in phy_modes table, or errno in error case.
37 */
38const int of_get_phy_mode(struct device_node *np)
39{
40 const char *pm;
41 int err, i;
42
43 err = of_property_read_string(np, "phy-mode", &pm);
44 if (err < 0)
45 return err;
46
47 for (i = 0; i < ARRAY_SIZE(phy_modes); i++)
48 if (!strcasecmp(pm, phy_modes[i]))
49 return i;
50
51 return -ENODEV;
52}
53EXPORT_SYMBOL_GPL(of_get_phy_mode);
11 54
12/** 55/**
13 * Search the device tree for the best MAC address to use. 'mac-address' is 56 * Search the device tree for the best MAC address to use. 'mac-address' is