On May 2, 2008, at 18:49, Olof Johansson wrote:
Hi,
On Fri, May 02, 2008 at 01:03:42PM -0500, Andy Fleming wrote:
+static int __init board_fixups(void)
+{
+ char phy_id[BUS_ID_SIZE];
+ char *compstrs[2] = {"fsl,gianfar-mdio", "fsl,ucc-mdio"};
+ struct device_node *mdio;
+ struct resource res;
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(compstrs); i++) {
+ mdio = of_find_compatible_node(NULL, NULL, compstrs[i]);
+
+ of_address_to_resource(mdio, 0, &res);
+ snprintf(phy_id, BUS_ID_SIZE, "%x:%02x", res.start, 1);
+
+ phy_register_fixup_for_id(phy_id, mpc8568_fixup_125_clock);
+ phy_register_fixup_for_id(phy_id, mpc8568_mds_phy_fixups);
+
+ /* Register a workaround for errata */
+ snprintf(phy_id, BUS_ID_SIZE, "%x:%02x", res.start, 7);
+ phy_register_fixup_for_id(phy_id, mpc8568_mds_phy_fixups);
+
+ of_node_put(mdio);
+ }
+
+ return 0;
+}
+arch_initcall(board_fixups);
Are you sure you want to run this workaround on all boards that happen
to be built-in? I.e. shouldn't you be checked for what board you are
running on, since the compatible strings you match on seem generic?
Shoot. That's a good point. I keep forgetting that just because it's
in mpc85xx_mds.c, doesn't mean it's only being run on that platform.
Alright, I'll resubmit.
-Olof
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev