On 11/29/07, Ulf Samuelsson <ulf@atmel.com> wrote:
tor 2007-11-29 klockan 19:51 +0100 skrev Guennadi Liakhovetski:
> Hi,
>
> 1. Does it make sense at all to define CONFIG_RMII without defining
> CONFIG_MII? The question is meant not really theoretical as in what
> meaning RMII has, rather how the macro CONFIG_RMII is supposed to be used?
> For example, tests like
>

I think that if you use an Ethernet and need to differentiate
between MII and RMII they should be mutually exclusive.
You either define CONFIG_RMII OR CONFIG_MII but not both.
If you have a PHY on the chip, then you do not define any of the two.
MII uses more pins and maybe different pins, so a port for a CPU
should differentiate.


I'm a little late to this, but I feel I should make sure people are aware that CONFIG_MII and CONFIG_RMII are not, in this case, two different options for the same concept.  CONFIG_MII is the option you enable to allow MII Management operations to be done.  It should *probably* be called CONFIG_MDIO.  You'll see this problem all over the place.  MII is the name for the data interface between a PHY and a 10/100 ethernet controller.  MDIO is the management interface for MII-compliant PHYs.  But it's frequently called the MII Management interface.

RMII is a different data interface for PHYs, but it uses the same MDIO interface.

So I believe if you see:
#if defined(CONFIG_MII) && defined(CONFIG_RMII), what you are seeing is a check for global mii management capability as well as board-specific reduced interface selection.

As to whether one or more of these definitions is poorly named, I leave that as an exercise for the reader.  ;)


Andy