Commit d226a2b8 authored by Sergei Shtylyov's avatar Sergei Shtylyov Committed by David S. Miller

of_mdio: use of_property_read_u32_array()

The "fixed-link" prop support predated of_property_read_u32_array(), so
basically had to open-code it. Using the modern API saves 24 bytes of the
object code (ARM gcc 4.8.5); the only behavior change would be that the
prop length check is now less strict (however the strict pre-check done
in of_phy_is_fixed_link() is left intact anyway)...
Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e1cea2e7
...@@ -421,10 +421,10 @@ int of_phy_register_fixed_link(struct device_node *np) ...@@ -421,10 +421,10 @@ int of_phy_register_fixed_link(struct device_node *np)
{ {
struct fixed_phy_status status = {}; struct fixed_phy_status status = {};
struct device_node *fixed_link_node; struct device_node *fixed_link_node;
const __be32 *fixed_link_prop; u32 fixed_link_prop[5];
struct phy_device *phy; struct phy_device *phy;
const char *managed; const char *managed;
int link_gpio, len; int link_gpio;
if (of_property_read_string(np, "managed", &managed) == 0) { if (of_property_read_string(np, "managed", &managed) == 0) {
if (strcmp(managed, "in-band-status") == 0) { if (strcmp(managed, "in-band-status") == 0) {
...@@ -459,13 +459,13 @@ int of_phy_register_fixed_link(struct device_node *np) ...@@ -459,13 +459,13 @@ int of_phy_register_fixed_link(struct device_node *np)
} }
/* Old binding */ /* Old binding */
fixed_link_prop = of_get_property(np, "fixed-link", &len); if (of_property_read_u32_array(np, "fixed-link", fixed_link_prop,
if (fixed_link_prop && len == (5 * sizeof(__be32))) { ARRAY_SIZE(fixed_link_prop)) == 0) {
status.link = 1; status.link = 1;
status.duplex = be32_to_cpu(fixed_link_prop[1]); status.duplex = fixed_link_prop[1];
status.speed = be32_to_cpu(fixed_link_prop[2]); status.speed = fixed_link_prop[2];
status.pause = be32_to_cpu(fixed_link_prop[3]); status.pause = fixed_link_prop[3];
status.asym_pause = be32_to_cpu(fixed_link_prop[4]); status.asym_pause = fixed_link_prop[4];
phy = fixed_phy_register(PHY_POLL, &status, -1, np); phy = fixed_phy_register(PHY_POLL, &status, -1, np);
return PTR_ERR_OR_ZERO(phy); return PTR_ERR_OR_ZERO(phy);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment