> @@ -2097,6 +2098,25 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)
>               (void)lan78xx_set_eee(dev->net, &edata);
>       }
>  
> +     if (!of_property_read_u32_array(dev->udev->dev.of_node,
> +                                     "microchip,led-modes",
> +                                     led_modes, ARRAY_SIZE(led_modes))) {
> +             u32 reg;
> +             int i;
> +
> +             reg = phy_read(phydev, 0x1d);
> +             for (i = 0; i < ARRAY_SIZE(led_modes); i++) {
> +                     reg &= ~(0xf << (i * 4));
> +                     reg |= (led_modes[i] & 0xf) << (i * 4);
> +             }
> +             (void)phy_write(phydev, 0x1d, reg);

Poking PHY registers directly from the MAC driver is not always a good
idea. This MAC driver does that in a few places :-(

What do we know about the PHY? It is built into the device or is it
external? If it is external, how do you know the LED register is at
0x1d?

The safest place to do this is in the PHY driver, and place these OF
properties into the PHY node.

           Andrew
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to