Subject: Re: [PATCH] Add support for configuring the PHY connection interface

From: Ingo Oeser <[email-masked]>
Date: Wed, 8 Nov 2006 10:37:23 +0100

Hi Andy,

Andy Fleming wrote:
> diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
> index b4b5b4a..b053370 100644
> --- a/arch/powerpc/sysdev/fsl_soc.c
> +++ b/arch/powerpc/sysdev/fsl_soc.c
> @@ -211,6 +211,36 @@ static int __init gfar_set_flags(struct 
>  	return device_flags;
>  }
>  
> +/* Return the Linux interface mode type based on the
> + * specification in the device-tree */
> +static int __init gfar_get_interface(struct device_node *np)
> +{
> +	const char *istr;
> +	int interface = 0;
> +
> +	istr = get_property(np, "interface", NULL);
> +
> +	if (istr == NULL)
> +		istr = "GMII";
> +
> +	if (!strcasecmp(istr, "GMII"))
> +		interface = PHY_INTERFACE_MODE_GMII;
> +	else if (!strcasecmp(istr, "MII"))
> +		interface = PHY_INTERFACE_MODE_MII;
> +	else if (!strcasecmp(istr, "RGMII"))
> +		interface = PHY_INTERFACE_MODE_RGMII;
> +	else if (!strcasecmp(istr, "SGMII"))
> +		interface = PHY_INTERFACE_MODE_SGMII;
> +	else if (!strcasecmp(istr, "TBI"))
> +		interface = PHY_INTERFACE_MODE_TBI;
> +	else if (!strcasecmp(istr, "RMII"))
> +		interface = PHY_INTERFACE_MODE_RMII;
> +	else if (!strcasecmp(istr, "RTBI"))
> +		interface = PHY_INTERFACE_MODE_RTBI;
> +
> +	return interface;
> +}

If you change the modes into an enum (as suggested by Kumar), 
you can make a nice static lookup table indexed by mode with a for loop here.

Regards

Ingo Oeser