Subject: Re: [PATCH v2.6.26] powerpc: Add 8568 PHY workaround to board code

From: Anton Vorontsov <[email-masked]>
Date: Sat, 19 Apr 2008 02:59:57 +0400

On Fri, Apr 18, 2008 at 05:35:49PM -0500, Andy Fleming wrote:
> The 8568 MDS needs some configuration changes to the PHY in order to work
> properly.  These are done in the firmware, normally, but Linux shouldn't
> need to rely on the firmware running such things (someone could disable
> the PHY support in the firmware to save space, for instance).
> 
> Signed-off-by: Andy Fleming <[email-masked]>
> ---
> 
> Jeff, copying you so you can see what code uses the board fixup patch.  Also,
> Kumar, note that this patch is utterly useless without the patch sent to netdev:
> Add support for board-level PHY fixups.
> 
>  arch/powerpc/platforms/85xx/mpc85xx_mds.c |  114 +++++++++++++++++++++++++++++
>  1 files changed, 114 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
> index 25f8bc7..b1bf06d 100644
> --- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
> +++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
[...]

Hi Andy,

Just two fluffy comments...

> +static int __init board_fixups(void)
> +{
> +	char phy_id[BUS_ID_SIZE];
> +	struct device_node *mdio;
> +	struct resource res;
> +
> +	/* Register a workaround to fixup the clock source */
> +	mdio = of_find_node_by_name(NULL, "mdio");

MPC8568E-MDS can use either one of two mdio buses, so I'd suggest to
do fixups for both via of_find_compatible_node(), or
for_each_compatible_node().

> +	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); is missing here, I think.

> +	return 0;
> +}
> +arch_initcall(board_fixups);

-- 
Anton Vorontsov
email: [email-masked]
irc://irc.freenode.net/bd2