Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 261126
b: refs/heads/master
c: 6ca1a11
h: refs/heads/master
v: v3
  • Loading branch information
Shawn Guo committed Jul 27, 2011
1 parent e7f0dc8 commit 65945c8
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0ca1e290b7c517300bf6cc4f14ebcedb5dfea5cc
refs/heads/master: 6ca1a113791eb09dac8c48b2b264c4d72aab410f
43 changes: 43 additions & 0 deletions trunk/drivers/of/of_net.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,49 @@
#include <linux/etherdevice.h>
#include <linux/kernel.h>
#include <linux/of_net.h>
#include <linux/phy.h>

/**
* It maps 'enum phy_interface_t' found in include/linux/phy.h
* into the device tree binding of 'phy-mode', so that Ethernet
* device driver can get phy interface from device tree.
*/
static const char *phy_modes[] = {
[PHY_INTERFACE_MODE_MII] = "mii",
[PHY_INTERFACE_MODE_GMII] = "gmii",
[PHY_INTERFACE_MODE_SGMII] = "sgmii",
[PHY_INTERFACE_MODE_TBI] = "tbi",
[PHY_INTERFACE_MODE_RMII] = "rmii",
[PHY_INTERFACE_MODE_RGMII] = "rgmii",
[PHY_INTERFACE_MODE_RGMII_ID] = "rgmii-id",
[PHY_INTERFACE_MODE_RGMII_RXID] = "rgmii-rxid",
[PHY_INTERFACE_MODE_RGMII_TXID] = "rgmii-txid",
[PHY_INTERFACE_MODE_RTBI] = "rtbi",
};

/**
* of_get_phy_mode - Get phy mode for given device_node
* @np: Pointer to the given device_node
*
* The function gets phy interface string from property 'phy-mode',
* and return its index in phy_modes table, or errno in error case.
*/
const int of_get_phy_mode(struct device_node *np)
{
const char *pm;
int err, i;

err = of_property_read_string(np, "phy-mode", &pm);
if (err < 0)
return err;

for (i = 0; i < ARRAY_SIZE(phy_modes); i++)
if (!strcasecmp(pm, phy_modes[i]))
return i;

return -ENODEV;
}
EXPORT_SYMBOL_GPL(of_get_phy_mode);

/**
* Search the device tree for the best MAC address to use. 'mac-address' is
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/of_net.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#ifdef CONFIG_OF_NET
#include <linux/of.h>
extern const int of_get_phy_mode(struct device_node *np);
extern const void *of_get_mac_address(struct device_node *np);
#endif

Expand Down

0 comments on commit 65945c8

Please sign in to comment.